久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: 單片機(jī)仿真秒表,用五位數(shù)碼管顯示,為什么個(gè)位和十位不顯示 [打印本頁(yè)]

作者: alili41    時(shí)間: 2019-5-5 09:52
標(biāo)題: 單片機(jī)仿真秒表,用五位數(shù)碼管顯示,為什么個(gè)位和十位不顯示

代碼:#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
uchar temp,aa,m1,m2,m3,shi,ge;
uchar code table[]={
0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
void display(uchar m1,uchar m2,uchar m3,uchar shi,uchar ge);
void initial();
void main()
{
  initial();
  while(1)
  {
    if(key1==0)
    {
            delay(10);
            if(key1==0)
            {
            while(!key1);
                  TR0=1;
                  }
          }
          if(key2==0)
          {
            delay(10);
            if(key2==0)
            {
            while(!key2);
                  TR0=0;
                  }
        }
          if(key3==0)
          {
            delay(10);
            if(key3==0)
             {
              while(!key3);
                    temp=0;
                    m1=0;
                    m2=0;
                    m3=0;
                    shi=0;
                    ge=0;
                    TR0=0;
                }
        }
        display(m1,m2,m3,shi,ge);
        }
}

void delay(uint z)   
{  
  uint x,y;  
  for(x=z;x>0;x--)

                for(y=110;y>0;y--);
        
}

void display(uchar m1,uchar m2,uchar m3,uchar shi,uchar ge)
{
  P2=0xfe;
  P0=table[m1];
  delay(10);

  P2=0xfd;
  P0=table[m2];
  delay(10);

  P2=0xfc;
  P0=table[m3];
  delay(10);

  P2=0xfb;
  P0=table[ge];
  delay(10);

  P2=0xfa;
  P0=table[shi];
  delay(10);
}

void initial()
{
  temp=0;
  TMOD=0x01;
  TH0=(65536-500)/256;
  TL0=(65536-500)%256;
  EA=1;
  ET0=1;
}


timer0() interrupt 1
{
  TH0=(65536-500)/256;
  TL0=(65536-500)%256;
  aa++;
  m3=aa/100;
  m2=aa%100/10;
  m1=aa%100%10;
  if(aa==1000)
  {
    aa=0;
          temp++;
          if(temp==99)
           {
            temp=0;
           }
           shi=temp/10;
           ge=temp%10;
   }
}


作者: yzwzfyz    時(shí)間: 2019-5-5 12:22
等至aa=1000的時(shí)候,你就看到顯示了。耐心等待吧。
作者: hantu    時(shí)間: 2019-5-5 12:23
中斷函數(shù)里shi和ge的獲取要放到if(aa==1000)的花括號(hào)之外。
作者: wulin    時(shí)間: 2019-5-5 17:36
本帖最后由 wulin 于 2019-5-6 06:09 編輯

錯(cuò)誤1:位碼錯(cuò)誤,應(yīng)該是0xfe,0xfd,0xfb,0xf7,0xef。
錯(cuò)誤2:數(shù)據(jù)類(lèi)型錯(cuò)誤,應(yīng)該是uint aa。
錯(cuò)誤3:1ms定時(shí)數(shù)據(jù)錯(cuò)誤。
當(dāng)然還有運(yùn)行中的問(wèn)題:按鍵干擾顯示,數(shù)碼管會(huì)閃爍等等。
作者: alili41    時(shí)間: 2019-5-5 20:04
yzwzfyz 發(fā)表于 2019-5-5 12:22
等至aa=1000的時(shí)候,你就看到顯示了。耐心等待吧。

1000就是1毫秒呀,很快的ne
作者: tigerlyt    時(shí)間: 2019-5-5 21:53
代碼:#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
uchar temp,aa,m1,m2,m3,shi,ge;
uchar code table[]={
0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
void display(uchar m1,uchar m2,uchar m3,uchar shi,uchar ge);
void initial();
void main()
{
  initial();
  while(1)
  {
    if(key1==0)
    {
            delay(10);
            if(key1==0)
            {
            while(!key1);
                  TR0=1;
                  }
          }
          if(key2==0)
          {
            delay(10);
            if(key2==0)
            {
            while(!key2);
                  TR0=0;
                  }
        }
          if(key3==0)
          {
            delay(10);
            if(key3==0)
             {
              while(!key3);
                    temp=0;
                    m1=0;
                    m2=0;
                    m3=0;
                    shi=0;
                    ge=0;
                    TR0=0;
                }
        }
        display(m1,m2,m3,shi,ge);
        }
}

void delay(uint z)   
{  
  uint x,y;  
  for(x=z;x>0;x--)

                for(y=110;y>0;y--);
        
}

void display(uchar m1,uchar m2,uchar m3,uchar shi,uchar ge)
{  P2=0xfb;
  P0=table[m1];
  delay(10);



  P2=0xf7;
  P0=table[m2];
  delay(10);



  P2=0xef;
  P0=table[m3];
  delay(10);

  P2=0xfd;
  P0=table[ge];
  delay(10);



  P2=0xfe;
  P0=table[shi];
  delay(10);

}

void initial()
{
  temp=0;
  TMOD=0x01;
  TH0=(65536-500)/256;
  TL0=(65536-500)%256;
  EA=1;
  ET0=1;
}


timer0() interrupt 1
{
  TH0=(65536-500)/256;
  TL0=(65536-500)%256;
  aa++;
  m3=aa/100;
  m2=aa%100/10;
  m1=aa%100%10;
  if(aa==1000)
  {
    aa=0;
          temp++;
          if(temp==99)
           {
            temp=0;
           }
           shi=temp/10;
           ge=temp%10;
   }
}


位選信號(hào)搞錯(cuò)了,紅色標(biāo)注了修改過(guò)后的,其他的應(yīng)該問(wèn)題不大,按照我修改過(guò)的運(yùn)行一次試試,應(yīng)該沒(méi)問(wèn)題的。


作者: tigerlyt    時(shí)間: 2019-5-5 21:57
哦,忘了,aa的類(lèi)型確實(shí)不對(duì)的,要改成uint aa;

其他試試看看
作者: tigerlyt    時(shí)間: 2019-5-5 22:03
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
uchar temp,m1,m2,m3,shi,ge;uint aa;
uchar code table[]={
0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
void display(uchar m1,uchar m2,uchar m3,uchar shi,uchar ge);
void initial();
void main()
{
  initial();
  while(1)
  {
    if(key1==0)
    {
            delay(10);
            if(key1==0)
            {
            while(!key1);
                  TR0=1;
                  }
          }
          if(key2==0)
          {
            delay(10);
            if(key2==0)
            {
            while(!key2);
                  TR0=0;
                  }
        }
          if(key3==0)
          {
            delay(10);
            if(key3==0)
             {
              while(!key3);
                    temp=0;
                    m1=0;
                    m2=0;
                    m3=0;
                    shi=0;
                    ge=0;
                    TR0=0;
                }
        }
        display(shi,ge,m3,m2,m1);
        }

}

void delay(uint z)   
{  
  uint x,y;  
  for(x=z;x>0;x--)

                for(y=110;y>0;y--);
        
}

void display(uchar m1,uchar m2,uchar m3,uchar shi,uchar ge)
{
  P2=0xfd;
  P0=table[m1];
  delay(10);

  P2=0xfe;
  P0=table[m2];
  delay(10);

  P2=0xfb;
  P0=table[m3];
  delay(10);

  P2=0xf7;
  P0=table[ge];
  delay(10);

  P2=0xef;
  P0=table[shi];
  delay(10);
}


void initial()
{
  temp=0;
  TMOD=0x01;
  TH0=(65536-500)/256;
  TL0=(65536-500)%256;
  EA=1;
  ET0=1;
}


timer0() interrupt 1
{
  TH0=(65536-500)/256;
  TL0=(65536-500)%256;
  aa++;
  m3=aa/100;
  m2=aa%100/10;
  m1=aa%100%10;
  if(aa==999)
  {
    aa=0;
          temp++;
          if(temp==99)
           {
            temp=0;
           }
           shi=temp/10;
           ge=temp%10;
   }
}



又改了一下,1、顯示順序,2、位選信號(hào),3、aa類(lèi)型

試試。





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久久www成人免费精品 | 久久久一区二区三区 | 国产精品一二区 | 日韩在线一区二区三区 | h漫在线观看 | 国产精品99久久久久久www | 精品视频一区二区三区在线观看 | 国产一区二区三区精品久久久 | 狠狠av| 精品国产91久久久久久 | 一级毛片成人免费看a | 日本不卡在线观看 | 99久久久国产精品免费消防器 | 免费一区二区三区在线视频 | 久久激情网 | 国产亚洲成av人在线观看导航 | 日韩一区二区三区在线播放 | 亚洲精品字幕 | 欧美日韩在线一区 | 精品国产欧美一区二区三区不卡 | 99视频在线播放 | 性生生活大片免费看视频 | 在线观看中文字幕dvd播放 | 欧美精品在线观看 | av网站在线播放 | 国产成人综合一区二区三区 | 国产在线精品一区二区 | 一级一级毛片免费看 | 综合二区 | 亚洲成人中文字幕 | 久久久精品 | 欧美日韩高清一区二区三区 | 在线国产一区二区 | 成人精品久久 | 日本亚洲精品 | av网站在线播放 | 热久久久 | 久久国产精品久久久久久 | 精品国产久 | 亚洲高清视频一区 | 免费久久精品视频 |