打印

求高手指点一下这个LED显示程序,显示乱码

[复制链接]
1920|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
arao|  楼主 | 2010-12-16 11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序为什么不能正常显示

---------

#include <reg52.h>
  #define uchar unsigned char
  #define uint unsigned int
uint num;
uint i;
int  a[]={0,0,0,0,0};                      /*存储四位数据的每一位*/
int  b[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,
0x7D,0x07,0x7F,0x6F};   /*0~9的字型码*/
int  c[]={0x01,0x02,0x04,0x08};            /*控制四位数据显示位置的字位码*/
  delay(uint x)                             /*延时时间*/
  {
    uint a,b;
   for(a=x;a>0;a--)
     for(b=200;b>0;b--);
  }
        void display(int x,uint i)                   /*显示程序*/
         {
    P2=c[i];                            /*P2口送字位*/
   P0=b[a[i]];                          /*P1口送字型*/
   delay(5);                            /*延时*/
}
   void main()
{
delay(1);
a[0]=num/1000;                      /*将最高位取出*/
   a[1]=num%1000/100;                 /*将百位取出 */
   a[2]=num%1000%100/10;             /*十位取出*/
   a[3]=num%1000%100%10;            /*个位取出 */
while(1)
{
for(i=0;i<4;i++)                     /*四次循环取数组存放的四位数据*/
display(a[i],i);                       /*调用显示子函数*/
}
}

相关帖子

沙发
Jack602| | 2010-12-16 12:02 | 只看该作者
这样的程序,应该网上很多吧..建议lz搜下,然后自己对着看,问题在哪,这样会更有效

使用特权

评论回复
板凳
冯冯冯冯| | 2010-12-16 15:31 | 只看该作者
本帖最后由 冯冯冯冯 于 2010-12-16 15:40 编辑

你的程序数组a的长度int  a[]={0,0,0,0,0}这里应该是多了一位,还有下面的的局部变量X重复引用。剩下的就不知道了你应该把电路图也带上。

使用特权

评论回复
地板
xjycug| | 2010-12-16 16:46 | 只看该作者
变量num没有赋初值.
数组变量,a[],b[],c[],最好都使用unsigned char型

使用特权

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

本版积分规则

个人签名:谢了,正好学学看

27

主题

182

帖子

0

粉丝