版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
目錄
1產(chǎn)品功能分析...........................................................................................................2
2設(shè)計(jì)方案遴選與設(shè)計(jì)...............................................................................................2
2.1單片機(jī)的選擇...............................................................................................2
2.2心率傳感器的選擇.......................................................................................3
2.3數(shù)字溫度傳感器的選擇...............................................................................3
2.4系統(tǒng)框圖設(shè)計(jì)...............................................................................................4
3產(chǎn)品硬件設(shè)計(jì)...........................................................................................................5
3.1STC89C52RC單片機(jī)核心電路設(shè)計(jì)..............................................................5
3.2按鍵電路設(shè)計(jì)...............................................................................................6
3.3LCD1602液晶顯示模塊電路設(shè)計(jì)................................................................6
3.4心率采集電路模塊設(shè)計(jì)...............................................................................7
3.5溫度采集電路模塊設(shè)計(jì)...............................................................................7
3.6蜂鳴器提示電路模塊設(shè)計(jì)............................................................................8
4產(chǎn)品軟件設(shè)計(jì)...........................................................................................................9
4.1主程序流程圖...............................................................................................9
4.2LCD1602液晶顯示程序流程圖..................................................................10
5產(chǎn)品使用說(shuō)明.........................................................................................................11
5.1產(chǎn)品裝配圖.................................................................................................11
5.2產(chǎn)品使用說(shuō)明.............................................................................................12
6參考資料.................................................................................................................13
附錄.............................................................................................................................14
附錄1元器件清單..........................................................................................14
附錄2電路原理圖..........................................................................................15
附錄3PCB設(shè)計(jì)圖...........................................................................................15
附錄4產(chǎn)品實(shí)物圖..........................................................................................16
附錄5主程序代碼..........................................................................................16
1
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
基于51單片機(jī)體溫心率檢測(cè)儀設(shè)計(jì)與制作
1產(chǎn)品功能分析
本設(shè)計(jì)采用單片機(jī)STC89C52RC作為控制核心,實(shí)現(xiàn)體溫測(cè)量和心率監(jiān)測(cè)系
統(tǒng)的基本測(cè)量功能。它還采用防水的DS18B20溫度傳感器測(cè)量體溫,腋下測(cè)量
溫差不超過(guò)5度。心率監(jiān)測(cè)系統(tǒng)的工作原理當(dāng)手指放在紅外二極管和接收三極
管之間時(shí),血管中的血流會(huì)隨著心跳而變化。因?yàn)槭种阜旁诠獾膫鬏斅窂缴希?/p>
血管內(nèi)血飽和度的變化會(huì)引起光強(qiáng)的變化,所以紅外接收三極管的電流也會(huì)隨
著心跳而變化,這就是紅外接收三極管輸出脈沖信號(hào)。信號(hào)經(jīng)過(guò)放大、濾波、
整形后輸出,輸出的脈沖信號(hào)作為單片機(jī)的外部中斷信號(hào)。單片機(jī)電路對(duì)輸入
的脈沖信號(hào)進(jìn)行計(jì)算處理,并將結(jié)果送至數(shù)碼管顯示。
設(shè)計(jì)通過(guò)體溫傳感器和心率脈沖的采集,將獲取的體溫和脈沖數(shù)據(jù)進(jìn)行相
應(yīng)處理,最后對(duì)應(yīng)出相應(yīng)的體溫值和心率值,并傳送給數(shù)碼管進(jìn)行顯示,達(dá)到
查看的目的。
2設(shè)計(jì)方案遴選與設(shè)計(jì)
2.1單片機(jī)的選擇
STC89C52RC單片機(jī)兼容MCS-51系列單片機(jī),具有1000個(gè)可擦除FLASH
MEMORY,方便系統(tǒng)開發(fā)和參數(shù)修改。雖然是8位機(jī),但其處理精度完全滿足系
統(tǒng)設(shè)計(jì)要求。該微控制器的最高頻率可達(dá)24MHz。在12MHz時(shí),其處理速度完
全滿足設(shè)計(jì)要求。STC89C52RC是高性能CMOS8位單片機(jī)。該芯片包含8k字節(jié)
的可重寫程序只讀存儲(chǔ)器(PEROM)和256字節(jié)的隨機(jī)存取數(shù)據(jù)。內(nèi)存(RAM),
該設(shè)備采用ATMEL的高密度、非易失性內(nèi)存技術(shù)制造,兼容MCS-51指令系統(tǒng),
內(nèi)置8位通用中央處理器(CPU)。以及功能強(qiáng)大的閃存器件。與上述方案相比,
考慮到單片機(jī)各部分的資源,本次設(shè)計(jì)選用STC89C52RC。
2
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
2.2心率傳感器的選擇
ST188是一款單光束自反射式的光電傳感器,該傳感器上有兩個(gè)LED,一個(gè)
是紅外發(fā)射LED,一個(gè)是接收紅外信號(hào)的光敏三極管。工作時(shí),紅外發(fā)射LED發(fā)
射出紅外光,光敏三極管平時(shí)是接收不到發(fā)射的紅外光的,只有當(dāng)傳感器前面
一定距離范圍內(nèi),有物體遮擋時(shí),這時(shí)發(fā)射的紅外光會(huì)在物體表面反射,從而
被光敏三極管接收到。而血液量隨心跳發(fā)生變化,不同的血液量反射的紅外線
量不同,這種不同被采集計(jì)算后可得到心率。
ST188一般和電壓比較器配合使用,這樣便可以通過(guò)調(diào)節(jié)另一個(gè)比較輸入端
的電壓,實(shí)現(xiàn)檢測(cè)距離在一定范圍內(nèi)可調(diào)。ST188可以檢測(cè)出一定距離范圍內(nèi)的
物體有無(wú),最近和最遠(yuǎn)都有一定距離限制,過(guò)近的話,物體也是不能將紅外光
發(fā)射到光敏三極管那邊的。根據(jù)上訴方案,本次設(shè)計(jì)選用ST188紅外傳感器。
2.3數(shù)字溫度傳感器的選擇
防水DS18B20探頭數(shù)字溫度傳感的高精度電子行業(yè)對(duì)精度的要求越來(lái)越高,
溫度檢測(cè)也不例外。目前市面上有許多溫度檢測(cè)解決方案,可以看到每一種都
有其優(yōu)缺點(diǎn)。數(shù)字溫度傳感器,線性度相對(duì)較高,而且精度遠(yuǎn)超其他方案。在
數(shù)字溫度檢測(cè)領(lǐng)域,高分辨率和高精度的實(shí)現(xiàn)已經(jīng)不在話下。
數(shù)字溫度傳感器無(wú)需冷端溫度補(bǔ)償或線性化,可以提供模擬和數(shù)字輸出,
且預(yù)先經(jīng)過(guò)校準(zhǔn),就易用性來(lái)說(shuō)相比其他模擬感測(cè)手段無(wú)疑是更便捷的。對(duì)于
模擬溫度傳感器,需要校準(zhǔn)ADC的增益和失調(diào)以實(shí)現(xiàn)所需的系統(tǒng)精度。由于系
統(tǒng)溫度精度在很大程度上取決于ADC基準(zhǔn)誤差,因此數(shù)據(jù)表中的精度是無(wú)法確
保的。數(shù)字傳感器無(wú)需校準(zhǔn)即可獲得數(shù)據(jù)表中保證的精度。雖然說(shuō)溫度范圍有
限是數(shù)字溫度傳感器沒法避免的短處,但在精度和分辨率都不斷攀升的發(fā)展下,
這個(gè)短處也能讓人接受了?!?.1℃,在工業(yè)控制、醫(yī)療健康應(yīng)用里通常都需要
器件達(dá)到這個(gè)高精度。起初,數(shù)字溫度傳感器一般都只能提供中等水平的測(cè)量
精度。但隨著電子技術(shù)的發(fā)展,目前領(lǐng)先的數(shù)字溫度傳感IC廠商已經(jīng)能夠?qū)⑵?/p>
件的精度提升到±0.1℃,比如TI的TMP117,ADI的ADT7422,TE的TSYSO1等
等
3
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
0.1℃的精度,是在一定范圍內(nèi)才能保持的,比如ADR7422在25℃至50℃溫
度范圍內(nèi)才能確保精度為±0.1℃。如果需要運(yùn)用到工業(yè)應(yīng)用中,廠商會(huì)做一些
調(diào)整,會(huì)略微降低精度使其可用溫度范圍擴(kuò)大,一般在工業(yè)應(yīng)用中會(huì)做到±0.2℃
的精度,以便溫度范圍擴(kuò)大到-10℃至85℃。數(shù)字溫度傳感IC的精度很容易受
到影響,采用極其精確的基準(zhǔn)電壓時(shí),裸片上的壓力會(huì)破壞傳感器的精度,還
有PCB熱膨脹、焊接等影響。在焊接之后器件仍能保持0.1℃的精度才稱得上是
高精度。與傳統(tǒng)模擬溫度傳感器相比,數(shù)字溫度傳感器的低成本和直接數(shù)字輸
出是得天獨(dú)厚的優(yōu)勢(shì)。此前相對(duì)較差的絕對(duì)精度也在工藝的升級(jí)下追趕了上來(lái),
讓數(shù)字溫度傳感器直接通過(guò)數(shù)字接口提供了校準(zhǔn)的高精度溫度數(shù)據(jù),這種準(zhǔn)確
的,低成本的測(cè)溫方式滿足了設(shè)計(jì)需求。設(shè)計(jì)也是選用了防水DS18B20探頭數(shù)
字溫度傳感。
2.4系統(tǒng)框圖設(shè)計(jì)
產(chǎn)品系統(tǒng)框圖設(shè)計(jì)如下圖2.1所示:
圖2.1產(chǎn)品系統(tǒng)框圖
4
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
3產(chǎn)品硬件設(shè)計(jì)
由STC89C52單片機(jī)為主控制器組成此系統(tǒng),功能電路包括ST188模塊,溫
度采集模塊,蜂鳴器模塊,LCD1602液晶,LED燈指示模塊,按鍵模塊和電源等
組成。
3.1STC89C52RC單片機(jī)核心電路設(shè)計(jì)
STC89C52RC單片機(jī)是一款基于8051內(nèi)核的高性價(jià)比單片機(jī)。下面是片機(jī)的
核心電路設(shè)計(jì):
1.時(shí)鐘電路:STC89C52RC需要外接晶振或者陶瓷諧振器來(lái)提供系統(tǒng)時(shí)鐘。
一般使用的是12MHz的晶振,可以通過(guò)兩個(gè)22pF的電容連接到晶振上。
2.復(fù)位電路:復(fù)位電路是保證單片機(jī)正常工作的重要電路之一。STC89C52R
C的復(fù)位電路可以使用一個(gè)0.1uF的電容和一個(gè)按鍵組成,按下按鍵可以使單機(jī)
重新啟動(dòng)。
3.電源電路:STC89C52RC的工作電壓為3.3V~5V,一般使用5V的直流電
源。為了保證電源穩(wěn)定,可以使用一個(gè)7805穩(wěn)壓器將輸入電壓穩(wěn)定在5V左右。
4.編程下載電路:STC89C52RC支持ISP編程方式,需要外接編程下載電路。
一般可以使用一個(gè)USB轉(zhuǎn)串口模塊和一個(gè)串口轉(zhuǎn)ISP模塊組成編程下載電路。
STC89C52RC單片機(jī)實(shí)物圖及引腳圖如圖3.1所示:
圖3.1STC89C52RC單片機(jī)實(shí)物圖及引腳圖
STC89C52RC單片機(jī)核心電路設(shè)計(jì)如下圖3.2所示。
5
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖3.2STC89C52RC單片機(jī)核心電路
3.2按鍵電路設(shè)計(jì)
本設(shè)計(jì)中采用了三個(gè)按鍵開關(guān)電路來(lái)實(shí)現(xiàn)作品的功能要求,三個(gè)按鍵的功
能:按鍵A是調(diào)節(jié)報(bào)警上限,按鍵B設(shè)置鍵,按鍵C則是調(diào)節(jié)報(bào)警下限。
按鍵電路的設(shè)計(jì)如下圖3.3所示。
圖3.3按鍵電路
3.3LCD1602液晶顯示模塊電路設(shè)計(jì)
LCD1602液晶又稱1602字符液晶模塊。LCD1602液晶是一種液晶模塊,專
門用于顯示字母、數(shù)字和符號(hào)。LCD1602液晶由多個(gè)5x7點(diǎn)陣字符組成,每個(gè)
點(diǎn)陣字符可顯示字符,包括字母、數(shù)字、符號(hào),共可顯示16x2字符。LCD1602
液晶的每一位之間有一個(gè)點(diǎn)距間隔,每一行之間也有一個(gè)間隔,起到字符空間
和行空間的作用。液晶LCD1602只能顯示字符,包括字母、數(shù)字、符號(hào),不能
顯示圖像。
6
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
LCD1602液晶顯示電路設(shè)計(jì)如下圖3.4所示。
圖3.4LCD1602液晶顯示電路
3.4心率采集電路模塊設(shè)計(jì)
心率傳感器采用紅外對(duì)射管ST188,測(cè)量心率的時(shí)候需要人把手輕輕的按在
光電傳感器上面,由于人脈搏跳動(dòng)的時(shí)候,血液的透光性不一樣會(huì)導(dǎo)致接收器
那邊接收的信號(hào)強(qiáng)弱不一樣,間接的把人脈搏信號(hào)傳回,通過(guò)運(yùn)放對(duì)其進(jìn)行放
大、整形后連接到單片機(jī)的IO口,單片機(jī)利用外部中斷對(duì)其進(jìn)行計(jì)數(shù),最終換
算成人一分鐘脈搏的跳動(dòng)次數(shù),最終顯示在液晶屏上。
心率采集電路設(shè)計(jì)如下圖3.5所示。
圖3.5心率采集電路
3.5溫度采集電路模塊設(shè)計(jì)
防水DS18B20探頭是一種數(shù)字溫度傳感器,應(yīng)用非常廣泛。它輸出的是數(shù)
字信號(hào),同時(shí)具有體積小,硬件資源耗費(fèi)少,抗干擾能力強(qiáng),精度高等特點(diǎn)。
DS18B20溫度傳感器測(cè)溫范圍:DS18B20溫度傳感器的測(cè)溫范圍可達(dá)-55℃~+1
25℃,在-10℃到+85℃范圍內(nèi)誤差為±0.4°。
溫度采集電路設(shè)計(jì)如下圖3.6所示。
7
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖3.6溫度采集電路
3.6蜂鳴器提示電路模塊設(shè)計(jì)
本設(shè)計(jì)中采用了一個(gè)蜂鳴器電路,來(lái)實(shí)現(xiàn)當(dāng)采集數(shù)據(jù)異常時(shí)的提示。蜂鳴
器電路設(shè)計(jì)如下圖3.7所示。
圖3.7蜂鳴器電路
8
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
4產(chǎn)品軟件設(shè)計(jì)
4.1主程序流程圖
圖4.1程序主流程圖
9
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
4.2LCD1602液晶顯示程序流程圖
圖4.2顯示程序流程圖
10
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
5產(chǎn)品使用說(shuō)明
5.1產(chǎn)品裝配圖
產(chǎn)品由STC89C51單片機(jī)組成此系統(tǒng),ST188模塊,溫度采集模塊,蜂鳴器
模塊,調(diào)節(jié)靈敏度模塊,LCD1602液晶,LED燈指示模塊,按鍵模塊和電源組成。
裝配圖如下:
圖5.1產(chǎn)品裝配圖
11
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
5.2產(chǎn)品使用說(shuō)明
1.LCD1602液晶顯示當(dāng)前的心率,單位是心率/分鐘。
2.手指放到紅外對(duì)管中,2秒內(nèi)讀出心率。
3.按鍵可以設(shè)置報(bào)警的上下限心率。使用方法:三個(gè)按鍵:一個(gè)設(shè)置,一
個(gè)加,一個(gè)減。按下設(shè)置的時(shí)候才可以加減。手指放上去盡量別亂動(dòng)。
4.電位健可以調(diào)節(jié)靈敏度。
5.采用防水型DS18B20溫度傳感器測(cè)體溫。
12
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
6參考資料
[1]劉篤仁.《傳感器原理及應(yīng)用技術(shù)》.西安電子科技大學(xué)出版社,2009.4
[2]郭尚平.一種數(shù)字心率計(jì)的研制[J].中國(guó)醫(yī)療器械雜質(zhì),1994
[3]吳木玠.紅外技術(shù)與生物醫(yī)學(xué).中國(guó)醫(yī)療器械信息,20017
[4]汪文、陳林.單片機(jī)原理及應(yīng)用.華中科技大學(xué)出版社,2007
[5]康華光.電子技術(shù)基礎(chǔ)數(shù)字部分.高等教育出版社,2008.
[6]金偉正,單線數(shù)字溫度傳感器的原理及應(yīng)用[J].電子技術(shù)應(yīng)用,2000.
[7]華成英、童詩(shī)白,模擬電子技術(shù)基礎(chǔ)(第四版)[M].北京:高等教育出版社,
2006.
[8]陳凱,液晶顯示溫度.湖南:湖南理工學(xué)院,2009.
13
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
附錄
附錄1元器件清單
心率計(jì)元件清單
usb電源線(電池盒+DC插頭)9*15萬(wàn)用板
40腳IC座STC89C51單片機(jī)
8腳座LM358芯片1602液晶
16p插針16p單排母座
按鍵*4ST188光電傳感器
防水DS18B20探頭2.2k電阻
1k電阻*2100k電阻
30k電阻56k電阻
10k電阻*522k電阻*2
220Ω電阻*24.7k電阻
201藍(lán)白電位器103排阻
9012三極管有源蜂鳴器
1uf電容*210uf電容*2
30pf電容*212m晶振
Led(5MM紅色)撥動(dòng)開關(guān)
DC電源接口自鎖開關(guān)
導(dǎo)線若干焊錫若干
14
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
附錄2電路原理圖
附錄3PCB設(shè)計(jì)圖
15
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
附錄4產(chǎn)品實(shí)物圖
附錄5主程序代碼
#include<reg52.h>
16
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
#include<intrins.h>//包含頭文件
#defineuintunsignedint
#defineucharunsignedchar
#defineulongunsignedlong//宏定義
#defineLCD_DATAP0//定義P0口為L(zhǎng)CD_DATA
sbitLCD_RS=P2^5;
sbitLCD_RW=P2^6;
sbitLCD_E=P2^7;//定義LCD控制引腳
sbitXintiao=P3^2;//脈搏檢測(cè)輸入端定義
sbitspeaker=P2^4;//蜂鳴器引腳定義
sbitDQ=P3^7;
sbitS1=P1^0;
sbitS2=P1^1;
sbitS3=P1^2;
voiddelay5ms(void);//誤差0us
voidLCD_WriteData(ucharLCD_1602_DATA);/********LCD1602數(shù)據(jù)寫入***********/
voidLCD_WriteCom(ucharLCD_1602_COM);/********LCD1602命令寫入
***********/
voidlcd_1602_word(ucharAdress_Com,ucharNum_Adat,uchar*Adress_Data);/*1602字符顯
示函數(shù),變量依次為字符顯示首地址,顯示字符長(zhǎng)度,所顯示的字符*/
voidInitLcd();//液晶初始化函數(shù)
voidTim_Init();
ucharXintiao_Change=0;//
uintXintiao_Jishu;
ucharstop;
ucharView_Data[3];
ucharView_L[3];
ucharView_H[3];
ucharXintiao_H=100;//脈搏上限
ucharXintiao_L=40;//脈搏下限
uintwendu=0;
ucharnum[5];
uintnum_OK=0;
ucharXT=0;
ucharKey_Change;
ucharKey_Value;//按鍵鍵值
ucharView_Con;//設(shè)置的位(0正常工作,1設(shè)置上限,2設(shè)置下限)
ucharView_Change;
17
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
//====================================DS18B20========================
/*****延時(shí)子程序*****/
voidDelay_DS18B20(intnum)
{
while(num--);
}
/*****初始化DS18B20*****/
voidInit_DS18B20(void)
{
unsignedcharx=0;
DQ=1;//DQ復(fù)位
Delay_DS18B20(8);//稍做延時(shí)
DQ=0;//單片機(jī)將DQ拉低
Delay_DS18B20(180);//精確延時(shí),大于480us
DQ=1;//拉高總線
Delay_DS18B20(34);
}
/*****讀一個(gè)字節(jié)*****/
unsignedcharReadOneChar(void)
{
unsignedchari=0;
unsignedchardat=0;
for(i=8;i>0;i--)
{
DQ=0;//給脈沖信號(hào)
dat>>=1;
DQ=1;//給脈沖信號(hào)
if(DQ)
dat&=0x80;
Delay_DS18B20(4);
}
return(dat);
}
/*****寫一個(gè)字節(jié)*****/
voidWriteOneChar(unsignedchardat)
{
unsignedchari=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
Delay_DS18B20(5);
DQ=1;
18
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
dat>>=1;
}
}
/*****讀取溫度*****/
unsignedintReadTemperature(void)
{
unsignedchara=0;
unsignedcharb=0;
unsignedintt=0;
floattt=0;
Init_DS18B20();
WriteOneChar(0xCC);//跳過(guò)讀序號(hào)列號(hào)的操作
WriteOneChar(0x44);//啟動(dòng)溫度轉(zhuǎn)換
Init_DS18B20();
WriteOneChar(0xCC);//跳過(guò)讀序號(hào)列號(hào)的操作
WriteOneChar(0xBE);//讀取溫度寄存器
a=ReadOneChar();//讀低8位
b=ReadOneChar();//讀高8位
t=b;
t<<=8;
t=t&a;
tt=t*0.0625;
t=tt*10+0.5;//放大10倍輸出并四舍五入
return(t);
}
//=======================主函數(shù)======================================
voidmain()//主函數(shù)
{
InitLcd();
Tim_Init();
lcd_1602_word(0x80,16,"HeartRate:");//初始化顯示
TR0=1;
TR1=1;//打開定時(shí)器
while(1)//進(jìn)入循環(huán)
{
if(View_Con==0)
{
if(wendu<850&&wendu>0)
{
lcd_1602_word(0xc0,10,"Temp:");//顯示第二行數(shù)據(jù)
LCD_WriteCom(0x80+0x40+10);
LCD_WriteData(wendu/100+0x30);
19
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
LCD_WriteData(wendu%100/10+0x30);
LCD_WriteData('.');
LCD_WriteData(wendu%100%10+0x30);
LCD_WriteData(0xdf);
LCD_WriteData('C');
}
}
if(Key_Change)//有按鍵按下并已經(jīng)得出鍵值
{
Key_Change=0;//將按鍵使能變量清零,等待下次按鍵按下
View_Change=1;
switch(Key_Value)//判斷鍵值
{
case1://設(shè)置鍵按下
{
View_Con++;//設(shè)置的位加
if(View_Con>=3)//都設(shè)置好后將此變量清零
View_Con=0;
Key_Value=0;
break;//跳出,下同
}
case2://加鍵按下
{
if(View_Con==2)//判斷是設(shè)置上限
{
if(Xintiao_H<150)//上限數(shù)值小于150
Xintiao_H++;//上限+
}
if(View_Con==1)//如果是設(shè)置下限
{
if(Xintiao_L<Xintiao_H-1)//下限值小于上限-1(下限值不能超過(guò)
上限)
Xintiao_L++;//下限值加
}
Key_Value=0;
break;
}
case3://減鍵按下
{
if(View_Con==2)//設(shè)置上限
{
if(Xintiao_H>Xintiao_L+1)//上限數(shù)據(jù)大于下限+1(同樣上限值
不能小于下限)
20
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
Xintiao_H--;//上限數(shù)據(jù)減
}
if(View_Con==1)//設(shè)置下限
{
if(Xintiao_L>30)//下限數(shù)據(jù)大于30時(shí)
Xintiao_L--;//下限數(shù)據(jù)減
}
Key_Value=0;
break;
}
}
}
if(View_Change)//顯示變量
{
View_Change=0;//變量清零
if(stop==0)//心率正常時(shí)
{
if(View_Data[0]==0x30)//最高位為0時(shí)不顯示
View_Data[0]='';
}
else//心率不正常(計(jì)數(shù)超過(guò)5000,也就是兩次信號(hào)時(shí)間
超過(guò)5s)不顯示數(shù)據(jù)
{
View_Data[0]='';
View_Data[1]='';
View_Data[2]='';
}
switch(View_Con)
{
case0://正常顯示
{
lcd_1602_word(0x80,16,"HeartRate:");//顯示一行數(shù)據(jù)
if(num>0&&num<200)
lcd_1602_word(0x8d,3,View_Data);//第1行顯示心率
break;
}
case1://設(shè)置下限時(shí)顯示
{
lcd_1602_word(0x80,16,"HeartRate:");//第一行顯示心率
lcd_1602_word(0x8d,3,View_Data);
View_L[0]=Xintiao_L/100+0x30;//將下限數(shù)據(jù)拆字
View_L[1]=Xintiao_L%100/10+0x30;
21
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
View_L[2]=Xintiao_L%10+0x30;
if(View_L[0]==0x30)//最高位為0時(shí),不顯示
View_L[0]='';
lcd_1602_word(0xC0,16,"WarningL:");//第二行顯示下限數(shù)據(jù)
lcd_1602_word(0xCd,3,View_L);
break;
}
case2://設(shè)置上限時(shí)顯示(同上)
{
lcd_1602_word(0x80,16,"HeartRate:");
lcd_1602_word(0x8d,3,View_Data);
View_H[0]=Xintiao_H/100+0x30;
View_H[1]=Xintiao_H%100/10+0x30;
View_H[2]=Xintiao_H%10+0x30;
if(View_H[0]==0x30)
View_H[0]='';
lcd_1602_word(0xC0,16,"WarningH:");
lcd_1602_word(0xCd,3,View_H);
break;
}
}
}
}
}
voidTime1()interrupt3//定時(shí)器1服務(wù)函數(shù)
{
staticucharKey_Con,Xintiao_Con;
uchari,j;
ucharzancun;
bitflag_break;
TL1=0xd8;//10ms
TH1=0xf0;//重新賦初值
switch(Key_Con)//無(wú)按鍵按下時(shí)此值為0
{
case0://每10ms掃描此處
{
if((P1&0xf7)!=0xf7)//掃描按鍵是否有按下
22
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
{
Key_Con++;//有按下此值加1,值為1
}
break;
}
case1://10ms后二次進(jìn)入中斷后掃描此處(Key_Con為1)
{
if((P1&0xf7)!=0xf7)//第二次進(jìn)入中斷時(shí),按鍵仍然是按下(起到按鍵延時(shí)去抖
的作用)
{
Key_Con++;//變量加1,值為2
switch(P1&0xf7)//判斷是哪個(gè)按鍵按下
{
case0x06:Key_Value=1;break;//判斷好按鍵后將鍵值賦值給變量
Key_Value
case0x05:Key_Value=2;break;
case0x03:Key_Value=3;break;
}
}
else//如果10ms時(shí)沒有檢測(cè)到按鍵按下(按
下時(shí)間過(guò)短)
{
Key_Con=0;//變量清零,重新檢測(cè)按鍵
}
break;
}
case2://20ms后檢測(cè)按鍵
{
if((P1&0xf7)==0xf7)//檢測(cè)按鍵是否還是按下狀態(tài)
{
Key_Change=1;//有按鍵按下使能變量,(此變量為
1時(shí)才會(huì)處理鍵值數(shù)據(jù))
Key_Con=0;//變量清零,等待下次有按鍵按下
}
break;
}
}
switch(Xintiao_Con)//此處與上面按鍵的檢測(cè)類似
{
case0://默認(rèn)Xintiao_Con是為0的
{
if(!Xintiao)//每10ms(上面的定時(shí)器)檢測(cè)一次脈搏是否有信號(hào)
{
23
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
Xintiao_Con++;//如果有信號(hào),變量加一,程序就會(huì)往下走了
}
break;
}
case1:
{
if(!Xintiao)//每過(guò)10ms檢測(cè)一下信號(hào)是否還存在
{
Xintiao_Con++;//存在就加一
}
else
{
Xintiao_Con=0;//如果不存在了,檢測(cè)時(shí)間很短,說(shuō)明檢測(cè)到的不是脈搏
信號(hào),可能是其他干擾,將變量清零,跳出此次檢測(cè)
XT=0;
}
break;
}
case2:
{
if(!Xintiao)
{
Xintiao_Con++;//存在就加一
}
else
{
Xintiao_Con=0;//如果不存在了,檢測(cè)時(shí)間很短,說(shuō)明檢測(cè)到的不是脈搏
信號(hào),可能是其他干擾,將變量清零,跳出此次檢測(cè)
XT=0;
}
break;
}
case3:
{
if(!Xintiao)
{
Xintiao_Con++;//存在就加一
}
else
{
Xintiao_Con=0;//如果不存在了,檢測(cè)時(shí)間很短,說(shuō)明檢測(cè)到的不是脈搏
信號(hào),可能是其他干擾,將變量清零,跳出此次檢測(cè)
XT=0;
24
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
}
break;
}
case4:
{
if(Xintiao)//超過(guò)30ms一直有信號(hào),判定此次是脈搏信號(hào),執(zhí)行以下程序
{
if(Xintiao_Change==1)//心率計(jì)原理為檢測(cè)兩次脈沖間隔時(shí)間計(jì)算心率,
變量Xintiao_Change第一次脈沖時(shí)為0的,所有走下面的else,第二次走這里
{
if(60000/Xintiao_Jishu>200)
{
View_Data[0]='-';
View_Data[1]='-';
View_Data[2]='-';
speaker=1;//不響
}
else
{
wendu=ReadTemperature();
num[XT]=(60000/Xintiao_Jishu);
XT++;
if(XT>=5)
{
XT=0;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(num[j]>num[j+1])
{zancun=num[j];num[j]=num[j+1];num[j+1]=zancun;flag_break=1;}
}
if(flag_break==0)break;
}
num_OK=(num[1]+num[2]+num[3])/3;
View_Data[0]=num_OK/100+30;//計(jì)算心跳并拆字顯示:心跳計(jì)時(shí)
是以1ms為單位,兩次心跳中間計(jì)數(shù)如果是1000次,也就是1000*1ms=1000ms=1s
View_Data[1]=num_OK%100/10+30;//那么計(jì)算出的一分鐘(60s)心
跳數(shù)就是:60*1000/(1000*1ms)=60次其中60是一分鐘60s,1000是一秒有1000ms,
1000是計(jì)數(shù)值,1是一次計(jì)數(shù)對(duì)應(yīng)的時(shí)間是1ms
View_Data[2]=num_OK%10+30;//計(jì)算出的心跳數(shù)/100得到心跳的
百位,%100是取余的,就是除以100的余數(shù),再除以10就得到十位了,以此類推
//0x30的目的是得到對(duì)應(yīng)數(shù)字的液晶顯示碼,數(shù)
25
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
字0對(duì)應(yīng)的液晶顯示碼是0x30,1是0x30+1,以此類推
if((num_OK>=Xintiao_H)||(num_OK<=Xintiao_L))//心率不
在范圍內(nèi)報(bào)警
speaker=0;//蜂鳴器響
else
speaker=1;//不響
}
}
View_Change=1;//計(jì)算出心率后啟動(dòng)顯示
Xintiao_Jishu=0;//心跳計(jì)數(shù)清零
Xintiao_Cha
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 展會(huì)宣傳推廣合同(2篇)
- 小賣鋪?zhàn)赓U合同(2篇)
- 2025年度建筑密封硅酮膠招標(biāo)采購(gòu)合同3篇
- 二零二五年度智慧城市物聯(lián)網(wǎng)設(shè)備采購(gòu)合同2篇
- 二零二五版果園果樹種植技術(shù)指導(dǎo)與承包合同3篇
- 2024版短期貸款合同范例3篇
- 二零二五年度消防工程監(jiān)理合同2篇
- 二零二五年度建筑工程項(xiàng)目招投標(biāo)與合同履約擔(dān)保服務(wù)合同3篇
- 二零二五版股權(quán)代持糾紛調(diào)解與風(fēng)險(xiǎn)防范合同5篇
- 二零二五年度不動(dòng)產(chǎn)權(quán)屬轉(zhuǎn)移擔(dān)保合同3篇
- 薪酬與福利管理實(shí)務(wù)-習(xí)題答案 第五版
- 廢舊物資處置申請(qǐng)表
- GB/T 37234-2018文件鑒定通用規(guī)范
- GB/T 31888-2015中小學(xué)生校服
- 質(zhì)量檢查考核辦法
- 云南省普通初中學(xué)生成長(zhǎng)記錄-基本素質(zhì)發(fā)展初一-初三
- 2023年系統(tǒng)性硬化病診斷及診療指南
- 外科醫(yī)師手術(shù)技能評(píng)分標(biāo)準(zhǔn)
- 《英語(yǔ)教師職業(yè)技能訓(xùn)練簡(jiǎn)明教程》全冊(cè)配套優(yōu)質(zhì)教學(xué)課件
- 采購(gòu)控制程序
- 六年級(jí)上冊(cè)數(shù)學(xué)簡(jiǎn)便計(jì)算題200題專項(xiàng)練習(xí)
評(píng)論
0/150
提交評(píng)論