單片機(jī)溫度檢測記錄系統(tǒng)_第1頁
單片機(jī)溫度檢測記錄系統(tǒng)_第2頁
單片機(jī)溫度檢測記錄系統(tǒng)_第3頁
單片機(jī)溫度檢測記錄系統(tǒng)_第4頁
單片機(jī)溫度檢測記錄系統(tǒng)_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余21頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、物理與電子信息學(xué)院題目:單片機(jī)溫度檢測記錄系統(tǒng)行政班級:成員分組名單學(xué)號:姓名:選課班級:任課教師:成績:目錄1設(shè)計(jì)任務(wù)與要求21.1 設(shè)計(jì)任務(wù)21.2 技術(shù)指標(biāo)21.3 題目評析22方案比較與論證32.1 各種方案比較與選擇33系統(tǒng)硬件設(shè)計(jì)43.1 系統(tǒng)的總體設(shè)計(jì)4圖3-2總體原理圖錯(cuò)誤!未定義書簽。3.2 功能模塊設(shè)計(jì)及工作原理的分析43.2.1 時(shí)鐘顯示模塊43.2.2 溫度傳感器模塊錯(cuò)誤!未定義書簽。3.2.3 LCD顯示數(shù)據(jù)模塊53.2.4 串口數(shù)據(jù)傳輸顯示模塊63.3 發(fā)揮部分的設(shè)計(jì)與實(shí)現(xiàn)83.3.1 年月日時(shí)分秒,溫度報(bào)警上限設(shè)置功能83.3.1.1 硬件按鈕部分83.3.1.2

2、 紅外遙控設(shè)置模塊83.3.2 按鍵傳輸串口數(shù)據(jù)94系統(tǒng)軟件設(shè)計(jì)105 測試結(jié)果136 系統(tǒng)電路存在的不足和改進(jìn)的方向147參考文獻(xiàn)錯(cuò)誤!未定義書簽。8附錄:錯(cuò)誤!未定義書簽。1設(shè)計(jì)任務(wù)與要求1.1 設(shè)計(jì)任務(wù)設(shè)計(jì)制作一臺(tái)可檢測和記錄溫度的系統(tǒng)。1.2 技術(shù)指標(biāo)(1) LCD顯示實(shí)時(shí)時(shí)鐘:年、月、日、時(shí)、分、秒;(2)每30秒采樣溫度,LCD更新顯示溫度值;(3)按鍵觸發(fā)存儲(chǔ)當(dāng)前溫度和時(shí)鐘信息(年、月、日、時(shí)、分);(4)按鍵觸發(fā)串口傳輸存儲(chǔ)的溫度和時(shí)鐘信息;(5)溫度測量精度:土1度。1.3題目評析本設(shè)計(jì)題我們小組摒棄了常規(guī)做法,加入了兩項(xiàng)獨(dú)特的創(chuàng)新實(shí)現(xiàn)方法:(1)對于數(shù)據(jù)傳送儲(chǔ)存顯示方面我們

3、不使用24C02存儲(chǔ)器,I2C存儲(chǔ)器等儲(chǔ)存器件,而是直接通過串口將數(shù)據(jù)傳輸?shù)碾娔X中通過VB界面顯示數(shù)據(jù)并將數(shù)據(jù)記錄在電腦硬盤中。(2)在設(shè)置時(shí)間日期,上限溫度上,我們不僅僅采用了硬件按鈕控制而且還加入了紅外遙控控制。與此同時(shí),我們的溫度測量精度在理論上能達(dá)到0.0625實(shí)際運(yùn)行時(shí)也能達(dá)到0.1度,而實(shí)驗(yàn)所要求的僅為1攝氏度。另外,在DS1302芯片上加入了一個(gè)備用電源,使得主電源掉電時(shí),時(shí)鐘芯片仍然在隨著時(shí)間的移動(dòng)而實(shí)時(shí)更新。因此主電源再次上電時(shí),時(shí)鐘依然是準(zhǔn)確的,而不必重新調(diào)過。2方案比較與論證2.1 各種方案比較與選擇2.1.1 溫度傳感器目前使用接觸式比較多,主要有熱電式傳感器,把溫度變

