为什么只有个位和十位 显示,,,别的亮,可是没有显示数字,求指点,,谢谢了在此。
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar wan, qian,bai,shi,ge;
- uint num,aa; //分离两个分别显示的数
- uchar code table[]={
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,};
- void delayms(uint);
- void main()
- {
- num=0;
- ET0=1; //打开定时器0
- TMOD=0x11;
- TH0=(65536-50000)/256;//装初值
- TL0=(65536-50000)%256;
- TR0=1; //启动定时器0
- EA=1; //开启总中断
- while(1)
- {
- if(aa==50)
- {
- aa=0;
- num++;
- if(num==90)
- {
- num=0;
- }
- }
- wan=num/10000; // 万位设置
- qian=num%10000/1000; //千位设置
- bai=num%1000/100;
- shi=num%100/10;
- ge=num%10;
-
- P1=0xfe; //打开万位显示,0xfe 代表 1
- P0=table[wan];
- delayms(5);
- P1=0xfd;
- P0=table[qian];
- delayms(5);
- P1=0xfb;
- P0=table[bai];
- delayms(5);
- P1=0xf7;
- P0=table[shi]; //送十位段数据
- delayms(5);
-
- P1=0xef;
- P0=table[ge]; //送各位段数据
- delayms(5);
- }
- }
- void delayms( uint xsm)
- {
- uint i,j;
- for (i=xsm;i>0;i--)
- for(j=110;j>0;j--);
- }
- void dszd() interrupt 1 //定时器0中断函数
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- aa++;
- }
复制代码
一周热门 更多>