单片微型计算机简称单片机,它是将中央处理器(CPU)、存储器(RAM,ROM)、定时/计数器和各种接口电路都集成到一块集成电路芯片上的微型计算机。随着计算机技术尤其是单片机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、湿度等参数进行检测和控制。PC机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS 232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。因此如何实现PC机与单片机之间的通信具有非常重要的现实意义。针对一些远距离控制或者是危险性比较高的数据采集和控制的应用情况,本文主要介绍一种用双工方式实现PC机与单片机之间的串行通信。
1 设计方案
为了通过串口实现PC机与单片机间的双工通信,可有如下设计方案。
(1)设计方案一:有线传输
此方案是指PC机与单片机之间通过电缆线传输数据。有线传输的优势是性能比较稳定,调试简单,而不足之处在于它的应用范围不够广、性能不够好,而且传输距离受限,这样就大大影响了系统的应用范围。
(2)设计方案二:无线传输
此方案是指PC机与单片机通过无线信道传输数据。无线传输的最大优势是应用范围广,受距离约束较小,在一定范围内可以不用考虑距离问题,还可以应用在一些高温、危险的场合。
因此,本文选用无线传输方案通过串口来实现PC机与单片机之间的双工通信。无线传输可以用不同的方式来实现,常用的有红外方式、蓝牙方式,其他的还有射频收发芯片如CC1100,PT2262/2272芯片等。
红外通信是利用950 nm近红外波段的红外线作为传递信息的载体,通过红外光在空中的传播来传递信息,由红外发射器和接收器实现。发射端将二进制数字信号调制成某一频率的脉冲序列,经电光转换电路,驱动红外发射管以光脉冲的形式发送到空中。接收端将接收到的光脉冲转换成电信号,再经解调和译码后恢复出原二进制数字信号。其最大优点是:不易被人发现和截获,保密性强;几乎不会受到电气、天电、人为干扰,抗干扰性强。此外,红外线通信机体积小、重量轻、结构简单、价格低廉。不足之处在于它必须在视距内通信,且传播受天气的影响。
CCll00是一种低成本真正单片的UHF收发器,为低功耗无线应用而设计。CCll00构建高性能射频无线数据传输技术方案应用无线通讯模块采用透明模式进行通讯,即所收即所发,具有通讯距离远、低功耗、接口灵活等优点,使用者无需编码和控制。CCll00通信距离(视距)大于300 m,而且能隔墙遥控,操作方便。
综合上述分析,本文介绍的是采用CCll00收发器通过串口来实现PC机与单片机之间的双工无线通信。
2 硬件设计
2.1 总体框图
此双工无线通信系统的总体框图如图1所示。由于此系统可实现双工通信,因此它可分为两个通信过程:PC机(上位机)通过上位机程序界面发送数据给单片机,并送给液晶屏显示相应的数据;键盘输入数据传给单片机,接着发送给PC机,并在PC机上位机程序界面上显示出来。
2.2 实现电路图
对应于上述框图的电路实物图如图2所示。其左右两个电路分别对应上述框图中的左右两个部分。总体来说,它包括电平转换电路、单片机处理部分、无线收发部分(CCll00收发器)、液晶显示模块和键盘输入模块五个部分。
(1)电平转换电路
PC机的串行口采用的是标准的RS 232接口,单片机的串行口电平是FTL电平,而TTL电平特性与RS 232的电气特性不匹配,因此为了使单片机的串行口能与RS 232接口通信,必须将串行口的输入/输出电平进行转换。通常用MAX232芯片来完成电平转换。
(2)单片机部分
单片机部分包括单片机、复位电路和时钟电路。它将串口送过来的数据传输给CC1100收发器,或者将CCll00收发器传送过来的数据通过串口给PC机。单片机的复位电路和时钟电路是单片机工作所必需的。
(3)无线收发部分
无线收发部分由CC1100收发器组成,它将接收到的数据通过天线发射出去或从天线接收发送过来的数据。
(4)液晶显示模块
此处选用LCDl602液晶模块,其内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每一个字符都有一个固定的代码。
(5)键盘输入模块
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4×4=16个按键,比之直接将端口用于键盘多出了一倍。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是比较好的。矩阵式键盘的按键识别方法为行扫描法。此处选用4×4的矩阵键盘来输入O~9的数字和a~f的字母。
3软件设计
本系统的软件设计方面包括上位机程序和单片机程序的设计。上位机程序要实现的功能是在电脑上显示一个操作界面,它可代替串口调试工具。
3.1 上位机程序
上位机程序可以用VB,VC++等语言来编程,但本方案采用比较方便的C#来编程实现,其流程图如图3所示。
3.2 单片机程序
单片机程序主要包括主程序、单片机发送子程序、单片机接收子程序、液晶显示子程序、键盘输入子程序五部分,均采用C语言进行模块化编程。由于篇幅原因,下面只给出了单片机发送子程序和接收子程序,如图4,图5所示。
4 测试结果
测试时,连接好硬件打开串行口COM1,并设波特率为9 600 b/s。单片机发送字符串“675”给PC机,其液晶显示如图6所示,相应的PC机界面显示如图7所示。PC机发送"69asd"给单片机,液晶屏上即可接收到“69asd",如图8,图9所示。测试结果说明:基于串行口的PC机与单片机之间的双工无线通信是切实可行的,而且无线传输的距离至少可达到100 m。
5 结语
采用CCll00收发器通过串口实现了PC机与单片机之间的双工无线通信。此系统可应用到一些远距离控制或者是危险性比较高的数据采集和控制的场合,用于采集温度、湿度等参数,还可扩展到无线传感器网络领域,实现诸如无线抄表、智能家居等系统。