4、化轉(zhuǎn)換為電阻變化的叫熱電阻傳感器,把溫度變化轉(zhuǎn)換為熱電勢變換的叫熱電偶傳感器。方案1:熱電阻傳感器具有高溫系數(shù),高電阻率,物理特性穩(wěn)定,良好的線性輸出等優(yōu)點(diǎn),常用的有pt100等。方案2:熱電偶傳感器具有結(jié)構(gòu)簡單,測量范圍廣,熱慣性小,準(zhǔn)確度高,輸出信號遠(yuǎn)的優(yōu)點(diǎn),但價(jià)格較高。方案3:新型可編程溫度傳感器DS18B20,精度高,成本低,易于采集信號。利用熱電偶或熱敏電阻作為溫度傳感器,這類傳感器至儀表之間通常都要用專用的溫度補(bǔ)償導(dǎo)線,而溫度補(bǔ)償導(dǎo)線的價(jià)格很高,并且線路太長,會(huì)影響測量精度,這是直接以模擬量形式進(jìn)行采集的不可避免的問題。采用新型可編程溫度傳感器DS18B20進(jìn)行溫度檢測可以避免熱電

5、偶或熱敏電阻作為溫度傳感器所造成的測量精度誤差過大等問題,同時(shí)DS18B20只需要一個(gè)I/O口便可以進(jìn)行通信,它可以以更低的成本和更高的精確度實(shí)現(xiàn)溫度檢測。所以選擇方案3。2.1.2 時(shí)鐘顯示方案1:采用內(nèi)部時(shí)鐘計(jì)時(shí)。方案2:采用外部時(shí)鐘芯片DS1302。采用內(nèi)部時(shí)鐘計(jì)時(shí),可以節(jié)省IO弓I腳,降低成本,但是內(nèi)部振蕩器使用阻容震蕩,其精度不高,如果使用了串口、或者PWM等對時(shí)鐘比較敏感的功能,會(huì)對時(shí)鐘造成混亂。采用外部時(shí)鐘芯片DS1302,不僅僅能對時(shí)間進(jìn)行計(jì)時(shí)還可以對年、月、日、周進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能而且對于使用串口、或者PWM等對時(shí)鐘比較敏感的功能,不會(huì)產(chǎn)生影響。如果接入外置電子電池的

6、話在系統(tǒng)掉電的情況下還可以繼續(xù)計(jì)時(shí)。所以選擇方案2。2.1.3 時(shí)間溫度數(shù)據(jù)顯示方案1:采用數(shù)碼管顯示。方案2:米用LCD顯木器顯布。采用數(shù)碼管顯示時(shí)間溫度數(shù)據(jù)操作方便,但需要用到的數(shù)碼管數(shù)量甚多,占用I/O口較多,浪費(fèi)I/O口的利用率,且只能顯示數(shù)字。而使用LCD顯示雖然在編程上有一定程度比數(shù)碼管顯示的復(fù)雜性高,但其占用的I/O資源較少,且能顯示的內(nèi)容比數(shù)碼管豐富的多,不僅能顯示數(shù)值還能顯示英文。所以使用方案2.2.1.4 數(shù)據(jù)的串口傳送與儲(chǔ)存顯示方案1:通過串口將數(shù)據(jù)傳送到另一個(gè)單片機(jī)系統(tǒng)上顯示,采用24C02存儲(chǔ)器對數(shù)據(jù)進(jìn)行儲(chǔ)存。方案2:通過串口將數(shù)據(jù)傳送到PC機(jī)上并用VB程序編寫的界面

