電子血壓計設計【畢業(yè)論文】_第1頁
已閱讀1頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  本科畢業(yè)設計(論文)</p><p><b>  ( 屆)</b></p><p>  論文題目 電子血壓計 </p><p> ?。ㄓ⑽模?electric sphygmomanometer</p><p>  所在學院 電子信息學院

2、 </p><p>  專業(yè)班級 電子信息工程 </p><p>  學生姓名 學號 </p><p>  指導教師 職稱 </p><p>  完成日期 年 月 日</

3、p><p><b>  摘要</b></p><p>  隨著現(xiàn)代社會的發(fā)展,環(huán)境日益惡化,加上工作的壓力,患心血管疾病呈現(xiàn)低齡化趨勢,致使人們越來越注重健康。血壓是最重要的健康指標,人類第一無形殺手為高血壓病,長期危害著人體健康。那如何才能有效地監(jiān)測高血壓,從而有效地預防與治療高血壓,已成為人們對抗高血壓病的首要問題。因此,本課題所要設計的是一臺便捷的測量血壓的裝置。&

4、lt;/p><p>  目前市面上的血壓記錄儀,對大多數(shù)人來說不方便,是因為面對的是一些真?zhèn)坞y辨的數(shù)字,而且對老人來說更加困難。本課題針對老人,設計了一款具有語音播報的血壓計。</p><p>  電子血壓計主要由充氣泵、放氣閥、傳感器和控制器四個部分組成。通過壓力傳感器將物理信號轉換成電信號,此電信號是很微弱的信號,而且干擾信號比較多,再對其進行放大和濾波。經(jīng)放大和濾波后的信號,用模數(shù)轉換器

5、ADC對其進行采樣,再由軟件處理采集數(shù)據(jù),得到收縮壓和舒張壓的測量值。充氣泵和放氣閥控制人體血壓,便于ADC采樣。本設計中,采用一個低通濾波器和一個高通濾波器,確保采樣波形在1~30Hz范圍內(nèi),濾掉無用的其他頻率成分,保證測量的準確度。</p><p>  關鍵詞:STC12C5A60S2單片機;傳感器;液晶顯示;壓力測量</p><p><b>  Abstract</b

6、></p><p>  With the development of modern society, the deterioration of the environment, and the pressure of work, from cardiovascular diseases present Young Trendency, cause people pay more and more atte

7、ntion to health. Blood pressure is the most important health indicators, human first invisible killer for hypertension, long-term damage to human body health. That how to effectively monitoring high blood pressure, and i

8、s effective for the prevention and treatment of high blood pressure, has become the peo</p><p>  In the present market condition blood pressure recorder for most people it is not convenient, because is facin

9、g the authenticity of some failure to digital, and for old people more difficult. This topic for old man, designing a cell with speech of blood.</p><p>  Electronic device mainly by the correct, put sensors

10、and controls the air valve, four parts. Through the pressure sensor will physical signals into electrical signal, the signal is very weak signal, and interfering signal is more, then the amplifier and filter. The amplifi

11、er and filter after the signal with the ADC ADC sampling, again by software processing data collection, get systolic and diastolic blood pressure measurement values. The correct valve control and put human blood pressure

12、, facil</p><p>  Key Words: STC12C5A60S2 microcontroller;Sensors;LCD display;Pressure measurement</p><p><b>  目 錄</b></p><p><b>  1 引言1</b></p><

13、p>  2電子血壓計總體方案和設計框架2</p><p>  2.1 總體方案選取及性能指標2</p><p>  2.1.1 總體方案選取2</p><p>  2.1.2 性能指標2</p><p>  2.2 系統(tǒng)設計框架2</p><p><b>  3硬件設計4</b>

14、</p><p>  3.1 AC/DC變換模塊4</p><p>  3.1.1 電源變壓器4</p><p>  3.1.2 整流電路4</p><p>  3.1.3 濾波電路5</p><p>  3.1.4 穩(wěn)壓電路5</p><p>  3.2 STC12C5A60S2單片

15、機的簡述及最小系統(tǒng)6</p><p>  3.2.1 STC12C5A60S2單片機的簡述6</p><p>  3.2.2 STC12C5A60S2內(nèi)部ADC的應用7</p><p>  3.2.3時鐘電路8</p><p>  3.2.4復位電路8</p><p>  3.3 壓力傳感器9</p&

16、gt;<p>  3.3.1 壓力傳感器簡介9</p><p>  3.3.2 主要技術指標10</p><p>  3.3.3 硬件電路設計11</p><p>  3.4 放大濾波電路的設計11</p><p>  3.4.1 放大電路的設計11</p><p>  3.4.2 高通濾波器設

17、計12</p><p>  3.4.3 200倍放大電路13</p><p>  3.4.4 低通濾波器設計14</p><p>  3.5 充氣泵和放氣閥控制方案14</p><p>  3.5.1 充氣泵的簡介14</p><p>  3.5.2 放氣閥的簡介15</p><p>

18、;  3.6 液晶顯示模塊簡介及電路設計16</p><p>  3.6.1 液晶顯示模塊簡介16</p><p>  3.6.2 液晶顯示模塊DM-1602電路設計19</p><p>  3.6.3按鍵模塊設計20</p><p>  4 系統(tǒng)的軟件設計21</p><p>  4.1 系統(tǒng)主流程21&

19、lt;/p><p>  4.2 各子模塊軟件流程22</p><p>  4.2.1 初始化22</p><p>  4.2.2 按鍵輸入22</p><p>  4.2.3 充氣22</p><p>  4.2.4 信號采集23</p><p>  4.2.5 計算收縮壓和舒張壓24&

