五位十进制 求指点。。

2019-07-14 22:53发布

为什么只有个位和十位 显示,,,别的亮,可是没有显示数字,求指点,,谢谢了在此。
  1. #include<reg52.h>
  2. #define   uint  unsigned  int
  3. #define   uchar  unsigned  char
  4. uchar wan, qian,bai,shi,ge;
  5.          uint  num,aa;  //分离两个分别显示的数
  6. uchar  code  table[]={
  7. 0x3f,0x06,0x5b,0x4f,
  8. 0x66,0x6d,0x7d,0x07,
  9. 0x7f,0x6f,0x77,0x7c,};        
  10. void  delayms(uint);
  11. void  main()
  12. {
  13.    num=0;
  14.         ET0=1;                //打开定时器0
  15.         TMOD=0x11;
  16.         TH0=(65536-50000)/256;//装初值
  17.         TL0=(65536-50000)%256;
  18.         TR0=1;                //启动定时器0
  19.         EA=1;                        //开启总中断
  20.    while(1)
  21.    {
  22.         if(aa==50)
  23.         {                  
  24.                 aa=0;
  25.             num++;
  26.             if(num==90)
  27.                   {
  28.                     num=0;
  29.                   }
  30.         }
  31.         wan=num/10000;                 // 万位设置
  32.         qian=num%10000/1000;  //千位设置
  33.         bai=num%1000/100;
  34.         shi=num%100/10;
  35.         ge=num%10;
  36.         
  37.         P1=0xfe;                //打开万位显示,0xfe 代表 1
  38.         P0=table[wan];
  39.         delayms(5);

  40.         P1=0xfd;
  41.         P0=table[qian];
  42.         delayms(5);

  43.         P1=0xfb;
  44.         P0=table[bai];
  45.         delayms(5);

  46.         P1=0xf7;
  47.         P0=table[shi];         //送十位段数据
  48.         delayms(5);
  49.         
  50.         P1=0xef;
  51.         P0=table[ge];           //送各位段数据
  52.         delayms(5);
  53.         }           
  54. }
  55. void  delayms( uint  xsm)
  56. {
  57.     uint i,j;
  58.           for (i=xsm;i>0;i--)
  59.            for(j=110;j>0;j--);
  60. }

  61. void dszd() interrupt 1                        //定时器0中断函数
  62. {
  63.         TH0=(65536-50000)/256;
  64.         TL0=(65536-50000)%256;
  65.         aa++;
  66. }
复制代码


0条回答

一周热门 更多>