久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3372|回復(fù): 0
收起左側(cè)

基于單片機的脈搏測量儀設(shè)計論文下載

[復(fù)制鏈接]
ID:365036 發(fā)表于 2018-7-4 17:49 | 顯示全部樓層 |閱讀模式
實訓(xùn)報告
題    目:基于單片機的脈搏測量儀設(shè)計   
Design of Pulse Measuring Instrument Based on Single Chip            
學(xué)    院:電氣與動力工程學(xué)院

目錄
摘要
Abstract
引言
第一章 概述
1.1 選題的背景和意義
1.2 脈搏測量儀的發(fā)展與應(yīng)用
第二章 總體方案的論證與設(shè)計
2.1主控模塊的選型和論證
2.2顯示模塊的選型和論證
2.3傳感器的選型和論證
2.4系統(tǒng)整體設(shè)計概述
第三章 系統(tǒng)硬件電路設(shè)計
3.1主控模塊
3.1.1 STC89C52單片機主要特性
3.1.2 STC89C52單片機的中斷系統(tǒng)
3.1.3單片機最小系統(tǒng)設(shè)計
3.2 LCD液晶顯示器簡介
3.2.1液晶原理介紹
3.2.2液晶模塊簡介
3.2.3液晶顯示部分與STC89C52的接口
3.3信號采集電路設(shè)計
3.3.1傳感器簡介
3.3.2濾波電路
3.3.3放大整形電路
第四章 系統(tǒng)軟件設(shè)計
4.1系統(tǒng)軟件總體設(shè)計
4.2程序設(shè)計原理
第五章 系統(tǒng)調(diào)試
5.1軟件調(diào)試
5.2硬件調(diào)試
5.3調(diào)試結(jié)果
5.4誤差分析
結(jié)論
致謝
參考文獻
附錄

基于單片機的脈搏測量儀設(shè)計

摘要脈搏測量儀在我們的日常生活中已經(jīng)得到了非常廣泛的應(yīng)用,通過觀測脈搏信號,可以對人體的健康進行檢查,通常被用于保健中心和醫(yī)院。為了提高脈搏測量儀的簡便性和精確度,本課題設(shè)計了一種基于51單片機的脈搏測量儀。系統(tǒng)以STC89C52單片機為核心,以光電傳感器利用單片機系統(tǒng)內(nèi)部定時器來計算時間,由光電傳感器感應(yīng)產(chǎn)生信號,單片機通過對信號累加得到脈搏跳動次數(shù),時間由定時器定時而得。系統(tǒng)運行中可以通過觀察指示燈閃爍,若均勻閃爍說明測量值準(zhǔn)確。系統(tǒng)停止運行時,能夠顯示總的脈搏次數(shù)和時間。經(jīng)測試,系統(tǒng)工作正常,達到設(shè)計要求。

本設(shè)計利用紅外光電傳感器產(chǎn)生脈沖信號,經(jīng)過放大整形后,輸入單片機內(nèi)進行相應(yīng)的控制,從而測量出一分鐘內(nèi)的脈搏跳動次數(shù),快捷方便。系統(tǒng)可以供用戶測量當(dāng)時的脈搏次數(shù),同時還可以設(shè)定上限次數(shù)和下限次數(shù),當(dāng)測量的范圍超過設(shè)定的范圍則驅(qū)動蜂鳴器報警提醒,除此外用戶還可以設(shè)定每天鬧鐘提醒測量,時間可以自行設(shè)定,結(jié)果最終可以把采集到的脈搏信號顯示在LCD1602上。

引 言

脈搏測量在有脈搏時遮擋光線,無脈搏時透光強,所采用的傳感器是紅外接收二極管和紅外發(fā)射二極管。通過觀測脈搏信號,可以對人體的健康進行檢查,通常被用于保健中心和醫(yī)院。系統(tǒng)可以供用戶測量當(dāng)時的脈搏次數(shù),同時還可以設(shè)定上限次數(shù)和下限次數(shù),當(dāng)測量的范圍超過設(shè)定的范圍則驅(qū)動蜂鳴器報警提醒,除此外用戶還可以設(shè)定每天鬧鐘提醒測量,時間可以自行設(shè)定[1]。

從脈搏波中提取人體的生理病理信息作為臨床診斷和治療的依據(jù),歷來都受到中外醫(yī)學(xué)界的重視。系統(tǒng)以STC89C52單片機為核心,以光電傳感器利用單片機系統(tǒng)內(nèi)部定時器來計算時間,由光電傳感器感應(yīng)產(chǎn)生信號,單片機通過對信號累加得到脈搏跳動次數(shù),時間由定時器定時而得。系統(tǒng)運行中可以通過觀察指示燈閃爍,若均勻閃爍說明測量值準(zhǔn)確。幾乎世界上所有的民族都用過“摸脈”作為診斷疾病的手段。脈搏波所呈現(xiàn)出的形態(tài)(波形)、強度(波幅)、速率(波速)和節(jié)律(周期)等方面的綜合信息,在很大程度上反映出人體心血管系統(tǒng)中許多生理病理的血流特征,但人體的生物信號多屬于強噪聲背景下的低頻的弱信號, 脈搏波信號更是低頻微弱的非電生理信號, 必需經(jīng)過放大和后級濾波以滿足采集的要求。


第一章 概述

1.1 選題的背景和意義