20、lt;/p><p>  4.2.6 錯誤處理24</p><p>  4.2.7 顯示輸出25</p><p>  5 調(diào)試與分析26</p><p>  5.1 測量與故障排查儀器26</p><p>  5.2 結果分析26</p><p><b>  6結論28</

21、b></p><p><b>  致謝29</b></p><p><b>  參考文獻30</b></p><p>  附錄1 系統(tǒng)實驗原理31</p><p>  附錄2 程序32</p><p><b>  1 引言</b><

22、;/p><p>  隨著生活水平的提高,疾病也隨之上一等次,時下老年人對自己的血壓越來越關注。高血壓是世界最常見的心血管疾病,也是最大的流行病之一,它的危害非常的巨大。據(jù)有關統(tǒng)計資料顯示,在我國高血壓患病率高且知曉率低,往往很多病人不知道自己的血壓水平。高血壓病不但是長期危害人體健康的一種慢性病,而且它還是腦中風、冠心病、心肌梗死、心力衰竭、腎衰等疾病的禍首,因此被人們稱為“無形殺手”。因此,要治療高血壓病,首先是要

23、測量準確的血壓。測量血壓的儀器稱為血壓計。</p><p>  電子血壓計技術經(jīng)歷了最原始的第一代、第二代(臂式使用)、第三代(腕式使用)的發(fā)展[1]。第一代電子血壓計主要使用了兩個排氣閥,初始加壓(200mmHg左右),加壓速度快,控制粗糙,測量精度差;第二代電子血壓計主要只使用一個排氣閥同時用于定速排氣及測量結束時的快速排氣,智能加壓;第三代電子血壓計主要只使用一個排氣閥(電子快速排氣閥),用于測量結束時的快

24、速排氣,勻速加壓,并在加壓過程中測量血壓。可以說,第三代電子血壓計是近幾年的血壓計行業(yè)的主流發(fā)展趨勢。為了方便人們能自己測量,以免三天兩頭的往醫(yī)院跑。所以本文基于單片機的血壓儀的設計就是通過簡單的元件構成的血壓儀,該電子血壓計具有低成本、低功耗、全自動化的優(yōu)點,有較高的使用價值??梢苑奖愕囊草^為準確的知道自己的血壓狀況。</p><p>  2電子血壓計總體方案和設計框架</p><p>

25、  2.1 總體方案選取及性能指標</p><p>  2.1.1 總體方案選取</p><p>  壓力傳感器[2]US9111和STC12C5A60S2單片機[3]是本設計的核心內(nèi)容。220V交流電經(jīng)變壓器降壓并整流濾波,最后經(jīng)3端穩(wěn)壓芯片得到整個系統(tǒng)的工作電壓[4]。按動“開始”按鍵后氣泵在短時間內(nèi)沖完氣,此時單片機通過一路A/D開始采集袖帶內(nèi)的氣壓,并根據(jù)袖帶內(nèi)氣壓下降的速度來控制

26、放氣閥的排氣速度,袖帶內(nèi)勻速降壓,同時另一路A/D采集[5]經(jīng)過帶通濾波器的脈搏波,并進行軟件處理得出收縮壓和舒張壓,將結果顯示到LCD[6]顯示器上。</p><p>  2.1.2 性能指標</p><p>  (1)抑制50Hz工頻和機電噪聲等低頻信號;</p><p> ?。?)自制系統(tǒng)的電源;</p><p> ?。?)LCD顯示血

27、壓值;</p><p> ?。?)測量準確率達95%以上。</p><p>  2.2 系統(tǒng)設計框架</p><p>  測量血壓的重要信息[7]有兩個,一個是收縮壓:是當心臟收縮將血液達到血管所測得的血壓;另一個是舒張壓:是心臟舒張所測得壓力。當袖帶的壓力等于血壓時,血液開始流通而產(chǎn)生袖帶聲,此時為收縮壓,從這一刻直到袖帶聲消失,為舒張壓。</p>

28、<p>  收縮壓的判斷是采用最大振幅法,在放氣過程中的包絡線上升階段,脈搏波的幅度與最大幅度之比比Ks稍大,由式(1-1)所示。</p><p><b>  (1-1)</b></p><p>  舒張壓的判斷是采用最大振幅法,在包絡線的下降階段,脈搏波幅度與最大振幅之比比Kd稍小。</p><p><b>  (1-2)

29、</b></p><p>  電子血壓計[8]由電源、氣泵、袖帶、壓力傳感器、放氣閥、排氣閥、放大電路、帶通濾波器、微控制器、液晶顯示器構成,如圖2-1所示。220V交流電經(jīng)變壓器降壓并整流濾波,最后經(jīng)3端穩(wěn)壓芯片得到整個系統(tǒng)的工作電壓,通過壓力傳感器將袖帶內(nèi)的壓力信號轉換成電壓信號,單片機控制整個電路的工作,利用單片機中的ADC對采樣信號進行處理,并進行軟件處理得出收縮壓和舒張壓,將結果顯示到LCD

30、顯示器上。</p><p>  按下“開始”按鍵,以最短的時間在袖帶內(nèi)充氣(200mmHg),袖帶內(nèi)部產(chǎn)生壓力,壓力傳感器感應到該壓力值,經(jīng)過放大以及濾波后,由單片機的P1.2腳讀入,再進行A/D轉換,并根據(jù)袖帶內(nèi)的氣壓下降速度來控制放氣閥的速度。另一路AD采集經(jīng)過帶通和運放的脈搏波。最后,經(jīng)軟件處理得到收縮壓和舒張壓,結果顯示在12864液晶顯示器上。</p><p><b>

