阮承治,俞 晴,俞志強,許真華
(武夷學院 機電工程學院,福建 武夷山 354300)
目前隨著電子信息與計算機技術的發展,人們對健康的重視程度越來越高,特別是心率的實時監測和步行的步數記錄。傳統的心率檢測方式是通過醫務工作者用聽診器來獲取病人的心率,該設備需要醫務工作者與患者的配合,其缺點是攜帶不方便,實時性不強,已經難以滿足人們對心率監測的要求。目前已廣泛應用的運動手環等電子設備可實時對步數進行記錄,但該設備往往缺乏心率數據的監測,功能相對單調[1-2]。因此,迫切需要設計一款簡易的可測心率與計步的電子裝置。
面對上述問題,本設計中結合可測心率、可計步、可調節電子時鐘等功能,設計并制作一款采用單片機STC89C51為核心的電子設備[3]。該控制器主要有電子時鐘模塊、心率模塊[4]、計步模塊,系統界面采用LCD1602液晶顯示屏可將實時時間、當前心率、當前步數等信息通過按鍵切換,并通過顯示屏實時顯示。通過對本電子裝置的設計,能達到自行檢測心率,查詢時間,查看當前步數的功能。
本系統主要由單片機為核心的控制模塊組成,由USB設備為單片機提供直流電源。本系統的主要作用為檢測心率和計步功能。單片機控制模塊由獨立按鍵,報警器,LCD1602顯示屏,心率,計步,電子時鐘等七個子模塊構成[5]。系統總體設計方案如圖1所示。

圖1 系統總體設計Fig.1 Overall design of the system
系統的設計主要是由單片機主控系統組成。單片機主控系統是由獨立按鍵,報警器,LCD1602顯示屏,電子時鐘模塊、心率檢測模塊、計步模塊等7個部分電路構成。
該最小系統主要是由復位電路、時鐘振蕩電路等構成,并由USB接口提供直流電源支持單片機的正常運行。單片機最小系統設計如圖2所示。

圖2 單片機的最小系統Fig.2 MCU minimum system
根據設計的最小系統,RST引腳接收到兩個機器周期以上的高電平信號,STC89C51單片機實現復位功能。本設計采用的是12MHz晶振,按鈕復位電路。
2.2.1 LCD顯示電路
LCD顯示屏的D0到D7與單片機P0口相連,LCD顯示屏EN口與單片機P3.4口相連,RS與P3.5相連。可以通過變阻器RV1改變LCD顯示屏的顯示對比度,LCD顯示模塊如圖3所示。

圖3 LCD顯示模塊Fig.3 LCD display module
2.2.2 獨立按鍵模塊電路
獨立按鍵模塊如圖4所示,采用獨立鍵盤,鍵盤按下時,相應的I/O口電平由高變低,檢測按鍵是否被按下。4個獨立按鍵與單片機P1.0—P1.3口相連。

圖4 獨立按鍵模塊Fig.4 Independent key module
2.2.3 報警模塊電路
蜂鳴器在準點報時產生報警聲,LED在秒鐘為偶數時或者功能鍵被按下時亮。蜂鳴器與單片機P2.2口相連,LED燈與單片機P2.3口相連,報警模塊電路如圖5所示。

圖5 報警模塊Fig.5 Alarm module
2.2.4 心率傳感器
本設備選購的心率傳感器,它是通過按壓光電式心率傳感器實現血液對綠外光的吸收,將檢測到的光強變化量轉化為電信號,經過接口傳送到達處理器部分。當處理器處理完畢之后,由LCD1602液晶顯示屏顯示出心率值BPM,以達到心率檢測的目的[6-7]。
2.2.5 三軸加速度傳感器
從圖6中可以看到,LSM303芯片與外圍器件通過一條I2C總線實現通信功能,此芯片連接簡單,周邊所需器件少。I2C總線采用一條數據線(SDA)和一條時鐘線(SCL)完成數據的傳輸及外圍器件的擴展。