脈搏攜帶有豐富的人體健康狀況的信息,自公元三世紀(jì)我國最早的脈學(xué)專著《脈經(jīng)》問世以來,脈學(xué)理論得到不斷的發(fā)展和提高。在中醫(yī)四診(望、聞、問、切)中,脈診占有非常重要的位置。脈診是我國傳統(tǒng)醫(yī)學(xué)中最具特色的一項診斷方法,其歷史悠久,內(nèi)容豐富,是中醫(yī)“整體觀念”、“辨證論證”的基本精神的體現(xiàn)與應(yīng)用。脈診作為“綠色無創(chuàng)”診斷的手段和方法,得到了中外人士的關(guān)注。但由于中醫(yī)是靠手指獲取脈搏信息,雖然脈診具有簡便、無創(chuàng)、無痛的特點易為患者接受,然而在長期的醫(yī)療實踐中也暴露出一些缺陷。首先,切脈單憑醫(yī)生手指感覺辨別脈象的特征,受到感覺、經(jīng)驗和表述的限制,并且難免存在許多主觀臆斷因素,影響了對脈象判斷的規(guī)范化;其次,這種用手指切脈的技巧很難掌握;再則,感知的脈象無法記錄和保存影響了對脈象機理的研究。脈診的這種定性化和主觀性,大大影響了其精度與可行性,成為中醫(yī)脈診應(yīng)用、發(fā)展和交流中的制約因素。為了將傳統(tǒng)的中醫(yī)藥學(xué)發(fā)揚光大,促進脈診的應(yīng)用和發(fā)展,必須與現(xiàn)代科技相結(jié)合,實現(xiàn)更科學(xué)、客觀的診斷[1]。

醫(yī)院的護士每天都要給住院的病人把脈記錄病人每分鐘脈搏數(shù),方法是用手按在病人腕部的動脈上,根據(jù)脈搏的跳動進行計數(shù)。為了節(jié)省時間,一般不會作1分鐘的測量,通常是測量10秒鐘時間內(nèi)心跳的數(shù),再把結(jié)果乘以6即得到每分鐘的心跳數(shù),即使這樣做還是比較費時,而且精度也不高。為了提高脈搏測量的精確與速度,多種脈搏測量儀被運用到醫(yī)學(xué)上來,從而開辟了一條全新的醫(yī)學(xué)診斷方法。

早在1860年Vierordt 創(chuàng)建了第一臺杠桿式脈搏描記儀,國內(nèi)20世紀(jì)50年代初朱顏將脈搏儀引用到中醫(yī)脈診的客觀化研究方面。此后隨著機械及電子技術(shù)的發(fā)展,國內(nèi)外在研制中醫(yī)脈象儀方面進展很快,尤其是70年代中期,國內(nèi)天津、上海、江西等地相繼成立了跨學(xué)科的脈象研究協(xié)作組,多學(xué)科共同合作促使中醫(yī)脈象研究工作進入了一個新的境界。脈象探頭式樣很多,有單部、三部、單點、多點、剛性接觸式、軟性接觸式、氣壓式、硅杯式、液態(tài)汞、液態(tài)水、子母式等組成,脈象探頭的主要原件有應(yīng)變片、壓電晶體、單晶硅、光敏元件、PVDF壓電薄膜等,其中以單部單點應(yīng)變片式為最廣泛,不過近年來正在向三部多點式方向設(shè)計[2]。

目前脈搏測量儀在多個領(lǐng)域被廣泛應(yīng)用,除了應(yīng)用于醫(yī)學(xué)領(lǐng)域,如無創(chuàng)心血管功能檢測、妊高癥檢測、中醫(yī)脈象、脈率檢測等等,商業(yè)應(yīng)用也不斷拓展,如運動、健身器材中的心率測試都用到了技術(shù)先進的脈搏測量儀。

1.2 脈搏測量儀的發(fā)展與應(yīng)用

隨著科學(xué)技術(shù)的發(fā)展,脈搏測量技術(shù)也越來越先進,對脈搏的測量精度也越來越高,國內(nèi)外先后研制了不同類型的脈搏測量儀,而其中關(guān)鍵是對脈搏傳感器的研究。起初用于體育測量的脈搏測試集中在對接觸式傳感器的研究,利用此類傳感器所研制的指脈、耳脈等測量儀各有其優(yōu)缺點。指脈測量比較方便、簡單,但因為手指上的汗腺較多,指夾常年使用,污染可能會使測量靈敏度下降:耳脈測量比較干凈,傳感器使用環(huán)境污染少,容易維護。但因耳脈較弱,尤其是當(dāng)季節(jié)變化時,所測信號受環(huán)境溫度影響明顯,造成測量結(jié)果不準(zhǔn)確。過去在醫(yī)院臨床監(jiān)護和日常中老年保健中出現(xiàn)的日常監(jiān)護儀器,如便攜式電子血壓計,可以完成脈搏的測量,但是這種便攜式電子血壓計利用微型氣泵加壓橡膠氣囊,每次測量都需要一個加壓和減壓的過程,存在體積龐大、加減壓過程會有不適、脈搏檢測的精確度低等缺點。

近年來國內(nèi)外致力于開發(fā)無創(chuàng)非接觸式的傳感器,這類傳感器的重要特征是測量的探測部分不侵入機體,不造成機體創(chuàng)傷,能夠自動消除儀表自身系統(tǒng)的誤差,測量精度高,通常在體外,尤其是在體表間接測量人體的生理和生化參數(shù)。

其中光電式脈搏傳感器是根據(jù)光電容積法制成的脈搏傳感器,通過對手指末端透光度的監(jiān)測,間接檢測出脈搏信號。具有結(jié)構(gòu)簡單、無損傷、精度高、可重復(fù)使用等優(yōu)點。通過光電式脈搏傳感器所研制的脈搏測量儀已經(jīng)應(yīng)用到臨床醫(yī)學(xué)等各個方面并收到了理想效果。

