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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3258|回復: 7
打印 上一主題 下一主題
收起左側

單片機仿真秒表,用五位數碼管顯示,為什么個位和十位不顯示

[復制鏈接]
跳轉到指定樓層
樓主

代碼:#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;
   }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:123289 發表于 2019-5-5 12:22 | 只看該作者
等至aa=1000的時候,你就看到顯示了。耐心等待吧。
回復

使用道具 舉報

板凳
ID:462827 發表于 2019-5-5 12:23 | 只看該作者
中斷函數里shi和ge的獲取要放到if(aa==1000)的花括號之外。
回復

使用道具 舉報

地板
ID:213173 發表于 2019-5-5 17:36 | 只看該作者
本帖最后由 wulin 于 2019-5-6 06:09 編輯

錯誤1:位碼錯誤,應該是0xfe,0xfd,0xfb,0xf7,0xef。
錯誤2:數據類型錯誤,應該是uint aa。
錯誤3:1ms定時數據錯誤。
當然還有運行中的問題:按鍵干擾顯示,數碼管會閃爍等等。
回復

使用道具 舉報

5#
ID:527416 發表于 2019-5-5 20:04 | 只看該作者
yzwzfyz 發表于 2019-5-5 12:22
等至aa=1000的時候,你就看到顯示了。耐心等待吧。

1000就是1毫秒呀,很快的ne
回復

使用道具 舉報

6#
ID:522450 發表于 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;
   }
}


位選信號搞錯了,紅色標注了修改過后的,其他的應該問題不大,按照我修改過的運行一次試試,應該沒問題的。

回復

使用道具 舉報

7#
ID:522450 發表于 2019-5-5 21:57 | 只看該作者
哦,忘了,aa的類型確實不對的,要改成uint aa;

其他試試看看
回復

使用道具 舉報

8#
ID:522450 發表于 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、位選信號,3、aa類型

試試。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品免费视频一区 | 亚洲成av人片在线观看 | 中文字幕在线观看一区二区 | 午夜影院在线观看视频 | 中文字幕91 | 亚洲午夜小视频 | 在线免费观看黄网 | 午夜寂寞影院在线观看 | 欧美在线日韩 | 91在线中文字幕 | 午夜男人免费视频 | 中文在线a在线 | 久久亚洲美女 | 国产夜恋视频在线观看 | 亚洲人成人网 | 亚洲第一在线 | 超黄视频网站 | 亚洲国产成人久久综合一区,久久久国产99 | 国产成人精品一区二区 | 亚洲免费高清 | 亚洲综合资源 | 日韩成人在线播放 | 日韩视频国产 | 成人精品在线观看 | 日韩免费看视频 | 成人国产精品久久 | 国产精品美女久久久久aⅴ国产馆 | 涩爱av一区二区三区 | 国产精品欧美精品日韩精品 | 欧美日韩一二三区 | 成人在线视频网站 | 综合久久久久 | 国产精品视频久久久久久 | 日韩电影一区 | 欧美一区二区免费在线 | 91色站 | 亚洲免费在线播放 | 亚洲精品国产一区 | 红桃视频一区二区三区免费 | 在线观看亚洲专区 | 精品一二三区视频 |