31、  圖2-1 主框架</b></p><p><b>  3硬件設計</b></p><p>  本系統(tǒng)硬件主要有五大模塊組成:AC/DC變換模塊、微處理器系統(tǒng)、A/D轉換模塊、充電模塊和顯示模塊。</p><p>  3.1 AC/DC變換模塊</p><p>  AC/DC變換電路[9]是能夠將交流電能

32、轉換為直流電能的電路。其由變壓器、橋式整流電路、濾波電路以及穩(wěn)壓器LM317、ICL7660和7805組成,作為運放的電源和芯片的工作電源,以及氣閥、電機供電所需要的電壓。</p><p>  3.1.1 電源變壓器</p><p>  電源變壓器是降壓變壓器,是將一種電壓的交流電能變換為同頻率的另一種電壓的交流電能。它的作用是將220V/50Hz的交流電壓變換為整流濾波電路所需要的交流電

33、壓12V/50Hz。變壓器的變化由變壓器的副邊按確定,變壓器副邊與原邊的功率比為P2/P1=n,式中n是變壓器的效率。圖為穩(wěn)壓電路中的變壓部分。</p><p>  圖3-1 電源變壓器</p><p>  3.1.2 整流電路</p><p>  整流采用橋式整流電路,利用4只二極管對交流電進行整流,使之成為脈沖直流電。</p><p>

34、  在橋式整流電路中,每個二極管都只在半個周期內(nèi)導電,所以流過每個二極管的平均電流等于輸出電流的平均值的一半。</p><p>  圖3-2 橋式電路</p><p>  3.1.3 濾波電路</p><p>  濾波電路可以將整流電路輸出電壓中的交流成分大部分濾除。濾波電路濾除較大的波紋成分,輸出波紋較小的直流電壓12V。</p><p>

35、;  圖3-3 濾波電路</p><p>  3.1.4 穩(wěn)壓電路</p><p>  本電源的穩(wěn)壓部分利用的是LM317和L7805三端穩(wěn)壓塊。經(jīng)LM317型穩(wěn)壓管的12V直流電源,并進行輸入輸出濾波,分別可得到+9V直流電壓和+5V直流電壓,電路圖如圖3-4所示;+9V直流電壓接入小功率極性轉換器ICL7660,得到-9V直流電壓,電路圖如圖3-5所示。</p><

36、;p>  圖3-4 +9V和+5V電源電路</p><p>  圖3-5 -9V電源電路</p><p>  3.2 STC12C5A60S2單片機的簡述及最小系統(tǒng)</p><p>  3.2.1 STC12C5A60S2單片機的簡述</p><p>  STC12C5A60S2單片機具有增強型8051CPU,片內(nèi)通用8位高速中英處

37、理器(CPU),指令代碼與傳統(tǒng)8051完全兼容;具有較寬的工作電壓(5.5V~3.5V),60KB Flash 存儲單元的用戶應用程序空間,并且片上集成1280字節(jié)RAM;2路PWM,內(nèi)部外擴8路10位的高精度A/D轉換模塊,轉換速度可達250K/S(每秒鐘25萬次)。單片機還增設P4 I/O口,滿足用戶對更多I/O的需求。</p><p>  1 STC12C5A60S2單片機的封裝如下圖3-6所示:</

38、p><p>  圖3-6 STC12C5A60S2封裝</p><p>  2 STC12C5A60S2單片機的引腳介紹</p><p> ?。?)VCC:40引腳,供電電壓(3.5~5.5 V)</p><p> ?。?)GND:20引腳,接地0V</p><p>  (3) P0口:P0口既可作為輸入/輸出口,也可作

39、為地址/數(shù)據(jù)復用總線使用。。</p><p> ?。?)P1口:1~8引腳,P1口是具有第二功能的8位I/O口。</p><p>  (5)P2口:21~28引腳,P2口內(nèi)部有上拉電阻,既可作為輸入/輸出口,也可作為高8位地址總線使用(A8~A15)。</p><p>  (6)P3口:10~17引腳,P3口是具有第二功能的I/O口。其可以作為標準I/O口輸出;也可

40、以作為第二功能I/O口使用。</p><p> ?。?)P4口:P4.4~P4.7,29,30,31,9引腳。P4口均可作為標準I/O口,部分具有第二功能。</p><p>  (8)XTAL1: 19引腳是外部時鐘源的輸入端。</p><p> ?。?)XTAL1: 20引腳是外部時鐘源的輸入端。</p><p>  3.2.2 STC12

41、C5A60S2內(nèi)部ADC的應用</p><p>  逐次比較型ADC由一個比較器和D/A轉換器構成,從最高位開始,順序地對每一輸入電壓與內(nèi)置D/A轉換器輸出進行比較,經(jīng)過多次比較,使轉換所得的數(shù)字量逐次逼近輸入模擬量對應值。</p><p>  當單片機內(nèi)部ADC工作時,以其電源電壓為基準電壓,而電源電壓不穩(wěn)定,所以需要通過一路A/D采集穩(wěn)定壓值,然后計算出即時的基準電壓(電源電壓)。從而

