FC-202无线通信模块由发射机、接收机、锁相环、基带处理及调制解调器、CPU(AT89C2051)、RS-232-C接口组成,如图3所示。其通信原理为:采用MSK调制方式,将基带信号调制并将功率放大成射频信号,再利用VHF/UHF频段发送和接收,然后解调、放大还原成相应的基带信号,完成数据无线传输。FC-202无线数传模块内含VHF/UHF频段范围的无线收发机。收发采用双锁相环及双VCO技术,收发转换速度快,其接口为RS-232-C标准接口,可直接连接计算机或带有串口的设备。FC-202无线数传模块可存储16个通信信道,空中传输率兼容1200b/s或2400b/s,模块功率为5W,可方便完成15km以内的远距离无线数据传输。
(3)硬件抗干扰
单片机系统包括较大功率的电源电路、高速数字电路、小信号模拟电路。为避免各部分信号的相互耦合,对硬件抗干扰采取了电源去耦、模拟信号滤波、分离布局不同类型的电路、加大电源和地线的走线面积等措施。
2.软件设计
(1)单片机多机通信程序设计
AT89C52单片机本身具有全双工串行数据通信功能,其实现由SCON和PCON两个特殊寄存器控制。本系统选用方式3的9位数据异步通信方式,无奇偶校验。通信时各单片机装置中SCON的SM2均设置为1,上位机发送某一地址码并置R1,则所有的单片机均发生接收中断,此时表明上位机发来的信息是1帧地址信息。当某一单片机发现其接收的地址信息与本机地址相符时,SM2=0,并把本机地址作为应答信号返回给上位机,准备接收上位机发来的命令或数据。地址相符的单片机收第9位为0的数据或命令;而地址不符的单片机则保持SM2=1,不能产生中断标志,信息将抛弃,从而实现了上位机与单片机的一对一通信。通信初始化为
MOV SCON,#0F0H
MOV PCON,#00H
MOV TMOD,#20H
MOV TH1,#0F3H
MOV TL1,#0F3H
(2)PC机软件设计
在串行通信中调用Windows的API接口方法,是实现VB直接控制串行口硬件的有效方案。VB提供了一个名为Mscomm的控件(或Winsock控件),能为应用程序提供串行通信功能。初始化和定时数据通信程序如下:
Dim Cindata As Variant
Dim Coutdata(0) As Byte
Private Sub Form_Load()
MSComm1.CommPort=2 ‘端口设置为2
MSComm1.PortOpen=True ‘打开端口
MSComm1.Settings="2400,n,8,1" ‘通信方式设置
MSConn1.InputMode=comliputModeBinary ‘以二进制形式传送
End Sub
Private Sub Timer2_Timer()
Coutdata(0)=CUMADDRESS ‘发送下位机地址
MSComm1.Output=Coutdata
Do
DoEvents
Loop Until MSComm1.InBufferCount>=1
Cindata=MSComm1.Input
If Cindata(0)=CUMADDRESS Then
Do
DoEvents
Loop Until MSComm1.InBufferCount>=DATALENGTH
Cindata=MSComm1.Input
┆
End Sub
(3)软件抗干扰设计
调试中发现常有死机、接触不灵敏问题,因此必须考虑抗干扰设计方法。单片机受干扰导致出错而无法自动恢复正常状态,通常是由于RAM区数据被破坏的缘故。我们利用AT89C52的数据RAM单元在每一个主要程序模块入口设置检验标导,结束时验证其标志是否与入口时一致,还要验证重要的数据标志是否正确(如键盘的键值),否则程序将进行出错处理。另外,设备软件看门狗,利用AT89C52不用的T2定时监视程序是否正常运行,这样保证了运行的可靠性。
3.传感器的标度转换
(1)线性标度
对于风速传感器,利用AT89C52的I/O口,测出与风速成正比的脉冲信号,因此可以线性标度。设0.5s内的最小脉冲数为A0=0个,最大脉冲数Amax为255个,A为测得的脉冲数;起始风速V0=0.08m/s,最大风速Vmax=65m/s,V为实际风速值。根据线性标度公式则有
(V-V0)/(Vmax-V0)=(A-A0)/(Amax-a0)
代入数据得V=(0.25459A+0.08)m/s
对于DS1820单线数字温度传感器,其温度测量范围是-55~+125℃,增量值为0.5℃。在n≤64范围内(n为P1.0口所挂DS1820的个数),每一片DS1820有1个自己的序列号,单片机与DS1820通过单线串行通信,单片机向某一DS1820写入序列号并启动转换,经过1s的延时转换时间后,再进行下一个DS1820操作。DS1820输出的是与温度成正比的数字信号,采用线性标度。设在P1.0口测得的数字信号值为T,实际温度为t,则有
t/℃=T/2
在本装置中,仅接有两片DS1820:一片装于机箱主板上,监测机器运行时温度是否正常;另一片置于机箱外,作为监测环境温度之用。