版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課 程 設(shè) 計(jì)</p><p> 課程名稱 單片機(jī)原理與應(yīng)用 </p><p> 課題名稱 環(huán)境溫、濕度檢測(cè)系統(tǒng)設(shè)計(jì)</p><p> 專 業(yè) 自動(dòng)化 </p><p> 班 級(jí)
2、 </p><p> 學(xué) 號(hào) </p><p> 姓 名 </p><p> 指導(dǎo)教師 </p><p> 2013 年 12 月 12 日</p><p
3、> 課 程 設(shè) 計(jì) 任 務(wù) 書</p><p> 課程名稱 單片機(jī)原理與應(yīng)用 </p><p> 課 題 環(huán)境溫、濕度檢測(cè)系統(tǒng)設(shè)計(jì) </p><p> 任務(wù)書下達(dá)日期 2013 年 12 月 1 日</p><p> 任務(wù)完成日期 2013 年 12 月 13 日</p>
4、<p><b> 目 錄</b></p><p><b> 第1章 概述7</b></p><p> 1.1 設(shè)計(jì)任務(wù)與要求7</p><p> 1.2 設(shè)計(jì)方案7</p><p> 第2章 硬件設(shè)計(jì)8</p><p> 2.1 時(shí)鐘電路和復(fù)位
5、電路8</p><p> 2.2 溫濕度測(cè)量電路設(shè)計(jì)9</p><p> 2.3按鍵電路10</p><p> 第3章 軟件設(shè)計(jì)12</p><p> 3.1主函數(shù)設(shè)計(jì)12</p><p> 3.2按鍵查詢13</p><p> 3.3 實(shí)時(shí)監(jiān)控與測(cè)試流程圖14<
6、/p><p> 第4章 硬件調(diào)試與結(jié)果分析15</p><p> 4.1調(diào)試過(guò)程15</p><p> 4.2 硬件調(diào)試16</p><p><b> 第5章 總結(jié)18</b></p><p><b> 參考文獻(xiàn)19</b></p><p&
7、gt; 附錄一:系統(tǒng)仿真圖20</p><p> 附錄二:源程序21</p><p> 電氣與信息工程系課程設(shè)計(jì)評(píng)分表29</p><p><b> 第1章 概述</b></p><p> 1.1 設(shè)計(jì)任務(wù)與要求</p><p> 本課題以單片機(jī)為核心,用智能集成溫溫度傳感器DH
8、T11主要實(shí)現(xiàn)檢測(cè)溫度、濕度的檢測(cè),將溫度濕度信號(hào)通過(guò)傳感器進(jìn)行信號(hào)的采集并轉(zhuǎn)換成數(shù)字信號(hào),再運(yùn)用單片機(jī)進(jìn)行數(shù)據(jù)的分析和處理,在數(shù)碼管上顯示當(dāng)前溫濕度。要求用按鍵控制系統(tǒng)選擇分別對(duì)溫度或濕度的測(cè)試、復(fù)位、清除功能,完成硬件調(diào)試。</p><p><b> 1.2 設(shè)計(jì)方案</b></p><p> 本課題的溫濕度測(cè)試,通過(guò)單片機(jī)STC-89C51連接溫濕度模塊、顯
9、示模塊將溫度、濕度同時(shí)顯示。單片機(jī)發(fā)送一次開(kāi)始信號(hào)后,DHT11從低功耗模式轉(zhuǎn)換到高速模式,等待主機(jī)開(kāi)始信號(hào)結(jié)束后,DHT11發(fā)送響應(yīng)信號(hào),送出40bit的數(shù)據(jù),并觸發(fā)一次信號(hào)采集,如果沒(méi)有接收到單片機(jī)發(fā)送來(lái)的信號(hào),DHT11不會(huì)主動(dòng)進(jìn)行溫度采集,采集數(shù)據(jù)后轉(zhuǎn)換到低速模式。系統(tǒng)設(shè)計(jì)框圖如圖1.1所示。</p><p> 圖1.1 程序設(shè)計(jì)框圖</p><p><b> 第2
10、章 硬件設(shè)計(jì)</b></p><p> 2.1 時(shí)鐘電路和復(fù)位電路</p><p> MCS-51單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反放大器,引腳XTAL1和XTAL2分別是反相放大器的輸入端和輸出端。通常,經(jīng)由片外晶體振蕩器或陶瓷諧振器與兩個(gè)匹配電容一起構(gòu)成一個(gè)自激振蕩電路。本課題由片外晶體振蕩器與兩個(gè)匹配電容一起構(gòu)成了一個(gè)內(nèi)部時(shí)鐘振蕩電路,為單片機(jī)提供時(shí)鐘源。<
11、;/p><p> 本設(shè)計(jì)復(fù)位電路采用按鍵復(fù)位,當(dāng)開(kāi)關(guān)斷開(kāi)時(shí),與上電自動(dòng)復(fù)位電路相同;當(dāng)開(kāi)關(guān)閉合時(shí),電容通過(guò)并聯(lián)的電阻迅速放電,然后,RC電路充電,能夠保證RST端能夠維持一段時(shí)間的高電平。如圖2.1所示。</p><p> 圖2.1 時(shí)鐘及復(fù)位電路</p><p> 2.2 溫濕度測(cè)量電路設(shè)計(jì)</p><p> DHT11的供電電壓為3
12、-5.5V,傳感器上電后,要等待1s以越過(guò)不穩(wěn)定狀態(tài)在此期間無(wú)需發(fā)送任何指令。電源引腳(VDD,GND)之間可增加一個(gè)100nF的電容,用以去耦濾波。數(shù)據(jù)用于微處理器與DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時(shí)間4ms左右,數(shù)據(jù)分小數(shù)部分和整數(shù)部分。如圖2.2所示,本電路上拉電阻為5K,數(shù)據(jù)端接P1.7(接受溫濕度數(shù)據(jù))。</p><p> 圖2. 2 溫濕度測(cè)量電路</p>&
13、lt;p><b> 2.3 顯示電路</b></p><p> 本電路由四位一體共陽(yáng)極數(shù)碼管顯示,采用9015三極管做位驅(qū)動(dòng)。根據(jù)發(fā)光二極管物理連接的不同,七段數(shù)碼管可以分為共陰極和共陽(yáng)極兩種結(jié)構(gòu)。其中P0端口為段選,P2.0~P2.3為位選,如圖2.3所示。</p><p><b> 圖2.3 顯示電路</b></p>
14、<p><b> 2.4按鍵電路</b></p><p> 單片機(jī)設(shè)計(jì)中按鍵可分為獨(dú)立式按鍵和矩陣式按鍵,本系統(tǒng)由于按鍵較少,故采用四個(gè)獨(dú)立按鍵,上拉電阻為1K。其中,四個(gè)按鍵功能分別是顯示溫度、顯示濕度、實(shí)時(shí)監(jiān)控顯示溫濕度、測(cè)試溫濕度。如圖2.4。</p><p> 圖2.4 按鍵電路</p><p><b>
15、 第3章 軟件設(shè)計(jì)</b></p><p> 本軟件設(shè)計(jì)主要是對(duì)距離進(jìn)行測(cè)量、顯示。因此,整個(gè)軟件可分為按照硬件電路對(duì)單片機(jī)位定義;溫濕度設(shè)置子程序;溫濕度接收子程序;顯示子程序;延時(shí)子程序等。</p><p> 由于本設(shè)計(jì)方案要求硬件電路和軟件編程相結(jié)合,所以選擇合適的編程語(yǔ)言十分重要。C語(yǔ)言執(zhí)行效率沒(méi)有匯編語(yǔ)言高,但語(yǔ)言簡(jiǎn)潔,使用方便靈活,運(yùn)算豐富,表達(dá)化類型多樣化,程
16、序設(shè)計(jì)自由度大,很好的可重用性,可移植性等特點(diǎn)基于C語(yǔ)言的眾多優(yōu)點(diǎn)本設(shè)計(jì)選擇此語(yǔ)言來(lái)編程。</p><p><b> 3.1主函數(shù)設(shè)計(jì)</b></p><p> 軟件分為兩部分,主程序和中斷服務(wù)程序。主程序完成初始化工作、溫濕度數(shù)據(jù)接收處理控制。外部中斷服務(wù)子程序主要完成時(shí)間值的讀取、結(jié)果的輸出等工作,如圖3.1所示。</p><p>
17、圖3.1 主程序流程圖 </p><p><b> 3.2按鍵查詢</b></p><p> 獨(dú)立式按鍵接口采用直接讀入方式工作,直讀式鍵盤接口是一個(gè)輸入接口,輸入接口主要功能是解決數(shù)據(jù)輸入的緩沖(選通)問(wèn)題。本設(shè)計(jì)按鍵較少,采用的獨(dú)立按鍵。</p><p> 圖3.2 查詢按鍵處理</p><p>
18、 在掃描按鍵函數(shù)中,每按下不同按鍵會(huì)返回一個(gè)不同的數(shù)值,在主函數(shù)中有按鍵查詢函數(shù)判斷為那個(gè)按鍵按下,隨后進(jìn)入不同的子函數(shù),如圖3.2所示。</p><p> 3.3 實(shí)時(shí)監(jiān)控與測(cè)試流程圖</p><p> 本系統(tǒng)設(shè)計(jì)分為實(shí)時(shí)監(jiān)控與測(cè)試模塊,圖3.3示為測(cè)試模塊。上電是數(shù)碼管顯示四個(gè)零,當(dāng)按下測(cè)試按鍵后,系統(tǒng)開(kāi)始測(cè)量環(huán)境溫、濕度。當(dāng)數(shù)碼管顯示四個(gè)“—”時(shí),表示成功測(cè)量溫、濕度。當(dāng)按下溫
19、度(濕度)顯示按鍵,該模塊顯示測(cè)試時(shí)的溫度(濕度)。當(dāng)要進(jìn)行下一次測(cè)量時(shí),必須按下測(cè)試按鍵。</p><p> 圖3.3 測(cè)試流程圖</p><p> 圖3.4示為實(shí)時(shí)監(jiān)控模塊,按下實(shí)時(shí)監(jiān)控鍵后,啟動(dòng)T0定時(shí)器開(kāi)始定時(shí),每一分鐘測(cè)試一次溫度、濕度,并在四位一體的共陽(yáng)極數(shù)碼管輪流顯示溫度、濕度。當(dāng)按下溫度(濕度)顯示按鍵后,該模塊只顯示實(shí)時(shí)的溫度(濕度)。當(dāng)再次按下實(shí)時(shí)監(jiān)控按鍵后。定時(shí)
20、器T0關(guān)閉。</p><p> 圖3.4 實(shí)時(shí)監(jiān)控模塊</p><p> 第4章 硬件調(diào)試與結(jié)果分析</p><p><b> 4.1調(diào)試過(guò)程</b></p><p> 在編寫此程序前,感覺(jué)DHT11的通信程序和取數(shù)程序最為難寫,在之前的學(xué)習(xí)中我并沒(méi)有接觸過(guò)單總線的通信時(shí)序圖。通過(guò)查閱資料和參考現(xiàn)有的程序,然后
21、在老師講解和與本組的其他組員談?wù)摵?,終于弄明白這方面的知識(shí)。而在測(cè)量函數(shù)中,剛開(kāi)始并沒(méi)有測(cè)得數(shù)據(jù),通過(guò)查閱書籍我設(shè)置了一個(gè)全局變量,一步一步跟蹤每一步并顯示在P1的LED燈上,一步一步跟蹤,完善了DTH11的通信與取數(shù)函數(shù)。</p><p> 但在通信與取數(shù)函數(shù)與按鍵函數(shù)銜接時(shí),總是有一定的概率測(cè)不到數(shù)據(jù),慢慢的調(diào)試我發(fā)現(xiàn)我的通信與取數(shù)函數(shù)要連續(xù)調(diào)用兩次才能每次正確的讀取數(shù)據(jù),在此,我設(shè)置了一個(gè)全局變量作為一個(gè)
22、標(biāo)志位,每次按下測(cè)量鍵是將該標(biāo)志位設(shè)置為2,使通信與取數(shù)函數(shù)循環(huán)兩次,這樣保證了每次按下測(cè)試按鍵后就能與DHT11正確的通信從而保證得到正確的數(shù)據(jù)。</p><p> 在實(shí)時(shí)監(jiān)控這個(gè)模塊中,為了保證溫、濕度能循環(huán)顯示、按鍵后能只顯示溫度(濕度)。由于按鍵有限,所以一下設(shè)置了很多的標(biāo)志位。因?yàn)闃?biāo)志位太多,而沒(méi)有將所有的環(huán)節(jié)考慮進(jìn)去,一下程序有調(diào)試了很久才正確的實(shí)現(xiàn)要求的功能。</p><p&g
23、t;<b> 4.2 硬件調(diào)試</b></p><p> 如圖4.1所示,按下左下角按鍵時(shí),單片機(jī)開(kāi)始與DHT11通信并開(kāi)始測(cè)試溫、濕度。圖示為測(cè)量溫、濕度成功。</p><p><b> 圖4.1 初始化</b></p><p> 當(dāng)按下圖示按鍵時(shí),數(shù)碼管顯示此時(shí)或?qū)崟r(shí)監(jiān)控的環(huán)境濕度。其中最前端的“C” 表示此時(shí)
24、顯示的事環(huán)節(jié)溫度,如圖4.2。</p><p><b> 圖4.2 顯示濕度</b></p><p> 當(dāng)按下此按鍵時(shí),數(shù)碼管顯示此時(shí)或?qū)崟r(shí)監(jiān)控的環(huán)境溫度。其中最前端的“H”表示此時(shí)顯示的是環(huán)境濕度,如圖4.3。</p><p><b> 圖4.3 顯示溫度</b></p><p><b
25、> 第5章 總結(jié)</b></p><p> 這次單片機(jī)課程設(shè)計(jì)不僅鞏固了以前學(xué)過(guò)的知識(shí),而且學(xué)到了很多書本上沒(méi)有沒(méi)到的知識(shí),掌握了一種系統(tǒng)的研究方法,可以進(jìn)行一些簡(jiǎn)單的編程,通過(guò)這次課程設(shè)計(jì)我們明白理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)還不夠,理論實(shí)踐相結(jié)合才能提高實(shí)際動(dòng)手能力和獨(dú)立思考的能力。同樣,在學(xué)習(xí)中也發(fā)現(xiàn)了自己的不足之處,例如對(duì)以前所學(xué)過(guò)的知識(shí)理解不夠深刻,掌握不夠牢固。<
26、/p><p> 課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn)、提出、分析和解決實(shí)際問(wèn)題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過(guò)程。隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機(jī)已經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng)域, 在生活中可以說(shuō)得是無(wú)處不在。因此作為二十一世紀(jì)的大學(xué)來(lái)說(shuō)掌握單片機(jī)的開(kāi)發(fā)技術(shù)是十分重要的。 </p><p> 回顧起此次單片機(jī)課程設(shè)計(jì),我仍感慨
27、頗多。的確,從選題到定稿,從理論到實(shí)踐,在接近兩個(gè)星期的日子里,可以說(shuō)得是苦多于甜,在設(shè)計(jì)的過(guò)程中遇到問(wèn)題,可以說(shuō)得是困難重重,難免會(huì)遇到過(guò)各種各樣的問(wèn)題,通過(guò)這次課程設(shè)計(jì)之后,一定把以前所學(xué)過(guò)的知識(shí)重新溫故。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 王迎旭等.單片機(jī)原理及及應(yīng)用[M] 機(jī)械工業(yè)出版社.2012年&
28、lt;/p><p> [2] 龔建偉、熊光明等.Visual.c.Tubor.c串口通信[M] </p><p> [3] 康華光等.模擬電子技術(shù) 第五版[M] 高等教育出版社2011年 [4] 杜樹(shù)春等.單片機(jī)C語(yǔ)言[M] 北京航空航天大學(xué)出版社 </p><p><b> 附錄一:系統(tǒng)仿真圖
29、</b></p><p><b> 附錄二:源程序</b></p><p> #include <reg51.h></p><p> bit flag2,flag3,flag5;</p><p> sbit dht11 = P1^7;</p><p&
30、gt; #define NUMBER 20//防止在與硬件通信時(shí)發(fā)生死循環(huán)的計(jì)數(shù)范圍</p><p> #define SIZE 5</p><p> #define OK 1</p><p> #define ERROR 0//函數(shù)的返回值表示讀取數(shù)據(jù)是否成功 OK 表示成功 ERROR 表
31、示失敗</p><p> void DHT11_Delay_10us(void);//延時(shí)10us</p><p> void ceshiwenshidu(void);</p><p> void xianshishidu(void);</p><p> void xianshiwendu(void);<
32、/p><p> unsigned char ReadValue(void);</p><p> unsigned char DHT11_ReadTempAndHumi(void);</p><p> void delay_1_002s(void);</p><p> void delay(unsigned ch
33、ar i);//延時(shí)程序</p><p> void display(unsigned char led0,led1,led2,led3);//動(dòng)態(tài)掃描顯示程序</p><p> unsigned char keyscan(void);//鍵盤掃描</p><p> unsigne
34、d char status;</p><p> //#define uchar unsigned char</p><p> //#define uint unsigned int</p><p> unsigned char flag1,flag4;</p><p> unsigned char led_code[]={0xc0
35、,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,</p><p> 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x89};/*共陽(yáng)字型段碼表,"0"--"F","-",“H”*/</p><p> unsigned char l
36、ed0,led1,led2,led3;</p><p> unsigned char value_array[5];//存放五字節(jié)數(shù)據(jù)的數(shù)組</p><p> unsigned char value_temp, value_humi;</p><p> void DHT11_Delay_10us(void)<
37、;/p><p><b> {</b></p><p> unsigned char i;</p><p><b> i--;</b></p><p><b> i--;</b></p><p><b> i--;</b><
38、;/p><p><b> i--;</b></p><p><b> i--;</b></p><p><b> i--;</b></p><p><b> }</b></p><p> /*讀一個(gè)字節(jié)的數(shù)據(jù)*/</p&
39、gt;<p> unsigned char DHT11_ReadValue(void)</p><p><b> {</b></p><p> unsigned char count, value = 0, i;</p><p> status = OK; //設(shè)定標(biāo)志為正常狀態(tài)</p
40、><p> for(i = 8; i > 0; i--)</p><p> {//高位在先</p><p> value <<= 1;</p><p> count = 0;//每一位數(shù)據(jù)前會(huì)有一個(gè)50us 的低電平時(shí)間.等待50us 低電平結(jié)束<
41、;/p><p> while((dht11 == 0) && (count++ < NUMBER));</p><p> if(count >= NUMBER) </p><p><b> {</b></p><p> status = ERROR; //設(shè)定錯(cuò)誤
42、標(biāo)志</p><p> return 0; //函數(shù)執(zhí)行過(guò)程發(fā)生錯(cuò)誤就退出函數(shù)</p><p><b> }</b></p><p> //26-28us 的高電平表示該位是0,為70us 高電平表該位1</p><p> DHT11_Delay_10us();</p>
43、<p> DHT11_Delay_10us();</p><p> DHT11_Delay_10us();</p><p> //延時(shí)30us 后檢測(cè)數(shù)據(jù)線是否還是高電平</p><p> if(dht11 != 0)</p><p><b> {</b></p><p>
44、 //進(jìn)入這里表示該位是1</p><p><b> value++;</b></p><p> //等待剩余(約40us)的高電平結(jié)束</p><p> while((dht11 != 0) && (count++ < NUMBER))</p><p><b> {</b&
45、gt;</p><p> dht11 = 1;</p><p><b> }</b></p><p> if(count >= NUMBER)</p><p><b> {</b></p><p> status = ERROR; /
46、/設(shè)定錯(cuò)誤標(biāo)志</p><p><b> return 0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> return (va
47、lue);</p><p><b> }</b></p><p> //讀溫度和濕度函數(shù),讀一次的數(shù)據(jù),共五字節(jié),讀出成功函數(shù)返回OK, 錯(cuò)誤返回ERROR</p><p> unsigned char DHT11_ReadTempAndHumi(void)</p><p><b> {</b&g
48、t;</p><p> unsigned char i = 0, check_value = 0,count = 0;</p><p> display(led0,led1,led2,led3);</p><p> //EA = 0;</p><p> dht11 = 0; //拉低數(shù)據(jù)線大于18ms 發(fā)送開(kāi)始
49、信號(hào)</p><p> display(led0,led1,led2,led3); //需大于18 毫秒</p><p> dht11 = 1; //釋放數(shù)據(jù)線,用于檢測(cè)低電平的應(yīng)答信號(hào)</p><p> //延時(shí)20-40us,等待一段時(shí)間后檢測(cè)應(yīng)答信號(hào),應(yīng)答信號(hào)是從機(jī)拉低數(shù)據(jù)線80us</p><p&g
50、t; DHT11_Delay_10us();</p><p> DHT11_Delay_10us();</p><p> DHT11_Delay_10us();</p><p> DHT11_Delay_10us();</p><p> if(dht11 != 0) //檢測(cè)應(yīng)答信號(hào),應(yīng)答信號(hào)是低電平</p
51、><p> {//沒(méi)應(yīng)答信號(hào)</p><p> return ERROR;</p><p><b> }</b></p><p><b> else</b></p><p> {//有應(yīng)答信號(hào)</p>&
52、lt;p> while((dht11 == 0)&&(count++ < NUMBER)); //等待應(yīng)答信號(hào)結(jié)束</p><p> if(count >= NUMBER) //檢測(cè)計(jì)數(shù)器是否超過(guò)了設(shè)定的范圍</p><p><b> {</b></p><p> dht11 = 1
53、;</p><p> return ERROR; //讀數(shù)據(jù)出錯(cuò),退出函數(shù)</p><p><b> }</b></p><p> count = 0;</p><p> dht11 = 1;//釋放數(shù)據(jù)線</p><p> //應(yīng)答信號(hào)后會(huì)有一個(gè)80
54、us 的高電平,等待高電平結(jié)束</p><p> while((dht11 != 0) && (count++ < NUMBER));</p><p> if(count >= NUMBER) </p><p><b> {</b></p><p> dht11 = 1;</p
55、><p> return ERROR; //退出函數(shù)</p><p><b> }</b></p><p><b> //讀出濕.溫度值</b></p><p> for(i = 0; i < SIZE; i++)</p><p><b>
56、; {</b></p><p> value_array[i]=DHT11_ReadValue();</p><p> if(status == ERROR)//調(diào)用ReadValue()讀數(shù)據(jù)出錯(cuò)會(huì)設(shè)定status 為ERROR</p><p><b> {</b></p><p>
57、 dht11 = 1;</p><p> return ERROR;</p><p><b> }</b></p><p> //讀出的最后一個(gè)值是校驗(yàn)值不需加上去</p><p> if(i != SIZE - 1)</p><p> {//讀出的五字節(jié)數(shù)據(jù)中
58、的前四字節(jié)數(shù)據(jù)和等于第五字節(jié)數(shù)據(jù)表示成功</p><p> check_value += value_array[i];</p><p><b> }</b></p><p> }//end for</p><p> display(led0,led1,led2,led3);//在沒(méi)用發(fā)
59、生函數(shù)調(diào)用失敗進(jìn)行校驗(yàn)</p><p> if(check_value == value_array[SIZE - 1])</p><p><b> {</b></p><p> value_humi = value_array[0];</p><p> value_temp = value_array[2];&
60、lt;/p><p> dht11 = 1;</p><p> return OK;//正確的讀出dht11 輸出的數(shù)據(jù)</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b>
61、</p><p> return ERROR;//校驗(yàn)數(shù)據(jù)錯(cuò)</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void delay_1_002s
62、(void)</p><p><b> {</b></p><p> unsigned char z,b,c;</p><p> for(z=0;z<10;z++)</p><p><b> {</b></p><p> for(b=0;b<160;b+
63、+)</p><p><b> {</b></p><p> for(c=0;c<207;c++);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b>&
64、lt;/p><p> void delay(unsigned char x)</p><p><b> {</b></p><p> unsigned char i,j;</p><p> for(i=0;i<x;i++)</p><p> for(j=0;j<120;j++);
65、</p><p><b> }</b></p><p> void display(unsigned char led0,led1,led2,led3)</p><p><b> {</b></p><p> P2=0xfe;P0=led_code[led0];delay(5);</p
66、><p> P2=0xfd;P0=led_code[led1];delay(5);</p><p> P2=0xfb;P0=led_code[led2]&0x7f;delay(5);</p><p> P2=0xf7;P0=led_code[led3];delay(5);</p><p><b> P2=0xff;<
67、;/b></p><p><b> }</b></p><p> unsigned char keyscan(void)</p><p><b> {</b></p><p> unsigned char cord_l;</p><p> cord_l=P3&
68、amp;0xf0;</p><p> if(cord_l!=0xf0)</p><p><b> {</b></p><p> display(led0,led1,led2,led3);</p><p> if(cord_l!=0xf0)</p><p><b> {<
69、/b></p><p> while(P3!=0xf0)</p><p><b> {</b></p><p> P3=0xf0;//等待按鍵釋放</p><p><b> }</b></p><p> return(cord_l);</
70、p><p><b> }</b></p><p> return(0xf0);</p><p><b> }</b></p><p><b> }</b></p><p> void ceshiwenshidu(void)</p>
71、<p><b> {</b></p><p> unsigned char d;</p><p> for(;flag4>0;flag4--)</p><p><b> {</b></p><p> d=DHT11_ReadTempAndHumi();</p>
72、<p> display(led0,led1,led2,led3);</p><p> if(flag3==0)</p><p><b> {</b></p><p><b> if(d==1)</b></p><p><b> {</b></p&g
73、t;<p><b> led0=16;</b></p><p><b> led1=16;</b></p><p><b> led2=16;</b></p><p><b> led3=16;</b></p><p><b&g
74、t; }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> flag4=1;</b></p><p><b> }</b></p><p> voi
75、d xianshishidu(void)</p><p><b> {</b></p><p><b> led0=17;</b></p><p> led1=value_humi/10;</p><p> led2=value_humi%10;</p><p>&l
76、t;b> led3=0;</b></p><p><b> }</b></p><p> void xianshiwendu(void)</p><p><b> {</b></p><p><b> led0=12;</b></p>
77、<p> led1=value_temp/10;</p><p> led2=value_temp%10;</p><p><b> led3=0;</b></p><p><b> }</b></p><p> void main()</p><p>&
78、lt;b> {</b></p><p> unsigned char key;</p><p><b> P3=0xf0;</b></p><p> TMOD=0x01;</p><p><b> TH0=0x3c;</b></p><p><
79、;b> TL0=0xb0;</b></p><p><b> EA=1;</b></p><p><b> ET0=1;</b></p><p><b> TR0=0;</b></p><p> delay_1_002s();</p>
80、<p> display(led0,led1,led2,led3);</p><p><b> while(1)</b></p><p><b> {</b></p><p> display(led0,led1,led2,led3);</p><p> key=keyscan
81、();</p><p> if(flag1==10)</p><p><b> {</b></p><p> ceshiwenshidu();</p><p> display(led0,led1,led2,led3);</p><p><b> }</b><
82、/p><p> switch(key)</p><p><b> {</b></p><p> case 0xe0: flag4=2,ceshiwenshidu();break;//開(kāi)始測(cè)試溫濕度</p><p> case 0xd0: xianshishidu(),flag5=1,flag2=0;bre
83、ak;//顯示濕度</p><p> case 0xb0: xianshiwendu(),flag5=1,flag2=1;break;//顯示溫度</p><p> case 0x70: flag4=1,TR0=~TR0,flag3=~flag3,flag5=0;break;</p><p><b> }</b></
84、p><p><b> }</b></p><p><b> }</b></p><p> void shishiceshi_T0(void) interrupt 1</p><p><b> {</b></p><p><b> TH0=
85、0x3c;</b></p><p><b> TL0=0xb0;</b></p><p><b> flag1++;</b></p><p> if(flag1==NUMBER)</p><p><b> {</b></p><p>
86、<b> flag1=0;</b></p><p> if(flag5==0)</p><p><b> {</b></p><p> flag2=~flag2;</p><p><b> }</b></p><p> if(flag2==0
87、)</p><p><b> {</b></p><p> xianshishidu();</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p
88、><p> xianshiwendu();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 電氣與信息工程系課程設(shè)計(jì)評(píng)分表</p><p>
89、 指導(dǎo)教師簽名:________________</p><p> 日 期:________________ </p><p> 注:①表中標(biāo)*號(hào)項(xiàng)目是硬件制作或軟件編程類課題必填內(nèi)容;</p><p> ?、诖吮硌b訂在課程設(shè)計(jì)說(shuō)明書的最后一頁(yè)。課程設(shè)計(jì)說(shuō)明書裝訂順序:封面、任務(wù)書、目錄、正文、評(píng)分表、附件(非16K大小的圖紙及程序清單)。
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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án)境溫、濕度檢測(cè)系統(tǒng)設(shè)計(jì)——課程設(shè)計(jì)論文
- 環(huán)境溫、濕度檢測(cè)系統(tǒng)設(shè)計(jì)
- 環(huán)境檢測(cè)課程設(shè)計(jì)
- 環(huán)境檢測(cè)儀b課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告---多點(diǎn)溫度檢測(cè)系統(tǒng)設(shè)計(jì)
- 環(huán)境檢測(cè)儀b課程設(shè)計(jì)報(bào)告
- 基站溫、濕度控制系統(tǒng)設(shè)計(jì)——開(kāi)題報(bào)告
- 基站溫、濕度控制系統(tǒng)設(shè)計(jì)——開(kāi)題報(bào)告
- 環(huán)境溫濕度檢測(cè)系統(tǒng)設(shè)計(jì)-自動(dòng)化單片機(jī)原理與應(yīng)用課程設(shè)計(jì)
- 電子裝置課程設(shè)計(jì)報(bào)告---溫度檢測(cè)系統(tǒng)設(shè)計(jì)
- 課程設(shè)計(jì)---黑線檢測(cè)系統(tǒng)設(shè)計(jì)
- 微機(jī)課程設(shè)計(jì)報(bào)告--溫度巡回檢測(cè)系統(tǒng)
- wincc課程設(shè)計(jì)報(bào)告--水位、水溫檢測(cè)系統(tǒng)
- 基站溫、濕度控制系統(tǒng)設(shè)計(jì)
- 基于cc2530溫濕度采集系統(tǒng)課程設(shè)計(jì)報(bào)告
- 濕度測(cè)量課程設(shè)計(jì)報(bào)告---基于濕度傳感器的測(cè)量電路設(shè)計(jì)
- 開(kāi)題報(bào)告--溫濕度檢測(cè)系統(tǒng)設(shè)計(jì)
- 課程設(shè)計(jì)-- 車速檢測(cè)系統(tǒng)
- 濕度傳感器課程設(shè)計(jì)
- 單片機(jī)原理及系統(tǒng)課程設(shè)計(jì)報(bào)告(溫度濕度控制系統(tǒng))
評(píng)論
0/150
提交評(píng)論