42、計算得到精確的AD采樣數(shù)據(jù)。所以在設計中采用LM117產(chǎn)生穩(wěn)定的電壓,然后接入P1.7(ADC8)通道,計算出即時的基準電壓,而通過P1.1(ADC1)通道采集數(shù)據(jù)以即時的電源電壓為基準電壓,計算出精確的采樣值。</p><p><b>  3.2.3時鐘電路</b></p><p>  本系統(tǒng)采用內(nèi)部時鐘方式。內(nèi)部時鐘方式的時鐘電路如圖3-7所示,在XTAL1和XT

43、AL2引腳上外接定時元件,內(nèi)部振蕩器就產(chǎn)生自激振蕩。晶體振蕩頻率為12MHz,電容值為33PF。 </p><p>  圖3-7 內(nèi)部方式時鐘電路</p><p><b>  3.2.4復位電路</b></p><p>  本系統(tǒng)采用上電自動復位,其通過外部復位電路的電容充電來實現(xiàn)的,如圖3-8所示。這樣,復位電路產(chǎn)生復位信號,使單片機從固定

44、的起始狀態(tài)開始工作,完成單片機的“啟機”過程。</p><p>  圖3-8 上電自動復位電路</p><p><b>  3.3 壓力傳感器</b></p><p>  3.3.1 壓力傳感器簡介</p><p>  本系統(tǒng)采用US9111-006壓力傳感器,它屬于電阻式壓力傳感器,其廣泛應用于電子血壓計行業(yè)。<

45、;/p><p><b>  主要應用:</b></p><p><b>  1、電子血壓計</b></p><p><b>  2、呼吸機</b></p><p><b>  3、醫(yī)療儀器</b></p><p><b>  

46、4、消費性電子</b></p><p>  圖3-9 US9111壓力傳感器結構圖</p><p>  電阻式壓力傳感器US9111的結構圖如上圖3-9所示。隨著外界壓力值增大,可變電阻R2或R1壓力增大或者減小,利用歐姆定律得到引腳2和5輸出的電壓隨之變化,經(jīng)過差分放大器,可測得引腳2和5的電壓變化值,最后通過計算可得到壓力值。</p><p>&l

47、t;b>  引腳功能:</b></p><p>  表3-1 US9111壓力傳感器引腳功能</p><p>  3.3.2 主要技術指標</p><p>  1.壓力范圍:0~5.8PSIG,15PSIG,30PSI,100PSI,300PSI</p><p><b>  2.工作方式:表壓</b>

48、</p><p>  3.測量介質:無腐蝕、非導電氣體</p><p><b>  4.過載能力:2X</b></p><p>  5.工作電壓:1.5mA或5VDC</p><p>  6.輸出:滿程輸出70±5mV;零位輸出±25mV;非線性±0.3%F.S;重復性±0.05%

49、F.S</p><p>  7.溫度參數(shù):工作溫度范圍-40~125℃;滿量程電壓溫度系數(shù)-0.05%F.S/℃或-0.21%F.S/℃</p><p>  在測量中LM324輸出端與輸入端提供偏置恒流源給壓力傳感器,如圖3-10所示?;芈冯娏饔嬎愎?</p><p><b>  (1-3)</b></p><p> 

50、 3.3.3 硬件電路設計</p><p>  圖3-10 壓力傳感器接口電路</p><p>  3.4 放大濾波電路的設計</p><p>  3.4.1 放大電路的設計</p><p>  在測量中,傳感器將被測物理量轉換成電信號,此信號非常微弱,而且常為含有較大共模部分的差模小信號。所以需要放大電路具有較強的抑制共模信號的能力。又因

51、為傳感器和電路中的器件常會產(chǎn)生噪聲,可以用放大濾波電路放大輸入信號并衰減噪聲,提取出某些特定頻段的信號,這樣可以使模擬輸入信號的信噪比提高和增大所需要的信號。</p><p>  差分放大電路:如下圖3-11所示,經(jīng)過LM324 1,2級隔離,差分放大后輸出的電壓,由式(1-4)所示:</p><p><b> ?。?-4)</b></p><p&

52、gt;  圖3-11 差分放大電路</p><p>  實際上,袖內(nèi)直流壓力信號與交流脈搏波信號疊加從傳感器輸出。首先,高通濾波器將交直流分離;其次,低通濾波器將從市電來的電源模塊產(chǎn)生的50Hz工頻信號和由肌膚摩擦產(chǎn)生的高頻干擾信號濾掉;最后,由高增益的放大電路將微弱信號放大到ADC能識別的電壓范圍。</p><p>  3.4.2 高通濾波器設計</p><p>

53、;  本系統(tǒng)采用0.8Hz二階高通巴特沃斯濾波器,將交直流分離,其傳遞函數(shù),由式(1-5)所示:</p><p>  錯誤!未找到引用源。 (1-5)</p><p>  二階高通濾波器如下圖3-12所示。</p><p>  圖3-12 二階高通濾波電路</p><p>  3.4.3 200倍放大電路<

54、/p><p>  要放大200倍,本系統(tǒng)采用兩級放大。因為脈搏信號是一個低頻率的交流信號,經(jīng)過一次放大后,還達不到所需信號,需再次放大。采用LM324搭成兩級運放,才能放大200倍。</p><p>  兩級運放電路如下圖所示。</p><p>  圖3-13 兩級放大電路</p><p>  3.4.4 低通濾波器設計</p>

55、<p>  本系統(tǒng)設計成38Hz的二階低通巴特沃斯濾波器,將從市電來的電源模塊產(chǎn)生的50Hz工頻信號和由肌膚摩擦產(chǎn)生的高頻干擾信號濾掉。設計時,將運放LM324接成跟隨器,放大倍數(shù)為1倍。由式(1-6)所示,計算可得電路頻率范圍在10Hz以下。低通濾波器傳遞函數(shù)為:</p><p>  錯誤!未找到引用源。 (1-6)</p><p>  二階低

