最容易看懂的处理方法如下 自定义通信协议 0xAA'2' '1' '1' '2' '2' '8' '2' '1' '2' '2' '4' '0' '2'0x55 表示21年12月28日21点22分40秒星期二 unsigned char rec_buf[15];//接收缓存 void UARTInterrupt() interrupt 4 { static uchar i=0; //静态计数变量 RI=0; //接收中断请求标志位清0 rec_buf[num]=SBUF; //接收到的数据串保存在缓存数组 if(rec_buf[0]==0xAA) //验证数据头(起始位) { i++; if(i>=15) { flag=1; //一帧数据接收完成标志置1 i=0; //计数变量清0 } } } 在主函数中验证数据尾无误,再把收到的字符显示在LCD相应位置 |
AUG 发表于 2021-12-28 14:19 我加了个蜂鸣器在里面,只有把蜂鸣器响的条件改为数据为0的时候才会响,这是表示没有收到数据吗? |
确定是否收到数据了,收到了再去显示肯定就没问题 |
lkc8210 发表于 2021-12-28 11:22 没用啊,我是在做电子钟,要求是要通过串口通信将单片机实物与仿真环境里的电子钟时间同步显示,数据不能只发一段,要实时不停发送,但是数据能发送出去,但是接收端这边有问题,LCD能正常显示,但没法显示我发送过去的数据,我就是这里不知道问题出在哪。还有这上面就是我接收端的整个代码了(除了LCD的驱动程序)。 |
因为代码不全 只能推测 第27行串口代码有点问题 试改为
然后输入59 19 06 07 05 07 30 44 |
我自己已经搞了两天了没有什么头绪 |