我們研制一種以單片機為中央處理單元的小型便攜式多功能心電信號發生器,功能齊全,操作簡單,便于攜帶,可滿足各種心電圖分析和儀器開發的需要。
1、設計要求
系統的設計目標是在研制24小時動態心電圖記錄和分析系統的基礎上,綜合考慮儀器的通用性和實用性而提出的,要求能夠輸出平均心率4Obeat/m~180beat/m、幅度土5mV連續可調的心電信號,除可以連續輸出給定規律變化的不同心率的竇性心博信號外,應能連續輸出室性、室上性早博信號(包括單個、成對、二聯律、三聯律以及室速、室上速等),連續輸出不同形態及不同位移的ST段(包括ST水平下降,ST上斜,ST下斜)心博信號;作為標準校驗信號,應能產生周期為1秒,脈寬為100ms,幅度為1mV的方波,其幅度的精度和穩定度好于1%。上述信號均以三導聯(模擬CM-V5、CM-V1、CM-V3)同步輸出,并具有良好的人機交互能力。另外,應能選擇穩壓電源和電池兩種供電方式,用戶按液晶屏上的提示信息通過微動式薄膜鍵盤控制信號的產生和調整。
2、硬件實現
系統采用ATMEL公司51系列的產品AT89C55為中央微控制器,為了保證系統的穩定和ECG信號的特殊要求,采用了MAX527作為四通道真12位DAC,對AT89C55提供的數據進行變換,產生伏特量級的模擬量供示波器進行觀察,再經衰減后得到所要求的心電信號。由于要存儲大量心電圖模板,選擇了AT89C55以使用該芯片含有的20KB的E2PROM。為保證電路的簡化和低功耗,系統未采用單片機的擴展模式,AT89C55的用戶I/O端口PO~P3均可作為用戶的I/O口使用。由于有較多外設,P0口可同時作為LCD模塊和MAX527數模轉換器的數據輸入;P1口則部分作數模轉換器輸出通道的控制,部分接受鍵盤的外部中斷(鍵盤3×3,行列共6根數據線);P2口保留一部分,另一部分與的口中的P3.3~P3.5共同提供LCD模塊的狀態控制字;四口的其余部分用于控制MAX527的時序。系統使用了MAX527的全部四個通道,根據需要分別輸出CM-V5、CM-V1、CM-V3三路時間上同步的心電信號和一路模擬地信號,當前時鐘周期內的輸出通道由管腳Al和AO的電平決定MAX527數字量存人的內部通道寄存器。按每心拍250點的采樣率計算,雖然在每個采樣點上以三導聯的順序輸出,但在整個心拍的角度看三路信號完全同步。當MAX527的內部通道時確前一個完整的12位數模轉換過程需要管腳陽上的兩次低電平脈沖(脈沖寬度大于200ns),在**次脈沖期CSMSB低電平有效,輸入數字量的高四位;*后使管腳LDAG低電平有效,相應的通道即有相應的模擬量輸出。
系統采用的回D模塊內藏回T6963C點陣式液晶圖形顯示控制器,能夠與80系列的8位微處理器直接接口,具有128個字符的內部字符發生器CGRAM,并可管理64K的顯示緩沖區,允許MCU隨時訪問顯示緩沖區。該點陣式控制器可以用圖形方式、字符方式及圖形和字符合成方式進行顯示,以先參數再指令代碼的方式執行帶參數的控制器指令。在本系統中,采取MCS51匯編語言的形式實現指令和數據的送人。
3、軟件結構
由于MCU要控制鍵盤、液晶顯示和數模轉換器等較多外設,又要實現的較多的功能,這給軟件的開發帶來了種種的困難。
3.1、心電數據模塊的處理
不同的心電圖序列的數據模塊與運行程序同時要寫入MCU的E2PROM,這就要考慮ROM空間容量的問題。以每秒250次采樣、每個采樣數據2字節計算,三導聯的每分鐘心電數據即要占有9OKB,這樣即使采用20KB E2PROM的MCU,也不可能容納我們所需各種形態的心電數據序列,為此設計了特征心拍代號的映射方法來解決。雖然在每個采樣點上以三導聯的順序輸出,但在整個心拍的角度看三路信號完全同步。當MAX527的內部通道寄存器確定后,一個完整的12位數模轉換過程需要管腳WR上的兩次低電平脈沖(脈沖寬度大于200ns),**次脈沖期間使管腳CLSLB低電平有效,輸入數字量的低八位;在**次脈沖期間,使管腳CSMSB低電平有效,輸入數字量的高四位;*后使管腳LDAG低電平有效,相應的通道即有相應的模擬量輸出。系統采用的回D模塊內藏T6963C點陣式液晶圖形顯示控制器,能夠與80系列的8位微處理器直接接口,具有128個字符的內部字符發生器CGRAM,并可管理64K的顯示緩沖區,允許MCU隨時訪問顯示緩沖區。該點陣式控制器可以用圖形方式、字符方式及圖形和字符合成方式進行顯示,以先參數再指令代碼的方式執行帶參數的控制器指令。在本系統中,采取MCS51匯編語言的形式實現指令和數據的送人。
3.2、陣列式鍵盤反轉法判斷鍵位
反轉法是一種穩定而有效的判斷按下鍵位置的方法。本系統采用了陣列式3×3鍵盤與MCU的P1口連接,其中列線為P1.2,P1.3,P1.4,行線為P1.5,P1.6,P1.7,而三根行線通過二極管接到微控制器的刑10(P3.2)管腳,作為外中斷輸入。首先將行線置高電平,列線置低電平。當有鍵按下時發出中斷申請,同時行線的數據輸入到內存,其中0位即對應按下鍵的列位置。然后再將行線置低電平,列線置高電平,則行線數據中的0位對應按下鍵的行位置。這樣行列位置確定鍵位后,由鍵盤中斷服務程序賦予相應的鍵值,從而轉入相應的中斷服務程序。
系統的鍵盤中斷使用微控制器的外中斷刑10,中斷向量為0003H。鍵盤中斷服務程序中的參數keyBuf用于控制主程序的流程,如信號發生的開始、暫停和退出等;而Amplitude、HeartRate、Module分別控制心電信號的幅度、心率和當前序列,是心電信號的主要參數,與非鍵盤控制的當前序列指針參量共同確定一個心拍的輸出結果。
3.3、采用時鐘中斷延時調節輸出信號心率
由于每兩次數模轉換過程中要做大量的計算工作,因而占去了較長的運行時間。例如。對于心率為40~180的情況下,每次數字量輸出之間的間隔為1.3ms~6ms通過軟件模擬,在12MHz的外部晶振下,上述計算工作的運行時間約為0.8m,顯然通過在主程序中加入循環延時難以對心率**控制。因此,在本系統中,使用了時鐘中斷源1的方式1來控制輸出信號的心率。
程序運行時首先通過定時器1自定義用戶周期(當前心拍長度/采樣率),然后在當前的用戶周期中輸出三導聯心電信號和模擬地信號,當輸出工作完成后,用戶程序進入等待狀態,直到下一個用戶周期開始。在整個用戶周期中,定時器一直進行計數,即TH1、TL1相連成十六位計數器并在每個機器周期后對初始值X加1,當X=0FFFFH+1溢出時產生時鐘中斷。不難看出,兩次中斷問時間Y滿足Y=(10000H-X)×時鐘周期,并且Y×250=當前心率,這樣可由(216-X)×MCU時鐘周期=當前心率/250確定初始值X。每當新用戶周期開始,都應在計數器存入當前心率所得到得X,這樣就能保證**地控制產生心電信號的心率。
4、實際應用
設計完成的多功能心電信號發生器,在我們研制的新型24小時動態心電圖記錄和分析系統上進行了應用性試驗。結果表明該系統可連續24小時輸出心電信號,不同心搏特征明確,幅度、心率、形態易于調整,并準確通過了分析程序的檢測。整個系統高度集成,隨身攜帶,用戶液晶界面顯示清晰,薄膜面板上微動鍵盤操作簡單,并具有電源和電池供電選擇,可滿足各種心電圖分析儀器研制、生產及維護中的應用要求。
多功能心電信號發生器的設計多功能心電信號發生器的設計多功能心電信號發生器的設計