前言
多參數(shù)重量監(jiān)護(hù)儀能為醫(yī)學(xué)臨床診斷提供重要的病人信息,,可實(shí)時(shí)檢測(cè)人體的心電信號(hào)、心率,、血氧飽和度,、血壓、呼吸頻率和體溫等重要參數(shù),,實(shí)現(xiàn)對(duì)各參數(shù)的監(jiān)督報(bào)警,。信息存儲(chǔ)和傳輸,是一種監(jiān)護(hù)病人的重要設(shè)備,,但目前國(guó)內(nèi)的監(jiān)護(hù)儀一般功能單一,,多為 CRT顯示,體積較大,,移動(dòng)不方便,,存在著不足。
該便攜式微電腦參數(shù)生理監(jiān)護(hù)儀,檢測(cè)參數(shù)多,,設(shè)計(jì)緊湊,,體積小巧,攜帶方便,,既可用于病房,,也可用于室外,可以定時(shí),、連續(xù),、長(zhǎng)時(shí)間地檢測(cè)病人的重要生命特征參數(shù),它在保障病人的生命安全方面具有重要的臨床使用價(jià)值,。
工作原理
1. 系統(tǒng)工作原理
便攜式微電腦多參數(shù)生理監(jiān)護(hù)儀的主機(jī)由兩個(gè)16位微控制器80C196組成,。
系統(tǒng)通過信號(hào)檢測(cè)與預(yù)處理模塊將生物醫(yī)學(xué)信號(hào)轉(zhuǎn)換成電信號(hào),并進(jìn)行干擾抑制,、信號(hào)濾波和放大等預(yù)處理,。然后,通過數(shù)據(jù)提取與處理模塊進(jìn)行采樣,、量化,,并對(duì)各參數(shù)進(jìn)行計(jì)算分析,結(jié)果與設(shè)定閾值比較,,進(jìn)行監(jiān)督報(bào)警,,將結(jié)果數(shù)據(jù)實(shí)時(shí)存儲(chǔ)到RAM,并可實(shí)時(shí)傳送至PC機(jī)上,,在PC機(jī)上可實(shí)時(shí)顯示各參數(shù)值,。
2. 系統(tǒng)結(jié)構(gòu)
系統(tǒng)原理框圖如圖1所示。該監(jiān)護(hù)儀由兩個(gè)單片機(jī)組成雙CPU系統(tǒng),。
單片機(jī)1完成對(duì)體溫,、心電波形、脈搏脈形的信號(hào)檢測(cè),、處理,、數(shù)據(jù)存儲(chǔ),并通過LCD顯示屏對(duì)各波形,、參數(shù)進(jìn)行定時(shí)顯示,、報(bào)警。
單片機(jī)2承擔(dān)其中耗時(shí)較長(zhǎng)的血壓測(cè)量及血氧飽和度的檢測(cè),,使之不影響整個(gè)系統(tǒng)的正常工作,,同時(shí)還承擔(dān)對(duì)心率、呼吸頻率的測(cè)定,。
兩個(gè)單片機(jī)間的信息交換通過1個(gè)8位的并行口進(jìn)行,,由2根I/O口實(shí)現(xiàn)通信控制,。具體是用P1口,配合兩個(gè)高速輸入,、輸出I/O口(HIS.0,、 HSO.0),用作兩個(gè)單片機(jī)之間的數(shù)據(jù)傳送,。這種雙機(jī)間的連續(xù)方式屬于松耦合的多處理機(jī)系統(tǒng)(參考文獻(xiàn)8),,在硬件實(shí)現(xiàn)上較為簡(jiǎn)單,只需在軟件編程時(shí),,為其通信方式設(shè)計(jì)必要的通信協(xié)議,、數(shù)據(jù)傳輸方式等。
3.系統(tǒng)硬件設(shè)計(jì)
(1)系統(tǒng)采用EEPROM 28C64作為程序存儲(chǔ)器,;采用一片非易失性靜態(tài)存儲(chǔ)器(NASRAM)作為數(shù)據(jù)存儲(chǔ)器,。NASRAM具有靜態(tài)存儲(chǔ)器的優(yōu)點(diǎn),同時(shí)具有非易失性的特點(diǎn),。非易失性的特點(diǎn)是指存儲(chǔ)芯片在掉電的情況下,,能夠正確無誤地保存所有數(shù)據(jù),保存時(shí)間長(zhǎng)達(dá)10年,。采用芯片的非易失性的特點(diǎn)可以不用為此芯片提供掉電備用電源,,即可實(shí)現(xiàn)掉電數(shù)據(jù)保護(hù)。
(2)液晶顯示模塊
為了對(duì)心電波形,、脈搏波形及其它生理參數(shù)進(jìn)行顯示,,而且對(duì)波形顯示具有足夠的分辨率,,為此系統(tǒng)采用圖形液晶顯示屏,。為了減少儀器的體積,實(shí)現(xiàn)系統(tǒng)低成本,,功耗小的要求,,選用了特別適用于便攜式監(jiān)護(hù)儀的單色LCD顯示屏。
該顯示屏為日立LMG70520XNGR液晶顯示屏,,點(diǎn)陣數(shù)為640×200,,點(diǎn)尺寸為0.22×0.30,其驅(qū)動(dòng)電源為+5V和-20~-21V,耗電僅8mW,,能滿足本系統(tǒng)的要求,。
為控制該顯示屏的顯示,我們選取了適用于該顯示屏的顯示控制器SED1330,。該芯片是用于計(jì)算機(jī)的指令與數(shù)據(jù),,并產(chǎn)生相應(yīng)的時(shí)序及數(shù)據(jù)控制液晶顯示屏的顯示。該控制器自帶RAM,,自行管理顯示緩沖區(qū),,與CPU之間通過8位數(shù)據(jù)并行傳輸,,與顯示屏之間是4位數(shù)據(jù)并行傳輸。
(3)鍵盤輸入模塊
系統(tǒng)設(shè)計(jì)的功能鍵采用中斷方式輸入,。當(dāng)有任一功能鍵按下時(shí),,產(chǎn)生鍵盤中斷,CPU執(zhí)行中斷程序,,讀取鍵碼,,執(zhí)行相應(yīng)操作;沒有鍵按下時(shí),,不占用CPU的運(yùn)行時(shí)間,,提高了CPU的運(yùn)行效率。
鍵盤采用兩片74LS373構(gòu)成矩陣軟件編碼鍵盤,,鍵盤部分直接掛在單片機(jī)1的總線上,。不占用單片機(jī)I/O口線,也不必為此擴(kuò)展系統(tǒng)I/O口,,可減少系統(tǒng)消耗功率,。
通過為鍵盤分配相應(yīng)的I/O地址,可采用讀寫該地址的方式獲得鍵碼,。硬件實(shí)現(xiàn)簡(jiǎn)單,,軟件編程方便。
(4)電源系統(tǒng)
基于低功耗和便于攜帶使用的考慮,,系統(tǒng)采用電池供電及外接AC-DC變換器件供電的方式,。設(shè)計(jì)采用三節(jié)1.5V電池供電。該電壓通過穩(wěn)壓器件提供+5V的電壓給系統(tǒng)工作,。同時(shí)采用DC-DC電壓變換器+5V的電壓變換至-18~-24V電壓,,以提供給LCD顯示屏工作。
選擇電池作為電源是基于如下考慮:具有高輸出能力,、小型結(jié)構(gòu),、標(biāo)準(zhǔn)尺寸和低價(jià)格。
(5)外圍器件控制
系統(tǒng)各外圍器件的片選信號(hào)由74LS373鎖存的地址信號(hào),,經(jīng)芯片GAL16V8C譯碼產(chǎn)生,。GAL芯片是可編程邏輯陣列,通過對(duì)其引腳的編程,,將其作為譯碼器,,依據(jù)P4口高字節(jié)8位地址進(jìn)行片選,其編程方便,,使用靈活,。系統(tǒng)除用作譯碼器外,在單片機(jī)2中,,還用作控制氣泵和氣閥的開關(guān),。
通過簇已分配給氣泵或氣閥I/O口地址,,寫上“0”或“1”,則輸出引腳OUT1,、OUT2為低或高電平,。該電平將保持,直到再次往同一地址寫“1”或 “0”,,如此,,可定時(shí)控制氣泵或氣閥開關(guān)。
4.系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件的主要特點(diǎn)是,,以實(shí)時(shí)數(shù)據(jù)為核心,,以功能獨(dú)立化、結(jié)構(gòu)模塊化為軟件設(shè)計(jì)模式,。系統(tǒng)開發(fā)采用了結(jié)構(gòu)化的,,從上到下的模塊劃分及從底到上的硬件功能封裝的軟件開發(fā)設(shè)計(jì)方法。本系統(tǒng)采用C96語言進(jìn)行軟件系統(tǒng)開發(fā),。
(1)數(shù)據(jù)采集程序
數(shù)據(jù)采集到整個(gè)系統(tǒng)最重要的問題,。如何實(shí)現(xiàn)數(shù)據(jù)采集,保證數(shù)據(jù)采集的實(shí)時(shí)性,,并且能高效率地進(jìn)行數(shù)據(jù)采集,,盡可能少的時(shí)間占用少的系統(tǒng)資源,對(duì)于多參數(shù)同時(shí)監(jiān)護(hù)的情況下,,是確保系統(tǒng)處理的實(shí)時(shí)性的重要因素,。
在軟件設(shè)計(jì)中,我們利用硬件定時(shí)器及軟件定時(shí)器,,進(jìn)行定時(shí)中斷,,進(jìn)行多通道、多采樣點(diǎn)的數(shù)據(jù)采集流程設(shè)計(jì),。由于人體生理信號(hào)的變化較緩慢,,采用此種方法已經(jīng)可以確保高精度,、實(shí)時(shí)性的數(shù)據(jù)采集,。
(2)液晶顯示控制
系統(tǒng)顯示功能的實(shí)現(xiàn),實(shí)際上是對(duì)顯示控制器SED1330的編程控制,。SED1330控制器具有系統(tǒng)控制,、顯示操作、繪制操作,、存儲(chǔ)操作等共15條指令,。
在進(jìn)行系統(tǒng)顯示模塊的編程時(shí),我們利用C96語言對(duì)SED1330的指令功能進(jìn)行分類組合,、封裝,,編制了一個(gè)基本的顯示控制圖函數(shù)庫(kù),。通過對(duì)子函數(shù)的調(diào)用,非常方便地實(shí)現(xiàn)了復(fù)雜的人機(jī)界面程序設(shè)計(jì),。
設(shè)計(jì)的子函數(shù)如下:
lnitCD(); /*初始化SED1330*/
ClearDispBufffer(); /*對(duì)顯示緩存區(qū)清零*/
ChooseScreen(screen); /*選擇顯示緩存區(qū)*/
SetCsrAbsAddr(addr); /*設(shè)置光標(biāo)絕對(duì)位置*/
SetCsrDir(dir); /*設(shè)置光標(biāo)移動(dòng)方向*/
PutChar16xy(x,y,data); /*顯示點(diǎn)陣為16×16的字體*/
SetPutPixel(x,y),; /*在顯示屏上顯示一點(diǎn)*/
H_line(x1,x2,y,linestyle); /*畫水平線*/
V_line(x1,y1,x2,y2); /*畫垂直線*/
lnvert(x1,y1,x2,y2); /*對(duì)矩形區(qū)域反顯*/
Clear(left,top,right,bottom); /*清除矩形區(qū)域*/
部分液晶顯示子程序示例如下:
# 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顯示屏進(jìn)行顯示時(shí),需要解決的問題是清除圖形間斷現(xiàn)象,。模擬波形是連續(xù)圖形,,但顯示屏是以離散點(diǎn)加以顯示的,這樣會(huì)造成波形快速升降沿間斷的現(xiàn)象,。
為此,,我們?cè)O(shè)計(jì)了一比較子程序。當(dāng)相鄰兩列的點(diǎn)的幅值差大于2時(shí),,就將兩點(diǎn)間的所有點(diǎn)“點(diǎn)亮”,,使顯示的圖形連續(xù)。
(3)中斷系統(tǒng)的應(yīng)用
本系統(tǒng)功能的實(shí)現(xiàn),,主要由中斷程序程序?qū)崿F(xiàn),。如采用鍵盤輸入中斷、數(shù)據(jù)采集中斷,、雙機(jī)通信,、上下位機(jī)間的通信等中斷服務(wù)。中斷服務(wù)在整個(gè)系統(tǒng)軟件中起著不可缺少的作用,。
本系統(tǒng)還利用PC機(jī)功能強(qiáng),,處理信息量大的特點(diǎn),把監(jiān)護(hù)儀采集到的數(shù)據(jù)通過RS-232串行口傳送到PC機(jī),。由PC機(jī)進(jìn)行數(shù)據(jù)的存儲(chǔ)和數(shù)據(jù)的進(jìn)一步處理,,并采用各種圖表等形式顯示參數(shù)、趨勢(shì)圖畫面,,為操作者提供了非常友好的軟件界面