7、顯示,采用PC機(jī)上的“D盤”對數(shù)據(jù)進(jìn)行儲(chǔ)存。通過串口將數(shù)據(jù)從一個(gè)單片機(jī)傳送到另一個(gè)單片機(jī)上設(shè)置較為簡單,將數(shù)據(jù)存儲(chǔ)到24C02存儲(chǔ)器上,不易于對任意時(shí)間溫度數(shù)據(jù)進(jìn)行提取,而將數(shù)據(jù)傳送到PC機(jī)上并用VB界面顯示出來不僅美觀而且信息量豐富,將數(shù)據(jù)儲(chǔ)存在“D:溫度.TXT”目錄下不僅存儲(chǔ)量大,而且便于直觀查看。所以使用方案2。3系統(tǒng)硬件設(shè)計(jì)3.1 系統(tǒng)的總體設(shè)計(jì)本系統(tǒng)以STM32F103ZET6單片機(jī)為核心,采用溫度傳感器DS18B20進(jìn)行溫度檢測,將數(shù)字溫度信息傳輸?shù)絾纹瑱C(jī)中,在時(shí)鐘方面采用外部時(shí)鐘芯片DS1302,DS1302是一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對年、月、日、周、

8、時(shí)、分、秒進(jìn)行計(jì)時(shí)。單片機(jī)通過采集溫度時(shí)間信息后將溫度時(shí)間數(shù)據(jù)傳送到LCD上顯示出來,并將數(shù)據(jù)通過串口通信通過MAX232傳送到電腦中,硬件總體框圖如下:圖3-1硬件總體框圖3.2 功能模塊設(shè)計(jì)及工作原理的分析3.2.1 時(shí)鐘顯示模塊時(shí)鐘模塊采用外部時(shí)鐘DS1302進(jìn)行計(jì)時(shí),DS1302是一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31X8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1

9、202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時(shí)提供了對后備電源進(jìn)行涓細(xì)電流充電的能力。其管腳圖以及此模塊仿真圖如圖3-3(a)及3-3(b)所示。(a)(b)圖3-3DS1302管腳圖與時(shí)鐘模塊仿真圖各引腳的功能為:Vcc1:備用電源;Vcc2:主電源。當(dāng)Vcc2Vcc1+0.2V時(shí),由Vcc2向DS1302供電,當(dāng)Vcc2,電!,P,!3:!,!*!I范昆|方方1關(guān)麗口Iri*KliMtal中.送阻ri,m中si吟石設(shè)置整定拉窗附口比總.;:J22+1Wtrion00電周二|.后插倬電I也出1I幽皿00電近二J國i*由m*fiaH8m電am1時(shí)同閉總L叼”三;

