答方式进行数据通信,可使用请求发送(RTS)、清除发送(CTS)或数据终端准备(DTR)、数据装置准备(DSR)进行硬件握手。在AT89C51单片机系统中,分别从P3.0和P3.1引出串口线RXD和TXD通过专用的电平转换芯片转换成RS-232接口标准的电平,这样,二者之间就可以通过RS-232接口进行数字信号的传送。单片机也可以以直接传送或应答握手的方式进行数据通信,但由于握手方式占用其他的端口,而单片机的端口数量有限,所以,计算机与单片机的通信常采用直接传送的方式。
2.7.3 RS485的可靠性注意问题
实践证明,在构成RS-485总线网时,要使系统有高可靠性,通常需要考虑下列几个问题。
1) 传输线的选择和阻抗匹配
在差分平衡系统中,一般选择双绞线作为信号传输线。双绞线价格低廉,使用方便,两条线基本对称,外界干扰噪声主要以共模方式出现,对接收器的差动输入影响不大。
信号在传输线上传送时,如果遇到阻抗不连续的情况,会出现反射现象。传送的数字信号包含丰富的谐波分量,如果传输线阻抗不匹配,高次谐波可以通过传输线向外辐射形成电磁干扰(EMT)。双绞线的特性阻抗一般在110~130Ω之间,通常在传输线末端接一个120Ω电阻进行阻抗匹配。 2) 隔离
RS-485总线在多站连网时,相距较远的不同站之间的地电位差可能很大,各站若不加隔离地直接连网很可能导致接口芯片的损坏,尤其是接收器芯片。解决这一问题的一种简单有效的办法是将各站点的串行通信接口电路与其他站进行电气隔离,如图2-15所示。实践证明,这是一种有效的办法。图示电路可以用分离的高速光耦合器件、带隔离的DC/DC电源变换器与RS-485收发器组合而成,也可以采用专门的带隔离的收发器芯片。MAXIM生产的MAX1480B是具有光耦合的RS-485接口芯片,片内包括收发器、光电耦合器及隔离电源,单一的+5V电源供电,使用十分方便。
- 26 -
图2-15 光电隔离的 RS-485 总线 3) 抗静电放电冲击
RS-485接收器差分输入端对地的共模输入电压范围-7~+12V,超过此范围时器件可能损坏。接口芯片在安装使用过程中,可能受到静电放电冲击,例如人体接触芯片脚引起的静电放电,其电压可以高达+35KV。静电放电会影响电路的正常工作或导致电器件损坏。解决的办法是选用带静电放电保护的RS-485接口器件,例如MAX1487E、MAX483E~491E、SN75LBC184等。这些器件对于抗其他类型的高共模电压干扰也有效,例如雷电干扰。解决这一问题的另一个办法是在传输信号线上加钳位电路。 4)传输线的铺设及屏蔽
在系统安装时,应尽量做到传输线单独铺设,不与交流功率线一起铺设在同一条电缆沟中。强信号线与弱信号线避免平行走向,尽量使二者正交。如果这些要求很难实现,也要尽量使信号线离干扰线远一些,一般认为两者的距离应该为干扰导线内径的40倍以上。
如果采用带有屏蔽线的双绞线,将屏蔽层良好的接大地,也会得到良好的效果。
3 温度采集控制系统软件设计
- 27 -
在本设计中软件要解决的主要问题,就是传感器输出信号转换成温度值控制输
出的过程。程序开始执行时最先进入的是初始化子程序,这部分实现的功能包括各种I/O口输入输出状态的设定,串口工作状态的设定,有关中断使能的设定,各存储器地址的定义等的设置等。
3.1 主程序
3.1.1 程序说明
这是一个综合硬件设计控制系统。利用显示电路、A/D转换电路、单片机实现温度过程控制的系统。加热电机用加热电阻代替,制冷采用自然冷却。
本设计可以实现将模拟温度信号,转换成数字信号,并经过计算处理后通过LED动态显示电路以十进制形式显示出来,同时显示电路还将显示设定的恒温值。设恒温值为在50℃,该系统可以对温度进行实时过程的监控。当实际温度低于设定的恒定温度2℃时,单片机发出指令信号,继电器吸合,加热电阻开始加热。当温度超过设定的恒温值2℃时,单片机发出指令信号,继电器断开,加热电阻停止加热;制冷过程采用自然冷却。
3.1.2 流程图
主程序框图如图3-1所示。
系统初始化 开始
开CPU中断
显示程序 图 3-1 主程序流程图 3.2 模数转换程序
标度变换说明:
- 28 -
本设计是模拟温度的显示,温度经过热敏电阻转换为电压信号,经放大器放大后进入单片机进行A/D转换成数字量后输出到动态显示部分,显示其温度值。
其中温度范围的计算原理:首先选取两个温度状态T1T2,分别测量出其模拟输出电压V1V2,根据ADC0804的输入范围在0到5伏,即可计算出温度极限。
0伏时对应的温度TL:T1-(V1-0)(T2-T1)/(V2-V1) 5伏时对应的温度TH:T1-(V1-5)(T2-T1)/(V2-V1) 本设计中近似计算TH为100℃,TL为0℃。
程序中温度的计算原理:首先用温度范围除以0到256(即每个十六进制数的温度增长率),然后乘以模拟转换的数字量,即得到升高的温度,再和最低温度相加,就可以得到实际的温度值。
其公式为:TL+AX(TH-TL)/256 TL:显示的最低温度 TH:显示的最高温度 AX:模拟电压所转换的数字量 标度变换图示,见图3-2
读A/D转换 关中断 A/D转换中断 保存到缓冲区 开中断 图3-2 标度变换图示
A/D转换过程的流程图如3-3所示
ADC0804的INTR与AT89C51 的P3.2 脚及INT1相连,当A/D转换结束时,发 出中断申请,单片机响应中断读取A/D转 换结果。
结束 图3-3 A/D转换流程
3.3 LED显示程序
本设计采用2位LED数码静态显示,显示温度范围从0℃到99℃,字段码放在
- 29 -
LEDLAB中,采用查表方式,偏移量加首址查得对应的字形代码。
当定时器T0定时时间到,采样电路进行采样,采样结果经信号调理电路处理后,送入A/D转换,经标度变换后显示。 整个过程见图3-4所示:
启动A/D转换 赋定时器初值 关中断 定时器T0中断
标度变换
控制输出 送显示缓冲区
返 回 开中断 图3-4 LED显示
3.4 输出驱动程序
本设计是对工业现场温度的采集和控制,设现场恒温值为在50℃,当实际
- 30 -