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

2025-12-15 18:49:21
推荐回答(3个)
回答1:

楼主的显示程序,放在了:if(flag==1) {......} ,语句中。
这样只有在收到数据后,才显示一遍,显示结束时,仅仅是显示个位,前两位,都消影了。
动态显示程序,必须不停的调用,才能看见各个位。
动态显示程序,应该放在条件语句的外面,如下:

while(1)
{
bai=a/100;
shi=a%100/10;
ge=a%10;
display(bai,shi,ge);//--放在这里,才能稳定的显示

if(flag==1)
{
ES=0;
flag=0;
bai=a/100;
shi=a%100/10;
ge=a%10;
display(bai,shi,ge);//放在这里,显示的机会太少了
SBUF=a;
while(!TI);
TI=0;
ES=1;
……

回答2:

延时时间太短

回答3:

实物还是仿真?