基于51單片機(jī)體溫心率檢測(cè)儀設(shè)計(jì)與制作_第1頁(yè)
基于51單片機(jī)體溫心率檢測(cè)儀設(shè)計(jì)與制作_第2頁(yè)
基于51單片機(jī)體溫心率檢測(cè)儀設(shè)計(jì)與制作_第3頁(yè)
基于51單片機(jī)體溫心率檢測(cè)儀設(shè)計(jì)與制作_第4頁(yè)
基于51單片機(jī)體溫心率檢測(cè)儀設(shè)計(jì)與制作_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論