一種基于AT89S52的可視電子聽診器的研制
3.1 繪圖編程的算法
系統(tǒng)選用的是128×64點陣式圖形液晶顯示模塊。要繪制心音波形只要根據(jù)A/D轉(zhuǎn)換來的數(shù)據(jù)在液晶顯示器的對應位置上繪點顯示。首先在液晶平面上建立如圖6所示的顯示坐標系。
圖中畫出了液晶顯示器在圖形工作方式下液晶平面的每一處所對應的顯示緩沖區(qū)地址情況,數(shù)據(jù)為十六進制,并建立以左下角為坐標原點的坐標系。這樣坐標(X,Y)的值都為正值,簡化了算法。其中X表示1~128個點,Y表示各個點所對應的幅值。由于A/D采樣的數(shù)值為0~255,而LCD的行取值為0~63,所以把幅值縮小一定的倍數(shù),即Y=D/B,D為A/D采集的數(shù)字量,B為該數(shù)縮小的倍數(shù)。由圖可以看出幅值Y加1,顯示緩沖區(qū)地址K就減少10H,從而得到緩沖區(qū)地址的表達式:K=X/8-10H*Y+0BF0H。而緩沖區(qū)地址字節(jié)中對應X除以8的余數(shù)的位就正好是要繪點的位置。只要利用位操作命令對它置位就可實現(xiàn)繪點。
3.2 波形顯示
把采集的數(shù)據(jù)存放在RAM中,RAM共存了8KB波形數(shù)據(jù)。而液晶顯示器1次只能顯示128個點,因此可以通過改變在RAM中讀數(shù)間隔來控制波形的橫向顯示,即每顯示完1個數(shù)據(jù),RAM地址加N,通過改變N的大小來拉開或回縮信號波形,以便于觀察。
如果相鄰2個點的幅值稍有不同,2個點的距離就會分開,造成顯示不連續(xù),影響視覺效果。因而怎樣使波形顯示連續(xù),是顯示信號波形中一個很重要的問題。本系統(tǒng)中對這一問題的解決方法:在LCD上每顯示完1個點后,判斷它與前1個點的幅值差距,即Y值值差,若大于8,就要在2點之間插入若干點(X值不變,只變Y值),使2點連續(xù)起來,然后再進行下1個點的顯示。利用這種方法,可很好地實現(xiàn)心音波形的顯示。波形顯示程序流程圖如圖7所示。
4 結(jié)束語
本文介紹的可視聽診器能實時顯示心率和心音波形,并能進行波形拉伸、變換和回放,形象直觀、操作方便,適合向臨床教學和醫(yī)療領域推廣應用。
評論