打印

请那位大侠帮忙修正

[复制链接]
1401|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaohq|  楼主 | 2008-7-23 23:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自写个数码显示程序,不知错哪里了,请哪位帮忙指点下.
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint delaytime)/*延时*/
  {
    uint a,b;
     for(; delaytime>0;delaytime--)
      {
      for(a=0;a<4;a++)
           { 
             for(b=0;b<255;b++)
              {;}
            }
          }
      }
void main()
 {
   uint a,b,c,d,m,n;
   float w=576.8;
   uint bittab[8]={0xfe,0xfd,0xfB,0xf7,0xef,0xdf,0xbf,0x7f};/*对应第1-7位数码管*/
  uint tab[10]={0XC0,0xF9,0XA4,0XB0,0X99,0X92,0X82,0XD8,0X80,0X90};/*对应0-9数字*/
   a=w*10/1000;/*a=5*/
   m=tab[a];/*为了调试时看是不是等于0X92,即数字5,结果是正确的。*/
   b=w*10/100-a*10;/*b=7*/
   n=tab;/*为了调试时看是不是等于0XD8,即数字7,结果是正确的。*/
   c=w*10/10-a*100-b*10;/*c=6*/
   d=w*10-a*1000-b*100-c*10;/*d=8*/
    while(1)
       {
         P2=bittab[0];
         P0=tab[a];
         delay(10);
         P2=bittab[1];
         P0=tab;
         delay(10);
         P2=bittab[2];
         P0=tab[c]&0x7f;/*为把小数点也点亮特跟01111111(即0X7F)按位与*/
         delay(10);
         P2=bittab[3];
         P0=tab[d];
         delay(10);
       }
 }
                          5     8.              8
 在实验板上实验时却显示  0X92  0X00   (空的)  0X80
另,我用求余运算符'%'后,在编译时报错,是怎么回事?

相关帖子

沙发
太阳之母| | 2008-7-23 23:55 | 只看该作者

嘿嘿

检查线路,检查外部驱动器件,检查LED数码管吧
或者,你让各位都显示同样的内容试试?比如,分步骤的让a=b=c=d=0,1,2,3,..,9,都试一下看看,是否都能点亮成同一个数?
是,则初步说明线路连接没大问题,否,则说明线路断了,或者是驱动三极管(如果用了三极管的话)或者是LED数码管坏了。

使用特权

评论回复
板凳
gaohq|  楼主 | 2008-7-24 00:12 | 只看该作者

谢谢楼上!

线路没问题,我刚买的实验板,我一个一个管都试过了.

使用特权

评论回复
地板
太阳之母| | 2008-7-24 00:19 | 只看该作者

嘿嘿

都输出同样的数试试看吧

使用特权

评论回复
5
太阳之母| | 2008-7-24 00:50 | 只看该作者

呵呵

刚买的就一定都是好的?毫秒微秒之间,说坏就坏了!快着呢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

378

主题

3763

帖子

5

粉丝