比如在串口助手发送以十六进制发送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();}
电路图
串口助手
建议把这几行代码
n=SBUF;while(! RI);RI=0;改为
while(1){另外,如果是实际制作电路,P0口和数码管之间的七根连线中间要串入7个电阻才比较好,阻值在几百欧,例如200~510欧之间。
追问测试不行,勾选十六进制的情况下输入一位数字没反应,需要输入两位数数码管才会亮,但也不一定会显示数字。我的目的是想从上位机输入一个个位数,然后数码管显示该数。串口助手那里的十六进制取消勾选的话不管输入多少都是显示8
追答你给出的代码不完整,只能给你提供可能的解决途径供参考。
如果你希望有人帮你调通的话,你应该提供完整的软件project以及proteus的design或project。
取消勾选十六进制发送,用数字对应的ascii码可以正常显示了。不管怎样还是要谢谢你的回答!