微機(jī)原理與單片機(jī)與接口技術(shù)課程設(shè)計(jì)_第1頁
微機(jī)原理與單片機(jī)與接口技術(shù)課程設(shè)計(jì)_第2頁
微機(jī)原理與單片機(jī)與接口技術(shù)課程設(shè)計(jì)_第3頁
微機(jī)原理與單片機(jī)與接口技術(shù)課程設(shè)計(jì)_第4頁
微機(jī)原理與單片機(jī)與接口技術(shù)課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、河南理工大學(xué)微機(jī)原理與單片機(jī)接口技術(shù)課程設(shè)計(jì)實(shí)時(shí)測(cè)溫報(bào)警系統(tǒng)姓 名: 李磊 學(xué) 號(hào): 311308001116 專業(yè)班級(jí): 電信13-4 指導(dǎo)老師: 王新 所在學(xué)院:電氣工程與自動(dòng)化學(xué)院2016年 月 日摘要本設(shè)計(jì)是一款基于單片機(jī)的實(shí)時(shí)溫度測(cè)量裝置,其中單片是數(shù)據(jù)處理的核心,用來接受和處理溫度傳感器測(cè)的數(shù)據(jù)。用溫度傳感器來獲得采樣的溫度,單片機(jī)將得到的溫度數(shù)據(jù)處理后,通過液晶顯示屏來顯示,關(guān)于時(shí)間顯示方面是通過單片機(jī)的定時(shí)中斷來實(shí)現(xiàn)的,并通過按鍵來調(diào)節(jié)顯示時(shí)間。本文簡(jiǎn)要介紹基于單片機(jī)的測(cè)溫系統(tǒng)的設(shè)計(jì)原理,并根據(jù)系統(tǒng)的原理制作出實(shí)物,能夠簡(jiǎn)單的實(shí)現(xiàn)溫度的測(cè)量。本測(cè)溫系統(tǒng)主要有以下幾個(gè)模塊構(gòu)成:測(cè)

2、溫模塊、顯示模塊、按鍵控制模塊、時(shí)間顯示模塊以及報(bào)警模塊等幾個(gè)模塊組成。測(cè)溫模塊主體是一個(gè)測(cè)溫傳感器DS18B20來進(jìn)行溫度的測(cè)量,溫度報(bào)警模塊是一個(gè)鳴蜂器,顯示模塊是通過液晶顯示屏1602來進(jìn)行溫度和時(shí)間的顯示,按鍵控制是由觸電開關(guān)跟單片機(jī)構(gòu)成,時(shí)間顯示模塊是單片機(jī)的定時(shí)中斷跟1602液晶顯示屏構(gòu)成。本設(shè)計(jì)的核心是型號(hào)為STC12C5A60S2的單片機(jī)。本系統(tǒng)的工作先由DS18B20測(cè)量溫度,經(jīng)過DS18B20內(nèi)部的轉(zhuǎn)換電路得到一組12位精度為0.0625的溫度數(shù)值通過一根單數(shù)據(jù)線將數(shù)據(jù)交給單片機(jī),單片機(jī)處理數(shù)據(jù)后將最終溫度顯示在液晶顯示屏上,當(dāng)溫度超過設(shè)定值的時(shí)候鳴蜂器鳴笛報(bào)警,單片機(jī)內(nèi)部

3、的定時(shí)中斷程序?qū)r(shí)間也同一時(shí)間顯示在液晶顯示屏上,通過按鍵可以暫停時(shí)間和溫度測(cè)量的刷新,來調(diào)節(jié)時(shí)間。本設(shè)計(jì)最終做得的實(shí)物能夠進(jìn)行0125°C的測(cè)量,24小時(shí)以內(nèi)的時(shí)間顯示以及時(shí)間調(diào)節(jié)。關(guān)鍵字:?jiǎn)纹瑱C(jī)技術(shù)、溫度采集、液晶1602顯示。目錄1、概述41.1設(shè)計(jì)背景及意義41.2設(shè)計(jì)目的41.3溫度測(cè)試報(bào)警系統(tǒng)完成的功能42、系統(tǒng)總體方案及硬件計(jì)52.1總體方案設(shè)計(jì)52.2硬件設(shè)計(jì)53、軟件設(shè)計(jì)113.1 DS18B20程序編架113.2 1602液晶顯示程序編寫框架113.3 時(shí)間及按鍵程序編寫框架113.4 總程序編寫框架114、軟件仿真125、課程設(shè)計(jì)體會(huì)13參考文獻(xiàn)附1:源程序代碼