人體心室周期性的收縮和舒張導(dǎo)致主動脈的收縮和舒張,是血流壓力以波的形式從主動脈根部開始沿著整個動脈系統(tǒng)傳播,這種波成為脈搏波。從脈搏波中提取人體的心理病理信息作為臨床診斷和治療的依據(jù),歷來都受到中外醫(yī)學(xué)界的重視。脈搏波所呈現(xiàn)出的形態(tài)(波形)、強度(波幅)、速率(波速)和節(jié)律(周期)等方面的綜合信息,在很大程度上反映出人體心血管系統(tǒng)中許多生理病理的血流特征,因此對脈搏波采集和處理具有很高的醫(yī)學(xué)價值和應(yīng)用前景。但人體的生物信號多屬于強噪聲背景下的低頻的弱信號, 脈搏波信號更是低頻微弱的非電生理信號,因此必需經(jīng)過放大和后級濾波以滿足采集的要求。


第二章 總體方案的論證與設(shè)計

2.1主控模塊的選型和論證

方案一:

采用MSP430系列單片機,該單片機是TI公司1996年開始推向市場的一種16位超低功耗的混合信號處理器。其內(nèi)部集成了很多模擬電路、數(shù)字電路和微處理器,提供強大的功能。不過該芯片昂貴不適合一般的設(shè)計開發(fā)[3]。

方案二

采用51系列的單片機,該單片機是一個高可靠性,超低價,無法解密,高性能的8位單片機,32個IO口,且STC系列的單片機可以在線編程、調(diào)試,方便地實現(xiàn)程序的下載與整機的調(diào)試。

因此選用方案二中的51系列單片機作為主控芯片。

2.2顯示模塊的選型和論證

方案一:

采用點陣式數(shù)碼管顯示,點陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較合適,如采用在顯示數(shù)字顯得太浪費,且價格也相對較高,所以不用此種作為顯示。

方案二:

采用LED數(shù)碼管動態(tài)掃描,LED數(shù)碼管價格雖適中,對于顯示數(shù)字也最合適,而且采用動態(tài)掃描法與單片機連接時,占用單片機口線少。但是由于數(shù)碼管動態(tài)掃描需要借助74LS164移位寄存器進行移位,該芯片在電路調(diào)試時往往有很多障礙,所以不采用LED數(shù)碼管作為顯示。

方案三:

采用LCD液晶顯示屏,液晶顯示屏的顯示功能強大,可顯示大量文字,圖形,顯示多樣,清晰可見,對于本設(shè)計而言一個LCD1602的液晶屏即可,價格也還能接受,需要的借口線較多,但會給調(diào)試帶來諸多方便。

所以本設(shè)計中方案三中的LCD1602液顯示屏作為顯示模塊。

2.3傳感器的選型和論證

方案一:

采用壓電傳感器用來提取人的脈搏信號,壓電傳感器是利用某些電介質(zhì)受力后產(chǎn)生的壓電效應(yīng)制成的傳感器。所謂壓電效應(yīng)是指某些電介質(zhì)在受到某一方向的外力作用而發(fā)生形變(包括彎曲和伸縮形變)時,由于內(nèi)部電荷的極化現(xiàn)象,會在其表面產(chǎn)生電荷的現(xiàn)象。通過此現(xiàn)象可以提取出人的脈搏信號。

方案二:

采用光電傳感器提取人體脈搏信號,授予手指組織可以分成皮膚、肌肉、骨骼等非血液組織和血液組織,其中非血液組織的光吸收量是恒定的,而在血液中,靜脈血的搏動相對動脈血是十分微弱的,可以忽略,因此可以認(rèn)為光透過手指后的變化僅由動脈血的充盈而引起,那么在恒定波長的光源的照射下,通過檢測透過手指的光強將可以間接測量到人體的脈搏信號[4]。

由于光電傳感器較壓電傳感器容易在一般的地方可以買得到,因此這里選用光電傳感器來提取人體脈搏信號。

2.5系統(tǒng)整體設(shè)計概述


系統(tǒng)總體設(shè)計由STC89C52、按鍵、LCD1602、光電傳感器、時鐘模塊、運放等構(gòu)成,如圖2.1所示,系統(tǒng)設(shè)有四個按鍵,可以設(shè)置上下限脈搏數(shù),當(dāng)超過范圍的時候單片機會驅(qū)動蜂鳴器發(fā)響,脈搏測量的時候需要人把手輕輕的按在光電傳感器上面,由于人脈搏跳動的時候,血液的透光性不一樣會導(dǎo)致接收器那邊接收的信號強弱不一樣,間接的把人脈搏信號傳回,通過運放對其進行放大、整形后連接到單片機的IO口,單片機利用外部中斷對其進行計數(shù),最終換算成人一分鐘脈搏的跳動次數(shù),最終顯示在液晶屏上。


第三章 系統(tǒng)硬件電路設(shè)計

3.1主控模塊

主控模塊模塊在整個系統(tǒng)中起著統(tǒng)籌的作用,需要檢測鍵盤等各種參數(shù),同時驅(qū)動液晶顯示相關(guān)參數(shù),在這里我們選用了51系列單片機中的STC89C52單片機作為系統(tǒng)的主控芯片。

51系列單片機最初是由Intel 公司開發(fā)設(shè)計的,但后來Intel 公司把51 核的設(shè)計方案賣給了幾家大的電子設(shè)計生產(chǎn)商,譬如SST、Philip、Atmel 等大公司。因此市面上出現(xiàn)了各式各樣的均以51 為內(nèi)核的單片機[6]。這些各大電子生產(chǎn)商推出的單片機都兼容51 指令、并在51 的基礎(chǔ)上擴展一些功能而內(nèi)部結(jié)構(gòu)是與51一致的。

