内容摘要:基于本思想设计的无线数据传输模块,已成功地运用于“磁栅式浮动检测仪”项目中。经实践检验,系统工作稳定可靠,具有一定的工程实用价值。
设AT89S51内部定时器T1测量连续8个码元计数值为M,由于是对内部的机器周期计数,且机器周期是内部振荡周期的12分频,所以总数为M的机器周期代表的实际时间是: 
很明显,式(6)与式(7)应相等,因此有如下等式成立: 
由上式即可得单片机定时器T1的初值在波特率自适应情况下的计算公式: 
由式(9)可以看出,其初值不依赖于单片机的工作频率,因此,只要单片机的工作频率相对稳定即可,对具体数值无要求。
另外,需要说明的是,对于串行异步通信,通信双方的波特率不必严格相等,只要双方的差别在一定的范围之内,就可以实现准确的通信。
2.2.2 软件模拟串口的实现
波特率确定以后,即可用软件模拟实现串行口。就单片机而言,要实现模拟串口,必须解决好时序问题,不能造成通信过程中的数据丢失,为此,采用单片机的外部中断0口的下降沿触发功能模拟串口数据接收线RXD,P1.2口模拟串口数据发送线TXD,定时器T0以定时中断方式对接收码元采样或发送数据流,实现了一个软件的串口。
对于软件模拟串口,关键在于解决好时序问题。本系统中,充分利用了nRF401芯片半双工通信的特点(即数据发送和接收不能同时进行),成功地实现了一个软件串行口。串行数据的发送实现相对较为简单,只需利用定时器使发送出去的码元维持一定的时间宽度;实现异步串行接收的关键是起始位的检测和信息位的准确提取。任何时候数据传送都可能发生,故要求接收方必须能够及时准确地接收数据,而通信过程中没有同步信号,因此串行数据的提取相对而言具有一定的难度。为此,采用AT89S51的外部中断0口模拟RXD,并没置其中断方式为边沿触发,平常维持其为高电平。由于起始位为低电平,因此,当有数据到达后就会产生中断,则根据波特率设置的定时时间间隔进行数据采样,即可实现串行数据的接收。
结 语
基于本思想设计的无线数据传输模块,已成功地运用于“磁栅式浮动检测仪”项目中。经实践检验,系统工作稳定可靠,具有一定的工程实用价值。
来源:单片机与嵌入式系统应用 责编:豆豆技术应用