便携式微电脑多参数生理监护仪的研制
摘要:介绍一种便携式微电脑多参数重理监护仪的工作原理、系统构成及软、硬件设计。该系统由二个Intel-196单片机构成双CPU系统,完成数据的采集、处理、显示,对病人进行实时监控,并可采用串行通信的方式将数据送给PC机,对数据进行进一步的分析处理。
关键词:便携式 多参数 生理监护
前言
多参数重量监护仪能为医学临床诊断提供重要的病人信息,可实时检测人体的心电信号、心率、血氧饱和度、血压、呼吸频率和体温等重要参数,实现对各参数的监督报警。信息存储和传输,是一种监护病人的重要设备,但目前国内的监护仪一般功能单一,多为CRT显示,体积较大,移动不方便,存在着不足。
该便携式微电脑参数生理监护仪,检测参数多,设计紧凑,体积小巧,携带方便,既可用于病房,也可用于室外,可以定时、连续、长时间地检测病人的重要生命特征参数,它在保障病人的生命安全方面具有重要的临床使用价值。
工作原理
1.系统工作原理
便携式微电脑多参数生理监护仪的主机由两个16位微控制器80C196组成。
系统通过信号检测与预处理模块将生物医学信号转换成电信号,并进行干扰抑制、信号滤波和放大等预处理。然后,通过数据提取与处理模块进行采样、量化,并对各参数进行计算分析,结果与设定阈值比较,进行监督报警,将结果数据实时存储到RAM,并可实时传送至PC机上,在PC机上可实时显示各参数值。
2.系统结构
系统原理框图如图1所示。该监护仪由两个单片机组成双CPU系统。
javascript:window.open(this.src);" style="cursor:pointer;"/>
单片机1完成对体温、心电波形、脉搏脉形的信号检测、处理、数据存储,并通过LCD显示屏对各波形、参数进行定时显示、报警。
单片机2承担其中耗时较长的血压测量及血氧饱和度的检测,使之不影响整个系统的正常工作,同时还承担对心率、呼吸频率的测定。
两个单片机间的信息交换通过1个8位的并行口进行,由2根I/O口实现通信控制。具体是用P1口,配合两个高速输入、输出I/O口(HIS.0、HSO.0),用作两个单片机之间的数据传送。这种双机间的连续方式属于松耦合的多处理机系统(参考文献8),在硬件实现上较为简单,只需在软件编程时,为其通信方式设计必要的通信协议、数据传输方式等。
3.系统硬件设计
(1)系统采用EEPROM 28C64作为程序存储器;采用一片非易失性静态存储器(NASRAM)作为数据存储器。NASRAM具有静态存储器的优点,同时具有非易失性的特点。非易失性的特点是指存储芯片在掉电的情况下,能够正确无误地保存所有数据,保存时间长达10年。采用芯片的非易失性的特点可以不用为此芯片提供掉电备用电源,即可实现掉电数据保护。
(2)液晶显示模块
为了对心电波形、脉搏波形及其它生理参数进行显示,而且对波形显示具有足够的分辨率,为此系统采用图形液晶显示屏。为了减少仪器的体积,实现系统低成本,功耗小的要求,选用了特别适用于便携式监护仪的单色LCD显示屏。
该显示屏为日立LMG70520XNGR液晶显示屏,点阵数为640×200,点尺寸为0.22×0.30,其驱动电源为+5V和-20~-21V,耗电仅8mW,能满足本系统的要求。
为控制该显示屏的显示,我们选取了适用于该显示屏的显示控制器SED1330。该芯片是用于计算机的指令与数据,并产生相应的时序及数据控制液晶显示屏的显示。该控制器自带RAM,自行管理显示缓冲区,与CPU之间通过8位数据并行传输,与显示屏之间是4位数据并行传输。
(3)键盘输入模块
系统设计的功能键采用中断方式输入。当有任一功能键按下时,产生键盘中断,CPU执行中断程序,读取键码,执行相应操作;没有键按下时,不占用CPU的运行时间,提高了CPU的运行效率。
键盘采用两片74LS373构成矩阵软件编码键盘,键盘部分直接挂在单片机1的总线上。不占用单片机I/O口线,也不必为此扩展系统I/O口,可减少系统消耗功率。
通过为键盘分配相应的I/O地址,可采用读写该地址的方式获得键码。硬件实现简单,软件编程方便。
(4)电源系统
基于低功耗和便于携带使用的考虑,系统采用电池供电及外接AC-DC变换器件供电的方式。设计采用三节1.5V电池供电。该电压通过稳压器件提供+5V的电压给系统工作。同时采用DC-DC电压变换器+5V的电压变换至-18~-24V电压,以提供给LCD显示屏工作。
选择电池作为电源是基于如下考虑:具有高输出能力、小型结构、标准尺寸和低价格。
(5)外围器件控制
系统各外围器件的片选信号由74LS373锁存的地址信号,经芯片GAL16V8C译码产生。GAL芯片是可编程逻辑阵列,通过对其引脚的编程,将其作为译码器,依据P4口高字节8位地址进行片选,其编程方便,使用灵活。系统除用作译码器外,在单片机2中,还用作控制气泵和气阀的开关。
通过簇已分配给气泵或气阀I/O口地址,写上“0”或“1”,则输出引脚OUT1、OUT2为低或高电平。该电平将保持,直到再次往同一地址写“1”或“0”,如此,可定时控制气泵或气阀开关。
4.系统软件设计
系统软件的主要特点是,以实时数据为核心,以功能独立化、结构模块化为软件设计模式。系统开发采用了结构化的,从上到下的模块划分及从底到上的硬件功能封装的软件开发设计方法。本系统采用C96语言进行软件系统开发。
(1)数据采集程序
数据采集到整个系统最重要的问题。如何实现数据采集,保证数据采集的实时性,并且能高效率地进行数据采集,尽可能少的时间占用少的系统资源,对于多参数同时监护的情况下,是确保系统处理的实时性的重要因素。
在软件设计中,我们利用硬件定时器及软件定时器,进行定时中断,进行多通道、多采样点的数据采集流程设计。由于人体生理信号的变化较缓慢,采用此种方法已经可以确保高精度、实时性的数据采集。
(2)液晶显示控制
系统显示功能的实现,实际上是对显示控制器SED1330的编程控制。SED1330控制器具有系统控制、显示操作、绘制操作、存储操作等共15条指令。
在进行系统显示模块的编程时,我们利用C96语言对SED1330的指令功能进行分类组合、封装,编制了一个基本的显示控制图函数库。通过对子函数的调用,非常方便地实现了复杂的人机界面程序设计。
设计的子函数如下:
lnitCD(); /*初始化SED1330*/
ClearDispBufffer(); /*对显示缓存区清零*/
ChooseScreen(screen); /*选择显示缓存区*/
SetCsrAbsAddr(addr); /*设置光标绝对位置*/
SetCsrDir(dir); /*设置光标移动方向*/
PutChar16xy(x,y,data); /*显示点阵为16×16的字体*/
SetPutPixel(x,y); /*在显示屏上显示一点*/
H_line(x1,x2,y,linestyle); /*画水平线*/
V_line(x1,y1,x2,y2); /*画垂直线*/
lnvert(x1,y1,x2,y2); /*对矩形区域反显*/
Clear(left,top,right,bottom); /*清除矩形区域*/
部分液晶显示子程序示例如下:
# include "80c196.h"
# include “data.dat”
# include "init.c"
# define UP 0x4e
# define DOWN 0x4f
# define LEFT 0x4d
# define RIGHT 0x4c
# define AP 80
# define SA1 0
# define SAD2 0x3e80
# define Max_X 640
# define Max_Y 200
# define ECQ_Y 128
# define PLUSE_Y 50
# define NORMAL ox4f
# define DOT_1 0xaa
# define DOT_2 0x66
unsigned char * comm_reg;
unsigned char * pram_reg;
unsigned int_sad;
/************************/
/* var screensvalue is:1 or 2.*/
ChooseScreen(screen)
Unsigned char screen;
{
switch(screen){
case 1:
_sad=SAD1;break;
case 2:
_sad=SAD2;break;
defaulf:
_sad=SAD1;}
}
/*************************/
lnitl_CD()
{
* comm_reg=0x40; /*SYSTEM SET */
* pram_reg=0x34;/P1 CGRAM font dot array(now is:8x16)*/
* pram_reg=0x87; /*P2 */
* pram_reg=0x07;
* pram_reg=80;
* pram_reg=93; /*P5 93 */
* pram_reg=200;
* pram_reg=80; /*P7 */
* pram_reg=0; /*P8 */
* comm_reg=0x44; /*SetSooll() */
/*set SAD1 */
* pram_reg=0x0; /*P1 */
* pram_reg=200; /*P3 */
/* set SAD2 */
* pram_reg=0x80; /*P4 */
* pram_reg=0x3e;
* pram_reg=200; /*P6 */
/*set SAD3 */
* pram_reg=0x00; /*P7 */
* pram_reg=0x7d; /*P8 */
/*set SAD4 */
┆
* comm_reg=0xf58; /*Set Display(OFF)*/
/* *pram_reg=0; */
* comm_reg=0x5d; /*SetCsrForm()*/
* pram_reg=6;
* pram_reg=0x86;
* comm_reg=0x5a; /*set HDOT SCR*/
* pram_reg=0; /*must be clear*/
* comm_reg=0x4c; /*set csr dis is:RIGHT*/
* comm_reg=0x5b; /*SetOvlay */
* pram_reg=0x1c; /*three graphics display zone*/
* comm_reg=0x5c; /*SetCGRAM(addr)*/
* pram_reg=0xf0; /*turn off the CGAM */
* pram_reg=0;
* comm_reg=0x59; /*SetDisplay(ON)*/
* pram_reg=0x16;
ClearDispBuffer();
}
………………
利用LCD显示屏进行显示时,需要解决的问题是清除图形间断现象。模拟波形是连续图形,但显示屏是以离散点加以显示的,这样会造成波形快速升降沿间断的现象。
为此,我们设计了一比较子程序。当相邻两列的点的幅值差大于2时,就将两点间的所有点“点亮”,使显示的图形连续。
(3)中断系统的应用
本系统功能的实现,主要由中断程序程序实现。如采用键盘输入中断、数据采集中断、双机通信、上下位机间的通信等中断服务。中断服务在整个系统软件中起着不可缺少的作用。
本系统还利用PC机功能强,处理信息量大的特点,把监护仪采集到的数据通过RS-232串行口传送到PC机。由PC机进行数据的存储和数据的进一步处理,并采用各种图表等形式显示参数、趋势图画面,为操作者提供了非常友好的软件界面