56、通濾波電路如下圖所示。</p><p>  圖3-14 二階低通濾波電路</p><p>  3.5 充氣泵和放氣閥控制方案</p><p>  3.5.1 充氣泵的簡介</p><p>  本設計需要實現(xiàn)降壓同步測量以及要求氣體流通是單方向的,因此采用普通氣泵。它的特點是加壓快,在10秒內(nèi)完成充氣要求。它廣泛用于第一代、第二代電子血壓計。

57、充氣泵是通過使電機工作,閥門被氣管內(nèi)的氣壓關閉,氣體就進入輪胎中。</p><p>  充氣泵電路設計如下圖3-15所示。</p><p>  圖3-15 充氣泵電路</p><p>  3.5.2 放氣閥的簡介</p><p>  本設計選用機械式電磁閥和慢勻速排氣閥共用。這樣,既能滿足勻速排氣,又能滿足快速排氣。機械式電磁閥,通過電流的

58、磁感應原理控制氣閥的開關。其封閉性好,排氣速度快,在側得血壓值后快速放氣。慢勻速排氣閥,排氣速度維持恒定不變,能提高血壓測量的精度。</p><p>  放氣閥電路設計如下圖3-16所示。</p><p>  圖3-16 放氣閥電路</p><p>  3.6 液晶顯示模塊簡介及電路設計</p><p>  3.6.1 液晶顯示模塊簡介&l

59、t;/p><p>  本系統(tǒng)采用LCD1602顯示屏,其微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧、應用方便等優(yōu)點。此字符型液晶模塊是一種用5*7點陣圖形來顯示字符的液晶顯示器。實物圖如下圖3-17所示。</p><p>  圖3-17 DM-1602實物圖</p><p>  1 DM-1602的引腳功能</p><p>  表3-2 DM-1

60、602的引腳功能</p><p>  2 1602液晶模塊內(nèi)部存儲的點陣字符圖形對應的代碼</p><p>  如表3-3所示,點陣字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號和日文假名等等,每個字符都有一個固定的代碼。</p><p>  表3-3 CGRM和CGRAM中字符代碼與字符圖形對應關系</p><p>  3 1602液晶

61、模塊內(nèi)部的11條控制指令,如表3-4所示。</p><p>  表3-4 1602內(nèi)部控制指令</p><p>  3.6.2 液晶顯示模塊DM-1602電路設計</p><p>  如圖3-18所示,1腳VSS接地,2腳VDD接+5V電源,VL為液晶顯示器對比度調(diào)整端,接一個10K的電位器調(diào)整對比度,接正電源時對比度最弱,接地時對比度最高。RS是寄存器選擇,高電

62、平時選擇數(shù)據(jù)寄存器,低電平時選擇指令寄存器。R/W是讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。E端是使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。</p><p>  圖3-18 LCD1602接口電路</p><p>  3.6.3按鍵模塊設計</p><p>  開關連單片機的P0.0口,它是整個系統(tǒng)的開關電源。按下S1,開始測試輸入。&l

63、t;/p><p>  按鍵部分電路設計如下圖3-19所示:</p><p>  圖3-19 控制按鍵接口電路</p><p><b>  4 系統(tǒng)的軟件設計</b></p><p><b>  4.1 系統(tǒng)主流程</b></p><p>  圖4-1所示,主流程分為7個部分:初

64、始化、按鍵輸入、充氣、信號采集、計算收縮壓和舒張壓、錯誤處理和顯示輸出。</p><p>  圖4-1 主程序流程圖</p><p>  4.2 各子模塊軟件流程</p><p><b>  4.2.1 初始化</b></p><p>  在上電后,單片機內(nèi)的變量和I/O口狀態(tài)的設置進行初始化,也就是對全局變量或主函數(shù)

65、變量進行設置初值。A/D初始化,主要選擇通道數(shù)目、數(shù)據(jù)格式、啟動A/D。設置LCD1602的內(nèi)部控制器并清屏。</p><p>  4.2.2 按鍵輸入</p><p>  本設計,使用了兩個按鍵,一個是復位按鍵,不需要單片機進行編程掃描。另一個按鍵是啟動鍵,單片機采用查詢法對其進行掃描,利用延時函數(shù)進行按鍵消抖,在檢測到此按鍵按下時,開始執(zhí)行測量血壓的全部任務。</p>&

66、lt;p>  下圖為按鍵掃描消抖流程圖:</p><p>  圖4-2 按鍵掃描消抖流程圖</p><p><b>  4.2.3 充氣</b></p><p>  按下啟動鍵后,氣泵開始充氣。重啟中不斷檢測ADC通道1的直流信號是否大于3.40V,若大于3.40V,停止充氣。</p><p>  4.2.4 信

67、號采集</p><p>  交流信號、直流信號、以及心跳信號計數(shù)與計時,需要信號采集,采樣流程如下圖4-3、4-4、4-5、4-6所示。</p><p>  1 在氣泵沖完氣后,延時100ms,濾掉因電機關閉引起的電壓波動。之后進行采樣,心跳脈沖經(jīng)傳感器轉化成電信號,經(jīng)放大濾波,再由ADC信道0采樣血壓交流分量測出每個脈沖的峰值,ADC信道1采樣血壓直流分量。并保存下來。</p>