STC89C52有40個引腳,4個8位并行I/O口,1個全雙工異步串行口,同時內(nèi)含5個中斷源,2個優(yōu)先級,2個16位定時/計數(shù)器。STC89C52的存儲器系統(tǒng)由4K的程序存儲器(掩膜ROM),和128B的數(shù)據(jù)存儲器(RAM)組成。

STC89C52單片機的基本組成框圖見圖3.1所示。
圖3.1 STC89C52單片機結(jié)構(gòu)圖

3.1.3單片機最小系統(tǒng)設(shè)計

圖3.3 單片機最小系統(tǒng)電路圖

              圖3.3為單片機最小系統(tǒng)電路圖,單片機最小系統(tǒng)有單片機、時鐘電路、復(fù)位電路組成,時鐘電路選用了12MHZ的晶振提供時鐘,作用為給單片機提供一個時間基準(zhǔn),其中執(zhí)行一條基本指令需要的時間為一個機器周期,單片機的復(fù)位電路,按下復(fù)位按鍵之后可以使單片機進入剛上電的起始狀態(tài)。圖中10K排阻為P0口的上拉電阻,由于P0口跟其他IO結(jié)構(gòu)不一樣為漏極開路的結(jié)構(gòu),因此要加上拉電阻才能正常使用。

3.2 LCD液晶顯示器簡介

由于本設(shè)計中要求顯示界面顯示一些參數(shù),因此這里選用了LCD1602作為界面顯示,可以把一些相關(guān)的參數(shù)進行顯示。

3.2.1 液晶原理介紹

液晶顯示器(LCD)英文全稱為Liquid Crystal Display,它一種是采用了液晶控制透光度技術(shù)來實現(xiàn)色彩的顯示器。和CRT顯示器相比,LCD的優(yōu)點是很明顯的。由于通過控制是否透光來控制亮和暗,當(dāng)色彩不變時,液晶也保持不變,這樣就無須考慮刷新率的問題。

顯示接口用來顯示系統(tǒng)的狀態(tài),命令或采集的電壓數(shù)據(jù)。本系統(tǒng)顯示部分用的是LCD液晶模塊,采用一個16×2的字符型液晶顯示模塊。

點陣圖形式液晶由 M 行×N 列個顯示單元組成,假設(shè) LCD 顯示屏有64行,每行有 128列,每 8列對應(yīng) 1 個字節(jié)的 8 個位,即每行由 16 字節(jié),共 16×8=128個點組成,屏上 64×16 個顯示單元和顯示 RAM 區(qū) 1024 個字節(jié)相對應(yīng),每一字節(jié)的內(nèi)容和屏上相應(yīng)位置的亮暗對應(yīng)。一個字符由 6×8 或 8×8點陣組成,即要找到和屏上某幾個位置對應(yīng)的顯示 RAM區(qū)的 8 個字節(jié),并且要使每個字節(jié)的不同的位為‘1’,其它的為‘0’,為‘1’的點亮,為‘0’的點暗,這樣一來就組成某個字符。但對于內(nèi)帶字符發(fā)生器的控制器來說,顯示字符就比較簡單了,可讓控制器工作在文本方式,根據(jù)在LCD 上開始顯示的行列號及每行的列數(shù)找出顯示 RAM對應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對應(yīng)的代碼即可。

3.2.2液晶模塊簡介

LCD1602液晶模塊采用HD44780控制器,hd44780具有簡單而功能較強的指令集,可以實現(xiàn)字符移動,閃爍等功能,LM016L與單片機MCU通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個8位寄存器,指令寄存器(IR)和數(shù)據(jù)寄存器(DR)忙標(biāo)志(BF),顯示數(shù)RAM(DDRAM),字符發(fā)生器ROMA(CGOROM)字符發(fā)生器RAM(CGRAM),地址計數(shù)器RAM(AC)。IR用于寄存指令碼,只能寫入不能讀出,DR用于寄存數(shù)據(jù),數(shù)據(jù)由內(nèi)部操作自動寫入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM讀出的數(shù)據(jù),BF為1時,液晶模塊處于內(nèi)部模式,不響應(yīng)外部操作指令和接受數(shù)據(jù),DDTAM用來存儲顯示的字符,能存儲80個字符碼,CGROM由8位字符碼生成5*7點陣字符160中和5*10點陣字符32種.8位字符編碼和字符的對應(yīng)關(guān)系, CGRAM是為用戶編寫特殊字符留用的,它的容量僅64字節(jié),可以自定義8個5*7點陣字符或者4個5*10點陣字符,AC可以存儲DDRAM和CGRAM的地址,如果地址碼隨指令寫入IR,則IR自動把地址碼裝入AC,同時選擇DDRAM或CGRAM,LCD1602液晶模塊的引腳圖如圖3.4所示。

圖3.4 LCD1602引腳圖

液晶寄存器選擇控制如表3.1。

表3.1寄存器選擇控制
RS
R/W
操作說明
0
0
寫入指令寄存器(清除屏等)
0
1
讀busy flag(DB7),以及讀取位址計數(shù)器(DB0~DB6)值
1
0
寫入數(shù)據(jù)寄存器(顯示各字型等)
1
1
從數(shù)據(jù)寄存器讀取數(shù)據(jù)

3.2.3液晶顯示部分與STC89C52的接口

