单片机串口控制数码管显示两位数字时显示不对。

//我的就是通过串口功能使四位数码管显示发送给单片机的数字。我发送时选择HEX模式发送,结果只能正确显示1~9的数字,10以后的就显示其他异常数字了。如果用文本模式,什么... //我的就是通过串口功能使四位数码管显示发送给单片机的数字。我发送时选择HEX模式发送,结果只能正确显示1~9的数字,10以后的就显示其他异常数字了。如果用文本模式,什么数字都显示不对。(输入1的话,显示49,2显示50.。)怎么回事啊。???

#include<reg52.h>
#include"Basic.h"
unsigned char shu=0;
void main()
{

InitUART();

while(1)
shumaguang_xianshishuzi(shu); //数码管动态显示的函数,此处没有问题,所以我就没把代码写上去 //了。函数定义在其他Basic.c文件

}

void UARTInterrupt(void) interrupt 4
{

ES=0;
RI = 0;
shu=SBUF;

ES=1;

}
void InitUART(void)
{

AUXR = 00000000;
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;

EA = 1;
ES = 1;
TR1 = 1;
}
展开
 我来答
jmhyys
2015-04-08 · TA获得超过524个赞
知道小有建树答主
回答量:1052
采纳率:62%
帮助的人:284万
展开全部
程序都是对的,你对16进制 10进制数。可能没理解透彻。。。
你的数码管显示是10进制显示模式。所以出现了这种情况。你可以改成16进制显示。也可以自己发送数据的时候换算一下10进制应该是什么?是否跟显示的值一样?
文本模式也是显示的对的。。。
下面网址是ASII码表。你发送的文本1ASII码值就是49(10进制)文本2就是ASII码值就是50(10进制)
http://www.asciima.com/
更多追问追答
追问
请问怎么换算呢,有没有换算的头文件函数之类的?
追答
贴你那个显示函数上来。。。。在那上面改!!
生活亦是科学
2015-04-08 · 这个人很聪明,根本不需要签名
生活亦是科学
采纳数:84 获赞数:167

向TA提问 私信TA
展开全部
需提供你的硬件连接图。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式