68、;<p>  系統(tǒng)采集ADC信道0的交流信號用中位值平均濾波法,即每次采集都要一次性讀取6次,拋棄最大最小值取平均值。由于手臂抖動會引起干擾,所以采用限幅濾波法,即相鄰峰值之差不大于1V,否則丟掉最近采樣值。</p><p>  系統(tǒng)采用12MHz的晶振,A/D轉換速率設為90個時鐘周期轉換一次。由于心跳脈沖上限為2Hz,心跳脈沖時間為500ms,所以每次AD可采樣66667次數(shù)據(jù),上升沿為3333

69、4次,經(jīng)中位值平均濾波法(N=6),可得到5556個采樣值其中包含峰值。直接讀取AD值,能夠及時得到交流峰值的對應直流值。</p><p>  2 開始測量AD信號時,打開定時器計時,同時采到脈搏峰值,心跳一次并計數(shù),完成測量時按計算公式((60*k)/s)求心率,并送LCD顯示。</p><p>  圖4-3 AD采樣流程圖 圖4-4 濾波程序

70、流程圖</p><p>  圖4-5 交流峰值電壓及直流電壓采集 圖4-6 心率測量流程圖</p><p>  4.2.5 計算收縮壓和舒張壓</p><p>  單次測量結束的標志是ADC信道1測到的血壓直流分量是否小于1V,表示氣壓低于30mmHg。然后對記錄下來的若干組峰峰值和直流平均值進行統(tǒng)計,找到峰峰值最大的值Amax,往前找出峰峰值最

71、接近0.5Amax的一對數(shù)據(jù),其中的直流分量為收縮電壓,再往后找峰峰值最接近0.8Amax的一對數(shù)據(jù),其中直流分量為舒張電壓。然后根據(jù)公式算出收縮壓和舒張壓。測出的收縮壓的值要落在70~180mmHg范圍內(nèi),舒張壓的值落在60~110mmHg范圍內(nèi)。最后將合理的收縮壓和舒張壓的結果輸出至液晶顯示。</p><p>  4.2.6 錯誤處理</p><p>  在測量后,算出的收縮壓和舒張壓

72、不在合理的數(shù)據(jù)范圍內(nèi),則放棄此次測量的數(shù)據(jù),重新充氣并測量。如果連續(xù)出現(xiàn)3次問題,LCD1602顯示輸出錯誤信息。</p><p>  4.2.7 顯示輸出</p><p>  LCD中所要顯示的是心跳信號累計、收縮壓和舒張壓以及異常信號的顯示。</p><p>  LCD的顯示子程序lcd init(),流程圖如下:</p><p>  圖

73、4-7 LCD顯示流程圖</p><p><b>  5 調(diào)試與分析</b></p><p>  5.1 測量與故障排查儀器</p><p>  1.數(shù)字萬用表:檢測硬件電路及故障排查。</p><p>  2.壓力表:檢測袖帶內(nèi)的實際壓力值,再與傳感器的數(shù)據(jù)對比,校驗,來得出準確的數(shù)據(jù)。</p><

74、;p>  3.示波器:通過傳感器的電信號,可直觀地觀察到經(jīng)過運放后的血壓直流分量和交流分量。</p><p><b>  5.2 結果分析</b></p><p>  在調(diào)試中,實驗中只產(chǎn)生出血壓信號及收縮壓,舒張壓的波形,如下圖所示5-1。</p><p>  圖5-1 血壓信號及收縮壓,舒張壓的波形</p><p

75、>  放大濾波后的采樣數(shù)據(jù):</p><p>  表5-1 放大濾波后的采樣數(shù)據(jù)</p><p>  首先在血壓交流分量中找出最大振幅值Amax,再找到幅值為0.5max,對應血壓值的直流分量為收縮壓;找到幅值為0.8max,對應血壓的直流分量為舒張壓。</p><p><b>  6結論</b></p><p>

76、;  本設計是基于STC12C5A60S2的電子血壓計,但未能達到預期的結果。具體所完成的成果如下:</p><p>  硬件設計。利用Altium Designer 6.9軟件,畫原理圖→生成PCB圖→布線→生成PCB板→元器件焊接→測試電路板。</p><p>  本設計中增加了中值濾波、限幅濾波等軟件算法。</p><p><b>  致謝</

77、b></p><p>  在本次設計中,我結合大學四年所學的理論知識和實際應用,總結出了很多技術經(jīng)驗。同時根據(jù)接觸到的電子產(chǎn)品,了解到了一些新技術和產(chǎn)品的發(fā)展趨勢。在設計期間,通過同學和老師的悉心指導,使我在思路上更加明了。在剛開始我使用了89C51單片機,由于其內(nèi)部無A/D轉換器,需要外連A/D轉換器。在同學的引導下,我改用STC12C5A6012C單片機,其內(nèi)部有10位的8路ADC,編程和封裝與89C5

78、1相似。在軟件方面,一路下來碰到不少攔路虎,但在同學和老師的指導下,還是一一的解決了。我了解到要編好一個程序首先要有豐富的程序積累以及多去動手做實驗。</p><p>  同時,我也認識到自己在技術方面的種種不足,以及硬件制作中的缺陷。在以后的日子里,我會注意自己的種種不足。尤其是在走上工作崗位后,我會記住老師和同學的教導,將自己所學的指示貢獻社會。</p><p><b>  