4、附2:系統(tǒng)原理圖1概述1.1設(shè)計(jì)背景及意義溫度是生產(chǎn)過程和科學(xué)實(shí)驗(yàn)中普遍而且重要的物理參數(shù),隨著社會(huì)的發(fā)展,科技的進(jìn)步,以及測(cè)溫儀器在各個(gè)領(lǐng)域的應(yīng)用,智能化已是現(xiàn)代溫度控制系統(tǒng)發(fā)展的主流方向。特別是近年來,溫度控制系統(tǒng)已應(yīng)用到人們生活的各個(gè)方面,但溫度控制一直是一個(gè)未開發(fā)的領(lǐng)域,卻又是與人們息息相關(guān)的一個(gè)實(shí)際問題。針對(duì)這種實(shí)際情況,設(shè)計(jì)一個(gè)溫度控制系統(tǒng),具有廣泛的應(yīng)用前景與實(shí)際意義。溫度是一個(gè)重要的物理量,它反映了物體冷熱的程度,與自然界中的各種物理和化學(xué)過程相聯(lián)系。在工、農(nóng)業(yè)生產(chǎn)和日常生活中,各個(gè)環(huán)節(jié)都與溫度緊密相聯(lián),溫度的準(zhǔn)確監(jiān)測(cè)及控制占據(jù)著極其重要地位。比如,發(fā)電廠鍋爐的溫度必須控制在一

5、定的范圍之內(nèi);許多化學(xué)反應(yīng)的工藝過程必須在適當(dāng)?shù)臏囟认虏拍苷_M(jìn)行等。沒有合適的溫度環(huán)境,許多電子設(shè)備就不能正常工作,糧倉的儲(chǔ)糧就會(huì)變質(zhì)霉?fàn)€,酒類的品質(zhì)就沒有保障??梢?,溫度的測(cè)量和控制是非常重要的。隨著電子技術(shù)和微型計(jì)算機(jī)的迅速發(fā)展,單片機(jī)在電子產(chǎn)品中的應(yīng)用已經(jīng)越來越廣泛。利用單片機(jī)對(duì)溫度進(jìn)行控制的技術(shù)也隨之而生,并日益發(fā)展和完善,且越來越顯示出它的優(yōu)越性。1.2 設(shè)計(jì)目的本設(shè)計(jì)的內(nèi)容是溫度測(cè)試報(bào)警系統(tǒng),控制對(duì)象是溫度。溫度控制在日常生活及工業(yè)領(lǐng)域應(yīng)用相當(dāng)廣泛,比如溫室、水池、發(fā)酵缸、電源等場(chǎng)所的溫度控制。而以往溫度控制是由人工完成的而且不夠重視,其實(shí)在很多場(chǎng)所溫度都需要監(jiān)控以防止發(fā)生意外。

6、針對(duì)此問題,本系統(tǒng)設(shè)計(jì)的目的是實(shí)現(xiàn)一種可連續(xù)高精度調(diào)溫的溫度測(cè)試報(bào)警系統(tǒng),它應(yīng)用廣泛,功能強(qiáng)大,小巧美觀,便于攜帶,是一款既實(shí)用又廉價(jià)的控制系統(tǒng)。1.3 溫度測(cè)試報(bào)警系統(tǒng)完成的功能本設(shè)計(jì)是對(duì)溫度進(jìn)行實(shí)時(shí)監(jiān)測(cè)與報(bào)警,設(shè)計(jì)的溫度報(bào)警系統(tǒng)實(shí)現(xiàn)了基本的溫度測(cè)試和報(bào)警功能:當(dāng)溫度超過設(shè)定的溫度閥值的時(shí)候鳴蜂器發(fā)聲來進(jìn)行報(bào)警,同時(shí)通過1602液晶顯示屏顯示當(dāng)時(shí)的時(shí)間跟溫度便于對(duì)溫度的管理。2系統(tǒng)總體方案及硬件設(shè)計(jì)2.1總體方案設(shè)計(jì)考慮使用溫度傳感器,結(jié)合單片機(jī)電路設(shè)計(jì),采用一只DS18B20溫度傳感器,直接讀取被測(cè)溫度值,之后進(jìn)行轉(zhuǎn)換,依次完成設(shè)計(jì)要求。在本系統(tǒng)的電路設(shè)計(jì)方框圖如圖1.1所示,它由三部分組

