以16进制发送一个0-65536之间的任一数,当单片机收到后在数码管上动态显示出来,波特率自定

首先为什么我的最后一位显示的比较亮,其次每次复位时显示255,最后怎么显示255以上的数字#include<reg52.h>#defineucharunsignedcha... 首先为什么我的最后一位显示的比较亮,其次每次复位时显示255,最后怎么显示255以上的数字
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar flag;
uint num;
void display(uchar,uchar,uchar,uchar,uchar);
void delay(uchar);
main()
{
EA=1;
ES=1;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
while(1)
{
display(num/10000,num%10000/1000,num%10000%1000/100,num%10000%1000%100/10,num%10);
if(flag==1)
{
ES=0;
flag=0;
SBUF=num;
while(!TI);
TI=0;
ES=1;
}
}
}
void ser() interrupt 4
{
num=SBUF;
RI=0;
flag=1;
}
void delay(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display(uchar wan,uchar qian,uchar bai,uchar shi,uchar ge)
{
dula=1;
P0=table[wan];
dula=0;
wela=1;
P0=0xfe;
wela=0;
delay(1);
dula=1;
P0=table[qian];
dula=0;
wela=1;
P0=0xfd;
wela=0;
delay(1);
dula=1;
P0=table[bai];
dula=0;
wela=1;
P0=0xfb;
wela=0;
delay(1);
dula=1;
P0=table[shi];
dula=0;
wela=1;
P0=0xf7;
wela=0;
delay(1);
dula=1;
P0=table[ge];
dula=0;
wela=1;
P0=0xef;
wela=0;
}
展开
 我来答
jinfahua
2013-12-15 · TA获得超过590个赞
知道小有建树答主
回答量:285
采纳率:0%
帮助的人:232万
展开全部
做而论道 指出了你数据接收后显示不正确的问题,是接收数据不正确。关于你的LED亮度不均匀的问题,是由于你的数码管是动态扫描的,但没有使用定时器中断,这样每个数码管点亮的时间就不等,造成亮度不均匀。从程序中看,你是五个LED,你应该使用定时器中断,比如2mS中断一次,每次点亮一个LED,下一次点亮下一个,周而复始,这样亮度就均匀了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2013-12-15 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
串口通信,每次仅仅能传送一个字节,0~255。

如果需要传送更大的数字,就要分成几次来传送,如 6、5、5、3、6。

多字节的传输,可以参考:

http://hi.baidu.com/do_sermon/item/c2db620200031af4a110340b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
18652008732
2014-09-05
知道答主
回答量:40
采纳率:0%
帮助的人:14.1万
展开全部
亲 你现在还解决问题了!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式