79、參考文獻</b></p><p>  [1] 劉必躍,影響電子血壓計測量準確的因素[J].《計量與測試技術》vol.31,2004.8</p><p>  [2] 包旭鶴,便攜式電子血壓計設計[J].《現(xiàn)代電子技術》2007.30(7)</p><p>  [3] 龔素琴,谷剛,具有通信功能的電子血壓計的設計[J].《電腦開發(fā)與應用》2011.1<

80、/p><p>  [4] 周玉棟,孫懷遠,葛斌,基于MPXV5050GP的便攜式電子血壓計設計,[J]《現(xiàn)代儀器》2011.1</p><p>  [5] 郭岳,熊和金,基于AVR單片機的數(shù)字血壓計設計[J]《計量與測試技術》2010.2</p><p>  [6] 馬勝玉,基于單片機的數(shù)字血壓計設計[J]《機械研究與應用》2010.4</p><p

81、>  [7] 張旭,歐陽斌林,李景輝,崔保東,韓金海,便攜式電子血壓計連續(xù)動態(tài)監(jiān)測的設計[J]《電子科技》2010.5</p><p>  [8] 賈姝娟,顧春祿,張艷杰,基于單片機的數(shù)字血壓計設計[J]《電腦知識與技術》2010.32</p><p>  [9] 屠澄軼,一種基于LPC3250的智能電子血壓計設計[J]《現(xiàn)代電子技術》2010.24</p><p

82、>  附錄1 系統(tǒng)實驗原理</p><p><b>  附錄2 程序</b></p><p><b>  1 液晶顯示</b></p><p>  #include "hardware.h"</p><p>  #include "lcd1602.h"

83、;</p><p>  void LCD_check_busy(void) //檢測LCD狀態(tài),看它是不是還在忙呢</p><p><b>  {</b></p><p><b>  while(1)</b></p><p><b>  {</b></p>&

84、lt;p><b>  LCD_EN=0;</b></p><p><b>  LCD_RS=0;</b></p><p><b>  LCD_RW=1;</b></p><p>  LCD_DATA=0xff;</p><p><b>  LCD_EN=1;&l

85、t;/b></p><p>  if(!LCD_BUSY)break;</p><p><b>  }</b></p><p><b>  LCD_EN=0;</b></p><p><b>  }</b></p><p>  void LCD_c

86、ls(void) //LCD清屏</p><p><b>  {</b></p><p>  LCD_check_busy();</p><p><b>  LCD_RS=0;</b></p><p><b>  LCD_RW=0;</b></p>

87、<p>  LCD_DATA=1;</p><p><b>  LCD_EN=1;</b></p><p><b>  LCD_EN=0;</b></p><p><b>  }</b></p><p>  void LCD_write_instruction(u

88、nsigned char LCD_instruction) //寫指令到LCD</p><p><b>  {</b></p><p>  LCD_check_busy();</p><p><b>  LCD_RS=0;</b></p><p><b>  LCD_RW=0;<

89、/b></p><p>  LCD_DATA=LCD_instruction;</p><p><b>  LCD_EN=1;</b></p><p><b>  LCD_EN=0;</b></p><p><b>  }</b></p><p>

90、  void LCD_write_data(unsigned char LCD_data) //輸出一個字節(jié)數(shù)據(jù)到LCD</p><p><b>  {</b></p><p>  LCD_check_busy();</p><p><b>  LCD_RS=1;</b></p><p>

91、<b>  LCD_RW=0;</b></p><p>  LCD_DATA=LCD_data;</p><p><b>  LCD_EN=1;</b></p><p><b>  LCD_EN=0;</b></p><p><b>  }</b><

92、/p><p>  void LCD_set_position(unsigned char x) //LCD光標定位到x處</p><p><b>  {</b></p><p>  LCD_write_instruction(0x80+x);</p><p><b>  }</b>

93、</p><p><b>  /*</b></p><p>  void LCD_go_home(void) //LCD光標歸位</p><p><b>  {</b></p><p>  LCD_write_instruction(LCD_GO_HO

94、ME);</p><p><b>  }</b></p><p><b>  */</b></p><p>  void LCD_printc(unsigned char lcd_data) //輸出一個字符到LCD</p><p><b>  {</b>&l

95、t;/p><p>  LCD_write_data(lcd_data);</p><p><b>  }</b></p><p>  void LCD_prints(unsigned char *lcd_string) //輸出一個字符串到LCD</p><p><b>  {</b><

96、;/p><p>  unsigned char i=0;</p><p>  while(lcd_string[i]!=0x00)</p><p><b>  {</b></p><p>  LCD_write_data(lcd_string[i]);</p><p><b>  i++;&

97、lt;/b></p><p><b>  } </b></p><p><b>  }</b></p><p>  void LCD_initial(void) //初始化LCD</p><p><b>  {</b><

98、/p><p>  LCD_write_instruction(LCD_AC_AUTO_INCREMENT|LCD_MOVE_DISENABLE);</p><p>  LCD_write_instruction(LCD_DISPLAY_ON|LCD_CURSOR_OFF);</p><p>  LCD_write_instruction(LCD_DISPLAY_DOUB

99、LE_LINE);</p><p>  LCD_cls();</p><p><b>  }</b></p><p><b>  2 按鍵</b></p><p>  #include "hardware.h"</p><p><b>  //按

