1 系统总体设计方案
图1 整体设计框图
该系统总体设计框图如图1所示。整个系统采用三级结构,即医院监控中心、病房主机和温度传感器。其中病房主机采用单片机AT89C52为主控单元,主要实现网络通信、温度采集和显示。网络通信是通过以太网转串口模块ZNE-100T实现的,每台ZNE-100T都可以设定IP地址和服务器IP地址,便于构成分布式测温网络。测温元件采用美国DALLAS半导体公司生产的数字温度传感器DS18B20,每个DS18B20都有惟一的ID号,体积小,可以封装成普通温度计大小,其拉线最长距离可达80 m,便于分布式安放在病人身上。温度数据可以在病房主机的液晶上滚动显示。医院监控中心和各病房主机之间的网络通信,采用C-S架构,病房主机每分钟向医院监控中心发送各路温度数据。医院监控中心接收来自各病房主机的数据,可以以曲线或者数字的方式实时显示各病人温度变化情况,并进行异常处理和相应信息记录,并且与病人数据库同步,及时提醒值班医生和护士关注病人情况。
2 硬件设计
2.1 单片机主控单元设计
单片机AT89C52是一个低电压,高性能CMOS8位单片机,片内含8KB的FLASH和256B的RAM,片内置通用8位中央处理器,具备32个双向I/O口。其中单片机的P0口用于现场显示电路,采用点阵液晶显示模块LM6038D,可以滚动显示各个病人的体温;P1口用于接单总线数字温度传感器DS18B20;P2口用于现场控制电路,包括按键、指示灯等;P3口的P3.0(RXD)和P3.1(TXD)用于和ZNE-100T的串口通信。系统采用5V供电。
2.2 单总线温度采集电路设计
DS18B20的测量范围为-55~+125℃;在-10~+85℃时,它的精度为±0.625℃,通过特殊处理,可以达到0.1℃。
图2 DS18B20的电路连接方式
单总线数字温度传感器DS18B20的电路连接方式主要有两种,如图2所示。该设计采用外接电源方式,如图2(b)所示。理论上单片机的每个端口可以接无数个DS18B20,但是单片机端口负载能力有限,P1口的每个端口(P1.0至P1.7)只能推动8个DS18B20。该设计中只用P1.0端口接了8只DS18B20。
2.3 以太网通信电路设计
ZNE-100T是采用RS 232接口(DB9接头)与单片机通信的,而单片机只能用TTL电平,因此,必须设计一个RS232转换电路与之通信。RS232转换芯片选用Maxim公司的MAX232E。其转换电路如图3所示。
图3 RS232与TTL电平转换电路
2.4 液晶显示电路设计
液晶显示模块采用拓谱微公司生产的LM6038D点阵液晶模块,该模块有128(列)×64(行)个像素点,另外每列多设计了4个像素点,实际上是132×64个像素点,分成9页。该设计充分利用了多出的4个像素点,做成了一个滚动条,通过按键可以操作滚动条,以便用户翻页查看显示的内容。
2.5 控制电路设计
该设计设计了两个按键,分别接在单片机的P2.0和P2.1引脚上,分别用于控制液晶显示屏滚动条的上下拉。还设计了两个指示灯,分别接在单片机的P2.2和P2.3引脚上,分别用于指示发送数据指示(红色发光二极管)和连网成功指示(绿色发光二极管)。
2.6 看门狗电路设计
为防止系统死循环,提高系统的可靠性,采用了MAX813L看门狗电路。其最大超时为1.6s,高电平复位,即RESET脚保持状态1.6s后就发一复位信号。因此,程序中必须每1.6s内改变RESET状态1次。
3 单片机程序设计
该系统单片机程序采用C语言编写。程序首先对硬件进行初始化,包括对单片机AT89C52寄存器的初始化、DS18B20内部RAM的初始化、液晶显示模块LM6038D的初始化以及对以太网通信模块ZNE-100T的初始化。程序通过分时法轮流采集8只DS18B20的温度读数,并实时在液晶上显示,用户通过操作按键可以翻页查看8只DS18B20的温度数据,单片机每隔1min通过串口把8路温度数据打包后发送给以ZNE-100T,ZNE-100T、实时把数据传输到医院监控中心。系统流程图如图4所示。主要的子程序有:DS18B20驱动程序、液晶显示驱动程序和串口和网络通信驱动程序。
图4 系统流程图
3.1 DS18B20驱动程序设计
单总线通信时只需要1根信号线,并严格按照特定的时序要求逐位交换信息,主机和从机允许数据双向传输,但在同一时刻数据的传输只能是一个方向的。
(1)初始化时序
初始化时CPU首先发出一个复位信号将单线总线上所有DS18B20复位;然后释放总线,改成接收状态,单线被上拉电阻R拉成高电平。在检测到此上升沿后,DS18B20需要等待15~60μs才向CPU发出响应脉冲,此后便可对ROM,RAM进行操作。
(2)读/写时序
①写时序。CPU把I/O线从高电平拉至低电平时,作为一个写周期的开始。写时序包括2种类型即写1时序和写0时序。
②读时序。当CPU将I/O线从高电平拉成低电平时,就作为一个读周期的开始,并且I/O线保持低电平至少为1μs。DS18B20的输出数据至读时序下降沿后的15μs内有效。经过15μs后读时序结束,I/O线经外部上拉电阻又变成高电平。读/写1位数据至少需要60μs,并在两位数据之间至少要有1μs的恢复期。读/写1位数据时序的波形如图5所示。
图5 读/写1位数据时序的波形
3.2 液晶显示驱动程序设计
利用点阵液晶显示模块LM6038D的串口模式控制工程网版权所有,其时序图如图6所示。
图6 LM6038D串口模式时序图
LM6038D的显示驱动程序包含了字符库,由于系统只是简单地显示温度数据,所以字符库做的比较小,只有“0~9”,“.”,“:”,“℃”,“+”以及“-”的字符编码,采用16×16的字符大小。液晶每一页只显示4路DS18B20的数据,通过两个按键可以上下翻页查看其他DS18B20的数据。数据显示格式:“1:+36.7℃”。
3.3 串口和网络通信驱动程序设计
单片机和ZNE-100T‘模块之间通过RS 232接口通信,采用中断的方式进行串口通信。单片机串口初始化波特率为9600 b/s,单片机在初始化时,就先通过串口对ZNE-100T进行初始化操作,包括设置服务器IP地址,本机IP地址、网关、掩码以及服务器端口号等,连网成功后,绿色发光二极管会亮起。单片机单元加上ZNE-100T模块,就构成了病房主机,它和医院监控中心之间的通信协议如下:
每个病房主机都有一个ID号。单片机每隔1min把采集到的8路温度数据按照通信协议打包之后通过串口发送给ZNE-100T,ZNE-100T则通过网口把数据发送到医院监控中心,此时红色发光二极管会不断的闪,表示正在发送数据。
4 医院监控中心
医院监控中心包括数据库和监控平台。数据库记录从个病房主机发过来的病人的体温数据,并且与病人的其他数据库同步,便于医生分析病人的病情变化。监控平台则实时显示各床号病人的体温数据,并对体温变化异常的病床号进行预警,同时显示相应的编号和床位信息,提示医护人员注意检查病人身体状况。
5 测试结果和实际使用情况
(1)DS18B20温度测量精度
在测试过程中选用了水银体温计同时测量温度,以检验DS18B20的测量精度。在此测量20次体温,DS18B20的测量结果和水银体温记的测量结果基本一致。
(2)监控中心温度显示
在实际测试过程中,用5台病房主机和监控中心组成了一个测试网络,可以在监控中心实时看到各病房主机发送过来的温度数据,每路温度数据都可以以曲线或者数字的方式显示。
结束语
实践表明,该系统可以稳定地测量多个人体温度,可以正常与监控中心通信,并且可以实时地在病房主机上显示测量的温度数据。该系统具备稳定性好,成本低廉,采用单总线测温技术和以太网通信技术,便于实现分布式温度测量,可以作为子系统模块在医院信息系统中应。