扩展你的电脑接口
让电脑控制家电开关(下)
——RS232C串行通信接口的应用

🏠 首页 《无线电》杂志 2004年 🔗 第4期 🔗 第29页 分类:电脑与单片机 🔗 温正伟 🔗

上期,笔者为大家介绍了用电脑串口控制24个继电器的硬件原理和制作方法,本期将介绍与本实例制作有关的软件原理和串口的基本知识。

软件和通信协议

实例中的软件可以分为上位机软件和下位机软件。下位机软件是由AT89C51单片机固件程序组成,上位机软件则是安装在电脑上的串口应用程序。上位机软件主要负责向RS232C发送主控信号和接收处理返回信号,下位机软件用于接收电脑主机通过RS232C接口发送过来的主控信号,再根据信号的内容作出相应的控制。这两个软件通信时应先预定通信所用的速率和格式,这里选用9600波特、8数据位、1停止位、无校验位。为了保证单片机在接收到控制字符时不会出现错误动作,笔者设定了一个简单的通信协议,协议为4个字节,只有当前后两个用于校验的字节都为0x61时,中间的控制字才为有效。如果对通信的可靠性要求高的话,应用到CRC等算法来产生校验字节。协议说明见表1。

图1
图1 🔍原图 (562×284)

注:文中“0x”表示十六进制,如发送0x61、0x00、0x0A、0x61,则这时AT89C51的P0口为0x0A(二进制为00001010),P0.1、P0.3脚为高电平,P0口其他引脚为低电平。在单片机完成命令后会向串口发送刚才收到的4个字节的字符,上位机软件也可以根据这个确认下位机软件是否顺利完成命令。

在上期杂志的配刊光盘中有本实例的单片机C语言源程序,本期杂志配刊光盘的“本期程序”文件夹中有本实例的V1.0演示程序。该程序的使用很简单,把制作好的电路连接到电脑的COM1口上,运行演示程序。这时点击“内置测试”选项,24个继电器就会逐个闭合一段时间又断开,完成后程序会弹出如图6所示的成功对话框,若点击程序界面上编号的选项框则相应P口上的继电器闭合或断开。

图3
图3 🔍原图 (423×227)

更多更新的相关资料可以访问网站http://www.cdle.net。

RS232C串口的基本知识

图7是RS232C的DB25针连接器,其引脚排列和名称见表2。在这25个引脚中包含了两个信道,分别为主信道和次信道,其中有4条数据线、11条控制线、3条定时信号线和2条信号地。次信道为辅助串行通道,其传输速率比主信道要低得多,其他功能都一样,但较少使用到。AT、ATX型的电脑和其他新型的电脑只提供一到两个只有主信道的RS232C串口,它们通常使用DB9插针型连接器安装在电脑后面板上,在BIOS或操作系统中称之为COM1、COM2(这个设备号用于程序编写中,也可以用COM3、COM4等表示),它们的引脚定义见图8,本实例电路就使用了DB9插针型连接器来进行电路与电脑的通信。

图4
图4 🔍原图 (142×401)
图5
图5 🔍原图 (425×398)
图2
图2 🔍原图 (395×768)

RS232C的引脚很多。但在业余的电子制作中主要用到的是RxD/TxD(数据收发引脚),它也是在本文实例制作中用到的引脚。RxD(Received Data)为串行数据接收端,用于接收数据用。TxD(Transmitted Data)为串行数据发送端。其他的控制脚使用时就要注意软件中的功能和电平的状态。当两个设备都有RS232C串行接口时,只要把它们的RxD、TxD交叉相连就可以用来实现串行通信了,图9的连接方式就可以用于两台电脑之间的通信。当两设备的接口电平不相同时就要进行EIA和TTL电平转换。实际上本实例的电路也是用到了图9的连接方式,只不过是加上了电平转换部分。

串行通信时,数据和联络信号都是用同一根信号线来传送的,这就要求收发遵守以下几点:

1.双方约定的通信速率(波特率),如在实例中单片机和电脑都是使用9600波特。

2.双方约定的数据格式(帧格式),其中包含控制信息应该有明确的定义,如实例中简单的通信协议。

3.接收方应如何得知一段数据的开始和结束(帧同步),如本实例中定义的简单协议中的B1、B4。

4.接收方如何判断收到的数据的正确性(数据校验)。

5.接收方如何从交换的信息中正确地采样到位数据(位同步)。

6.收发出错时如何处理(出错处理)。

根据同步方式的不同,串行通信又分为两类,异步通信和同步通信。同步通信时除了需要发送数据线、接收数据线和信号地线以外,还需要一根时钟信号线,时钟信号用于同步数据的发送和接收,传送时是先读取同步位,两设备的同步模式一样时数据开始传送,直到送完数据块,发送大的数据块时要周期性地重发同步字符。同步通信主要是应用于高速数据传送场合。而在本文实例中用到的是最简单的异步通信,它不需要上述的时钟信号线,只要发送数据线、接收数据线和信号地线就可以了。异步通信发送的数据是以每次一个字符的形式发出,接收端的同步是通过检测包含在每个字符的开始和结束外的同步位而形成,这就使异步通信速度变慢。

在业余的制作中也通常使用异步通信,在编写程序时只要做到上位机软件和下位机软件使用同样的波特率、数据位数、停止位和奇偶校验位就可以实现简单的RS232C异步通信。当然异步通信也可实现多种传输制式,如单工、半双工和全双工通信链路,这里不作详细说明了。RS232C接口在几乎每一台台式电脑中被使用,在一些新式的笔记本电脑也许只会有USB接口,这时可以用USB转RS232C的设备取得RS232接口,在你的智能电子制作中不如加入对它的使用,一定会给制作或发明增色不少。如我们可以在一些要读数、采集的仪表中加入串口采集或控制,这样就可以用电脑强大的处理能力去处理相关的数据。关于USB转RS232C的相关电路图制作资料,读者可访问网站http://www.cdle.net获取。

读者在进行与电脑接口有关的制作时,如有相关问题和建议可以与我刊取得联系,我们会将有关信息转给相关的专业人员帮助您解答问题。如果您有好的电脑接口应用的选题,欢迎向我们投稿。

(温正伟)