数码管显示0-65536,我是以16进制发送一个0-65536之间的任一数,当单片机收到后在数码管上动态显示出来,波特率自定,请各位大侠帮忙看看,我这程序是否有问题,我现在不能做仿真,软件有问题!
程序如下:
- sbit deepLE=P3^7;
- uchar code table[]={0xc0,0xf9,0xa4,0xb0,
- 0x99,0x92,0x82,0xf8,
- 0x80,0x98,0x88,0x83,
- 0xc6,0xa1,0x86,0x8e};
- uchar flag=0;
- uint get=0,aa=65535;
- void display(uint shu);
- void delay(uint);
- void main()
- {
- deepLE=0;
- TMOD=0x20;
- TH1=0xfd;
- TL1=0xfd;
- REN=1;
- SM0=0;
- SM1=1;
- EA=1;
- ES=1;
- TR1=1;
- while(1)
- {
- if(flag==1)
- {
- aa=SBUF;
- flag=0;
- while(!RI)
- display(aa);
- }
- else
- display(aa);
-
- }
-
- }
- void series() interrupt 4
- {
- RI=0;
- get=SBUF;
- flag=1;
- }
- void display(uint shu)
- {
- uint a,b,c,d,e;
- a=shu/10000;
- b=shu%10000/1000;
- c=shu%1000/100;
- d=shu%100/10;
- e=shu%10;
- P2=0xf7;
- P0=table[a];
- delay(5);
-
- P2=0xef;
- P0=table
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
你的问题没有把现像说清楚,但我猜应该有两个以下问题:
1、你的串口接收的数据最大是256
2、显示的时候会闪烁。会出现显示数据错误
如果是我来写这个程序的话以下是思路
串口接收的数据分两个字节,先传高字节,再传低字节。然后整合成无符号整数。
主程序中将这个无符号整数存入显示缓存中。
定时器0作显示用。显示的时候送数据缓存前一定要先关显示位。
一周热门 更多>