目录
本次自己捣鼓的问题:(自己摸索的一个实验)
以51的单片机来说,用定时器2作为串口1来进行串口实验,检验以下的数据(任意数据)
"hello"--1
"yzh666"--2
"aqawaer"--3
实现效果:
单片机收到这些消息字段后进行判断并在数码管的第一位显示是几号消息,顺便看看串口的实时性如何。
初步基础:
串口的波特率有很多种,单位是多少位每秒,以9600bps为例,我认为9600位每s,若是无校验8位数据位,一位起始位和一位停止位而构成一个数据帧(共10位),
起始位:1
数据位:8
停止位:1
校验位:0
那么每s能接受960个数据包,每八位为一个字节,那就是没s能接受960个字节(也就是一个char 或者是unsigned char型的数据),那么相当于每1.041ms接受一个字符.
串口中断:每次发送或者接受数据后TI或RI置为1则触发中断(硬件置位),故触发中断后需要软件复位(置为0),优先级低于定时器中断。串口中断一般用于接受数据。

本文档详述了一次使用51单片机通过定时器2实现串口1通信的实验,目的是验证串口接收特定字符串的实时性和准确性。实验中,通过设置不同的数据帧间隔,测试了串口在不同速率下的数据判断能力。在1000ms间隔发送'hello'、'yzh666'、'awaqaer'时,取得了满意的效果。然而,当发送间隔小于300ms时,出现了数据混淆的问题。通过优化中断处理和引入“喂狗”机制,解决了这一问题,确保了在较短间隔下也能准确判断接收到的消息。
最低0.47元/天 解锁文章
1416

被折叠的 条评论
为什么被折叠?