7、成:控制部分主芯片采用單片機(jī)STC12C5160S2;顯示部分采用液晶屏1602進(jìn)行顯示;溫度采集部分采用DS18B20溫度傳感器。 單 片 機(jī)DS18B20液晶顯示鳴蜂器STC12C5160S2 按鍵控制圖21 溫度計(jì)電路總體設(shè)計(jì)方案2.2硬件設(shè)計(jì)1. 控制部分單片機(jī)STC12C5160S2具有低電壓供電和體積小等特點(diǎn),很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用,系統(tǒng)應(yīng)用三節(jié)電池供電。2. 顯示部分顯示電路采用1602液晶顯示屏。3. 溫度采集部分DS18B20溫度傳感器是美國DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫。這一部分

8、主要完成對(duì)溫度信號(hào)的采集和轉(zhuǎn)換工作,由DS18B20數(shù)字溫度傳感器及其與單片機(jī)的接口部分組成。數(shù)字溫度傳感器DS18B20把采集到的溫度通過數(shù)據(jù)引腳傳到單片機(jī)的P1.3口,單片機(jī)接受溫度并存儲(chǔ)。此部分只用到DS18B20和單片機(jī),硬件很簡(jiǎn)單1) DS18B20的性能特點(diǎn)如下9:1) 獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;2) 多個(gè)DS18B20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;3) 無須外部器件;4) 可通過數(shù)據(jù)線供電,電壓范圍為3.05.5V;5) 零待機(jī)功耗;6) 溫度以3位數(shù)字顯示;7) 用戶可定義報(bào)警設(shè)置;8) 報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件;

9、9) 負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。 (2) DS18B20的內(nèi)部結(jié)構(gòu)DS18B20采用3腳PR35封裝,如圖1.2所示;DS18B20的內(nèi)部結(jié)構(gòu),如圖3所示。圖22 DS18B20封裝(3) DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成5:1) 64位光刻ROM。開始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前56位的CRC校驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因10。64位閃速ROM的結(jié)構(gòu)如下.表21 ROM結(jié)構(gòu)8b檢驗(yàn)CRC48b序列號(hào)8b工廠代碼(10H) MSB LSB MSB LSB MSB LSB圖2

10、3 DS18B20內(nèi)部結(jié)構(gòu)2) 非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL,可通過軟件寫入用戶報(bào)警上下限值。3) 高速暫存存儲(chǔ),可以設(shè)置DS18B20溫度轉(zhuǎn)換的精度。DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的E2PRAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖1.3所示。頭2個(gè)字節(jié)包含測(cè)得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。它的內(nèi)部存儲(chǔ)器結(jié)構(gòu)和字節(jié)定義如圖1.3所示。低5位一直為,TM是

11、工作模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。 表22 DS18B20內(nèi)部存儲(chǔ)器結(jié)構(gòu)Byte0溫度測(cè)量值LSB(50H)Byte1溫度測(cè)量值MSB(50H)E2PROMByte2TH高溫寄存器ß-àTH高溫寄存器Byte3TL低溫寄存器ß-àTL 低溫寄存器Byte4配位寄存器ß-à配位寄存器Byte5預(yù)留(FFH)Byte6預(yù)留(0CH)Byte7預(yù)留(IOH)Byte8循環(huán)冗余碼校驗(yàn)(CRC) 262) 非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL,可通過軟件寫入用戶報(bào)警上下限值。3) 高速暫存存儲(chǔ),可以設(shè)置DS18B20溫度轉(zhuǎn)