圖6 加速度傳感器LSM303外圍電路Fig.6 Acceleration sensor LSM303 peripheral circuit
當設備經過上電初始化后系統自動開始運行時鐘模塊與計步模塊,此時當使用者第1次按鍵時,在LCD1602液晶顯示屏上顯示存儲在寄存器內的時間數據;第2次按鍵時,開始檢測心率并在檢測完畢后在顯示屏上顯示心率數;第3次按鍵時,中斷心率程序并且在顯示屏上顯示存儲在寄存器內的步數數據進行顯示步數的功能。主程序流程圖如圖7所示。

圖7 主程序流程圖Fig.7 Main program flow chart
3.2.1 電子時鐘模塊程序設計
主程序進行初始化后便開始運行該模塊。首先定義各項參數以及初始化各相關模塊,調用數據處理程序,然后將數據實時存儲在寄存器中,判斷是否有按鍵按下,若有按鍵按下則調用數據顯示到LCD顯示屏上。計時中斷服務程序完成秒的計時及向分鐘、小時的進位和星期、年、月、日的進位。調時程序用于調整分鐘、小時、星期、日、月、年。主要由主函數組成通過對相關子程序的調用。實現了對時間的設置和修改、LCD顯示數值等主要功能。相關的調整是靠對功能鍵的判斷來實現的。電子時鐘程序流程圖如圖8所示。

圖8 電子時鐘程序流程圖Fig.8 Flow chart of electronic clock program
3.2.2 心率檢測模塊程序設計
該子模塊由主程序激活,在主程序發出信號后,初始化各模塊并開始檢測心率,在采集到數據并且處理完數據后在顯示屏上顯示心率數。若在這過程中主程序發出中斷指令則立即中斷運行該子模塊[8]。心率程序流程圖如圖9所示。

圖9 心率檢測模塊程序流程圖Fig.9 Heart rate detection module program flow chart
3.2.3 計步模塊程序設計
主程序進行初始化后便開始運行該模塊。首先定義各項參數以及初始化各相關模塊,調用數據處理程序,然后將數據實時存儲在寄存器中,判斷是否有按鍵按下,若有按鍵按下則調用數據顯示到LCD顯示屏上[9]。判斷時間是否過了1 d,若是過了1 d則歸零步數,達到每天更新步數總數的功能。計步程序流程圖如圖10所示。

圖10 計步程序流程圖Fig.10 Flow chart of step-counting program
為了驗證電子時鐘的代碼是否描述正確,依據代碼利用Protues8.0做仿真電路圖。仿真電路如圖11所示。仿真結果:可以正確顯示年,月,日,星期,還有時分秒。
在仿真電路中,通過自動模式仿真,可以發現LCD顯示屏可以正常顯示仿真結果。本次仿真實驗結果表明:該電子時鐘模塊的軟件能夠滿足設計需求。

圖11 仿真電路圖Fig.11 Simulated circuit diagram
將各模塊連接于開發板上,每個模塊連接完成后,需要逐一對其模塊功能進行調試,以及對出現的故障進行排除。制作并調試通過后的實物如圖12所示。

圖12 實物圖Fig.12 Physical map
首先對心率模塊進行測試,將心率傳感器貼于手腕處,模擬佩戴手環時測量心率的情況,利用獨立按鍵將設備調至測試心率的模式。測量結果如圖13所示,其中心率為73。經過對照測量,此數據符合系統設計要求。

圖13 心率模塊調試圖Fig.13 Heart rate module debugging diagram
再測試計步模塊,將設備系在測試者手腕上經行走動,模擬佩戴手環時記錄步數的情況。使用獨立按鍵將設備調至LCD顯示屏顯示步數的界面,測量結果如圖14所示。從測試結果看,設備記錄的步數數據符合設計要求。

圖14 計步模塊調試圖Fig.14 Step-counting module debugging diagram
設計利用STC89C51單片機為主控芯片,結合可測心率、可計步、可調節電子時鐘等功能,利用心率傳感器對人體心率進行采集,并使用三軸加速度傳感器對步數進行統計,可實現心率和計步的基本功能。本設計的系統在一個裝置上集成了可測心率、可計步、可調節電子時鐘等功能。測試結果表明該系統的工作原理能基本滿足設計需求,可滿足快速測試健康指數的需求。