10、::I2s工JEmn電St百1foo:Daoo六J星度;曲|JizoKlj:二二!工胸8厘電后七I幅一I(00:00OOJjgd1n1ian0恭迎使用單片機(jī)逞度像,運(yùn)錄系境圖3-12單片機(jī)溫度檢測記錄系統(tǒng)(vb)如圖3-11(a)與3-11(b)所示,其各引腳功能介紹如下:第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構(gòu)成。功能是產(chǎn)生+12v和-12v兩個(gè)電源,提供給RS-232串口電平的需要。第二部分是數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構(gòu)成兩個(gè)數(shù)據(jù)通道。其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數(shù)據(jù)通道。8

11、腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道。TTL/CMOS數(shù)據(jù)從T1IN、T2IN輸入轉(zhuǎn)換成RS-232數(shù)據(jù)從T1OUT、T2OUT送到電腦DB9插頭;DB9插頭的RS-232數(shù)據(jù)從R1IN、R2IN輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從R1OUT、R2OUT輸出。第三部分是供電。15腳GND、16腳VCC(+5v)。3.3 發(fā)揮部分的設(shè)計(jì)與實(shí)現(xiàn)發(fā)揮部分包含兩個(gè)部分。首先是年月日時(shí)分秒及其溫度報(bào)警上限功能設(shè)置,另外還有串口數(shù)據(jù)傳輸部分的實(shí)現(xiàn)。3.3.1 年月日時(shí)分秒,溫度報(bào)警上限設(shè)置功能年月日時(shí)分秒及其溫度報(bào)警上限功能設(shè)置有兩種方法,包括硬件按鍵設(shè)置

12、以及紅外遙控設(shè)置。3.3.1.1 硬件按鈕部分硬件按鈕部分設(shè)置如圖3-13所示,keyl:為功能設(shè)置進(jìn)入按鈕,key2:為功能切換按鈕如圖3-14,3-15,3-16,3-17,3-18,3-19,3-20,所示。key3:為加一功能按鍵。key4:為減一功能按鍵。在這一部分中,4個(gè)按鍵按下key1即可進(jìn)入年設(shè)置模式,通過key3與key4鍵進(jìn)行加一減一操作。設(shè)置完年份之后,再按下key2即可進(jìn)入月份設(shè)置操作,繼續(xù)按下則能相繼出現(xiàn)日,時(shí),分,秒及溫度上限的設(shè)置操作,同理,key3與key4對數(shù)值設(shè)置進(jìn)行加減。圖3-14設(shè)置年份圖3-15設(shè)置月份圖3-13硬件按鈕設(shè)置圖3-16設(shè)置日期圖3-17

13、設(shè)置小時(shí)圖3-18設(shè)置分鐘圖3-19設(shè)置秒圖3-20設(shè)置溫度3.3.1.2 紅外遙控設(shè)置模塊人的眼睛能看到的是可見光,若按波長排列,依次(從長到短)為紅、橙、黃、綠、青、藍(lán)、紫,紅光的波長范圍為0.62科m0.7科m,比紅光波長還長的光叫紅外線。紅外線遙控器就是利用波長0.76科m1.5科m之間的近紅外線來傳送控制信號的。紅外線的特點(diǎn)是不干擾其他電器設(shè)備工作,也不會(huì)影響周邊環(huán)境。調(diào)試簡單,若對發(fā)射信號進(jìn)行編碼,可實(shí)現(xiàn)多路紅外遙控功能。紅外線發(fā)射和接收:紅外遙控發(fā)射器由鍵盤矩陣、遙控專用集成電路、激勵(lì)器和紅外發(fā)光二極管組成。遙控專用集成電路(采用AT89S52單片機(jī))是發(fā)射系統(tǒng)的核心部分,其內(nèi)部

14、由振蕩電路、定時(shí)電路、掃描信號發(fā)生器、鍵輸入編碼器、指令譯碼器、用戶碼轉(zhuǎn)換器、數(shù)碼調(diào)制電路及緩沖放大器等組成。它能產(chǎn)生鍵位掃描脈沖信號,并能譯出按鍵的鍵碼,再經(jīng)遙控指令編碼器得到某鍵位的遙控指令(遙控編碼脈沖),由38KHZ的載波進(jìn)行脈沖幅度調(diào)制,載有遙控指令的調(diào)制信號激勵(lì)紅外二極管發(fā)出紅外遙控信號。在紅外接收器中,采用光電轉(zhuǎn)換器(光電二極管),將接收到的紅外光指令信號轉(zhuǎn)換成相應(yīng)的電信號。由于技術(shù)原因與制作成本,紅外遙控發(fā)射器是利用現(xiàn)成的電視遙控器。接收器將接收到的紅外頻率數(shù)據(jù)傳輸?shù)絾纹瑱C(jī)中,進(jìn)行處理識(shí)別紅外控制的按鍵,從而進(jìn)行時(shí)間溫度的設(shè)置。3.3.2 按鍵傳輸串口數(shù)據(jù)如下圖3-21為串口傳

