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