找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1604|回复: 2
打印 上一主题 下一主题
收起左侧

为什么我的数码管不显示其他的东西啊?

[复制链接]
跳转到指定楼层
楼主
大神帮忙看看为什么我的数码管不显示其他的东西啊
  1. #include <regx51.h>
  2. char code seg7cat[17] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,                     
  3.                         0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF};//'-'
  4. void seg7x8_display(unsigned char *p);
  5. unsigned char dis_buf[8];
  6. unsigned char T0CNT, m,s,ms;
  7. void delayms(unsigned int td);
  8. sbit k1=P1^0;    //???
  9. sbit k2=P1^1;    //???
  10. sbit k3=P1^2;    //??λ
  11. void main(void)
  12. {   unsigned char i;
  13.      T0CNT = m = s = ms = 0;
  14.      for(i=0;i<8;i++)  dis_buf[ i ] = 0;  //??????????
  15.     TH0  = (65536-10000)/256;
  16.     TL0   = (65536-10000)%256;     //??????10ms
  17.    TMOD = 0x01;
  18. ET0  = 1;
  19.     EA   = 1;
  20. TR0  =0;
  21.   
  22.     for(;;)
  23. {
  24.   if(k1==0)     //?????K1?????
  25.   {
  26.    delayms(10); //???????? ?????10ms
  27.     if(k1==0)   //????ж?????????
  28.    {
  29.     TR0=1;
  30.     while(!k1);          //???????????
  31.    }
  32.   }
  33.   if(k2==0)
  34.   {
  35.    delayms(10);
  36.    if(k2==0)
  37.    {
  38.     TR0=0;//???????0
  39.     while(!k2);
  40.    }
  41.   }
  42.   if(k3==0)
  43.   {
  44.    delayms(10);
  45.    if(k3==0)
  46.    {
  47.     m = s = ms = 0;
  48.     while(!k3);
  49.    }
  50.   }
  51.   for(;;) { seg7x8_display(dis_buf);     
  52. }  }
  53. }
  54. void  timer0_isr(void)   interrupt   1
  55. {  TMOD=0x11;
  56. TH0=(65536-10000)/256; //10ms???
  57. TL0=(65536-10000)%256;
  58. EA=1;
  59. ET0=1;
  60.       if(++ms >= 100)
  61.       {
  62.     ms=0;
  63.   if(++s>=60)
  64.   {   
  65.     s = 0;
  66.        if(++m>60)
  67.                m = 0;
  68.   }     
  69.       }
  70.       dis_buf[0] = m/10;
  71.       dis_buf[1] = m%10;
  72.       dis_buf[2] = 16;  //'-??
  73.       dis_buf[3] = s/10;
  74.       dis_buf[4] = s%10;
  75.       dis_buf[5] = 16;  //'-??
  76.       dis_buf[6] = ms/10;
  77.       dis_buf[7] = ms%10;
  78. }

  79. void delayms(unsigned int td)
  80. {    unsigned int i,j;
  81.      for(i=0;i<td;i++)
  82.      for(j=0;j<120;j++){}
  83. }
  84. void seg7x8_display(unsigned char *p)
  85. {    unsigned char i;
  86.      for(i=0;i<8;i++)                     
  87.      {   P0 = seg7cat[ p[i] ];   
  88.          P2 = ~(1<<i);    delayms(1);   
  89.          P2 = 0xFF;        delayms(1);     
  90.   }
  91. }
复制代码


批注 2020-04-11 235833.png (84.19 KB, 下载次数: 85)

批注 2020-04-11 235833.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:514901 发表于 2020-4-12 16:41 | 只看该作者
TR0  =0;
改成
TR0  =1;
回复

使用道具 举报

板凳
ID:213173 发表于 2020-4-12 21:30 | 只看该作者


楼主对比一下就知道问题在哪
  1. #include <AT89X52.H>
  2. sbit k1=P1^0;
  3. sbit k2=P1^1;
  4. sbit k3=P1^2;
  5. unsigned char code seg7cat[17] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,                     
  6.                         0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF};//'-'
  7. unsigned char dis_buf[8];
  8. unsigned char m=0,s=0,ms=0;
  9. unsigned char i,j;
  10. bit k;

  11. void delayms(unsigned int td)
  12. {
  13.         unsigned int i,j;
  14.         for(i=0;i<td;i++)
  15.                 for(j=0;j<120;j++);
  16. }

  17. void seg7x8_display(unsigned char *p)
  18. {
  19.         P0 = 0xff;
  20.         P2 = 0xff;
  21.         P2&=(0x01<<i);  
  22.         P0 =seg7cat[p[i]];   
  23.         i++;
  24.         i%=8;
  25. }

  26. void main(void)
  27. {
  28.         TMOD=0x01;
  29.         TH0=(65536-10000)/256;
  30.         TL0=(65536-10000)%256;
  31.         ET0=1;
  32.         EA =1;
  33.         TR0=0;
  34.         dis_buf[2] = 16;
  35.         dis_buf[5] = 16;
  36.         while(1)
  37.         {
  38.                 if(!k1||!k2||!k3)
  39.                 {
  40.                         if(++j>=100&&k==0)
  41.                         {
  42.                                 k=1;
  43.                                 if(!k1)
  44.                                         TR0=1;
  45.                                 if(!k2)
  46.                                         TR0=0;
  47.                                 if(!k3)
  48.                                         m=s=ms=0;
  49.                         }
  50.                 }
  51.                 else j=k=0;

  52.                 dis_buf[0] = m/10;
  53.                 dis_buf[1] = m%10;
  54.                 dis_buf[3] = s/10;
  55.                 dis_buf[4] = s%10;
  56.                 dis_buf[6] = ms/10;
  57.                 dis_buf[7] = ms%10;

  58.                 seg7x8_display(dis_buf);
  59.                 delayms(1);
  60.         }
  61. }
  62. void  timer0_isr(void)   interrupt   1
  63. {
  64.         TH0=(65536-10000)/256; //10ms???
  65.         TL0=(65536-10000)%256;
  66.         if(++ms >= 100)
  67.         {
  68.                 ms=0;
  69.                 if(++s>=60)
  70.                 {   
  71.                         s = 0;
  72.                         if(++m>=60)
  73.                                 m = 0;
  74.                 }     
  75.         }
  76. }

复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表