(5) 为了防止实际工作中当向某台从机发送地址帧或命令字后,如果失去接收主机发出的地址数据的机会,或因某台从机不工作而使系统陷入“死循环”程序而不能正常工作。为了避免这种情况的发生,在设计时还要考虑一定的容错机制,本设计中采用的方法是在发送完地址帧和命令字后,程序开始计时。如果超过一定时间还没收到返回确认信息,就重发刚刚发送的数据如果重发3确认还没收到确认信息,即报告出错,并记录该出错单片机地址。本设计利用WindowsAPI函数编写一个延时小程序:
procedure TimeDelay(DT:DWORD); //DT为延时时间(ms)
var TT:DWORD;
begin
TT:=GetTICkCount(); //调用API函数
while GetTickCount()-TT<DT do
Application.ProcessMessages; //系统挂起
end;
3) 下位机软件设计
根据该工程特点,通讯只在特定时间进行,因此下位机只须采用查询方式与主控机通信:当主控机需要发送或读取下位机数据时,事先控制下位机进入通讯状态,初始化串口,等待PC机请求接收和发送数据。本设计采用C51语言进行编写,下位机主程序流图如下图所示。
4 结束语
经过试运行该系统工作稳定,收发数据可靠。Delphi是Windows环境下最优秀的程序设计工具之一,使用它可以方便地编写出非常优美、流畅的应用程序界面。利用第三方Spcomm通讯控件避免了调用API函数,需要设置繁复的参数的麻烦。本文正是应用了二者的长处,实现了微机与单片机的通信。
参考文献
[1] 范逸之,陈立元. Delphi与RS-232串行通信控制[M].北京:清华大学出版社,2002
[2] 吕伟臣. 精通Delphi7.0. 北京:科学出版社[M],2004
[3] 李朝青. PC机及单片机数据通讯技术[M]. 北京:北京航空航天大学出版社,2001
本文关键字:单片机 接口电路,单元电路 - 接口电路
上一篇:单片机常用接口电路及其编程