微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 数码管显示问题

数码管显示问题

时间:10-02 整理:3721RD 点击:

当程序运行时按下独立键盘会发现三个数码管其中一个随机会闪现一个数字   求大神解答如何不出现闪现数字!

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
sbit wela=P2^7;
sbit dula=P2^6;
void delay(uint z);
void display(uchar bai,uchar shi,uchar ge);
uint tt;
uchar ge,shi,bai,flag,aa,temp;
void main()
{
        TMOD=0x01;
        TH1=(65536-1000)/256;
        TL1=(65536-1000)%256;
        EA=1;
        ET0=1;
        TR0=1;
        
        ET1=1;
        TR1=1;

        while(1)
        {
                        display(bai,shi,ge);
        }
        }
void erter0() interrupt 1
{
                        P3=0xfe;
                        temp=P3;
                        temp=temp&0xf0;
                        while(temp!=0xf0)
                                {
                                        delay(5);
                                        temp=P3;
                                        temp=temp&0xf0;
                                        while(temp!=0xf0)
                                        {
                                                temp=P3;
                        switch(temp)
                                                                {
                                                                                case 0xee:P0=0xff;
                                                                                                  break;
                                                                                case 0xbe:TR1=1;
                                                                                                  break;
                                                                                case 0xde:TR1=0;
                                                                                                  break;
                                                                                case 0x7e:tt=0;
                                                                                                  if(TR1!=1)
                                                                                                  {
                                                                                                                  TR1=1;
                                                                                                  }
                                                                                                  
                                                                }
                                        while(temp!=0xf0)
                                                {
                                                        temp=P3;
                                                        temp=temp&0xf0;
                                                        P0=0xff;
                                                }
                                        }
                                }

}
                                

void exter1() interrupt 3
{
        TH1=(65536-10000)/256;
        TL1=(65536-10000)%256;
        aa++;

        if(aa==10)
        {
          aa=0;
        
        if(tt==900)
                tt=0;
                        bai=tt/100;
                        shi=tt%100/10;
                        ge=tt%10;
                        tt++;
                        }
}
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void display(uchar bai,uchar shi,uchar ge)
{
                dula=1;
                                P0=table[bai];
                                dula=0;
                                P0=0xff;
                                wela=1;
                                P0=0xf7;
                                wela=0;
                                delay(1);
                                dula=1;
                                P0=table[shi];
                                dula=0;
                                P0=0xff;
                                wela=1;
                                P0=0xef;
                                wela=0;
                                delay(1);

                                dula=1;
                                P0=table[ge];
                                dula=0;
                                P0=0xff;
                                wela=1;
                                P0=0xdf;
                                wela=0;
                                delay(1);
               
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top