如圖3.5所示。用STC89C52的P0口作為數(shù)據(jù)線,用P1.2、P1.1、P1.0分別作為LCD的EN、R/W、RS。其中EN是下降沿觸發(fā)的片選信號,R/W是讀寫信號,RS是寄存器選擇信號本模塊設(shè)計要點如下:顯示模塊初始化:首先清屏,再設(shè)置接口數(shù)據(jù)位為8位,顯示行數(shù)為1行,字型為5×7點陣,然后設(shè)置為整體顯示,取消光標(biāo)和字體閃爍,最后設(shè)置為正向增量方式且不移位[10]。向LCD的顯示緩沖區(qū)中送字符,程序中采用2個字符數(shù)組,一個顯示字符,另一個顯示電壓數(shù)據(jù),要顯示的字符或數(shù)據(jù)被送到相應(yīng)的數(shù)組中,完成后再統(tǒng)一顯示.首先取一個要顯示的字符或數(shù)據(jù)送到LCD的顯示緩沖區(qū),程序延時2.5ms,判斷是否夠顯示的個數(shù),不夠則地址加一取下一個要顯示的字符或數(shù)據(jù)。

圖3.5 LCD1602與STC89C52的引腳連接圖
3.3信號采集電路設(shè)計

此部分電路的功能是由傳感器將脈搏信號轉(zhuǎn)換為電信號,一般為幾十毫伏,必須加以放大,以達到整形電路所需的電壓,一般為幾伏。放大后的信號波形是不規(guī)則的脈沖信號,因此必須加以濾波整形,整形電路的輸出電壓應(yīng)滿足計數(shù)器的要求。選擇電路:所選放大整形電路框圖如圖3.8所示。

圖3.8 放大整形電路框圖

3.4.1傳感器簡介

傳感器采用了紅外光電轉(zhuǎn)換器,作用是通過紅外光照射人的手指的血脈流動情況,把脈搏跳動轉(zhuǎn)換為電信號,其原理電路如圖3.9所示。

圖3.9 傳感器信號調(diào)節(jié)原理電路            

如圖3.9中,紅外管VD采用ST188。用+5V電源供電,R1取150Ω,R2取33kΩ,當(dāng)人把手指放在發(fā)光二極管和光電二極管之間的時候,光電二極管接收到的信號會隨人脈搏強度的變化而變化[11]。

3.4.2濾波電路

圖3.10 放大濾波電路

圖3.10為脈搏計的放大濾波信號,由于脈搏信號輸出的信號十分微弱,一般在uV級別,除此外輸出的信號一般會伴隨很大的噪聲干擾,因此在這里用LM358搭建起一個放大和濾波電路。

3.4.3放大整形電路

經(jīng)過放大濾波后的脈搏信號仍是不規(guī)則的脈沖信號,且有低頻干擾,仍不滿足計數(shù)器的要求,必須采用整形電路,這里選用了滯回電壓比較器,如圖3.11所示,其目的是為了提高抗干擾能力。集成運放采用了LM358,除此外LM358還接上了一個LED用作指示脈搏跳動的狀態(tài)。

              
圖3.11波形整形電路

第四章 系統(tǒng)軟件設(shè)計

4.1系統(tǒng)軟件總體設(shè)計
圖4.1系統(tǒng)流程圖

主程序流程圖如圖4.1所示,單片機上電后先進行初始化,清楚一些參數(shù)的初值,然后等待用戶按下對應(yīng)的按鍵并進入對應(yīng)的功能,當(dāng)用戶按下測量按鍵的時候流程如圖4.1(c)所示,單片機通過定時15s測量人體的脈搏次數(shù)流程如圖4.1(b)所示,然后再換算出對應(yīng)的真實的脈搏次數(shù)再在液晶屏幕上顯示流程如圖4.1(a)所示,當(dāng)用戶按下設(shè)置脈搏范圍設(shè)定按鍵后,單片機根據(jù)用戶按下的按鍵進行增加或減少范圍。

首先先調(diào)用液晶自定義的字庫,設(shè)置好DDRAM地址后在第一行顯示,根據(jù)程序中的數(shù)據(jù)設(shè)置顯示數(shù)據(jù)的首地址并設(shè)置循環(huán)量,在循環(huán)過程中不斷的取字符代碼直到終止,第二行的顯示過程同一行的顯示過程一樣,兩行顯示完畢后便結(jié)束子程序,如圖4.2所示[15]。

圖4.2 LCD1602初始化子函數(shù)流程圖
4.2程序設(shè)計原理            

軟件任務(wù)分析和硬件電路設(shè)計結(jié)合進行,哪些功能由硬件完成,哪些任務(wù)由軟件完成,在硬件電路設(shè)計基本定型后,也就基本上決定下來了。

軟件任務(wù)分析環(huán)節(jié)是為軟件設(shè)計做一個總體規(guī)劃。從軟件的功能來看可分為兩大類:一類是執(zhí)行軟件,它能完成各種實質(zhì)性的功能,如測量,計算,顯示,打印,輸出控制和通信等,另一類是監(jiān)控軟件,它是專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色的軟件。這兩類軟件的設(shè)計方法各有特色,執(zhí)行軟件的設(shè)計偏重算法效率,與硬件關(guān)系密切,千變?nèi)f化。

軟件任務(wù)分析時,應(yīng)將各執(zhí)行模塊一一列出,并為每一個執(zhí)行模塊進行功能定義和接口定義(輸入輸出定義)。在各執(zhí)行模塊進行定義時,將要牽扯到的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型問題也一并規(guī)劃好。

各執(zhí)行模塊規(guī)劃好后,就可以監(jiān)控程序了。首先根據(jù)系統(tǒng)功能和鍵盤設(shè)置選擇一種最適合的監(jiān)控程序結(jié)構(gòu)。相對來講,執(zhí)行模塊任務(wù)明確單純,比較容易編程,而監(jiān)控程序較易出問題。這如同當(dāng)一名操作工人比較容易,而當(dāng)一個廠長就比較難了。

