病房呼叫显示器的设计与实现Word格式文档下载.docx
《病房呼叫显示器的设计与实现Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《病房呼叫显示器的设计与实现Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
当有多个发射器同时把数据传输给同一个接收器时,不能出现互相干扰。
1.2研究动态
呼叫系统根据应用场合的不同,应有不同的系统功能和特点来适应各种用途。
其系统结构、布线方式和软件配置都有所不同,但都是基于呼叫(报警)和通信(语音)两大主要功能[1]。
这里主要介绍的是用于医院病房和养老院中的病房呼叫系统。
由于在医院病房或养老院这类特殊的使用场合,使用的对象是护理人员和各种需要帮助的病员,病房呼叫系统就有着自己的特点.
病房呼叫系统是应用于医院住院病房内、门诊急诊集中病床区或养老院内的呼叫系统。
其应用一方面为医院或养老院提高护理水平和护士的工作效率,减轻护理人员的劳动强度;
另一方面也为病员提供了方便,提高病员的舒适程度。
病房呼叫系统的应用还能规范医院中病区或养老院内的秩序,改善护理人员和病员的关系,是现代化医院必备的辅助设备。
作为一种多功能智能化的病房护理辅助设备,病房呼叫系统不同于专业医疗设备。
病房呼叫系统不是直接采用物理或化学医疗手段使被护理人得到治疗的设备,它是直接医疗手段之外的另一种医疗辅助手段。
对于病员来说,直接的医疗是必不可少的,但是病房呼叫系统给病人以护理关怀,对病人的康复也起到了巨大的作用。
病房呼叫系统的特点是呼叫频繁、通话简单。
相对于对讲电话系统和大楼呼叫管理系统中点对点呼叫的距离长、呼叫点密度低来说,病房呼叫系统的呼叫点与点之间距离近、呼叫点密度大。
同时,病房呼叫系统的每个病房内形成了一个呼叫点的集群,多个病房再组成一个病区呼叫系统。
病房呼叫系统使用的对象是病员,病员的身体状况不同,对护理的需求也不同。
有的病员日常生活和一些简单的医疗工作可以自理,有的病员生活无法自理,需要别人的帮助,在医疗方面需要更多的关怀。
这就要求对不同病员的呼叫有不同的处理方式,在呼叫系统中可以对他们设定不同的呼叫级别。
此外,有的病员需要定时进行一些医疗检查和治疗,病房呼叫系统能够设置定时器,提醒护理人员对这些病员进行定时护理。
设计系统是一个可容纳256张病房床位的病房呼叫系统,每一个病房床位旁都配备有一个按钮,当医院的患者出现情况需要呼叫值班护士时,就按下按钮;
此时护士值班室内的病房呼叫系统的系统板上显示发出呼叫的该患者的病房床位号,并且报警提醒,而当医院护士按下“响应”键时,则取消当前的呼叫[2]。
2设计任务
(1)系统具有256地址寻址能力;
(2)分机按键时主机显示分机号,并有报警声,多个呼叫时依按键先后轮回显示分机号;
(3)多个分机同时按键时能正确显示分机号;
(4)可以在分机和主机上删除已显示的分机号;
3方案论证与选择
3.1方案1
方案系统以MCS-51系列单片机AT89C2051为核心控制芯片,利用无线的传输模块。
从机把按键的信号通过无线电传输到主机,主机通过模块接受并进行数据处理,把分机信息显示在LED数码管并进行报警。
3.2方案2
整个系统以AT89S51单片机为控制中心,结合单片机的串口通信原理,采用RS485CAN总线的通信协议。
分机把按键信息通过RS485芯片上把信号传导总线,主机通过检查总线的信号变化,控制RS485的接受信号并进行处理,把处理后的信息显示到LED数码管上同时进行报警提醒。
3.3方案选择
通过对以上两种方案和选用的元器件进行比较我们可以了解到:
在单片机的选择比较上,由于一直以来都是采用AT89S51进行课程的学习与实习,所以使用AT89S51做设计要比AT89C2052更容易上手,加上两者的功能基本上相似。
采用AT89S51完全可以实现本系统的功能,且可以在学校里直接购买,所以决定选用AT89S51做为单片机控制中心。
在信号采集的选择比较上,采用单片机直接采集的话是采用有线的方式,而采用无线收发模块的话则是采用无线的方式,在实际应用的采用有线的方式比起采用无线的方式来,具有很好的稳定性,不容易受外界条件的影响,并有很更好的拓展性。
在通信协议的选择比较上,无线模块才用的是对等式,单片机要求随时跟换主从位置,协议要求及时性很高。
各单片机间硬件要求都一样,在一定程度上造成硬件浪费。
有线模块采用RS485CAN总线的主从模式,主机的程序和从机的程序相互独立,协议简单稳定。
硬件主从单片机要求不一样,这样硬件的配置不同,便于分机向小巧化经济化发展。
结合学校与各方面的情况,本系统决定选用方案2。
4系统主要技术介绍
该系统在硬件上主要是以51单片机系列芯片,RS485CAN总线协议,软件上用易读易移植的C语言编写[3]。
4.1多机通信
4.1.1串行接口控制寄存器SCON
特殊功能寄存器SCON存放串行接口的控制和状态信息,特殊功能寄存器PCON可改变串行通信的波特率,波特率发生器可由定时器T1构成。
SCON用于确定串行通道的工作方式选择,接收和发送控制以及串行接口的状态标志,其格式及功能如表4.1所示。
位
D7
D6
D5
D4
D3
D2
D1
D0
SCON
SM0
SM1
SM2
REN
RB8
TI
RI
地址
9F
9E
9D
9C
9B
9A
99
98
表4.1SCONC格式
SM0,SM1:
工作方式控制位,可构成4种工作方式,如表4.2所示。
表4.2串行接口的工作方式
工作方式
说明
波特率
同步移位寄存器
f/12
1
10位异步收发
可变
2
11位异步收发
f/32或f/64
3
SM2:
工作方式2和工作方式3多机通信控制位,若SM2=1则允许多机通信。
REN:
允许接收控制位,用软件置1或清零。
REN=1时,允许接收;
REN=0时,则禁止接收。
TB8:
在工作方式2和工作方式3中,它是准备发送的第9位数据位,根据需要可以用软件置1或清零。
它可作为数据的奇偶校验位,在多机通信中作为地址帧或数据帧的标志。
RB8:
在工作方式2和工作方式3中,它是接收到的第9位数据,既可以作为约定好的奇偶校验位,也可以作为多机通信时的地址帧或数据帧标志。
在工作方式1时,若SM2=0,则RB8是接收到的停止位。
工作方式0不使用RB8。
TI:
发送中断标志位。
在工作方式0中,发送完8位数据后,由硬件置1,向CPU申请发送中断。
CPU响应中断后,必须用软件清零。
在其他工作方式中,它在停止位开始发送时由硬件置1,同样必须用软件清零。
RI:
接收中断标志位。
在工作方式0时,接收完8位数据后,由硬件置1,向CPU申请接收中断,CPU响应中断后,必须用软件清零。
在其他工作方式中,在接收到停止位的中间时刻用硬件置1,向CPU申请中断,表示一帧数据接收结束,并已装入缓冲器,要求CPU取走数据。
CPU响应中断,取走数据后必须用软件清零,解除中断请求,准备接收下一帧数据[4]。
串行发送中断标志TI和接收中断标志RI是同一个中断源。
在全双工通信时,必须用软件来判别是发送中断标志还是接收中断标志。
4.1.2波特率设计和PCON中的波特率选择位
(1)波特率设计
方式0时,波特率固定为振荡器频率的1/12。
方式2的波特率为振荡器频率的1/64或1/32,它取决于特殊功能寄存器PCON中的SMOD位的值,如果SMOD=0(这是它在复位时的值),则波特率为振荡器频率的1/64。
如SMOD=1,则波特率为振荡器频率的1/32。
方式1和3的波特率由定时器1的溢出率所决定:
波特率=(定时器1的溢出率)/n
这里n为32或16,取决于特殊功能寄存器PCON中的SMOD位的值。
如果SMOD=0(这里是它在复位时的值),则n=32。
如果SMOD=1,则n=16。
定时器1能置为任何方式。
(2)波特率选择位
PCON是一个特殊功能寄存器(地址=87H),它附加到83C552上以实现CMOS形式芯片的某些电源控制附加功能。
在HMOS芯片中,位7为SMOD,其他均无意义。
在HMOS和CMOS形式中,SMOD均用于加倍串行接口方式1、2和3的波特率。
PCON不能进行位寻址。
复位时的SMOD值为0。
写1到SMOD(MOVPCON,#80H或ORLPCON#80H)可加倍方式1,2和3的波特率。
4.1.3串行数据输入/输出缓冲器SBUF
MCS-51系列单片机的串行接口是个全双工串行接口,可用来发送和接收串行信息,它主要用做通用异步接收发送器(UART)的接口和扩展I/O接口。
位于串行接口内部的串行数据缓冲器SBUF用于存放要发送或是已经接收的数据,它实际上由两个独立的寄存器组成,一个是发送缓冲器,另一个是接收缓冲器。
当要发送的数据传送到SBUF时,是送入发送缓冲器;
而当要从SBUF读取数据时,则出自接收缓冲器,读取的是刚接收到的数据。
4.1.3串行接口的工作方式
在串行接口的四种工作方式中,串行通信方式只适用1,2,3方式中。
方式0主要用于扩展并行输入/输出接口。
(1)方式0
在方式0状态下,串行接口为同步移位寄存器方式,其波特率是固定的,为
/12,数据由RXD(P3.0)端输入,同步移位脉冲由TXD(P3.1)端输出,发送、接收的是8位数据,低位在先。
当执行发送任何一条将SBUF作为目的寄存器的指令时,数据开始从RXD端串行发送,其波特率为振荡频率的1/12。
(2)方式1
在方式1状态下,串行接口为8位异步通信接口。
1帧信息为10位:
1位起始位(0),8位数据(低位在先)和1位停止位
(1)。
TXD为发送端,RXD为接收端,波特率不变。
在方式1的接收中设置有数据辨识功能,即在同时满足以下两个条件时,接收数据有效,可实现装载SBUF,RB8及RI置1,接收控制器再次采样RXD的负跳变,以便接收下一帧数据。
下列条件任何一个不满足时,所接收的数据无效,接收控制器不再恢复。
RI=0;
SM2=0或接收到的停止位=1。
(3)方式2和3
在串行工作方式2,3时,为9位异步通信接口,发送、接收一帧信息由11位组成,即起始位1位(0)、数据8位(低位在先)、1位可编程位(第9数据位)和1位停止位
(1)。
方式2,3的区别在于:
方式2的波特率为
/32或
/64(
/
),而方式3的波特率可变。
同样,方式2,3中也设置有数据辨识功能。
即当“RI=0;
SM2=0或接收到的停止位数据=1”中的任一条件不满足时,所接收的数据帧无效。
注意接收到的停止位与SBUF,RB8或RI无关。
4.2RS485简介
RS-485接口芯片已广泛应用于工业控制、仪器、仪表、多媒体网络、机电一体化产品等诸多领域[5]。
可用于RS-485接口的芯片种类也越来越多。
如何在种类繁多的接口芯片中找到最合适的芯片,是摆在每一个使用者面前的一个问题。
RS-485接口在不同的使用场合,对芯片的要求和使用方法也有所不同。
使用者在芯片的选型和电路的设计上应考虑哪些因素,由于某些芯片的固有特性,通信中有些故障甚至还需要在软件上作相应调整,如此等等。
希望本文对解决RS-485接口的某些常见问题有所帮助。
4.2.1RS-485接口标准
传输方式:
差分
传输介质:
双绞线
标准节点数:
32
最远通信距离:
1200m共模电压最大、最小值:
+12V;
-7V
差分输入范围:
-7V~+12V
接收器输入灵敏度:
±
200mV
接收器输入阻抗:
≥12kΩ
(1)节点数
节点数及半双工和全双工通信
所谓节点数,即每个RS-485接口芯片的驱动器能驱动多少个标准RS-485负载。
根据规定,标准RS-485接口的输入阻抗为≥12kΩ,相应的标准驱动节点数为32。
为适应更多节点的通信场合,有些芯片的输入阻抗设计成1/2负载(≥24kΩ)、1/4负载(≥48kΩ)甚至1/8负载(≥96kΩ),相应的节点数可增加到64、128和256。
表1为一些常见芯片的节点数。
32节点:
SN75176,SN75276,SN75179,SN75180,MAX485,MAX488,MAX490
64节点:
SN75LBC184
128节点:
MAX487,MAX1487
256节点:
MAX1482,MAX1483,MAX3080~MAX3089
(2)半双工和全双工
RS-485接口可连接成半双工和全双工两种通信方式。
半双工通信的芯片有SN75176、SN75276、SN75LBC184、MAX485、MAX1487、MAX3082、MAX1483等;
全双工通信的芯片有SN75179、SN75180、MAX488~MAX491、MAX1482等。
4.3应用中的常见问题
4.3.1抗雷击和抗静电冲击
RS-485接口芯片在使用、焊接或设备的运输途中都有可能受到静电的冲击而损坏。
在传输线架设于户外的使用场合,接口芯片乃至整个系统还有可能遭致雷电的袭击。
选用抗静电或抗雷击的芯片可有效避免此类损失,常见的芯片有MAX485E、MAX487E、MAX1487E等。
特别值得一提的是SN75LBC184,它不但能抗雷电的冲击而且能承受高达8kV的静电放电冲击,是目前市场上不可多得的一款产品。
4.3.2限斜率驱动
由于信号在传输过程中会产生电磁干扰和终端反射,使有效信号和无效信号在传输线上相互迭加,严重时会使通信无法正常进行。
为解决这一问题,某些芯片的驱动器设计成限斜率方式,使输出信号边沿不要过陡,以不致于在传输线上产生过多的高频分量,从而有效地扼制干扰的产生。
如MAX487、SN75LBC184等都具有此功能。
4.3.3故障保护
故障保护技术是近两年产生的,一些新的RS-485芯片都采用了此项技术,如SN75276、MAX3080~MAX3089。
什么是故障保护,为什么要有故障保护,如果没有故障保护会产生什么后果?
众所周知,RS-485接口采用的是一种差分传输方式,各节点之间的通信都是通过一对(半双工)或两对(全双工)双绞线作为传输介质。
根据RS-485的标准规定,接收器的接收灵敏度为±
200mV,即接收端的差分电压大于、等于+200mV时,接收器输出为高电平;
小于、等于-200mV时,接收器输出为低电平;
介于±
200mV之间时,接收器输出为不确定状态。
在总线空闲即传输线上所有节点都为接收状态以及在传输线开路或短路故障时,若不采取特殊措施,则接收器可能输出高电平也可能输出低电平。
一旦某个节点的接收器产生低电平就会使串行接收器(UART)找不到起始位,从而引起通信异常,解决此类问题的方法有两种:
(1)使用带故障保护的芯片,它会在总线开路、短路和空闲情况下,使接收器的输出为高电平。
确保总线空闲、短路时接收器输出高电平是由改变接收器输入门限来实现的。
例如,MAX3080~MAX3089输入灵敏度为-50mV/-200mV,即差分接收器输入电压UA-B≥-50mV时,接收器输出逻辑高电平;
如果UA-B≤-200mV,则输出逻辑低电平。
当接收器输入端总线短路或总线上所有发送器被禁止时,接收器差分输入端为0V,从而使接收器输出高电平。
同理,SN75276的灵敏度为0mV/-300mV,因而达到故障保护的目的。
(2)若使用不带故障保护的芯片,如SN75176、MAX1487等时,可在软件上作一些处理,从而避免通信异常。
即在进入正常的数据通信之前,由主机预先将总线驱动为大于+200mV,并保持一段时间,使所有节点的接收器产生高电平输出。
这样,在发出有效数据时,所有接收器能够正确地接收到起始位,进而接收到完整的数据。
4.4RS485应用设计
4.4.1485芯片DE控制端的设计
由于应用系统中,主机与分机相隔较远,通信线路的总长度往往超过400米,而分机系统上电或复位又常常不在同一个时刻完成。
如果在此时某个75176的DE端电位为“1”,那么它的485总线输出将会处于发送状态,也就是占用了通信总线,这样其它的分机就无法与
主机进行通信:
这种情况尤其表现在某个分机出现异常情况下(死机),会使整个系统通信崩溃。
因此在电路设计时,应保证系统上电复位时75176的DE端电位为“0”。
由于8031在复位期间,I/O口输出高电平,故图2电路的接法有效地解决复位期间分机“咬”总线的问题。
4.4.2隔离光耦电路的参数选取
在应用系统中,由于要对现场情况进行实时监控及响应,通信数据的波特率往往做得较高(通常都在4800波特以上)。
限制通信波特率提高的“瓶颈”,并不是现场的导线(现场施工一般使用5类非屏蔽的双绞线),而是在与单片机系统进行信号隔离的光耦电路上。
此处采用TIL117。
电路设计中可以考虑采用高速光耦,如6N137、6N136等芯片,也可以优化普通光耦电路参数的设计,使之能工作在最佳状态。
例如:
电阻R2、R3如果选取得较大,将会使光耦的发光管由截止进入饱和变得较慢;
如果选取得过小,退出饱和也会很慢,所以这两只电阻的数值要精心选取,不同型号的光耦及驱动电路使得这两个电阻的数值略有差异,这一点在电路设计中要特别慎重,不能随意,通常可以由实验来定。
4.4.3485总线输出电路部分的设计
输出电路的设计要充分考虑到线路上的各种干扰及线路特性阻抗的匹配。
由于工程环境比较复杂,现场常有各种形式的干扰源,所以485总线的传输端一定要加有保护措施。
在电路设计中采用稳压管D1、D2组成的吸收回路,也可以选用能够抗浪涌的TVS瞬态杂波抑制器件,或者直接选用能抗雷击的485芯片(如SN75LBC184等)。
考虑到线路的特殊情况(如某一台分机的485芯片被击穿短路),为防止总线中其它分机的通信受到影响,在75176的485信号输出端串联了两个20Ω的电阻R10、R11。
这样本机的硬件故障就不会使整个总线的通信受到影响。
在应用系统工程的现场施工中,由于通信载体是双绞线,它的特性阻抗为120Ω左右,所以线路设计时,在RS-485网络传输线的始端和末端各应接1只120Ω的匹配电阻(如图1中R8),以减少线路上传输信号的反射。
由于RS-485芯片的特性,接收器的检测灵敏度为±
200mV,即差分输入端VA-VB≥+200mV,输出逻辑1,VA-VB≤-200mV,输出逻辑0;
而A、B端电位差的绝对值小于200mV时,输出为不确定。
如果在总线上所有发送器被禁止时,接收器输出逻辑0,这会误认为通信帧的起始引起工作不正常。
解决这个问题的办法是人为地使A端电位高于B两端电位,这样RXD的电平在485总线不发送期间(总线悬浮时)呈现唯一的高电平,8031单片机就不会被误中断而收到乱字符。
通过在485电路的A、B输出端加接上拉、下拉电阻R7、R9,即可很好地解决这个问题。
4.5软件的编程
485芯片的软件编程对产品的可靠性也有很大影响。
由于485总线是异步半双工的通信总线,在某一个时刻,总线只可能呈现一种状态,所以这种方式一般适用于主机对分机的查询方式通信,总线上必然有一台始终处于主机地位的设备在巡检其它的分机,所以需要制定一套合理的通信协议来协调总线的分时共用。
这里采用的是数据包通信方式。
通信数据是成帧成包发送的,每包数据都有引导码、长度码、地址码、命令码、内容、校验码等部分组成。
其中引导码是用于同步每一包数据的引导头;
长度码是这一包数据的总长度;
命令码是主机
对分机(或分机应答主机)的控制命令;
地址码是分机的本机地址号;
“内容”是这一包数据里的各种信息;
校验码是这一包数据的校验标志,可以采用奇偶校验、和校验等不同的方式。
在485芯片的通信中,尤其要注意对485控制端DE的软件编程。
为了可靠的工作,在485总线状态切换时需要做适当延时,再进行数据的收发。
具体的做法是在数据发