12、換的精度。DS18B20出廠時(shí)該位被設(shè)置為0,用戶要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率,如圖1.4。圖23 DS18B20字節(jié)定義TM R1R0 1 1 1 1 1由表1.1可見,分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1、2字節(jié)。單片機(jī)可以通過單線接口讀出該數(shù)

13、據(jù),讀數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以0.0625LSB形式表示。當(dāng)符號(hào)位S0時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位S1時(shí),表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制數(shù)值。 表1.2是一部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)6。表24 DS18B20溫度轉(zhuǎn)換時(shí)間表R1R0分辨率/位溫度最大轉(zhuǎn)向時(shí)間/ms00993.750110187.510113751112750表25一部分溫度對(duì)應(yīng)值表溫度/二進(jìn)制表示十六進(jìn)制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 000

14、1 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H續(xù)表25-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H4) CRC的產(chǎn)生 在64 b ROM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余校驗(yàn)碼(CRC)。主機(jī)根據(jù)ROM的前56位來計(jì)算CRC值,并和存入DS18B20中的CR

15、C值做比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。另外,由于DS18B20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化DS18B20(發(fā)復(fù)位脈沖)發(fā)ROM功能命令發(fā)存儲(chǔ)器操作命令處理數(shù)。4.液晶顯示部分1管腳:1602共16個(gè)管腳,但是編程用到的主要管腳不過三個(gè),分別為:RS(數(shù)據(jù)命令選擇端),R/W(讀寫選擇端),E(使能信號(hào));以后編程便主要圍繞這三個(gè)管腳展開進(jìn)行初始化,寫命令,寫數(shù)據(jù)。以下具體闡述這三個(gè)管腳:RS為寄存器選擇,高電平選擇數(shù)據(jù)寄存器,低電平選擇指令寄存器。R/W為讀寫選擇,高電平進(jìn)行讀操作,低電

16、平進(jìn)行寫操作。E端為使能端,后面和時(shí)序聯(lián)系在一起。除此外,D0D7分別為8位雙向數(shù)據(jù)線。 2指令集:LCD_1602 初始化指令小結(jié):0x38 設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口0x01 清屏0x0F 開顯示,顯示光標(biāo),光標(biāo)閃爍0x08 只開顯示0x0e 開顯示,顯示光標(biāo),光標(biāo)不閃爍0x0c 開顯示,不顯示光標(biāo)0x06 地址加1,當(dāng)寫入數(shù)據(jù)的時(shí)候光標(biāo)右移0x02 地址計(jì)數(shù)器AC=0;(此時(shí)地址為0x80) 光標(biāo)歸原點(diǎn),但是DDRAM中斷內(nèi)容不變0x18 光標(biāo)和顯示一起向左移動(dòng)3顯示地址:LCD1602內(nèi)部RAM顯示緩沖區(qū)地址的映射圖,000F、404F分別對(duì)應(yīng)LCD1602的上下兩行的

17、每一個(gè)字符,只要往對(duì)應(yīng)的RAM地址寫入要顯示字符的ASCII代碼,就可以顯示出來。3軟件設(shè)計(jì)3.1 DS18B20程序編寫框架查詢DS18B20的技術(shù)手冊(cè),通過技術(shù)手冊(cè)上的時(shí)序圖編寫初始化指令、寫指令、讀指令程序,最后編寫一個(gè)獲得溫度的函數(shù),通過函數(shù)返回值將測(cè)的數(shù)據(jù)傳遞給單片機(jī)。3.2 1602液晶顯示程序編寫框架與DS18B20編寫的過程大體相同,最終也將液晶顯示程序封裝成一個(gè)無返回值函數(shù)。3.3 時(shí)間及按鍵程序編寫框架時(shí)間是通過單片機(jī)的定時(shí)中斷來獲得的,按鍵是采用獨(dú)立按鍵通過P32, P33,P34來進(jìn)行控制的。3.4 總程序編寫框架將鍵盤函數(shù)跟報(bào)警程序放入主函數(shù)中,而1602顯示程序和D