軟件任務(wù)分析的另一個內(nèi)容是如何安排監(jiān)控軟件和各執(zhí)行模塊。整個系統(tǒng)軟件可分為后臺程序(背景程序)和前臺程序。后臺程序指主程序及其調(diào)用的子程序,這類程序?qū)崟r性要求不是太高,延誤幾十ms甚至幾百ms也沒關(guān)系,故通常將監(jiān)控程序(鍵盤解釋程序),顯示程序和打印程序等與操作者打交道的程序放在后臺程序中執(zhí)行;而前臺程序安排一些實時性要求較高的內(nèi)容,如定時系統(tǒng)和外部中斷(如掉電中斷)。也可以將全部程序均安排在前臺,后臺程序為“使系統(tǒng)進入睡眠狀態(tài)”,以利于系統(tǒng)節(jié)電和抗干擾。


第五章 系統(tǒng)調(diào)試

5.1軟件調(diào)試

基于單片機的脈搏計系統(tǒng)是多功能的數(shù)字型設(shè)計,,所以對于它的程序也較為復(fù)雜,所以在編寫程序和調(diào)試時出現(xiàn)了相對較多的問題。最后經(jīng)過多次的模塊子程序的修改,一步一步的完成,最終解決了軟件。在軟件的調(diào)試過程中主要遇到的問題如下:

問題1:燒入程序后,LCD液晶顯示閃動,而且亮度不均勻。

解決:首先對調(diào)用的延時進行逐漸修改,可以解決顯示閃動問題。其次,由于本作品使作動態(tài)掃描方式顯示的數(shù)字,動態(tài)掃描很快,人的肉眼是無法看出,但是調(diào)用的顯示程序時,如果不在反回時屏蔽掉最后的附值,則會出現(xiàn)很亮的現(xiàn)象,所以在顯示的后面加了屏蔽子令,最后解決了此問題。

問題2:當(dāng)用戶按下按鍵的時候,單片機讀取的數(shù)值跟設(shè)定的數(shù)值不對。

解決:重新檢查矩陣鍵盤電路的連接,重新建立一個新的對應(yīng)關(guān)系。

5.2硬件調(diào)試

基于單片機的脈搏計系統(tǒng)的電路較大,對于焊接方面更是不可輕視,龐大的電路系統(tǒng)中只要出于一處的錯誤,則會對檢測造成很大的不便,而且電路的交線較多,對于各種鋒利的引腳要注意處理,否則會刺破帶有包皮的導(dǎo)線,則會對電路造成短路現(xiàn)象[14]。

在本脈搏計的設(shè)計調(diào)試中遇到了很多的問題。回想這些問題只要認(rèn)真多思考都是可以避免的,以下為主要的問題:

問題1:最開始的時候以為單片機IO口直接可以驅(qū)動蜂鳴器發(fā)聲,后來調(diào)試的時候久久不能出聲音(見附錄C)。

解決:經(jīng)過查找相關(guān)資料,知道揚聲器需要三極管來驅(qū)動,后來把三極管放大器加上系統(tǒng)便可以正常工作。

問題2:開始的時候由于沒想到脈搏信號十分微弱大概在uV級別,因此沒有放大足夠的倍數(shù),單片機最后沒有檢測到脈搏的信號(見附錄C)。

解決:經(jīng)過查找相關(guān)資料,確定脈搏信號的幅值范圍后,增加放大器的放大倍數(shù)就解決問題。

5.3調(diào)試結(jié)果

1.放大倍數(shù)的增加

   傳感器的輸出端經(jīng)示波器觀察有幅度很小的正弦波,但經(jīng)整形輸出后檢測到的脈沖還是很弱,在確定電路沒有問題的情況下,加強信號的放大倍數(shù),調(diào)整電阻R23和R27的阻值。

2.時鐘的調(diào)試

根據(jù)晶體振蕩頻率計算出內(nèi)部定時器的基本參數(shù),通過運行一段時間可通過秒表來校正后,看時間誤差的量,以這個量為依據(jù)改變程序中的內(nèi)部定時器基本參數(shù),就可使時鐘調(diào)準(zhǔn)確。

3.開機后無顯示

首先檢查交流電源部分,有無交流,若無則可能保險管或變壓器燒壞,如有繼續(xù)查直流有無,如無則電源已燒壞,可更換解決。

4.顯示正常但經(jīng)適當(dāng)運動后測量,脈搏次數(shù)沒有增加

可能是前置放大級有問題,可采用更換的辦法判斷并排除。

5.進人測量狀態(tài), 但測量值不穩(wěn)定

主要是光電傳感器受到電磁波等干擾,其次是損壞或有虛焊。

6.開機后顯示不正常或按鍵失靈

可查手指擺放的位置或按鍵電路,若無故障則是硬件損壞。

經(jīng)過一系列的問題查找后系統(tǒng)最終能正常工作,并完成所有的功能。

5.4誤差分析
表5.1誤差分析表
實際的脈搏次數(shù)
測量得出脈搏次數(shù)1
測量得出脈搏次數(shù)2
測量得出脈搏次數(shù)3
測量得出脈搏次數(shù)4
測量得出脈搏次數(shù)5
65
64
64
63
65
63
72
70
71
69
69
70
76
76
75
75
74
73
81
80
80
79
81
80
85
83
83
85
82
84

注:實際的脈搏次數(shù)以聽診器測出的脈搏次數(shù)為參考值。

表3.1列出了測量值,但存在誤差,由于傳感器和其他器件本身并非理想線性,實測數(shù)據(jù)進行了線性補償。

