熱敏打印機(jī)的心電圖形快速打印方法
目前,我國(guó)各醫(yī)院普遍使用的心電圖機(jī)絕大多數(shù)是機(jī)電式的,即通過(guò)電極檢測(cè)心電信號(hào),放大后直接記錄,存在著打印效率低、噪聲污染嚴(yán)重、心電波形失真等缺點(diǎn)。與之相比,數(shù)字式心電圖機(jī)通過(guò)軟件實(shí)現(xiàn)噪聲抑制和心電參數(shù)的提取,并采用數(shù)字式打印機(jī)輸出心電圖形,可為醫(yī)護(hù)人員提供更完美心電圖和更多診斷信息,必將成為市場(chǎng)的發(fā)展趨勢(shì),有著更廣闊的應(yīng)用前景。由于數(shù)字心電圖機(jī)通過(guò)ADC采集的數(shù)據(jù)是離散的,要將其在圖紙上還原為原始的心電圖形,除了要將數(shù)據(jù)與圖紙上的離散點(diǎn)對(duì)應(yīng)起來(lái),還要根據(jù)信號(hào)變化的趨勢(shì),在這些點(diǎn)之間連線,使之成為連續(xù)的圖形。將心電數(shù)據(jù)尤其是多導(dǎo)聯(lián)心電數(shù)據(jù)同步、準(zhǔn)確、快速打印出來(lái)是整個(gè)系統(tǒng)開發(fā)的難點(diǎn)和關(guān)鍵,而高效打印算法對(duì)數(shù)字心電圖機(jī)的開發(fā)無(wú)疑是很有意義的。
本文引用地址:http://butianyuan.cn/article/166000.htm隨著電子技術(shù)的發(fā)展,打印機(jī)已經(jīng)廣泛應(yīng)用到各個(gè)領(lǐng)域,成為各種智能數(shù)字化儀器儀表的重要數(shù)據(jù)輸出手段。而其中熱敏打印機(jī)憑其體積小、重量輕、可靠性高、打印字符清晰、無(wú)噪聲、走紙均勻等獨(dú)特能而越來(lái)越受到青睞,更是成為小型醫(yī)療儀器如心電圖機(jī)的首先。
下面以筆者課題組開發(fā)的12導(dǎo)同步心電圖機(jī)為例,介紹以普通52單片機(jī)為主控芯片應(yīng)用串行熱敏打印機(jī)實(shí)現(xiàn)多種方式的心電圖形打印,并重點(diǎn)描述了12導(dǎo)聯(lián)同步打印方式的程序?qū)崿F(xiàn)方案。
1 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)配置了一個(gè)內(nèi)置式數(shù)字打印機(jī),它主要由熱敏打印頭(W216-QS)和步進(jìn)電機(jī)組成。W126-QS點(diǎn)陣式熱敏打印頭打印數(shù)據(jù)采用串行輸入,其內(nèi)部不僅包含有由C-MOS集成芯片構(gòu)成的1728位移位寄存器,還包含借助高密度厚膜工藝制成的加熱元件。這些加熱元件通過(guò)鎖存和切換晶體管驅(qū)動(dòng),可在熱敏打印紙上產(chǎn)生1728個(gè)點(diǎn),對(duì)應(yīng)的打印寬度為216mm,分辨率為8dot/mm。熱敏打印頭所需的打印數(shù)據(jù)為串行數(shù)據(jù),數(shù)據(jù)傳輸遵循SPI口的通信協(xié)議。系統(tǒng)采用了口線模擬SPI的工作方式與打印頭通信,電路如圖1所示。
考慮到52單片機(jī)內(nèi)部令有256字節(jié)的內(nèi)部RAM,系統(tǒng)還外擴(kuò)1片HM628128存儲(chǔ)12導(dǎo)心電數(shù)據(jù)和中間轉(zhuǎn)換結(jié)果。
2 系統(tǒng)軟件編寫
數(shù)字打印實(shí)現(xiàn)的兩個(gè)關(guān)鍵問(wèn)題:①如何將心電數(shù)據(jù)轉(zhuǎn)換成打印數(shù)據(jù);②如果將數(shù)據(jù)輸出到數(shù)字打印機(jī)。通常采用的方法是轉(zhuǎn)換數(shù)據(jù)同時(shí)將其輸出到打印機(jī)打印。這樣節(jié)省了存儲(chǔ)器空間;缺點(diǎn)是程序?qū)崿F(xiàn)復(fù)雜,通用性差(不同打印方式的數(shù)據(jù)輸出程序不同),系統(tǒng)功能不易擴(kuò)展,數(shù)據(jù)轉(zhuǎn)換和輸出都要考慮打印點(diǎn)位置,并且每輸出一點(diǎn)的數(shù)據(jù)都要調(diào)用一次程序,加大了系統(tǒng)開銷。系統(tǒng)軟件中沒(méi)有采有這種方式,而是在內(nèi)存中開辟216字節(jié)打印緩沖區(qū),將熱敏打印頭1728個(gè)點(diǎn)與216×8位數(shù)據(jù)相對(duì)應(yīng),每次將要打印的一線數(shù)據(jù)都轉(zhuǎn)換完再輸出。這樣只需在數(shù)據(jù)轉(zhuǎn)換時(shí)考慮打印位置和方式,輸出程序只需將216字節(jié)的數(shù)據(jù)按位輸出即可,并且每打印一線數(shù)據(jù)只需調(diào)用一次輸出子程序,字節(jié)了系統(tǒng)開銷。缺點(diǎn)是占用系統(tǒng)資源,這一點(diǎn)在12導(dǎo)同步打印表現(xiàn)得尤為明顯。
系統(tǒng)程序?qū)崿F(xiàn)三種打印方式:分兩次打印12導(dǎo)聯(lián)數(shù)據(jù),每次打印6導(dǎo)、12導(dǎo)同步打印、縱向打印(打印效果如圖2)。在每一種打印程序中實(shí)現(xiàn)模擬SPI口將打印數(shù)據(jù)送至數(shù)字打印機(jī)的子程序共用,不同處在于如何將心電數(shù)據(jù)轉(zhuǎn)換成打印數(shù)據(jù)。
2.1 I/O口線模擬SPI口
SPI(Serial Peripheral InteRFace)總線串口是由Motorola公司提出的一種同步串行外設(shè)接口,通過(guò)四根線進(jìn)行通信:時(shí)鐘線(SPKCLK)、數(shù)據(jù)輸出線(SPIMISO)、數(shù)據(jù)輸出線(SPIMOSI)、片選線(CS),內(nèi)部通過(guò)SPIDAT寄存器完成串-并/并-串轉(zhuǎn)換。它主要工作在主從式系統(tǒng)中,一個(gè)主器件可以帶多個(gè)從器件,主器件通過(guò)片選線控制總線沖突,使同一時(shí)刻只有一個(gè)從器件與從器件交換數(shù)據(jù)。
系統(tǒng)應(yīng)用的串行熱陣式打印機(jī)數(shù)據(jù)傳輸采用SPI時(shí)序,但普通52單片機(jī)無(wú)SPI口,所以采用I/O口線模擬SPI時(shí)序??紤]到系統(tǒng)中MCU作為主器件總是發(fā)送數(shù)據(jù),而數(shù)字打印機(jī)作為唯一從器件又總是接收數(shù)據(jù),所以只需用口線模擬SPI口的時(shí)鐘線(SPIKCLK)、數(shù)據(jù)輸出線(SPIMOSI),程序模擬SPIDAT完成并-串轉(zhuǎn)換即可。如前所提到打印頭打印的數(shù)據(jù)點(diǎn)數(shù)為1728點(diǎn),分辨率為8mm/mV,對(duì)應(yīng)216字節(jié)的數(shù)據(jù),為此從內(nèi)部RAM中分配出216字節(jié)的空間作為打印緩沖區(qū),程序從緩沖區(qū)依次讀數(shù)據(jù),在模擬時(shí)鐘線的控制下將并行數(shù)據(jù)轉(zhuǎn)換成的串行數(shù)據(jù)按位依次送至打印機(jī)的移位寄存器中,結(jié)束后送LATCH鎖存信號(hào)和打印頭加熱脈沖STROBE,從而在熱敏打印紙打印出一線心電圖形,驅(qū)動(dòng)步進(jìn)電機(jī)向前走紙即可以連續(xù)打印。SPI口模擬程序如下:
OUTPUT:
現(xiàn)場(chǎng)保護(hù)
LCALL INTRAM ;初始化內(nèi)部打印緩沖區(qū)
MOV R0,#Dat_Buff ;初始化R0為緩沖區(qū)末位地址
DAT_OUT:
MOV A,@R0 ;從緩沖區(qū)讀數(shù)據(jù)
MOV R7,#08H ;初始化R7控制并/串?dāng)?shù)據(jù)轉(zhuǎn)換
CONT_CHG:
RRC A ;對(duì)ACC循環(huán)右移實(shí)現(xiàn)并-串轉(zhuǎn)換
MOV P1.3,C 將串行數(shù)據(jù)送至打印機(jī)
SETB P1.1 ;模擬SPI時(shí)鐘
NOP
CLR P1.1
DJNZ R7,CONT_CHG ;判斷1字節(jié)數(shù)據(jù)是否轉(zhuǎn)換完
DEC R0 ;尋址下一字節(jié)
CJNE R0,#15H,DAT_OUT;判斷數(shù)據(jù)是否全部轉(zhuǎn)換完
CLR P1.2 ;產(chǎn)生數(shù)據(jù)鎖存信號(hào)
NOP
SETB P1.2
NOP
CLR P1.0 ;產(chǎn)生加熱脈沖
LCALL HEATDLY ;調(diào)用加熱延時(shí)程序
SETB P1.1
LCALL MOTOR_RUN ;步進(jìn)電機(jī)走紙
恢復(fù)現(xiàn)場(chǎng)
RET
評(píng)論