病房呼叫显示器的设计与实现设计.doc
1目 录摘 要I关键词IAbstractIKey wordsI1 前言11.1 课题意义11.2 研究动态22 设计任务33 方案论证与选择43.1 方案143.2 方案243.3 方案选择44 系统主要技术介绍54.1 多机通信54.1.1 串行接口控制寄存器SCON54.1.2 波特率设计和PCON中的波特率选择位74.1.3 串行数据输入/输出缓冲器SBUF84.1.3 串行接口的工作方式84.2 RS485简介94.2.1 RS-485接口标准104.3 应用中的常见问题114.3.1 抗雷击和抗静电冲击114.3.2 限斜率驱动114.3.3 故障保护114.4 RS485应用设计134.4.1 485芯片DE控制端的设计134.4.2 隔离光耦电路的参数选取134.4.3 485总线输出电路部分的设计144.5 软件的编程155 系统硬件设计155.1 系统总体框图155.2 硬件模块175.2.1 系统时钟电路175.2.2 系统复位电路175.2.3 系统报警电路185.2.4 485多机通信电路186 系统软件设计206.1 多机通信程序设计原理206.2 系统程序216.2.1 延时子程序216.2.2 显示子程序216.2.3 通信程序226.2.4 从机、主机程序流程图237 调试248 结论25参考文献25致 谢27附录A 硬件电路原理图28附录B 参考程序2937病房呼叫显示器的设计与实现摘 要基于病房呼叫显示器的设计与实现系统由电源电路、RS485通信电路、通信指示电路、数码管显示电路、超限报警电路等组成,利用单片机的串口工作原理,实现CAN总线的通信功能。选题的意义、系统总体设计方案及主要功能的实现都给出了相应介绍。通过对病房区的数据采集,实现医院医疗人员值班室和病人房之间的通信呼叫联系,具有使用方便、操作简单等特点,满足医院的病房管理和护理的要求。关键词报警;多机通信;RS485;病房呼叫The Design and Realization of Ward Call DisplaysAbstractThe system is the Design and Realization of Ward Call Displays. It consists of power supply circuit, communication circuit based on RS485, communication instruction circuit, digital tube instructions circuit, overrun alarm circuit and so on. It adopts the working principle of signal-chip serial and realizes the communication functions. The related introductions in three aspects which include the significance of topic selection, implementation of main function and the total design scheme of the system. Through acquisition of the ward areas data, the communication between patient room and hospital medical personnel duty room has been proved more convenient in operation, and meet the demand of wards management and nursing.Key wordsAlarm; Multi-machine communication; RS485; Call Ward1 前言1.1 课题意义伴随着医疗体制改革的不断深化和医疗事业的飞速发展,越来越多的人们需要迅捷、方便地得到医院的各种各样的医疗服务,这必将使医院之间的竞争日趋激烈。这使得衡量一个医院的综合水平高低,不再仅仅局限于软、硬件的建设上,更要比服务。原有的服务体系已不足以适应现代社会需求,谋求适合现代社会需求的客户服务系统,是所有企事业单位计划做或正在做的工作。这些工作有利于改善服务量,提高效率并增加企业效益,从而赢得良好的社会声誉。如何利用先进的信息技术为医院服务,更大程度的提高医院的服务质量及利润,是医院信息化建设中的一个重要着眼点。医院的竞争越来越激烈,商业医院的生存是第一位的,提升档次和服务质量迫在眉睫,陪护问题一直是医患矛盾的主体,也是长期困扰卫生系统服务质量的大问题,使用无线呼叫系统,方便病人更快找到医生,以节约病人的宝贵时间。临床呼叫求助装置是传送临床信息的重要手段,关系病员安危,传统的有线呼叫系统历来受到各大医院的普遍重视。假如采用无线传输,会节约布线和改造线路的资金,为医院节约成本,并且及时、准确、可靠,简便可行,必然比目前的同类产品更能受到医院及病人的认可,有更强的竞争力,必然能大量推广。数据的碰撞问题即多路存取问题。我们把多个通信通路竞争一个通信信道的通信方式叫做多路存取。由于每个通信通路都有规定的通路容量,且通路容量是由这个通信通路的最大数据传输率以及供它使用的时间片确定的,故分配给每个用户的通路容量必须满足:当有多个发射器同时把数据传输给同一个接收器时,不能出现互相干扰。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所示。位D7D6D5D4D3D2D1D0SCONSM0SM1SM2RENRB8RB8TIRI地址9F9E9D9C9B9A9998表4.1 SCONC格式SM0,SM1:工作方式控制位,可构成4种工作方式,如表4.2所示。 表4.2 串行接口的工作方式SM0SM1工作方式说明波特率000同步移位寄存器f/1201110位异步收发可变10211位异步收发f/32或f/6411311位异步收发可变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(MOV PCON,#80H或ORL PCON#80H)可加倍方式1,2和3的波特率。4.1.3 串行数据输入/输出缓冲器SBUFMCS-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.2 RS485简介RS-485接口芯片已广泛应用于工业控制、仪器、仪表、多媒体网络、机电一体化产品等诸多领域5。可用于RS-485接口的芯片种类也越来越多。如何在种类繁多的接口芯片中找到最合适的芯片,是摆在每一个使用者面前的一个问题。RS-485接口在不同的使用场合,对芯片的要求和使用方法也有所不同。使用者在芯片的选型和电路的设计上应考虑哪些因素,由于某些芯片的固有特性,通信中有些故障甚至还需要在软件上作相应调整,如此等等。希望本文对解决RS-485接口的某些常见问题有所帮助。4.2.1 RS-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,MAX49064节点:SN75LBC184128节点:MAX487,MAX1487256节点:MAX1482,MAX1483,MAX3080MAX3089(2) 半双工和全双工 RS-485接口可连接成半双工和全双工两种通信方式。半双工通信的芯片有SN75176、SN75276、SN75LBC184、MAX485、MAX 1487、MAX3082、MAX1483等;全双工通信的芯片有SN75179、SN75180、MAX488MAX491、MAX1482等。 4.3 应用中的常见问题 4.3.1 抗雷击和抗静电冲击RS-485接口芯片在使用、焊接或设备的运输途中都有可能受到静电的冲击而损坏。在传输线架设于户外的使用场合,接口芯片乃至整个系统还有可能遭致雷电的袭击。选用抗静电或抗雷击的芯片可有效避免此类损失,常见的芯片有MAX485E、MAX487E、MAX1487E等。特别值得一提的是SN75LBC184,它不但能抗雷电的冲击而且能承受高达8kV的静电放电冲击,是目前市场上不可多得的一款产品。4.3.2 限斜率驱动由于信号在传输过程中会产生电磁干扰和终端反射,使有效信号和无效信号在传输线上相互迭加,严重时会使通信无法正常进行。为解决这一问题,某些芯片的驱动器设计成限斜率方式,使输出信号边沿不要过陡,以不致于在传输线上产生过多的高频分量,从而有效地扼制干扰的产生。如MAX487、SN75LBC184等都具有此功能。 4.3.3 故障保护故障保护技术是近两年产生的,一些新的RS-485芯片都采用了此项技术,如SN75276、MAX3080MAX3089。什么是故障保护,为什么要有故障保护,如果没有故障保护会产生什么后果?众所周知,RS-485接口采用的是一种差分传输方式,各节点之间的通信都是通过一对(半双工)或两对(全双工)双绞线作为传输介质。根据RS-485的标准规定,接收器的接收灵敏度为±200mV,即接收端的差分电压大于、等于+200mV时,接收器输出为高电平;小于、等于-200mV时,接收器输出为低电平;介于±200mV之间时,接收器输出为不确定状态。在总线空闲即传输线上所有节点都为接收状态以及在传输线开路或短路故障时,若不采取特殊措施,则接收器可能输出高电平也可能输出低电平。一旦某个节点的接收器产生低电平就会使串行接收器(UART)找不到起始位,从而引起通信异常,解决此类问题的方法有两种:(1) 使用带故障保护的芯片,它会在总线开路、短路和空闲情况下,使接收器的输出为高电平。确保总线空闲、短路时接收器输出高电平是由改变接收器输入门限来实现的。例如,MAX3080MAX 3089输入灵敏度为-50mV/-200mV,即差分接收器输入电压UA-B-50mV时,接收器输出逻辑高电平;如果UA-B-200mV,则输出逻辑低电平。当接收器输入端总线短路或总线上所有发送器被禁止时,接收器差分输入端为0V,从而使接收器输出高电平。同理,SN75276的灵敏度为0mV/-300mV,因而达到故障保护的目的。(2) 若使用不带故障保护的芯片,如SN75176、MAX1487等时,可在软件上作一些处理,从而避免通信异常。即在进入正常的数据通信之前,由主机预先将总线驱动为大于+200mV,并保持一段时间,使所有节点的接收器产生高电平输出。这样,在发出有效数据时,所有接收器能够正确地接收到起始位,进而接收到完整的数据。 4.4 RS485应用设计4.4.1 485芯片DE控制端的设计 由于应用系统中,主机与分机相隔较远,通信线路的总长度往往超过400米,而分机系统上电或复位又常常不在同一个时刻完成。如果在此时某个75176的DE端电位为“”,那么它的485总线输出将会处于发送状态,也就是占用了通信总线,这样其它的分机就无法与 主机进行通信:这种情况尤其表现在某个分机出现异常情况下(死机),会使整个系统通信崩溃。因此在电路设计时,应保证系统上电复位时75176的DE端电位为“0”。由于8031在复位期间,I/O口输出高电平,故图2电路的接法有效地解决复位期间分机“咬”总线的问题。 4.4.2 隔离光耦电路的参数选取 在应用系统中,由于要对现场情况进行实时监控及响应,通信数据的波特率往往做得较高(通常都在4800波特以上)。限制通信波特率提高的“瓶颈”,并不是现场的导线(现场施工一般使用5类非屏蔽的双绞线),而是在与单片机系统进行信号隔离的光耦电路上。此处采用TIL117。电路设计中可以考虑采用高速光耦,如6N137、6N136等芯片,也可以优化普通光耦电路参数的设计,使之能工作在最佳状态。例如:电阻R2、R3如果选取得较大,将会使光耦的发光管由截止进入饱和变得较慢;如果选取得过小,退出饱和也会很慢,所以这两只电阻的数值要精心选取,不同型号的光耦及驱动电路使得这两个电阻的数值略有差异,这一点在电路设计中要特别慎重,不能随意,通常可以由实验来定。 4.4.3 485总线输出电路部分的设计 输出电路的设计要充分考虑到线路上的各种干扰及线路特性阻抗的匹配。由于工程环境比较复杂,现场常有各种形式的干扰源,所以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总线状态切换时需要做适当延时,再进行数据的收发。具体的做法是在数据发送状态下,先将控制端置“1”,延时1ms左右的时间,再发送有效的数据,一包数据发送结束后再延时1ms后,将控制端置“0”。这样的处理会使总线在状态切换时,有一个稳定的工作过程。5 系统硬件设计5.1 系统总体框图系统采用RS485CAN总线协议,有主从两个独立系统,所以在硬件设计上有两种框图,如图5.1和图5.2:从机采用485芯片为串口通信芯片,辅助两个按键判键电路构成总体的硬件结构,系统都是采用+5V电源供电,则框图如图5.3:图5.1 总体框图1图5.2 总体框图2图5.3 本设计总体框图5.2 硬件模块5.2.1 系统时钟电路MCS51单片机芯片内部设有一个反向放大器所构成的振荡器,XTAL1和XTAL2分别为振荡电路的输入端和输出端,时钟可以由内部或外部产生。内部时钟电路如图5.4所示。在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联振荡电路回路。晶振频率可以在1.2MHz到12MHz之间选择,通常选择为6MHz,C3、C4电容值取5pF30pF,电容的大小可起频率微调的作用。图5.4 晶振电路5.2.2 系统复位电路通过某种方式,使单片机内各寄存器的值变为初始状态的操作称为复位。复位电路如图5.5所示,在时钟电路工作后,在REST端持续给2个机器周期(24个振荡周期)的高电平就可完成复位操作。图5.5 复位电路5.2.3 系统报警电路当从机有呼叫主机时,主机会显示其从机号码,并及时的采用蜂鸣器进行报警,因单片机的电压驱动蜂鸣器的能力不够,用三极管进行信号发大,电路如图5.6下: 图5.6 系统报警电路5.2.4 485多机通信电路RS485通信协议要求485芯片一般都处于接受状态,这样可以防止多个总线被占用的情况。而在现实中每当单片机一复位时,单片机的各个引脚的电压都变为初始化状态(高电平),从而是485芯片处于发送状态,这样会出现多个从机同时向主机发送命令情况,造成总线占有冲突,影响通信正常进行。在硬件上加上74LS04反向器,每当芯片一复位各引脚电压变为高电压时,通过反向降至低电压,使芯片处于接受状态。74LS04是6非门(反相器)他的工作电压5V,他的内部含有6个coms反相器,74LS04的作用就是反相把1变成0,芯片的管脚顺序是U字型走向。(1) 系统的通信硬件设计电路如图5.8:图5.7 通信硬件设计电路 (2) 通信显示电路如图5.9系统要显示256位床号,根据学校的现实情况采用4位共阳的LED数码管作为显示器件。51系列单片机的P0口没有上拉电阻,所以在给数码管供电时加上1K的上拉排阻,模块如图所示:图5.8 通信显示电路(3) 单片机控制中心:CPU采用40引脚的89S51为控制核心,并附有ISP六针下载芯方便程序的调试,在P1口还连接四个LED发光二极管作为多机通信的指示灯,硬件设计电路如图5.10所示为:图5.9 硬件设计电路6 系统软件设计6.1 多机通信程序设计原理在多机通信时,TB8可置“1”或者清“0”,与SM2配合使用。当SM2=1时,实现多机通信功能。若接受到的TB8=1,接受内容进入SBUF,RI置“1”,向CPU发中断请求;若RB8=0,RI不置“1”,即不向CPU发中断请求。当SM2=0时,不判RB8的状态,均向CPU发送中断请求。因此,在SM2=1时,TB8/RB8可作为地址/数据标志位。根据这一配置方式,可构成主从式多机通信系统。即主从式,在多台单片机中,有一台式主机,其余的为从机。主机发送的信息可传送到各个从机或指定的从机,而各从机发送的信息只能被主机接受。多机通信的实现主要依靠主从之间正确地设置与判断多机通信控制位SM2和发送或接收的第九数据位(D8)。多机通信控制过程如下:(1) 使所有从机的SM2位置“1”,处于只接受地址帧的状态。(2) 主机发送一帧地址信息,其中包含8位地址和第九位为地址/数据信息的标志位。第九位(TB8)是1,表示改帧位地址信息。(3) 从机接受到地址帧后,各自将所接收到的地址与本从机的地址比较。对于地址相符的那个从机,使SM2位清“0”,并把本机的地址发送回主机作为应答,然后开始接收主机随后发来的数据或命令信息;对于地址不符的从机,保持SM2位为“1”,对主机随后发来的数据不予理睬,直至发送新的地址帧。(4) 主机收到从机发回的应答地址后,确认地址是否相符。如果地址相符,则清TB8,开始发送命令,通知从机是进行数据发送;如果地址不符,则发复位信号(数据帧中TB8=1)。(5) 主从机之间进行数据通信。6.2 系统程序6.2.1 延时子程序主机载显示时要求动态显示,在对各个位选引脚扫描时要进行一定的延时,以满足人眼对显示速度的要求,不会有一种单个显示的现象。在主从机之间的RS485通信中,RS485芯片工作的芯片的收发状态转换时要求有一定的时间差,以防止总线上的总线冲突, 流程图如图6.1。6.2.2 显示子程序主机要求要对从机的从机号进行显示,要显示256位从机,则有四个位选八个段选。程序采用动态显示的方法,给一个段选给一个位选然后给一点延时,三个位置循环显示, 流程图如图6.2。 图6.1 程序流程图 图6.2 程序流程图6.2.3 通信程序该串行通信协议定义了串行通信协议中传输的信息内容及使用格式。其中包括:主机轮询(或广播)格式;主机的编码方法,内容包括:要求动作的功能代码,传输数据和错误检验等。从机的响应也是采用相同的结构,内容包括:动作确认,返回数据和错误检验等。如果从机在接收信息时发生错误,或不能完成主机要求动作,将组织一个故障信息作为响应反馈给主机。主从机之间通信需要进行两次握手,流程图如图6.3。 图6.3 显示子程序流程图6.2.4 从机、主机程序流程图现有1台主机与10台从机进行双向通信。从机地址为:00H09H 。设主、从机以方式3进行串行通信,波特率为1200,F晶振为12MHZ。下面以主机发送数据,从机接收数据为例说明。主机设定有关寄存器的内容如下:存放主机发送的数据块首地址存放寻址的从机地址存放主机发送数据块的长度通信命令约定: “01H”:表示主机接收显示命令;“02H”:表示主机接收清楚显示命令。流程图如图6.4。图6.4 程序流程图7 调试 (1) 在系统上电调试之前,首先要认真的检查硬件电路,检查有没有出现虚焊,缺焊,短路等容易疏忽的地方。检查直插芯片有没有放置反了,这样可以防止芯片被无端的烧坏,减少没必要的损失。上电后看电源指示灯LED有没有亮,避免因疏忽造成电源反接。如果指示灯没亮,必须马上断电,检查电源接口是否反接。(2) 在下载程序的时,ISP下载软件提示没有检查到芯片,检查第单片机第31引脚电压是否是在5伏左右,如电压低于3.5伏单片机默认为低电平,单片机不工作。单片机的复位电路测试开始应该在0伏,按下开关后就要在高电平不然单片机的初始状态工作部正常。单片机的晶振电路对下载也有影响。(3) 在显示调试中,硬件设计中把数码管的显示八位段选进行了调整,所以原来的段选字码要按照PCB图上的选择重新编写。从机传送的数据不同要求显示不同,则要求显示具有及时性持久性,所以在显示的最后要进行显示“清零”。(4) 在485的通信协议的调试中,485工作的时间仿真及时性,其工作时要求要一定的延时让总线有足够的反应时间,防止多个分机的总线冲突。(5) 在判键程序的调试中,硬件上要求加上个反向器以防止单片机复位对判键的影响。在软件设计上,开始进行初始化,如遇上有变化则重置变量,最后应该要将变量清零回到初始位置,以防止后面的判键效果一直和第一次的重合。8 结论运用单片机控制技术和RS485总线通信技术,设计出以有线为传输方式基于单片机的病房呼叫报警系统,与其他一些病房呼叫报警系统相比,具有多功能、低成本、易普及、高可靠性等突出优点,同时它还具有良好的可扩充性,可以进一步实现多种功能的拓展,使整个系统更加的完善,如在后期的开发方面使性能得到进一步的提升的话,将具有广泛的市场发展前景。参考文献1 郭明亮.CAN总线原理和应用系统.北京:北京航空航天大学出版社,1996:5068.2 阳宪惠.现场总线应用.北京:清华大学出版社,1999:7577.3 张友德.飞利浦89C51系列单片机原理与应用技术手册.北京:北京航空航天大学出版社,1992:2627.4 张天凡.51单片机C语言开发详解.北京:电子工业出版社,2008:448449.5 穆立君.基于CAN总线的楼宇自动化系统设计.湖南:湖南大学出版社,2006:213223.6 李鸿.单片机原理及应用.湖南:湖南大学出版社,2004:220224.7 张毅刚.MCS-51单片机应用设计.黑龙江:哈尔滨工业大学出版社,2006:3045.8 余锡存.单片机原理及接口技术.西安:西安电子科技大学出版社,2002:4749.9 那颜.电子及通信专业设计宝典.西安:西安电子科技大学出版社,2008:1