由均方差公式得:

=0.59

誤差分析:經(jīng)校準(zhǔn),非線性補償后,誤差以基本達到要求。


結(jié)  論

通過這次畢業(yè)設(shè)計,我學(xué)到了不少課本上沒有的知識,也鍛煉了自己的動手能力,將以前學(xué)過的零散的知識串到一起。經(jīng)過我長時間的設(shè)計及調(diào)試,本系統(tǒng)基本能實現(xiàn)基于單片機的脈搏計的所有功能。不足之處有:1.硬件的穩(wěn)定性有待進一步提高2.系統(tǒng)人性化還不足。

我的綜合設(shè)計主要涉及硬件和軟件兩方面的內(nèi)容,通過這些我的硬件和軟件開發(fā)能力都獲得了提高。首先硬件方面,基本了解了電子產(chǎn)品的開發(fā)流程和所要做的工作。基本掌握了Protel99SE原理圖的方法,并設(shè)計了一個單片機最小系統(tǒng)。通過開發(fā)板的設(shè)計和硬件搭建的過程,使我對51系單片機的接口有了更深層次的理解,熟悉了一些單片機常用的外圍電路引腳和連接方法,如LCD液晶,鍵盤等。并且我學(xué)會了分析問題解決問題的能力,加深了對所學(xué)理論知識的理解和運用。我的動手能力得到了很大的提高,創(chuàng)新意識得到了鍛煉。


致  謝

在這次課程設(shè)計的過程中,我的指導(dǎo)老師11111老師給予了我很大的幫助,提供了相關(guān)的資料,對我的課程設(shè)計作品給予了指導(dǎo)和支持。使我順利圓滿的完成了此次課稱設(shè)計設(shè)計。在此,向1111老師表示衷心的感謝!同時,也要感謝學(xué)院提供制板等設(shè)施,使我的設(shè)計得以順利完成。

古人云:預(yù)則立,不預(yù)則廢。祖先曾經(jīng)教導(dǎo)我們:一年之計在于春,一日之計在于晨。作為即將走向社會的我們又何嘗不是如此?一個沒有規(guī)劃的人生,就像一場沒有球門的足球賽,滿場亂踢;一個沒有規(guī)劃的人生,就像一葉在茫茫大海上漫無目標(biāo)的小舟,隨波飄蕩。在我們即將走向社會的時候,我們必須對自己的職業(yè)生涯進行規(guī)劃。羅素曾說:選擇職業(yè)就是選擇你自己的將來。因此我們要針對社會需要,結(jié)合自身的情況及早做好相應(yīng)準(zhǔn)備,為我們走向社會打下堅實的基礎(chǔ)。俗話說:磨刀不誤砍柴功。為適應(yīng)社會需要,促進自我發(fā)展,我們除了學(xué)好本專業(yè)外,還應(yīng)輔修相關(guān)專業(yè)知識,積極參加社會實踐活動,培養(yǎng)工作能力,努力提高綜合素質(zhì),同時努力培養(yǎng)特長,形成自身競爭優(yōu)勢。

最后,再次感謝學(xué)院給了我們機會,以及電子信息與電氣工程學(xué)院的各位老師和許多的朋友、同學(xué)在各個方面給予了我很多的幫助和支持,讓我堅持到了最后,謝謝你們!


