基于VB的PC-单片机通信波特率自动检测方法2012-03-10 18:33:05 来源:微计算机信息关键字: PC机 单片机 波特率 自动检测一. 引言 主从分布式微机系统是控制领域广泛使用的微机系统。主机一般由数据处理能力强、有良好人机界面的PC机担任,分机常以体积小、价格便宜、控制能力强的单片机为核心。 二.MSComm控件简介 微软MSComm控件提供了一系列标准通信属性和方法,具有完善的串口数据的发送和接收功能。该控件具有两种处理方式:(1)事件驱动方式:由 MSComm控件的OnComm事件捕获并处理通信错误及事件;(2)查询方式:通过检查CommEvent属性的值来判断事件和错误。 当设置MSComm控件的Settings属性值为“9600,e,8,1”时表明:PC串口波特率为9600b/s, 帧格式为:一个起始位,8个数据位,一个偶校验位,一个停止。一帧数据共11位。帧结构如下: 其中D0~D7是8位数据位,D8是偶校验位。 三.硬件原理框图 通信开始时,主机用一帧十位的格式发一个ASCII码为0的测试字符,则对应的帧结构如下: 单片机循环检测RXD脚,无数据时该脚为高电平,当检测到测试数据起始位时(低电平)启动计数器T0,当检测到停止位时(高电平)停止记数,T0所记数(TH0TL0)为单片机接收一帧数据9位所需的机器数时间。则,单片机波特率为: 五. 主机发送ASCII码值为0的字符的源程序 Private Sub Send_Click() 说明:若程序中MSComm1.Settings = "9600,e,8,1",则发送的是一帧11位偶校验数据,其中D0~D8均为0。对应单片机检测程序(见下文五)TH0TL0结果值为一帧10位的对应机器数值。 六.单片机接收测试数据,计算接收一帧9位数据所需机器数时间,源程序如下: ORG 8000H 参考书: 石东海 扈啸 周旭升《单片机数据通信技术从入门到精通》西安电子科技大学出版社 2002 |
|
来自: quasiceo > 《rs232 串口》