15、輸?shù)陌存I。四個(gè)按鍵分別對應(yīng)的功能如下:Key3:單次按鍵傳輸串口數(shù)據(jù),即每觸發(fā)一次傳輸一次即時(shí)的時(shí)間溫度數(shù)據(jù)。Key4:觸發(fā)一次連續(xù)傳輸即時(shí)的串口數(shù)據(jù)。Key2:停止串口數(shù)據(jù)傳輸按鈕。圖3-21按鍵傳輸串口數(shù)據(jù)功能鍵4系統(tǒng)軟件設(shè)計(jì)主函數(shù)開始先進(jìn)行LCD初始化,時(shí)鐘芯片初始化,串口初始化,之后通過時(shí)間,溫度處理函數(shù)讀取時(shí)間,溫度的數(shù)值,判斷是否有按鍵被按下,如果沒有運(yùn)行時(shí)間顯示函數(shù),溫度顯示函數(shù),溫度報(bào)警函數(shù);如果按鍵被按下,則進(jìn)入功能設(shè)置函數(shù)調(diào)節(jié)時(shí)間和溫度上限??傮w程序流程圖如圖4-1所示。圖4-1總體程序流程圖主程序可見附錄程序1。4.1 溫度傳感器流程圖將dhtll首先要將溫度傳感器內(nèi)存初

16、始化,逐字讀取傳感器RAM中的的溫度數(shù)據(jù),并將數(shù)據(jù)轉(zhuǎn)化為十進(jìn)制的浮點(diǎn)型數(shù)據(jù),返回溫度值。其流程圖如下:圖4-2溫度傳感器流程圖溫度傳感器程序見附錄程序2。4.2 時(shí)鐘芯片流程圖判斷時(shí)間顯示是否正確如果不正確外部電路可從新設(shè)置時(shí)鐘之后進(jìn)入流程(1),如果時(shí)間顯示正確,(1)讀取芯片內(nèi)部RAM中的提取年、月、日、時(shí)、分、秒數(shù)據(jù),并將年、月、日、時(shí)、分、秒值返回。圖4-3時(shí)鐘芯片流程圖時(shí)鐘芯片程序見附錄程序3。4.3 紅外控制程序流程圖初始化紅外接收管,判斷是否接收到紅外信號,無則結(jié)束,有則判斷紅外信號是否為有用信號,如有有用信號則返回相應(yīng)的值。圖4-4紅外控制程序流程圖紅外控制程序見附錄程序4。4

17、測試結(jié)果LCD顯示時(shí)間溫度正如上圖為我們所搭的實(shí)物圖,接通電源后,各個(gè)模塊均正常工作,常。6系統(tǒng)電路存在的不足和改進(jìn)的方向電路存在不足之處在于時(shí)間溫度的串口傳輸是通過有線進(jìn)行的,靈活性與局限性較大,如果主系統(tǒng)與從系統(tǒng)距離較大,便使用起來更不方便,改進(jìn)之處在于,不使用有線傳輸數(shù)據(jù),而是使用無線傳輸數(shù)據(jù),使用功率較大的無線接受發(fā)器還可以傳送百米甚至幾百米以上的距離,在軟件方面對無線設(shè)置協(xié)議便可解決因距離過大而產(chǎn)生的數(shù)據(jù)出錯(cuò)。另外,可以考慮同時(shí)實(shí)現(xiàn)本地存儲(chǔ)與異地存儲(chǔ)的結(jié)合使用。困為如果要存儲(chǔ)在電腦上,雖然美觀而且使用方便,但是其功耗及延時(shí)將會(huì)比存儲(chǔ)在本地上要多得多。所以,這也將是一個(gè)改進(jìn)的方向。7技