18、S18B20程序放在定時(shí)中斷程序中,來實(shí)現(xiàn)程序的隔離,放置按鍵函數(shù)影響顯示和測(cè)溫程序的時(shí)序,來造成程序運(yùn)行混亂。4軟件仿真5課程設(shè)計(jì)體會(huì)通過本次課程設(shè)計(jì)使我對(duì)單片機(jī)的認(rèn)識(shí)跟進(jìn)一步,讓我了解學(xué)習(xí)了單片機(jī)的擴(kuò)展功能,不再局限于以前單片機(jī)只能做一個(gè)流水燈或者數(shù)碼顯示的思想。本次設(shè)計(jì)遇到了很多困難,一個(gè)最大的困難就是關(guān)于DS18B20的時(shí)序編寫,由于不知到C語言程序在單片機(jī)中的運(yùn)行時(shí)間,所以在編寫時(shí)序的時(shí)候出了很多問題,最后經(jīng)過查資料和通過keil軟件的指令運(yùn)行時(shí)間查詢功能,最終才編寫出正確的時(shí)序程序。另一個(gè)困難是各個(gè)程序模塊的協(xié)調(diào)運(yùn)行問題,單個(gè)的模塊能夠正常運(yùn)行,但是多個(gè)放在一起就會(huì)出現(xiàn)程序運(yùn)行錯(cuò)誤

19、,經(jīng)過努力最終找到是因?yàn)槎鄠€(gè)模塊的放在一起會(huì)影響各自的時(shí)序才造成程序錯(cuò)誤,最終我通過中斷函數(shù)將各個(gè)模塊進(jìn)行隔離完成了最終的設(shè)計(jì)。這次的設(shè)計(jì),雖然困難重重,但是最終當(dāng)系統(tǒng)能夠正常工作的時(shí)候,我感到無比的喜悅。參考文獻(xiàn)微機(jī)原理與單片機(jī)接口技術(shù)C語言程序設(shè)計(jì)附1:源程序代碼/*用1602實(shí)現(xiàn)數(shù)字表顯示、調(diào)節(jié)時(shí)間功能能作為50年限的萬年歷*/#include <stc12.h>#include <string.h>#include <intrins.h>#include <ds18b20.h>#define T 25.6sbit RS=P10;sbit

20、RW=P11;sbit E=P12;sbit key1=P32;sbit key2=P33;sbit key3=P34;sbit beer=P31;uchar code table1="T: 00.0"uchar code table2="time: 00:00:00"uchar code table3=" ERROR "uchar code number=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xdf,0x43;uchar tt0,miao,shi,fen,k1,k2,k

21、3;uint temperature;void delay1(uint z)/延時(shí)程序uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void lcdwrite_com(uchar com) /lcd寫命令RW=0;RS=0;E=0;delay1(1);E=1;delay1(5);P0=com;delay1(5);E=0;void lcdwrite_dat(uchar dat) /lcd寫數(shù)據(jù)RW=0;RS=1;E=0;delay1(1);E=1;delay1(5);P0=dat;delay1(5);E=0;void ggn1(uchar m)

22、/有關(guān)k2鍵的函數(shù)1,時(shí)間控制函數(shù)lcdwrite_com(0x38);delay1(5);lcdwrite_com(0x0f);delay1(5);lcdwrite_com(0x80+m);delay1(5);void mfs(uchar s,uchar m) /時(shí)分秒顯示子程序 uchar s1,s2;lcdwrite_com(0x80+m);delay1(5);s1=s/10;s2=s%10;lcdwrite_dat(numbers1);delay1(5);lcdwrite_dat(numbers2);delay1(5);void mfs1(uint s,uchar m) /溫度顯示程序

23、 uchar s1,s2,s3;lcdwrite_com(0x80+0x40+m);delay1(5);s1=s/100;s2=s%100/10;s3=s%10;lcdwrite_dat(numbers1);delay1(5);lcdwrite_dat(numbers2);delay1(5);lcdwrite_dat(0x2e);delay1(5);lcdwrite_dat(numbers3);delay1(5);void scankey() /獨(dú)立鍵盤if(key1=0) /k1鍵是暫停并進(jìn)入功能設(shè)置delay1(10);if(key1=0)k2=0;if(k1=0)k1=1;TR0=0;e