100、鍵延時</b></p><p>  void delay_mss(unsigned char z)</p><p><b>  {</b></p><p>  unsigned char x,y;</p><p>  for(x=z;x>0;x--)</p><p>  for(

101、y=124;y>0;y--);</p><p><b>  }</b></p><p>  unsigned char Key_Scan(void)</p><p><b>  {</b></p><p>  unsigned char key_value=0;</p><

102、p>  if(key1==0)</p><p><b>  {</b></p><p>  delay_mss(4);</p><p>  if(key1==0)</p><p><b>  {</b></p><p>  while(!key1);</p>

103、<p>  key_value=1;</p><p><b>  }</b></p><p>  }else if(key2==0)</p><p><b>  {</b></p><p>  delay_mss(4);</p><p>  if(key2==0

104、)</p><p><b>  {</b></p><p>  while(!key2);</p><p>  key_value=2;</p><p><b>  }</b></p><p>  }else if(key3==0)</p><p>&

105、lt;b>  {</b></p><p>  delay_mss(4);</p><p>  if(key3==0)</p><p><b>  {</b></p><p>  while(!key3);</p><p>  key_value=3;</p><

106、;p><b>  } </b></p><p>  } else if(key4==0)</p><p><b>  {</b></p><p>  delay_mss(4);</p><p>  if(key4==0)</p><p><b>  {<

107、;/b></p><p>  while(!key4);</p><p>  key_value=4;</p><p><b>  } </b></p><p><b>  }</b></p><p>  return key_value;</p><

108、;p><b>  }</b></p><p><b>  3 AD采樣</b></p><p><b>  //初始化函數(shù)</b></p><p>  void init()</p><p><b>  {</b></p><p&

109、gt;  P1ASF = 0xff; //0000,0010, 將 P1.1 置成模擬口</p><p>  AUXR1 &= ~0x04; //0000,0100, 令 ADRJ=0</p><p>  ADC_CONTR=0xe0; </p><p><b>  }</b></p>

110、<p><b>  //延時子函數(shù)</b></p><p>  //delay_time 表示延時多少毫秒</p><p>  void delay(uchar delay_time) // 延時函數(shù)</p><p><b>  {</b></p><p><b>

111、;  uint n;</b></p><p>  while(delay_time--)</p><p><b>  {</b></p><p><b>  n = 6000;</b></p><p>  while(--n);</p><p><b>

112、  }</b></p><p><b>  }</b></p><p>  //獲得AD結果的函數(shù)</p><p>  //返回值為AD的值 最大為1024</p><p>  uint get_AD_result(uchar channel)</p><p><b>  {

113、</b></p><p>  uchar AD_finished=0; //存儲 A/D 轉換標志</p><p>  uint dwshuju=0,zhjg=0,gwshuju=0;</p><p>  ADC_RES = 0;</p><p>  ADC_RESL = 0;</p><

114、p>  channel &= 0x07; //0000,0111 清0高5位</p><p>  ADC_CONTR = AD_SPEED;</p><p><b>  _nop_();</b></p><p>  ADC_CONTR |= channel; //選擇 A/D 當前

115、通道</p><p><b>  _nop_();</b></p><p>  ADC_CONTR |= 0x80; //啟動 A/D 電源</p><p>  delay(1); //使輸入電壓達到穩(wěn)定</p><p>  ADC_CONTR |=

116、0x08; //0000,1000 令 ADCS = 1, 啟動A/D轉換,</p><p>  AD_finished = 0;</p><p>  while (AD_finished ==0 ) //等待A/D轉換結束</p><p><b>  {</b></p><p>

117、  AD_finished = (ADC_CONTR & 0x10); //0001,0000 測試A/D轉換結束否</p><p><b>  }</b></p><p>  ADC_CONTR &= 0xE7; //1111,0111 清 ADC_FLAG 位, 關閉A/D轉換,</p><p> 

118、 gwshuju=ADC_RES;</p><p>  dwshuju=ADC_RESL;</p><p>  zhjg=gwshuju<<2|dwshuju;</p><p>  return (zhjg); //返回 A/D 高 8 位轉換結果</p><p><b>  }</b&

119、gt;</p><p><b>  //主函數(shù)</b></p><p>  void main(void)</p><p><b>  {</b></p><p><b>  init();</b></p><p>  LcmInit();</p&

120、gt;<p>  Max846_Init();</p><p><b>  menue();</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  /* outvalue = get_AD_res

121、ult(0);</p><p>  outvalue = outvalue*1.0/1024*5.14*1000;</p><p>  ADValue[0]=outvalue/1000+'0';</p><p>  ADValue[1]=outvalue%1000/100+'0';</p><p>  ADVa

122、lue[2]=outvalue%100/10+'0';</p><p>  ADValue[3]=outvalue%10+'0';</p><p>  // PutStr(2,4,ADValue);</p><p>  PutStr(2,4,"3.100");*/</p><p>  //d

123、elayms(500); //延時</p><p>  LED_Green=0;</p><p>  outvalue = get_AD_result(1);</p><p>  outvalue = outvalue*1.0/1024*5.14*1000;</p><p>  ADValue[0]=outvalue/1000+'0&

124、#39;;</p><p>  ADValue[1]='.';</p><p>  ADValue[2]=outvalue%1000/100+'0';</p><p>  ADValue[3]=outvalue%100/10+'0';</p><p>  ADValue[4]=outvalue%

125、10+'0';</p><p>  //PutStr(2,0,ADValue);</p><p>  PutStr(2,0,"4.110");</p><p><b>  }</b></p><p><b>  }</b></p><p>

126、<b>  //開機界面</b></p><p>  void menue(void)</p><p><b>  {</b></p><p>  PutStr(0,0,"/***歡迎使用***/");</p><p>  PutStr(1,0,"/*全自血壓心率計*/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論