
51单片机波特率自动识别系统程序设计(含C51源码)
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本项目提供了一套基于51单片机的波特率自动识别系统设计方案及其实现的C51源代码,旨在简化不同波特率下的通信配置。
本段落介绍了一种在80C51串行通讯应用中的自动检测波特率的方法。程序启动后所接收到的第一个字符用于测量波特率,这种方法避免了设定难以记忆的开关,并且免去了使用多种不同波特率带来的麻烦。
一种可靠地实现自动波特检测的方法是可能的,它无须严格限制可被确认的字符。然而,在各种条件下如何在大量允许出现的字符中找出确定波特率的时间间隔是一个问题。最快捷的方法是检测一个单独位时间(single bit time),以确定接收波特率应该是多少。不过,在RS-232模式下,并非所有ASCII字符都能测量出单个位时间。
对于大多数字符来说,只要波特率存在合理波动,从起始位到最后一位“可见”位的数据传输周期就会在一定范围内变化。此外,许多系统采用8位数据、无奇偶校验的格式来传输ASCII字符,在这种格式中普通ASCII字节没有MSB设定,并且UART总是先发送数据低位(LSB),后发送数据高位(MSB)。因此我们总会看到停止位。
在下面的波特率检测程序中,首先等待串行通讯输入管脚上的起始信号(下降沿),然后启动定时器T0。在其后的每一个串行数据上升沿处捕获并保存定时器T0的数值。当定时器T0溢出时,最后一次捕获到的时间即是从串行数据开始位到最后一个上升沿(假设是停止位)所经历的时间。
全部评论 (0)
还没有任何评论哟~