24、lsek1=0;TR0=1;lcdwrite_com(0x0c);delay1(10);while(!key1);if(k1=1) /k2鍵是位選功能鍵 if(key2=0)delay1(10);if(key2=0)k2+;if(k2=1)ggn1(12);if(k2=2)ggn1(9);if(k2=3)ggn1(6);if(k2=4)k2=0;while(!key2);if(k2) /k3鍵是加一if(key3=0)delay1(10);if(key3=0)if(k2=1)miao+;if(miao=60)miao=0;mfs(miao,0x0c);lcdwrite_com(0x80+0x0

25、b);if(k2=2)fen+;if(fen=60)fen=0;mfs(fen,0x09);lcdwrite_com(0x80+0x08);if(k2=3)shi+;if(shi=24)shi=0;mfs(shi,0x06);lcdwrite_com(0x80+0x05);while(!key3); void init()/ 程序初始化uchar i,t1,t2;lcdwrite_com(0x38); /顯示模式設(shè)置 /delay1(5);lcdwrite_com(0x08); /顯示關(guān)閉delay1(5);lcdwrite_com(0x01); /顯示清屏delay1(5);lcdwrite

26、_com(0x0c); /顯示開及光標(biāo)設(shè)置delay1(5);lcdwrite_com(0x06); /顯示光標(biāo)移動(dòng)設(shè)置 /delay1(5);t1=strlen(table2);for(i=0;i<t1;i+)lcdwrite_dat(table2i);delay1(20);lcdwrite_com(0x80+0x40);delay1(5);t2=strlen(table1);for(i=0;i<t2;i+)lcdwrite_dat(table1i);delay1(20);lcdwrite_dat(0xdf); /顯示溫度的單位delay1(5);lcdwrite_dat(0x4

27、3);delay1(5);EA=1;ET0=1;TR0=1;TMOD=0x01;TH0=0x4c;TL0=0X00;void main()init();while(1)scankey();if(temperature/10>T)beer=0;elsebeer=1;void time0() interrupt 1 /秒表計(jì)數(shù)TH0=0x4c;TL0=0X00;tt0+;if(tt0=20)miao+;tt0=0;temperature=Get_Tmp();mfs1(temperature,4);if(miao<60)mfs(miao,0X0C);elsemiao=0;fen+;if(

28、fen<60)mfs(fen,9);elsefen=0;shi+;if(shi<24) mfs(shi,6);elseshi=0;/#include <stc12.h>/#include <intrins.h>/數(shù)據(jù)口define interfacesbit DQ = P13; /18b20接口uint wendu; /溫度值 variable of wenduerature/*精確延時(shí)函數(shù)* */void Delay(uchar a1,b1,c1) unsigned char a,b,c;for(a=0;a<a1;a+)for(b=0;b<b1

29、;b+)for(c=0;c<c1;c+);/*DS18B20*/ void Init_Ds18b20(void) /DS18B20初始化send reset and initialization commandEA=0;DQ = 1; /DQ復(fù)位,不要也可行。Delay(1,1,1); /稍做延時(shí) 10usDQ = 0; /單片機(jī)拉低總線Delay(6,1,63); /600 us /精確延時(shí),維持至少480us/Delay(1,1,15); /20usDQ = 1; /釋放總線,即拉高了總線Delay(5,1,63); /500us /此處延時(shí)有足夠,確保能讓DS18B20發(fā)出存在脈沖

30、。EA=1;uchar Read_One_Byte() /讀取一個(gè)字節(jié)的數(shù)據(jù)read a byte date /讀數(shù)據(jù)時(shí),數(shù)據(jù)以字節(jié)的最低有效位先從總線移出uchar i = 0;uchar dat;EA=0;for(i=8;i>0;i-) DQ = 0; /將總線拉低,要在1us之后釋放總線 /單片機(jī)要在此下降沿后的15us內(nèi)讀數(shù)據(jù)才會(huì)有效。 _nop_(); /至少維持了1us,表示讀時(shí)序開始 dat >>= 1; /讓從總線上讀到的位數(shù)據(jù),依次從高位移動(dòng)到低位。 DQ = 1; /釋放總線,此后DS18B20會(huì)控制總線,把數(shù)據(jù)傳輸?shù)娇偩€上 Delay(1,1,1); /延時(shí)10us,此處參照推薦的讀時(shí)序圖,盡量

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論