51单片机串口通讯:把上位机接收的数据在数码管显示

比如在串口助手发送以十六进制发送6,让数码管也显示6。我感觉自己写的程序最后接收数据那部分有错误,大家帮看看吧程序:#include<reg51.h>#defineuch... 比如在串口助手发送以十六进制发送6,让数码管也显示6。我感觉自己写的程序最后接收数据那部分有错误,大家帮看看吧
程序:
#include<reg51.h>#define uchar unsigned char #define uint unsigned intuchar code dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极void delay(void) //延时{ uchar i,j; for(i=100;i>0;i--) for(j=500;j>0;j--); }main(){ uint n; TMOD=0x20; SM0=0; SM1=1; REN=1; PCON=0; TH1=0xFD; TL1=0xFD; TR1=1; n=SBUF;while(! RI);RI=0; SBUF=n;while(! TI);TI=0; P0=dis[n]; dislay();}
电路图

串口助手
展开
 我来答
he_123456
推荐于2017-11-30 · TA获得超过2892个赞
知道大有可为答主
回答量:3162
采纳率:58%
帮助的人:1340万
展开全部

建议把这几行代码

n=SBUF;while(! RI);RI=0;
 SBUF=n;while(! TI);TI=0;
 P0=dis[n];
 dislay();

改为

while(1){ 
    while(! RI); 
    RI=0; 
    n=SBUF; 
    SBUF=n; 
    while(! TI); 
    TI=0;
    P0=dis[n];
    dislay(); 
}

另外,如果是实际制作电路,P0口和数码管之间的七根连线中间要串入7个电阻才比较好,阻值在几百欧,例如200~510欧之间。

更多追问追答
追问
测试不行,勾选十六进制的情况下输入一位数字没反应,需要输入两位数数码管才会亮,但也不一定会显示数字。我的目的是想从上位机输入一个个位数,然后数码管显示该数。串口助手那里的十六进制取消勾选的话不管输入多少都是显示8
追答
你给出的代码不完整,只能给你提供可能的解决途径供参考。
如果你希望有人帮你调通的话,你应该提供完整的软件project以及proteus的design或project。
zzm945302173
2017-11-30
知道答主
回答量:2
采纳率:0%
帮助的人:1544
展开全部
求个程序
求个程序
求个程序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式