18、能訓(xùn)練四感想經(jīng)過這次的測試技術(shù)實(shí)驗(yàn),我們小組得到了不少的收獲,一方面加深了我對課本理論的認(rèn)識(shí),另一方面也提高了實(shí)驗(yàn)操作能力。在實(shí)驗(yàn)的過程中我們要培養(yǎng)自己的獨(dú)立分析問題,和解決問題的能力。在這學(xué)期的實(shí)驗(yàn)中,在收獲知識(shí)的同時(shí),還收獲了閱歷,收獲了成熟,在此過程中,我們通過查找大量資料,請教老師,以及不懈的努力,不僅培養(yǎng)了獨(dú)立思考、動(dòng)手操作的能力,在各種其它能力上也都有了提高。更重要的是,在實(shí)驗(yàn)課上,我們學(xué)會(huì)了很多學(xué)習(xí)的方法。還有團(tuán)結(jié)協(xié)作的精神,而這是日后最實(shí)用的,真的是受益匪淺。8附錄1)文件主函數(shù)intmain(void)(u8t=0;u8temperature;u8humidity;Stm32

19、_Clock_Init(9);TIMER_Init();uart_init(72,9600);delay_init(72);LED_Init();LCD_Init();usmart_dev.init(72);KEY_Init();POINT_COLOR=RED;/while(DHT11_Init()系統(tǒng)時(shí)鐘設(shè)置串口初始化為9600延時(shí)初始化初始化與LED連接的硬件接口初始化LCD初始化USMART按鍵初始化設(shè)置字體為紅色/DHT11初始化(LCD_ShowString(60,130,200,16,16,DHT11Error);Delay_ms(200);LCD_Fill(60,130,239,

20、130+16,WHITE);Delay_ms(200);LCD_ShowString(60,130,200,16,16,DHT11OK);POINT_COLOR=BLUE;/設(shè)置字體為藍(lán)色LCD_ShowString(60,150,200,16,16,Temp:C);LCD_ShowString(121,150,200,16,16,.);LCD_ShowString(60,170,200,16,16,Humi:%);LCD_ShowString(121,170,200,16,16,.);while(1)(if(t%10=0)/每100ms讀取一次(DHT11_Read_Data(&temper

21、ature,&humidity);讀取溫濕度值LCD_ShowNum(60+45,150,temperature,2,16);顯示溫度LCD_ShowNum(60+45,170,humidity,2,16);顯示濕度Delay_ms(10);t+;if(t=20)(/t=0;LED0=!LED0;)if(t=100)(t=calendar.sec;calendar.hour=13;/calendar.min=40;if(calendar.sec%60=0)(calendar.sec=0;calendar.min+;)if(calendar.min%60=0)(calendar.min=0;ca

22、lendar.hour+;)LCD_ShowNum(60,10,calendar.w_year,4,16);LCD_ShowNum(100,10,calendar.w_month,2,16);LCD_ShowNum(124,10,calendar.w_date,2,16);LCD_ShowNum(60,42,calendar.hour,2,16);LCD_ShowNum(84,42,calendar.min,2,16);LCD_ShowNum(108,42,calendar.sec+,2,16);)Delay_ms(10);)2)dht11溫濕感應(yīng)器函數(shù)程序/復(fù)位DHT11voidDHT11_

23、Rst(void)(DHT11_IO_OUT();/SETOUTPUTDHT11_DQ_OUT=0;拉低DQDelay_ms(20);拉低至少18msDHT11_DQ_OUT=1;/DQ=1Delay_us(30);主機(jī)拉高2040us)/等待/返回/返回DHT11的回應(yīng)1:未檢測到DHT11的存在0:存在u8DHT11_Check(void)(u8retry=0;DHT11_IO_IN();/SETINPUTwhile(DHT11_DQ_IN&retry=100&retry210)return1;elseretry=0;while(!DHT11_DQ_IN&retry=100)return1

24、;return0;會(huì)拉低4080us拉低后會(huì)再次拉高40-80us)/從DHT11讀取一個(gè)位/返回彳1:1/0u8DHT11_Read_Bit(void)(u8retry=0;等待變?yōu)榈碗娖降却兏唠娖絯hile(DHT11_DQ_IN&retry100)(retry+;Delay_us(1);)retry=0;while(!DHT11_DQ_IN&retry100)/(retry+;delay_us(1);)Delay_us(40);/等待40usif(DHT11_DQ_IN)return1;elsereturn0;)/從DHT11讀取一個(gè)字節(jié)/返回值:讀到的數(shù)據(jù)u8DHT11_Read_B

25、yte(void)(u8i,dat;dat=0;for(i=0;i8;i+)(dat=1;dat|=DHT11_Read_Bit();returndat;/從DHT11讀取一次數(shù)據(jù)/temp:溫度值(范圍:050)/humi:濕度值(范圍:20%90%)/返回彳1:0,正常;1,讀取失敗u8DHT11_Read_Data(u8*temp,u8*humi)(u8buf5;u8i;DHT11_Rst();if(DHT11_Check()=0)(for(i=0;iAPB2ENR|=1CRH&=0XFFFF0FFF;PORTG.11推挽輸出GPIOG-CRH|=0X00003000;GPIOG-ODR

26、|=1CTRL&=(1CTRL|=1LOAD=reload;每1/OS_TICKS_PER_SEC秒中斷一次SysTick-CTRL|=1LOAD;/LOAD的值ticks=nus*fac_us;需要的節(jié)拍數(shù)tcnt=0;OSSchedLock();阻止ucos調(diào)度,防止打斷us延時(shí)told=SysTick-VAL;/剛進(jìn)入時(shí)的計(jì)數(shù)器值while(1)(tnow=SysTick-VAL;if(tnow!=told)(if(tnow=ticks)break;/時(shí)間超過/等于要延遲的時(shí)間,則退出.);OSSchedUnlock();/開啟ucos調(diào)度)/延時(shí)nms/nms:要延日的ms數(shù)voidd

27、elay_ms(u16nms)(if(OSRunning=OS_TRUE)/如果os已經(jīng)在跑了(if(nms=fac_ms)/延時(shí)的時(shí)間大于ucos的最少時(shí)間周期(OSTimeDly(nms/fac_ms);/ucos延時(shí))nms%=fac_ms;/ucos已經(jīng)無法提供這么小的延時(shí)了,采用普通方式延時(shí)delay_us(u32)(nms*1000);普通方式延時(shí))#else/不用ucos時(shí)/延時(shí)nus/nus為要延時(shí)的us數(shù).voiddelay_us(u32nus)u32temp;SysTick-LOAD=nus*fac_us;/時(shí)間加載SysTick-VAL=0x00;/清空計(jì)數(shù)器SysTic

28、k-CTRL=0x01;開始倒數(shù)dotemp=SysTick-CTRL;)while(temp&0x01)&!(temp&(1CTRL=0x00;關(guān)閉計(jì)數(shù)器SysTick-VAL=0X00;清空計(jì)數(shù)器)/延時(shí)nms/注意nms的范圍/SysTick-LOAD為24位寄存器,所以,最大延時(shí)為:/nms=0xffffff*8*1000/SYSCLK/SYSCLK單位為Hz,nms單位為ms對72M條件下,nmsLOAD=(u32)nms*fac_ms;/時(shí)間加載(SysTick-LOAD為24bit)SysTick-VAL=0x00;清空計(jì)數(shù)器SysTick-CTRL=0x01;開始倒數(shù)dotem

29、p=SysTick-CTRL;)while(temp&0x01)&!(temp&(1CTRL=0x00;關(guān)閉計(jì)數(shù)器SysTick-VAL=0X00;清空計(jì)數(shù)器)#endifu8cnt1=0,cnt2=0;voidTIMER_Init(void)(RCC-APB1ENR|=RCC_APB1ENR_TIM6EN|RCC_APB1ENR_TIM7EN;)voidDelay_us(u32uns)(cnt1=0;TIM6-ARR=uns;TIM6-PSC=71;/1MHz=1us;TIM6-CR1|=TIM_CR1_OPM;TIM6-DIER|=TIM_DIER_UIE;TIM6-CR1|=TIM_CR1_CEN;MY_NVIC_Init(0,1,TIM6_IRQn,0);while(!cnt1);cnt1=0;)voidDelay_ms(u16ums)(TIM7-ARR=ums*10;TIM7-PSC=7199;/10KHz=0.1ms;TIM7-CR1|=TIM_CR1_OPM;TIM7-DIER|=TIM_DIER_UIE;TIM7-CR1|=TIM_CR1_CEN;MY_NVIC_Init(0,2,TIM7_IRQn,0);while(!cnt2);cnt2=0;)voidTIM6_IRQHandler(void)(TIM6-SR&=TIM_SR_UIF;cnt1=1;)

溫馨提示

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

最新文檔

評論

0/150

提交評論