多台单片机的通信系统,已有很多资料做了介绍,在这些系统中的数据通讯一般采用的是串行通信方式。串行通信可采用有线与无线两种方式,作者根据单片机串行通信原理、脉冲编码调制(PCM)技术和红外无线通信技术,开发设计了单片机编解码红外无线通信接口。用该接口构成的新型无线抄表系统,利用红外线这种非电信号作为传输介质,来传送数据信息,可以在那些不适合或不方便架设电缆线及电磁干扰较强的工作环境,来实现单相电度表的抄表系统,完成电度表用电量的抄录、设置表底数、电度表校准等工作。本文就利用单片机红外通信技术实现无线抄表系统做一介绍。
1.红外线通信原理
在抄表机数据通信系统中,单片机之间的数据通信采用一对多的主从模式,利用波长为940μm的远红外波通信。其原理示意图如图1。主机(即抄表机单片
机)负责发送从机(即电度表单片机)地址、控制命令及调度,从机则负责收集现场信息,进行一定的数据处理,根据主机的要求返回数据,并执行主机发出的命令。抄表机单片机与电度表单片机之间的信息交换是通过串行通信来实现。在采用主从式多机串行通信系统中,从机不主动发送命令或数据,一切都由主机控制。由于发送和接收共用同一物理信道因此在任意时刻只允许一台从机处于发送状态,其余的从机不能发送。只有被主机呼叫的从机才能占用总线,对主机做出应答。
每台从机均分配有一个唯一的从机地址,主机与从机通信时,主机先呼叫某从机地址,唤醒被叫从机后,主、从两机之间进行数据交换,而未被呼叫的从机则继续处于等待状态。主机发送的信息可以传到多个从机或指定的从机,各从机发送的信息只能被主机接收。为了完成上述功能需通过设置单片机的串口控制寄存器SCON来实现,在此将单片机设置在工作方式3,即SM0=1、SM1=1。
通信的数据格式为每帧11位,包括1位起始位、8位数据位、1位奇偶校验位和1位停止位;片内定时器T1作为波特率发生器,选择传送的波特率为1200bps,则定时器T1的初值应设置为TL1=TH1=E8H,另外应禁止定时器T1中断,以免因定时器T1溢出而产生不必要的中断错误。当主机发送一帧地址信息时,应保持这帧数据的第9位TB8为“1”;发送一帧数据信息时,应保持这帧数据的第9位TB8为“0”,所有从机最初均处于接收状态,即SM2=1状态,当接收的一帧数据的9位为1,所有从机均产生中断,接收这一帧地址数据并与各自的从机地址进行比较,以判断主机是否要与本机通讯。接收到的地址数据与从机地址相等的为被呼叫从机,该从机将串行口控制寄存器SCON中的控制位SM2清0,去接收主机发来的数据帧(数据帧的第9位为0),此时不管接收到的第9位数据是否为1,都要产生串口中断,保证了主机与被叫从机间的正常数据通讯。通讯结束后,该从机又重新将串行口控制寄存器SCON中的控制位SM置为1,为下一次与主机进行通讯做好准备。其它从机则一直在SM2=1下继续自己的等待,不会受到其它从机与主机通讯的干扰。
在通信协议中规定:
(1)单片机以方式3进行通信,一帧数据的第9位为“1”代表地址帧,为“0”代表数据帧。
(2)设定通信波特率为1200bps。迎访问无由电子开发网(技术文章 在线阅读 在线商城
(3)00H是以地址帧形式发送的一条对所有从机起作用的控制命令,命令各从机恢复SM2=1,等待接收状态。
(4)主机与从机的联络过程为;
主机下发地址帧,被呼叫从机向主机返回地址帧,以便主机确定与从机联络上了。
主机下发控制命令,从机根据命令或接收主机的数据块,或向主机发送数据块。
(5)主机发送的控制命令代码为:
AAH:设置表底数;BBH:读取表数;CCH:开表设置;DDH: 关表设置
EEH:校验出错;EDH:传送结束符。
(6)数据块组成格式为:数据块最后一帧为结束符EDH,结束符之前本数据块内容可以是操作码帧、地址码帧和数据帧。
为了实现多机通信,所有发射电路的振荡频率和所有的接收电路的振荡频率都必须调整一致,为保证正常通信,防止自己发自己接,数据传送方向必须为半双工传送,收发器在发射时,必须屏蔽自己的接收中断,发射结束后再开放中断。
多机通信过程为:
(1)所有从机的SM2=1,处于地址帧接收状态。
(2)主机发送一帧地址信息,其中包含8位地址,第9位为“1”,与所需的从机进行联络。
(3)从机接收到地址信息后,各自将其与自己的地址相比较;对于地址相符的从机使RI=0,TB8=1,发送自身地址,并使SM2=0,TI=1,以等待接收主机随后发来的所有信息;对于地址不相符的从机仍保持SM2=1状态,对主机随后发来的数据不理睬直至发送新的一帧地址信息。
(4)主机接收到地址后将SCON第9位TB8清“0”,然后进行地址校对,若地址校对通过,说明从机已经联络上,发送进一步的通信控制命令信号;地址校对出错,说明从机没有联络上,发送结束本次通信命令,修改SCON第9位,,将TB8置“1”。主机向被寻址的从机发送控制指令与数据,一帧数据的第9位为“0”,表示发送的是数据或控制指令。
(5)被叫从机接收到命令后进行命令分析,收集现场信息,进行一定的数据处理,根据主机的要求返回数据,并执行主机发出的命令。若为结束通信的命令,则立即置SM2=1,结束本次通信,等待下一次通信,否则执行相应的动作,对于要求返回信息的命令,置TB8=0,返回正确的响应信息后置SM2=1,恢复其只接收地址帧数据状态。
(6)主机接收结束通信命令的返回信息后修改SCON第9位,将TB8置“1”,准备进行下一轮的通信。
2.硬件构成
主要包括红外发射电路和红外接收电路两部分:
红外发射电路
在红外数据传输的信号调制方式上,采用脉冲调制的二进制不归零码。这种调制方式比较简单,编码解码都比较方便,有利于电路简化。红外发射电路如图2所示。
由455KHZ的晶振CRY,反相器74HC04及电阻、电容构成的振荡器产生455KHZ的方波信号。经脉冲分频器74LS92,六分频成为75.83KHZ的脉冲信号。再经过D触发器构成的2分频/整形电路变成38KHZ的方波信号。由单片机的异步串行口TX输出的串行数据信号,送到与非门74HC00的输入端。与非门的另一输入端接38KHZ的载波信号。与非门的输出信号用来控制三极管的开通或关断,从而控制红外发射管发送信息。这样就达到了用串行口TX输出的串行数据信号直接调制载波,进行红外数据传输的目的。发射电路的调制采用的是时分制幅度键控调制方式。因单片机在复位后,TXD脚为高电平,为满足同步的要求,采用低电平同步脉冲,经与非门(U3)后变成高电平同步脉冲。所以单片机TXD发送的编码应是反码。
红外接收电路
设计中采用一种高效能的红外接收器——德律风根TFMS5380。德律风根所开发的微型接收器TFMS5380是近期市场上最高效能的红外接收器。同一组件内已装上了接收二级管和前置放大器。TFMS5380特点:(1)单一的接收器和前置放大器的组合。(2)超敏感度和传送距离。(3)内置PCM频率过滤器。(4)无外置组件需要。(5)特强光及电场干扰屏蔽。(6)TTL及CMOS兼容,适用于微处理器操作控制。(7)可选频率由30KHZ至56KHZ。(8)低功耗。(9)ISO9000认可。TFMS5380适用于数据传送、电视机、录像机、组合音响及卫星接收器等。TFMS5380的内部框图及构成的接收电路。如图3所示。
该接收电路要求被接收的红外光波长在950μm左右,被调制信号的脉冲宽度不小于600μs。TFMS5380的应用电路非常简单。实验证明,TFMS5380的性能良好,完全可以满足数据传输的需要。S3C2410 ARM9开发板800元 SOC开发平台360元 豪华单片机开发系统498元 单片机学习板138 无线nRF-9E5模块100元 51单片机试验开发板238元 Genius NSP通用编程器260元 Mini ARM Debugger330元 LABTOOL-48UXP2800元 S3C2410 ARM9开发板800
3.软件设计
该系统软件设计主要包括手持抄表器主机软件和电度表端从机软件两部分。在本设计中手持抄表器单片机发送字符与接受字符均采用查询方式,发送前先读取通信状态寄存器,查询发送保持寄存器空否,接收前先读取通信状态寄存器,查询一帧数据收完否。电度表单片机采用中断方式,即接收到地址帧后就进行串行口中断申请,中断响应后,进入中断服务程序。
手持抄表器软件设计:
在红外通信过程中,手持抄表器作为主机,是通信的发起者,其发送和接收都是主动的,它的具体工作过程为:不断扫描键盘,若发现有命令键按下,则调用发送子程序发送相应的操作命令,发送结束后即启动接收子程序,以接收电度表回送的信息,然后对接收到的信息进行后续处理。手持抄表器通信程序包括初始化子程序和串行通讯程序,其流程如图4所示。
初始化子程序SP-INIA,主要是对通讯波特率及方式的设置,程序源代码如下:
SP_INIA:MOV TMOD,#20H ;选择定时器T1模式2,计时方式
MOV TH1,#0E8H ;预置时间常数
MOV TL1,#0E8H
CLR ET1 ;禁止定时中断
SETB TR1 ;启动计时器
MOV PCON,#80H ;SMOD=1
MOV SCON,#0D8H ;方式3,SM2=0,REN=1,TB8=1
SETB EA ;开总中断
SETB ES ;开串口中断
RET
抄表机串行通讯程序略;
电度表端软件设计:电度表端作为从机,其软件程序包括主程序和中断服务程序,流程图如图5所示;
主程序源代码为:
ORG 0023H
LJMP SUB_COM ;串口中断服务程序入口
ORG 0050H
SM_COM:LCALL SP_INIB ;调串口初始化子程序
MOV 08H,#50H ;选工作寄存器区1
MOV 09H,#60H
SETB EA ;开总中断
SETB ES ;开串口中断
LOOP:SJMP $ ;等待中断
SP_INIB:MOV TMOD,#20H ;选择定时器T1模式2,计时方式
MOV TH1,#0E8H
MOV TL1,#0E8H
CLR ET1
SETB TR1
MOV PCON,#80H
MOV SCON,#0F0H ;方式3,SM2=1,REN=1
RET
中断服务程序:限于篇幅,略。
4.结束语
本文介绍的应用于电度表抄表系统中单片机红外串行通信接口,具有硬件电路简单、成本低廉、编程方便、通信可靠性高的特点。利用手持抄表器可以方便地完成对电度表的抄录和校准等工作,大大提高了抄表工作的效率,而且抄表准确度高并杜绝了估抄和误抄的问题。本文提出的通讯协议能够在多台单片机间安全地传送数据,实现了通信双方非接触式的数据传送,也可用于其他遥控、遥测的单片机应用场合。