软件和通讯协议
表1 实例中程序所使用的简单通讯协议
注:文中"0x"表示十六进制,如发送0x61,0x0,0x0A,0x61,则这时AT89C51的P0口为0x0A(二进制为00001010),P0.1,P0.3脚为高电平,P0口其它引脚为低电平。在单片机完成命令后会向串口发送刚才收到4个字节的字符,上位软件也可以根据这个确认下位机是否顺利完成命令。本实例提供了单片机固件的C语言源程序和window下的V1.0示例程序源代码(DELPHI)。V1.0的演示程序界面见图七。示例程序的使用也是很简单的,把实例电路连接到电脑的COM1口上,运行示例程序,这时点击"内置测试"24个继电器就会逐个闭合一段时间又断开,完成后程序会弹出如图七的成功对话框,如点击程序界面上编号的选项框则相应P口上的继电器闭合或断开。 上述的所有源码程序和可执行文件都可在本期的附加光盘上找到,更多更新的相关资料可以访问笔者的网站http://www.。(源码程序可在这点击下载 ![]() ![]() ![]()
RS232C串口的基本知识 图八是RS232C的DB25针连接器,其引脚排列和名称见表2。在这25个引脚中包含了两个信道,分别为主信道和次信道,其中有4个数据线,11个控制线,3个定时信号线和2个信号地。次信道为辅助串行通道,其传输速率与主信道要低得多,其它功能都一样,但较少的使用到。在AT、ATX型的PC和新其它新型的PC只提供一到两个的只有主信道的RS232C串口,它们通常是使用DB9插针型连接器安装在PC后面板上,在BIOS或操作系统中称之为COM1、COM2(这个设备号也用于程序编写中,也可以用COM3,COM4等),外观和引脚定义分别见图三和图九,实例电路就是要使用它来进行和电脑进行通讯。
串行通信时,数据和联络信号都是用同一根信号线来传送的,这就要求收发遵守以下几点: 1) 双方约定的通信的速率(波特率),如在实例中单片机和电脑都是使用9600波特。 2) 双方约定的数据格式(帧格式),其中包含控制信息应该有明确的定义,如实例中简单的通讯协议。 3) 接收方应如何得知一段数据的开始和结束(帧同步),如实例中简单协议中的B1,B4。 4) 接收方如何判断收到的数据的正确性(数据校验)。 5) 接收方如何从位流中正确地采样到位数据(位同步)。 6) 收发出错时如何外理(出错外理)。
根据同步方式的不同,串行通信又分为两类,异步通信和同步通信。同步通信时除了需要发送数据线,接收数据线和信号地线以外,还需要一根时钟信号线,时钟信号用于同步数据的发送和接收,传送时是先读取同步位,两设备的同步模式一样时数据开始传送,直到送完数据块,发送大的数据块时要周期性的重发同步字符。同步通信主要是应用于高速数据传送场合。而在实例中用到的是最简单的异步通信,它不需要上述的时钟信号线,只要发送数据线、接收数据线和信号地线就可以了。异步通信发送的数据是以每次一个字符形式发出,接收端的同步是通过检测包含在每个字符的开始和结束外的同步位而形成,这就造成20%冗余时间,使速度通讯速度变慢。 在业余的制作中通常是使用异步通信,在编写程序时只要做到上位机和下位机的使用同样的波特率、数据位数、停止位和有奇偶校验位就可以实现简单的RS232C异步通信。当然异步通信也可实现多种传输制式,如单工、半双工和全双工通信链路,这里不做详细说明了。 RS232C接口在几乎每一台台式PC电脑中被使用,在一些新式的笔记本电脑也许只会有USB接口,这时可以用USB转RS232C的设备取得RS232接口。在你的智能电子制作中不如加入对它的使用,一定会给你的制作或发明增色不少,如我们可以在一些要读数、采集的仪表中加入串口采集或控制这样就可以用电脑强大的处理能力去处理相关的数据,也可以在一些要用到电脑控制的电路制作中用到串口。图一、二、十一是本文实例制作的实物图,关于它的PCB和相关的制作资料请访问笔者的主页http://www.,如有相关问题和建议也可以联系笔者Email:pnzwzw@。
表3 零件表
|
|
来自: 双喜临门 > 《电子,电器,维修》