51单片机与pc串口通信为什么显示不正常

#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitdula=P2^6;//锁存器U1s... #include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit dula=P2^6; //锁存器 U1sbit wela=P2^7; //锁存器 u2uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar d;

void delay(uchar x){ uchar i,j; for(i=x;i>0;i--) for(j=110;j>0;j--);}

void display(uchar a,uchar b){ dula=0; P0=table[a]; dula=1; dula=0; wela=0; P0=0x7e; wela=1; wela=0; delay(2);
dula=0; P0=table[b]; dula=1; dula=0; wela=0; P0=0x7d; wela=1; wela=0; delay(2);}

void main(){ TMOD=0x20; TH1=0xfd; TL1=0xfd; REN=1; SM0=0; SM1=1; ES=1; TR1=1; EA=1; while(1) { display(d/10,d%10); }}

void t1() interrupt 4{ RI=0; d=SBUF;}

我之前做别的程序的时候写通信发现显示不正常 我用串口助手发送一个数据到单片机上 其中U1 U2两个寄存器链接到数码管上用来显示(P2.6和P2.7)

十进制发送数据以后数据总是在48-57之间
就是
0……48
1……49
类推
9……57
10……48
一直这样循环
我想这是为什么 怎么改才会显示正常 串口COM3是用的串口 波特率9600也没什么问题 我想问下具体问题出在什么地方 应该怎么修改才好
展开
 我来答
匿名用户
2013-07-26
展开全部
发送和接收的状态要一样,
16进制发就要16进制收,

字符发就要字符收,
这样收发的内容才是一样的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
香松锡心
2013-07-26 · TA获得超过194个赞
知道小有建树答主
回答量:360
采纳率:72%
帮助的人:109万
展开全部
这就对了 0 的ascii码就是48
0-48
1-49
2-50
........
9-57
你是按字符发送的,如果用16进制发送,就会发多少得多少了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一万光年MEGn0
2013-07-26 · TA获得超过3712个赞
知道大有可为答主
回答量:4602
采纳率:67%
帮助的人:1073万
展开全部
点击那个 “十六进制显示”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
善如南0hHb23
2013-07-26 · TA获得超过174个赞
知道小有建树答主
回答量:777
采纳率:0%
帮助的人:495万
展开全部
是不是波特率没有设置好呢

串口通信 很容易实现的啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式