單片機源程序如下:


  1. #include <reg52.h>                       //調(diào)用單片機頭文件
  2. #define uchar unsigned char  //無符號字符型 宏定義              變量范圍0~255
  3. #define uint  unsigned int              //無符號整型 宏定義              變量范圍0~65535
  4. #include <intrins.h>

  5. sbit dq   = P1^5;              //18b20 IO口的定義
  6. sbit beep = P1^4;   //蜂鳴器IO口定義

  7. bit flag_300ms ;



  8. uchar code table_num[]="0123456789abcdefg";

  9. sbit rs=P1^0;              //寄存器選擇信號 H:數(shù)據(jù)寄存器                L:指令寄存器
  10. sbit rw=P1^1;              //寄存器選擇信號 H:數(shù)據(jù)寄存器                L:指令寄存器
  11. sbit e =P1^2;              //片選信號   下降沿觸發(fā)

  12. unsigned char i=0,timecount=0,displayOK=0,rate=0,aa=0;
  13. unsigned int time[6]={0};


  14. /***********************1ms延時函數(shù)*****************************/
  15. void delay_1ms(uint q)
  16. {
  17.               uint i,j;
  18.               for(i=0;i<q;i++)
  19.                             for(j=0;j<110;j++);
  20. }


  21. /********************************************************************
  22. * 名稱 : delay_uint()
  23. * 功能 : 小延時。
  24. * 輸入 : 無
  25. * 輸出 : 無
  26. ***********************************************************************/
  27. void delay_uint(uint q)
  28. {
  29.               while(q--);
  30. }

  31. /********************************************************************
  32. * 名稱 : write_com(uchar com)
  33. * 功能 : 1602命令函數(shù)
  34. * 輸入 : 輸入的命令值
  35. * 輸出 : 無
  36. ***********************************************************************/
  37. void write_com(uchar com)
  38. {
  39.               e=0;
  40.               rs=0;
  41.               rw=0;
  42.               P0=com;
  43.               delay_uint(25);
  44.               e=1;
  45.               delay_uint(100);
  46.               e=0;
  47. }

  48. /********************************************************************
  49. * 名稱 : write_data(uchar dat)
  50. * 功能 : 1602寫數(shù)據(jù)函數(shù)
  51. * 輸入 : 需要寫入1602的數(shù)據(jù)
  52. * 輸出 : 無
  53. ***********************************************************************/
  54. void write_data(uchar dat)
  55. {
  56.               e=0;
  57.               rs=1;
  58.               rw=1;
  59.               P0=dat;
  60.               delay_uint(25);
  61.               e=1;
  62.               delay_uint(100);
  63.               e=0;            
  64. }

  65. /********************************************************************
  66. * 名稱 : write_string(uchar hang,uchar add,uchar *p)
  67. * 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符開始顯示"ab cd ef" ,調(diào)用該函數(shù)如下
  68.                             write_string(1,5,"ab cd ef;")
  69. * 輸入 : 行,列,需要輸入1602的數(shù)據(jù)
  70. * 輸出 : 無
  71. ***********************************************************************/
  72. void write_string(uchar hang,uchar add,uchar *p)
  73. {
  74.               if(hang==1)  
  75.                             write_com(0x80+add);
  76.               else
  77.                             write_com(0x80+0x40+add);
  78.               while(1)
  79.               {
  80.                             if(*p == '\0')  break;
  81.                             write_data(*p);
  82.                             p++;
  83.               }            
  84. }

  85. /***********************lcd1602上顯示特定的字符************************/
  86. void write_zifu(uchar hang,uchar add,uchar date)
  87. {
  88.               if(hang==1)  
  89.                             write_com(0x80+add);
  90.               else
  91.                             write_com(0x80+0x40+add);
  92.               write_data(date);            
  93. }

  94. /***********************lcd1602上顯示兩位十進制數(shù)************************/
  95. void write_sfm3(uchar hang,uchar add,uint date)
  96. {
  97.               if(hang==1)  
  98.                             write_com(0x80+add);
  99.               else
  100.                             write_com(0x80+0x40+add);
  101.               write_data(0x30+date/100%10);
  102.               write_data(0x30+date/10%10);
  103.               write_data(0x30+date%10);            
  104. }

  105. /***********************lcd1602初始化設(shè)置************************/
  106. void init_1602()
  107. {
  108.               write_com(0x38);              //
  109.               write_com(0x0c);
  110.               write_com(0x06);
  111.               delay_uint(1000);
  112.               write_string(1,0,"   Heart Rate     ");            
  113.               write_string(2,0,"     000/min       ");
  114. }

  115. /*************定時器0初始化程序***************/
  116. void time_init()               
  117. {
  118.               EA   = 1;                              //開總中斷
  119.               TMOD = 0X01;                //定時器0、定時器1工作方式1
  120.               ET0  = 1;                              //開定時器0中斷
  121.               TR0  = 1;                              //允許定時器0定時
  122. }


  123. /***********外部中斷0初始化程序****************/
  124. void init_int0()                //外部中斷0初始化程序
  125. {
  126.               EX0=1;                                            //允許外部中斷0中斷
  127.               EA=1;                                            //開總中斷
  128.               IT0 = 1;                               //外部中斷0負(fù)跳變中斷
  129. }

  130. /****************主函數(shù)***************/
  131. void main()
  132. {            
  133.               init_1602();                    //1602初始化
  134.               time_init();                    //初始化定時器
  135.               init_int0();                //外部中斷0初始化程序
  136.               while(1)
  137.               {                                         
  138.                             if(displayOK==0)//如果顯示關(guān)
  139.                             {
  140.                                           rate = 0;
  141.                             }
  142.                             else//如果顯示開
  143.                             {
  144.                                           rate=60000/(time[1]/5+time[2]/5+time[3]/5+time[4]/5+time[5]/5);
  145.                             }
  146.                             write_sfm3(2,5,rate);

  147.                             delay_1ms(300);
  148.               }
  149. }

  150. void int0() interrupt 0
  151. {
  152.                             EX0=0;//暫時關(guān)外部中斷
  153.                             if(timecount<8)   //當(dāng)連續(xù)兩次檢測時間間隔小于8*50ms=400ms不處理
  154.                             {
  155.                                                         TR0=1;//開定時器
  156.                             }
  157.                             else
  158.                             {
  159.                                           time[i]=timecount*50+TH0*0.256+TL0/1000;//算出間隔時間
  160.                                           TH0 = 0x3c;
  161.                                           TL0 = 0xb0;     // 50ms              12M
  162.                                           timecount=0;//50ms計數(shù)清零
  163.                                           i++;
  164. ……………………

  165. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
論文.doc (578.5 KB, 下載次數(shù): 45)


回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 天堂综合网| 国产午夜一级 | 成人免费视频观看 | 日本福利片 | 91免费观看在线 | 九九九久久国产免费 | 久久精品青青大伊人av | 超碰人人艹 | 一久久久| 天堂一区 | 在线小视频 | 天天干天天干 | 99久久日韩精品免费热麻豆美女 | 中文字幕视频在线观看 | 欧美精品一区二区三区蜜臀 | 成人 在线 | 欧美专区日韩专区 | 毛片站| 国产欧美一区二区三区日本久久久 | 久久美国| 一区二区三区精品视频 | 国产黄色小视频在线观看 | 国产精品爱久久久久久久 | 亚洲欧美另类在线观看 | 日韩中文字幕网 | 断背山在线观看 | 免费视频中文字幕 | 91久久| 黄网站免费在线观看 | 亚洲精品一级 | 精品欧美一区二区中文字幕视频 | 99精品国自产在线 | 四虎永久免费影院 | 久久9热| 亚洲va在线va天堂va狼色在线 | 天天操天天射综合 | 久久久久九九九女人毛片 | 欧美中文一区 | 91精品国产91久久综合桃花 | 婷婷在线网站 | 久久精品一区二区视频 |