<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 醫療電子 > 設計應用 > 熱敏打印機的心電圖形快速打印方法

熱敏打印機的心電圖形快速打印方法

作者: 時(shí)間:2015-04-08 來(lái)源:網(wǎng)絡(luò ) 收藏

  目前,我國各醫院普遍使用的心電圖機絕大多數是機電式的,即通過(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/272207.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導同步打印、縱向打印(打印效果如圖2)。在每一種打印程序中實(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

  2.2 打印算法

  數字打印機實(shí)質(zhì)上實(shí)現了數據與打印點(diǎn)的對應,也就是說(shuō)8位心電數據數值范圍為0~255,對應于熱敏打印紙上的256點(diǎn),通過(guò)加熱敏單元使紙上某點(diǎn)變黑顯示數據的大小。這就需要將表征實(shí)際心電大小的數據(以下稱(chēng)為原始數據)轉換成能夠指示加熱點(diǎn)位置的數據(以下稱(chēng)為位置數據),通過(guò)位置數據的控制將心電數據對應的點(diǎn)依次打印出來(lái),就可獲得心電圖。但是由于系統模數轉換器獲得的心電數據是離散的,如果僅將它們對應的點(diǎn)打印出來(lái),得到只是一些離散的點(diǎn),要想獲得連續的心電圖形,需要將相鄰的離散點(diǎn)按照一定的算法將它們連接起來(lái),對于縱向打印方式和橫向打印方式,離散點(diǎn)連線(xiàn)算法是不同的。限于篇幅,在下面介紹打印方式的實(shí)現中,僅對橫向12導同步打印和縱向打印進(jìn)行詳細闡述,而對6導聯(lián)打印僅介紹其實(shí)現思想。

  2.2.1 橫向6導聯(lián)打印

  心電圖紙長(cháng)度為216mm,為每一導聯(lián)心電信號分配32mm,對應于打印緩沖區中連續的32字節,打印數據轉換后的位置數據存儲于這32個(gè)字節中。12導聯(lián)的心電數據被分為兩大組,當一組打印完成再打印剩下的6導聯(lián)的數據。具體的實(shí)現過(guò)程可參考橫向12導聯(lián)打印方式。

  2.2.2 橫向12導聯(lián)同步打印

  在6導聯(lián)打印方式實(shí)現過(guò)程中,注意到在大多情況下一個(gè)完事心電波形中僅QRS波主峰較高可以點(diǎn)滿(mǎn)整個(gè)空間外,其他波段幅值都較小占用空間很少,而這些波段可以提供更多的信息,此外將12導聯(lián)分開(kāi)打印,不利于醫生對比同一時(shí)刻不同導聯(lián)的心電波形。而采用12導聯(lián)同步打印,雖然會(huì )出現波形部分重疊,但是在一些心臟疾病診斷中影響不大,且可以得取更直觀(guān)的效果。

  12導聯(lián)同步打印程序實(shí)現的基本思想與6導聯(lián)同步打印相同,不同在于將12導聯(lián)的數據同時(shí)在216mm寬的打印紙上打印出來(lái),不可避免地出現不同導聯(lián)心電圖形重疊的現象,對應的內存單元也會(huì )出現復用的情況。如果簡(jiǎn)單地套用6導聯(lián)打印程序,那么前一導聯(lián)的數據會(huì )被相鄰導聯(lián)數據沖掉,從而使圖形無(wú)法正確顯示。圖3列出了為各個(gè)導聯(lián)分配的熱敏打印紙空間與緩沖內存單元(這里假定緩存地址為0x1DH~0xEDH)。從圖3中可以看出除了I導聯(lián)前16mm空間和V6導聯(lián)的后16mm空間沒(méi)有被復用,打印紙的其它空間都是被兩個(gè)導聯(lián)共用。內部RAM使用情況也與之類(lèi)似。為此在外部RAM開(kāi)辟一個(gè)內部打印緩沖區的影像區(大小為216字節,單元地址的低8位與內存相應單元相同,如內部RAM 0x1DH單元與外部RAM 0xXX1DH相對應),將12導聯(lián)分為兩組:一組(I,III,aVL,V1,V3,V5)仍然存儲于內部存儲器,而另一組(II,aVF,V2,V4,V6)存儲于外部影像區,在12導聯(lián)一線(xiàn)數據轉換完要打印時(shí),將兩部分按照對應單元相與即可。這樣做不但可以解決上述問(wèn)題,而且節省了內部資源、降低程序編寫(xiě)的難度。

  

為各個(gè)導聯(lián)分配的熱敏打印紙空間與緩沖內存單元

 

  如前所述不同導聯(lián)所占的打印空間不同,所以,對于某導聯(lián)心電信號,先要確定其打印區間,然后再確定打印數據在該區間的相對位置。

  假定某導聯(lián)所占打印空間的起始字節為第n個(gè)字節,而要打印的心電數據為m,將m除以8,得商k,余數為1,則此心電數據對應點(diǎn)對數(n-k)字節的第1位。即該心電數據對應的位置數據為第(n-k)字節(該字節的1位置1,其它位清零)。因此,打印此心電數據時(shí),該導聯(lián)所要傳送的32字節打印數據中只有第(n-k)字節的第1位為1,其他都為0。

  與液晶顯示相類(lèi)似,對于一個(gè)導聯(lián)的心電信號,要實(shí)現心電圖打印,必須將盯連兩個(gè)心電數據用線(xiàn)連接。即對于一條心電曲線(xiàn),起始顯示數據點(diǎn)在起始列只顯示1點(diǎn);從第二個(gè)數據點(diǎn)開(kāi)始,要在下一列顯示上一數據點(diǎn)到此次數據點(diǎn)之間的線(xiàn)段。在熱敏打印紙上表現為將兩數據點(diǎn)之間的點(diǎn)都加熱,對應于內存則是將兩點(diǎn)之間的數據都置1。

  對于—導聯(lián)的心電信號,先讀出第一個(gè)心電數據,將其轉換成32字節位置數據直接打印。從第二個(gè)心電數據開(kāi)始,除了要轉換成位置數據外,還要與上一個(gè)數據相比較,用大數對應的位置數據減去小數對應的,然后結果與大數的位置數據相加,結果即為此心電數據應送打的32字節數據,也即完成了與上一心電數據連線(xiàn)的操作。分析發(fā)現連線(xiàn)算法只影響相連兩個(gè)位置數據中非零字節之間的數據,為了簡(jiǎn)化計算,只需對這些字節進(jìn)行減法操作,而不必計算所有的32個(gè)字節。對于加法,也只需將大數對應位置數據中的非零字節進(jìn)行加法,即進(jìn)行單字節加法。

  舉例說(shuō)明,對于導聯(lián)V6心電信號,前一個(gè)數據37H,下一個(gè)數據為55H,導聯(lián)V6分配的打印區間為1DH~3DH,按照位置數據轉換算法,37H的位置數據為第37H字節,該字節內容為80H,其他字節都為00H;55H的位置數據為第33H字節,該字節內容為20H,其他字節為00H。由于37H〈55H,因此應是心電數據55H的位置數據減去33H的位置數據,計算如圖4所示。

  

連線(xiàn)數據的計算

 

  2.3 縱向打印程序

  縱向打印能夠實(shí)現將12導聯(lián)數據無(wú)重疊同步顯示。這樣醫生可以參考比較同一時(shí)刻的各個(gè)波形的變化趨勢,為疾病的診斷提供方便。

  熱敏打印紙寬度為216mm,分辨率為8dot/mm,這樣最多能夠打印1728點(diǎn),將這些點(diǎn)與某一導聯(lián)連續的1728個(gè)心電數據相對應,也就是說(shuō)導聯(lián)順序第n個(gè)數據對應于一線(xiàn)圖形中的第n個(gè)點(diǎn)。與模向打印相比縱向打印仍然要解決將離散的點(diǎn)連接起來(lái)的問(wèn)題;但與橫向順序打印方式,即打印點(diǎn)按時(shí)間順序打印相比,其難點(diǎn)在于需要將不同時(shí)刻同一幅值的多個(gè)點(diǎn)同時(shí)打印出來(lái),即打印點(diǎn)按空間順序打印。

  首先定義一個(gè)內存單元存儲掃描值,使其從當前通道數據最大值變化到0,依次與通道的每一個(gè)數據進(jìn)行比較:相同則對應點(diǎn)被描記;小則不被描記;大則需要將當前心電數據相鄰的兩點(diǎn)與掃描值相比較,只要其中一個(gè)比掃描值大,則對應點(diǎn)被描記,要描記的噗將其內存對應的數據位置1。

  舉例說(shuō)明,如果打印內存緩沖區的首字節為n,大小為216字節,而當前某一導聯(lián)順序第m個(gè)心電數據是v,而此時(shí)的掃描值為w:①v>w,則繼續比較第m+1個(gè)數據;②v=w,則對應點(diǎn)需要被描記;③v

模數轉換器相關(guān)文章:模數轉換器工作原理


熱敏打印機相關(guān)文章:熱敏打印機原理


關(guān)鍵詞: 熱敏打印

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>