新闻中心

EEPW首页>嵌入式系统>设计应用> 基于89C2051单片机的热表通讯模块的开发

基于89C2051单片机的热表通讯模块的开发

作者: 时间:2012-11-03 来源:网络 收藏

基于89C2051单片机的热表通讯模块的开发
图6  信息帧一般格式
  上位机发送信息帧时,下位机全部收到上位机的信息帧,然后判断信息帧中的地址码,如果是自己的地址码,则根据数据帧中的信息码内容作出相应的反应。信息帧的长度不限(根据系统中下位机的个数以及信息码的形式决定) ,是多个字节的。在这种通信格式中还可以用软件的方式进行一些通信数据的校验。
工控机与下位机通讯模块之间的通信协议,如图7 所示。
基于89C2051单片机的热表通讯模块的开发
图7  工控机与下位机通讯模块间的通信协议
  上位机工控机向下位机发出的信息帧中应包含地址和控制指令信息,以便下位机的通讯模块能辨识出是否及如何应答;通讯模块,向上位机回复的信息帧中应包含自身地址及对应控制指令的数据;同步字和结束字是完成异步通讯必须的,因此无论上位机信息帧还是下位机信息帧都不可少。具体的信息帧格式如下(括号里标注为字节数,未标出的字节数为1) :
整个收发数据的互控流程如下:
上位机:按照一定的时间发送指令给下位机;
下位机:收到信息帧后,判断信息帧中的地址是否为本机地址,若是则将本机地址发回上位机,并根据控制字向热表发出相应的指令,等待模拟串口中断,将热表数据传给,之后转发给上位机;反之则退出中断程序;
上位机:根据串口引发的事件接受数据,判断来源后存入数据库并通过人机界面显示。
按照上述通信协议,综合串口模拟过程对通讯模块(下位机) 进行编程。编写的程序主要包括主程序和中断程序;中断程序有模拟串口中断接收程序和串行中断程序。其中主程序完成各个特殊寄存器及通信参数、格式的初始化工作,分析判断串行中断,接受信息向热表发出相应的指令;模拟串口中断程序具体完成热表数据的接收;串行中断程序完成对上位机发出信息帧的接收。另外,考虑到实际应用当中各种随机干扰,在编写程序时作了适当的纠错处理,即通讯模块收到上位机指令后对热表进行操作,若在一定时间内没有收到回应,则使程序复位。
每台热表对应的通讯模块地址的标识方法如图8所示。充分利用了该型号的硬件资源,以跳线的方式设定P1 端口各个管脚的电平作为地址标识,8个管脚不同的通断组合可以表示不同的地址。
基于89C2051单片机的热表通讯模块的开发
图8  通信模块地址标识
通讯模块的编程都是利用仿真器提供的环境进行模拟并调试成功的。

4  与上位机软件接口
通过通讯模块最终实现工控机对热表数据的读取还需要对上位机进行通讯接口程序的编写。上位机通讯程序的编写也同样有多种方法: (1) 通过调用WINDOWS 提供的API 函数实现; (2) 采用汇编语言和C 语言混合编写动态连接库函数实现; (3) 利用VB 语言及其提供的串行通信控件实现。第3 种方法最简单, 开发周期短, 经济实用。只需在工程中添加MSCOMM控件, 然后进行相应的属性设置, 便可完成数据的收发。但VB 中的数据收发分为二进制形式和文本形式。若发送文本,收到的文本是ASC Ⅱ码, 在VB6. 0 中使用的是Unicode 字符,即用2 个字符来表示1 个字符, 当发送1 个字符时单片机收到2 个字节。因此大多情况下PC 机与单片机通讯交换的是二进制数据。所以利用MSCOMM 控件来发送二进制数据时, 必须将变量声明为Byte 形式。

参考文献
[1 ]  胡汉才. 单片机原理及其接口技术. 北京:清华大学出版社,1993 :317 - 320.
[2 ]  李华,严天峰. 串行通讯软硬件的实现方法. 电子世界,2003 (5) :31 - 33.
[3 ]  王小军,郝迎吉,张斌. 单片机串行通信中两个问题的讨论. 现代电子技术,2002 (1) :69 - 71.


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