




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 目 錄 內(nèi)容提要1 關(guān)鍵字1 引言1 二、設(shè)計(jì)方案 2 21設(shè)計(jì)任務(wù)和要求 2 22方案辯證 3 1溫度計(jì)軟件設(shè)計(jì)流程圖 3 2元器件的選取 4 3系統(tǒng)最終設(shè)計(jì)方案 4 三、設(shè)計(jì)方案的總體設(shè)計(jì)框圖 4 31硬件電路框圖 4 32硬件電路概述 5 33主控電路 5 34顯示電路 6 35報(bào)警溫度調(diào)節(jié)電路 7 36溫度傳感器及DS18B20測(cè)溫原理 7 3.7 升降溫調(diào)節(jié)電路7 四、系統(tǒng)軟件算法設(shè)計(jì)8 4.1主程序 9 42讀出溫度子程序9 4.3溫度轉(zhuǎn)換命令子程序10 44 計(jì)算溫度子程序 10 45 顯示數(shù)據(jù)刷新子程序 10 46 1602的液晶顯示 10 五、軟件
2、仿真 10 51系統(tǒng)仿真設(shè)計(jì) 11 52系統(tǒng)仿真原理圖 13 52系統(tǒng)原理圖 14 結(jié)與體會(huì)15 附錄15 一【內(nèi)容摘要】 隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活,工作,科研,各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù),單片機(jī)具有體積小、功耗低、控制功能強(qiáng)、擴(kuò)展靈活、微型化和使用方便等優(yōu)點(diǎn),廣泛應(yīng)用于儀器儀表中,結(jié)合不同種類的傳感器,可實(shí)現(xiàn)諸如電壓、濕度、溫度、速度、硬度、壓力等的物理量的測(cè)量。本文將介紹一種基于單片機(jī)控制理論及其應(yīng)用系統(tǒng)設(shè)計(jì)的數(shù)字溫度計(jì)。 本文主要介紹了一個(gè)基于AT89C51單片機(jī)的測(cè)溫系統(tǒng),詳細(xì)描述了利用數(shù)字溫度傳感器DS18B20開發(fā)測(cè)溫系統(tǒng)的過(guò)程,重點(diǎn)對(duì)傳感器在單
3、片機(jī)喜愛的硬件連接,軟件編程以及各模塊系統(tǒng)流程進(jìn)行了詳盡分析,對(duì)各部分的電路也進(jìn)行一一介紹,該系統(tǒng)可以方便的是實(shí)現(xiàn)溫度采集和顯示,并可以根據(jù)需要任意設(shè)定上下限報(bào)警溫度,它使用起來(lái)方便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優(yōu)點(diǎn),適合我們?nèi)粘I詈凸まr(nóng)業(yè)生產(chǎn)中的溫度測(cè)量,也可以當(dāng)做溫度處理模塊嵌入其他系統(tǒng)中,作為其他主系統(tǒng)的輔助擴(kuò)展。DS18B20和AT89C51結(jié)合實(shí)現(xiàn)最簡(jiǎn)溫度檢測(cè)系統(tǒng),該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,抗干擾能力強(qiáng),適合與惡劣環(huán)境下進(jìn)行現(xiàn)場(chǎng)溫度測(cè)量,有廣泛的應(yīng)用前景。 本設(shè)計(jì)首先是確定目標(biāo),氣候是各個(gè)功能模塊的設(shè)計(jì),再在Proteus軟件上進(jìn)行仿真,修改,仿真。本溫度計(jì)屬于多功能溫度計(jì)
4、,可以設(shè)置上下報(bào)警溫度,當(dāng)溫度不在設(shè)置范圍內(nèi)時(shí),可以報(bào)警,同時(shí)根據(jù)設(shè)定的溫度范圍通過(guò)升降溫電路控制環(huán)境的溫度達(dá)到恒溫效果。 【關(guān)鍵詞】 單片機(jī),數(shù)字控制,溫度計(jì), DS18B20,STC89C52RC【引言】 單片機(jī)技術(shù)作為計(jì)算機(jī)技術(shù)的一個(gè)分支,廣泛地應(yīng)用于工業(yè)控制,智能儀器儀表,機(jī)電一體化產(chǎn)品,家用電器等各個(gè)領(lǐng)域。“單片機(jī)原理與應(yīng)用”在工科院校各專業(yè)中已作為一門重要的技術(shù)基礎(chǔ)課而普遍開設(shè)。學(xué)生在課程設(shè)計(jì),畢業(yè)設(shè)計(jì),科研項(xiàng)目中會(huì)廣泛應(yīng)用到單片機(jī)知識(shí),而且,進(jìn)入社會(huì)后也會(huì)廣泛接觸到單片機(jī)的工程項(xiàng)目。鑒于此,提高“單片機(jī)原理及應(yīng)用”課的教學(xué)效果,讓學(xué)生參與課程設(shè)計(jì)實(shí)習(xí)甚為重要。單片機(jī)應(yīng)用技術(shù)涉及的
5、內(nèi)容十分廣泛,如何使學(xué)生在有限的時(shí)間內(nèi)掌握單片機(jī)應(yīng)用的基本原理及方法,是一個(gè)很有價(jià)值的教學(xué)項(xiàng)目。為此,我們進(jìn)行了“單片機(jī)的學(xué)習(xí)與應(yīng)用”方面的課程設(shè)計(jì),鍛煉學(xué)生的動(dòng)腦動(dòng)手以及協(xié)作能力。 單片機(jī)課程設(shè)計(jì)是針對(duì)模擬電子技術(shù),數(shù)字邏輯電路,電路,單片機(jī)的原理及應(yīng)用課程的要求,對(duì)我們進(jìn)行綜合性實(shí)踐訓(xùn)練的實(shí)踐學(xué)習(xí)環(huán)節(jié),它包括選擇課設(shè)任務(wù)、軟件設(shè)計(jì),硬件設(shè)計(jì),調(diào)試和編寫課設(shè)報(bào)告等實(shí)踐內(nèi)容。通過(guò)此次課程設(shè)計(jì)實(shí)現(xiàn)以下三個(gè)目標(biāo):第一,讓學(xué)生初步掌握單片機(jī)課程的試驗(yàn)、設(shè)計(jì)方法,即學(xué)生根據(jù)設(shè)計(jì)要求和性能約束,查閱文獻(xiàn)資料,收集、分析類似的相關(guān)題目,并通過(guò)元器件的組裝調(diào)試等實(shí)踐環(huán)節(jié),使最終硬件電路達(dá)到題目要求的性能指標(biāo)
6、;第二,課程設(shè)計(jì)為后續(xù)的畢業(yè)設(shè)計(jì)打好基礎(chǔ),畢業(yè)設(shè)計(jì)是系統(tǒng)的工程設(shè)計(jì)實(shí)踐,而課程設(shè)計(jì)的著眼點(diǎn)是讓學(xué)生開始從理論學(xué)習(xí)的軌道上逐漸引向?qū)嶋H運(yùn)用,從已學(xué)過(guò)的定性分析、定量計(jì)算的方法,逐步掌握工程設(shè)計(jì)的步驟和方法,了解科學(xué)實(shí)驗(yàn)的程序和實(shí)施方法。第三,培養(yǎng)學(xué)生勤于思考樂于動(dòng)手的習(xí)慣,同時(shí)通過(guò)設(shè)計(jì)并制作單片機(jī)類產(chǎn)品,使學(xué)生能夠自己不斷地學(xué)習(xí)接受新知識(shí)(如在本課設(shè)題目中存在智能測(cè)溫器件DS18B20,就是課堂環(huán)節(jié)中不曾提及的“新器件”),通過(guò)多人的合作解決現(xiàn)實(shí)中存在的問題,從而不斷地增強(qiáng)學(xué)生在該方面的自信心及興趣,也提高了學(xué)生的動(dòng)手能力,對(duì)學(xué)生以后步入社會(huì)參加工作打下一定良好的實(shí)踐基礎(chǔ)。溫度可調(diào)上下限檢測(cè)報(bào)警
7、恒溫設(shè)計(jì)二、設(shè)計(jì)方案21設(shè)計(jì)務(wù)任和要求1、基本范圍-551252、精度誤差小于0.53、LCD 數(shù)碼直讀顯示4、可以任意設(shè)定溫度的上下限報(bào)警功能.22方案辯證1溫度計(jì)軟件設(shè)計(jì)流程圖: 設(shè)置堆棧指針將溫度轉(zhuǎn)換為BCD碼發(fā)讀存儲(chǔ)器命令讀溫度數(shù)據(jù)復(fù)位DS18B20發(fā)跳過(guò)ROM命令顯示緩沖區(qū)初始化更新數(shù)據(jù)緩沖區(qū)延時(shí)發(fā)溫度轉(zhuǎn)換命令復(fù)位DS18B20發(fā)跳過(guò)ROM命令開始 2元器件的選取:?jiǎn)纹瑱C(jī)芯片的選?。悍桨敢?采用89C51芯片作為硬件核心,利用Flash ROM,內(nèi)部具有4KB ROM 存儲(chǔ)空間,能于3V的超低壓工作,而且與MCS-51系列單片機(jī)完全兼容,但是運(yùn)用于電路設(shè)計(jì)中時(shí)由于不具備ISP在線編程
8、技術(shù), 當(dāng)在對(duì)電路進(jìn)行調(diào)試時(shí),由于程序的錯(cuò)誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r(shí),對(duì)芯片的多次拔插會(huì)對(duì)芯片造成一定的損壞。方案二:采用STC89C52RC單片機(jī)作為硬件核心,該單片機(jī)指令代碼完全兼容傳統(tǒng)的8051單片機(jī)。STC89C52RC的工作電壓為5.5-3.4V,工作頻率范圍0-80MHz,程序存儲(chǔ)器flash容量為8KB,隨機(jī)存儲(chǔ)器RAM空間為512字節(jié),完全滿足設(shè)計(jì)溫度控制系統(tǒng)的要求。綜上所述:本課設(shè)中單片機(jī)芯片采用STC89C52RC。 溫度傳感器的選取: 方案一:采用熱敏電阻傳感器。利用熱敏電阻隨溫度變化而顯著變化,能直接將溫度的變化轉(zhuǎn)換為能量的變化,進(jìn)而制成溫度計(jì)。但是其測(cè)溫傳
9、感器比較復(fù)雜,而且不易通過(guò)編制程序來(lái)控制測(cè)溫精度,增大系統(tǒng)設(shè)計(jì)的難度。 方案二: 采用DS18B20溫度傳感器。DS18B20的內(nèi)部3腳(或8腳)封裝;使用特有的溫度測(cè)量技術(shù),將被測(cè)溫度轉(zhuǎn)換成數(shù)值信號(hào);3.05.5V的電源供電方式和寄生電源供電方式;ROM由64位二進(jìn)制數(shù)字組成,共分為8個(gè)字節(jié);RAM由9個(gè)字節(jié)的高速暫存器和非易失性電擦寫ROM組成。綜上所述:溫度傳感器選取智能測(cè)溫器件DS18B20。本設(shè)計(jì)顯示電路采用1602液晶顯示模塊芯片。3系統(tǒng)最終設(shè)計(jì)方案:綜上各方案所述,對(duì)此次課設(shè)的方案選定: 采用STC89C52RC作為主控制系統(tǒng); 1602液晶顯示模塊芯片作為溫度數(shù)據(jù)顯示裝置;而智
10、能溫度傳感器DS18B20器件作為測(cè)溫電路主要組成部分。至此,系統(tǒng)最終方案確定。三、設(shè)計(jì)方案的總體設(shè)計(jì)框圖溫度計(jì)電路設(shè)計(jì)總體設(shè)計(jì)方框圖如圖所示,控制器采用單片機(jī)STC89C52RC,溫度傳感器采用DS18B20,用1602液晶顯示屏以串口傳送數(shù)據(jù)實(shí)現(xiàn)溫度顯示。3.1硬件電路框圖: 單片機(jī)芯片STC89C52RC復(fù)位電路晶振控制1602 顯示器溫度檢測(cè)電路DS18B20報(bào)警溫度調(diào)整鍵蜂鳴器,指示燈 圖總體設(shè)計(jì)方框圖3.2硬件電路概述:系統(tǒng)由單片機(jī)最小系統(tǒng)、顯示電路、按鍵、溫度傳感器等組成。本電路是由STC89C52RC單片機(jī)為控制核心,具有與8051系列單片機(jī)完全兼容,程序加密等功能,8KB字節(jié)
11、可編程閃存,工作電壓范圍為2.76V,全靜態(tài)工作頻率為024MHZ;顯示電路由1602液晶顯示模塊芯片,可以進(jìn)行多行顯示;溫度報(bào)警按鍵設(shè)為五個(gè),可以顯示華氏溫度,調(diào)節(jié)高低報(bào)警溫度;溫度傳感器電路主要由DS18B20測(cè)溫器件構(gòu)成,該器件主要功能有:采用單總線技術(shù);每只DS18B20具有一個(gè)獨(dú)立的不可修改的64位序列號(hào);低壓供電,電源范圍為35V;測(cè)溫范圍為-55+125,誤差為±0.5;復(fù)位電路是10K電阻構(gòu)成的上電自動(dòng)復(fù)位。3.3主控電路單片機(jī)STC89C52RC 具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)
12、電池供電。晶振采用12MHZ。復(fù)位電路采用上電加自動(dòng)復(fù)位。主控芯片8051 晶振電路 復(fù)位電路3.4顯示電路 本設(shè)計(jì)顯示電路采用1602液晶顯示模塊芯片,該芯片可現(xiàn)實(shí)16x2個(gè)字符,比以前的七段數(shù)碼管LED顯示器在顯示字符的數(shù)量上要多得多。另外,由于1602芯片編程比較簡(jiǎn)單,界面直觀,因此更加易于使用者的操作和觀測(cè)。1602A芯片的接口信號(hào)說(shuō)明圖 液晶顯示電路35報(bào)警溫度調(diào)節(jié)電路本系統(tǒng)一共設(shè)置了四個(gè)按鍵,K1鍵只是按一下上限報(bào)警溫度加1,松開后恢復(fù)顯示正常溫度,K2鍵按一下上限報(bào)警溫度減1,松開后恢復(fù)顯示正常溫度,當(dāng)調(diào)節(jié)的上限報(bào)警溫度與環(huán)境實(shí)際的溫度相比,環(huán)境實(shí)際溫度高于上限報(bào)警溫度時(shí)系統(tǒng)會(huì)出
13、現(xiàn)聲音報(bào)警及燈光警示,同理,K3,K4的調(diào)節(jié)方法一樣,當(dāng)環(huán)境實(shí)際溫度低于下限報(bào)警溫度時(shí),系統(tǒng)出現(xiàn)報(bào)警。報(bào)警點(diǎn)調(diào)節(jié)電路3.6溫度傳感器及DS18B20測(cè)溫原理預(yù)置斜率累加器比較低溫度系數(shù)振蕩器計(jì)數(shù)器1溫度寄存器Tx預(yù)置=0高溫度系數(shù)振蕩器-0計(jì)數(shù)器2T1加1停止T2 64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器TH和TL,可通過(guò)軟件寫入戶報(bào)警上下限。 DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EERAM。高速暫存
14、RAM的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖4所示。頭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ù)值。該字節(jié)各位的定義如圖5所示。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式,DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來(lái)設(shè)置分辨率。DS18B20的測(cè)溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)
15、器1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。器件中還有一個(gè)計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù)進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將最低溫所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器1、溫度寄存器中,計(jì)數(shù)器1和溫度寄存器被預(yù)置在最低溫所對(duì)應(yīng)的一個(gè)基數(shù)值。減法計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,減法計(jì)數(shù)器1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器計(jì)
16、數(shù)到0時(shí),停止溫度寄存器的累加,此時(shí)溫度寄存器中的數(shù)值就是所測(cè)溫度值。其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)器門仍未關(guān)閉就重復(fù)上述過(guò)程,直到溫度寄存器值大致被測(cè)溫度值。 測(cè)溫電路3.6升溫、降溫控制電路 加溫電路系統(tǒng)在檢測(cè)到當(dāng)前溫度低于設(shè)定的下限值時(shí),在報(bào)警器啟動(dòng)報(bào)警同時(shí),升溫電路開始工作,使得Q2三極管導(dǎo)通,繼電器RL1吸合加熱燈開始點(diǎn)亮加熱,起到升溫的效果,此時(shí)升溫指示燈點(diǎn)亮,表示升溫系統(tǒng)開始工作。降溫電路系統(tǒng)在檢測(cè)到當(dāng)前溫度超高設(shè)定的上限值時(shí),在報(bào)警器啟動(dòng)報(bào)警同時(shí),降溫電路開始工作,使得Q3三極管導(dǎo)通,繼電器RL2吸合風(fēng)扇開始吹風(fēng),起到降溫的效果,此時(shí)降溫指示燈點(diǎn)亮,表示降溫系統(tǒng)開始
17、工作。四、系統(tǒng)軟件算法設(shè)計(jì)整個(gè)系統(tǒng)是由硬件配合軟件來(lái)實(shí)現(xiàn)的,在硬件確定后,編寫的軟件的功能也就基本定型了。所以軟件的功能大致可分為兩個(gè)部分:一是監(jiān)控,這也是系統(tǒng)的核心部分,二是執(zhí)行部分,完成各個(gè)具體的功能。系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度子程序,顯示數(shù)據(jù)刷新子程序等。4.1主程序主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量的當(dāng)前溫度值,溫度測(cè)量每1s進(jìn)行一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,其程序流程見圖所示。Y發(fā)DS18B20復(fù)位命令發(fā)跳過(guò)ROM命令發(fā)讀取溫度命令讀取操作,CRC校驗(yàn)9字節(jié)完?CRC校驗(yàn)正?確?移入溫度暫存器結(jié)束
18、NNY初始化調(diào)用顯示子程序1S到?初次上電讀出溫度值溫度計(jì)算處理顯示數(shù)據(jù)刷新發(fā)溫度轉(zhuǎn)換開始命令NYNY 圖1主程序流程圖 圖2讀溫度流程圖 4.2讀出溫度子程序發(fā)DS18B20復(fù)位命令發(fā)跳過(guò)ROM命令發(fā)溫度轉(zhuǎn)換開始命令 結(jié)束讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖示圖 溫度轉(zhuǎn)換流程圖4.3溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時(shí)轉(zhuǎn)換時(shí)間約為750ms,在本程序設(shè)計(jì)中采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如上圖,圖9所示4.4 計(jì)算溫度子程序計(jì)算溫度
19、子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖所示。 開始溫度零下?溫度值取補(bǔ)碼置“”標(biāo)志計(jì)算小數(shù)位溫度BCD值 計(jì)算整數(shù)位溫度BCD值 結(jié)束置“+”標(biāo)志NY溫度數(shù)據(jù)移入顯示寄存器十位數(shù)0?百位數(shù)0?十位數(shù)顯示符號(hào)百位數(shù)不顯示百位數(shù)顯示數(shù)據(jù)(不顯示符號(hào)) 結(jié)束NNYY 圖計(jì)算溫度流程圖 圖顯示數(shù)據(jù)刷新流程圖4.5 顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高顯示位為0時(shí)將符號(hào)顯示位移入下一位。程序流程圖如圖。1602液晶顯示流程圖4.6 1602的液晶顯示五、軟件仿真5.1系統(tǒng)仿真設(shè)計(jì)本設(shè)計(jì)是在Proteus環(huán)境
20、下進(jìn)行仿真的,仿真所用到的器件有:?jiǎn)纹瑱C(jī)AT89C51,DS1820溫度傳感器,蜂鳴器,液晶顯示器,一些電阻,電容等。仿真結(jié)果如下: 顯示器顯示 傳感器溫度 5.2系統(tǒng)仿真原理圖5.3系統(tǒng)原理圖六、總結(jié)與體會(huì) #include <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charsbit DQ=P23;/ds18b20與單片機(jī)連接口sbit RS=P25;sbit RW=P26;sbit EN=P27;uchar data disdata5;uint tvalu
21、e,CurrentT=0;/溫度值uchar tflag;/溫度正負(fù)標(biāo)志#define LCD_BUS P0sbit SetKey = P22;sbit UpKey = P21;sbit DnKey = P20;sbit BEEP = P24;sbit Heat = P10;sbit Cool = P11;unsigned char AlarmTempLow=10,AlarmTempTop=40,Set=0,NG=0;void delayms(uint ms) /延時(shí)xx毫秒 uchar i;while(ms-) for(i=0;i<120;i+);void command(uint c
22、om) /LCD寫指令 RS=0; /RS為0 LCD_BUS=com; /裝載指令 delayms(5); /延時(shí)5ms EN=1; /LCD使能 delayms(5);/延時(shí)5ms EN=0;/LCD不使能void write_dat(uchar dat) /LCD寫數(shù)據(jù) RS=1;/RS為1 LCD_BUS=dat;/裝載數(shù)據(jù) delayms(5); /延時(shí)5ms EN=1; /LCD使能 delayms(5); /延時(shí)5ms EN=0; /LCD不使能void writestring(uchar x,uchar y,uchar *s) /LCD 寫字符串 if (y = 0) comm
23、and(0x80 + x); /表示第一行 else command(0xC0 + x); /表示第二行 while (*s) /判斷是否字符串的結(jié)尾 write_dat( *s); /顯示當(dāng)前字符 s +; /字符串地址加1 void writeChar(uchar x,uchar y,uchar s) /LCD 寫字符串 if (y = 0) command(0x80 + x); /表示第一行 else command(0xC0 + x); /表示第二行 write_dat( s); /顯示當(dāng)前字符 void LCD_Initial()/LCD初始化 EN=0; /LCD不使能 RW=0;
24、 /RW為0 command(0x38);/發(fā)送初始化指令 command(0x0c);/發(fā)送初始化指令 command(0x06); /發(fā)送初始化指令 command(0x01); /發(fā)送初始化指令 command(0x80+0x02);/發(fā)送LCD初始位置/*DS1820程序*/void delay_18B20(unsigned int i)/延時(shí)1微秒 while(i-);void ds1820rst(void)/*ds1820復(fù)位*/ unsigned char x=0;DQ = 1; /DQ復(fù)位delay_18B20(4); /延時(shí)DQ = 0; /DQ拉低delay_18B20(1
25、00); /精確延時(shí)大于480usDQ = 1; /拉高delay_18B20(40); uchar ds1820rd(void)/*讀數(shù)據(jù)*/ unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i-) DQ = 0; /給脈沖信號(hào)dat>>=1;DQ = 1; /給脈沖信號(hào)if(DQ)dat|=0x80;delay_18B20(10); return(dat);void ds1820wr(uchar wdata)/*寫數(shù)據(jù)*/unsigned char i=0; for (i=8; i>0; i-) DQ = 0
26、;DQ = wdata&0x01;delay_18B20(10);DQ = 1;wdata>>=1; unsigned int Read_Temperature(void)/*讀取溫度值并轉(zhuǎn)換*/uchar a,b;ds1820rst(); ds1820wr(0xcc);/*跳過(guò)讀序列號(hào)*/ds1820wr(0x44);/*啟動(dòng)溫度轉(zhuǎn)換*/ds1820rst(); ds1820wr(0xcc);/*跳過(guò)讀序列號(hào)*/ ds1820wr(0xbe);/*讀取溫度*/ a=ds1820rd();b=ds1820rd();tvalue=b;tvalue<<=8;tval
27、ue=tvalue|a; if(tvalue<0x0fff) tflag=0; else tvalue=tvalue+1;tflag=1;tvalue=tvalue*(0.625);/溫度值擴(kuò)大10倍,精確到1位小數(shù)CurrentT=tvalue;return(tvalue);void Display_Temperature()/顯示溫度uchar flagdat; disdata0=tvalue/1000+0x30;/百位數(shù) disdata1=tvalue%1000/100+0x30;/十位數(shù) disdata2=tvalue%100/10+0x30;/個(gè)位數(shù) disdata3=tval
28、ue%10+0x30;/小數(shù)位 if(tflag=0) flagdat=0x20;/正溫度不顯示符號(hào) else flagdat=0x2d;/負(fù)溫度顯示負(fù)號(hào):- /if(disdata0=0x30) /disdata0=0x20;/如果百位為0,不顯示/if(disdata1=0x30) disdata1=0x20;/如果百位為0,十位為0也不顯示 /if(tflag=1)writeChar(10,0,flagdat);/wr_com(0x8a);wr_dat(flagdat);/顯示符號(hào)位writeChar(11,0,disdata0);/wr_com(0x8b);wr_dat(disdata
29、0);/顯示百位writeChar(12,0,disdata1);/wr_com(0x8c);wr_dat(disdata1);/顯示十位 writeChar(13,0,disdata2);/wr_com(0x8d);wr_dat(disdata2);/顯示個(gè)位 writeChar(14,0,0X2E);/wr_com(0x8e);wr_dat(0x2e);/顯示小數(shù)點(diǎn) writeChar(15,0,disdata3);/wr_com(0x8f);wr_dat(disdata3);/顯示小數(shù)位elsewriteChar(10,0,disdata0);/wr_com(0x8a);wr_dat(d
30、isdata0);/顯示百位writeChar(11,0,disdata1);/wr_com(0x8b);wr_dat(disdata1);/顯示十位 writeChar(12,0,disdata2);/wr_com(0x8c);wr_dat(disdata2);/顯示個(gè)位 writeChar(13,0,0X2e);/wr_com(0x8d);wr_dat(0x2e);/顯示小數(shù)點(diǎn) writeChar(14,0,disdata3);/wr_com(0x8e);wr_dat(disdata3);/顯示小數(shù)位 void SetFun(void)unsigned char i1=0,i2=0,i3=
31、0,i4=0,i5=0,i6=0;if(SetKey=0)delayms(20);if(SetKey=0)if(Set<2)Set+;else Set=0;switch(Set)case 0: writestring(0,1," ");writestring(8,1," ");break;case 1:writestring(0,1,">");writestring(8,1," ");break;case 2:writestring(0,1," ");writestring(8,1,
32、">");break;while(SetKey=0);if(UpKey=0)&&(Set!=0)delayms(20);if(UpKey=0)switch(Set)case 1:if(AlarmTempLow<99) AlarmTempLow+;else AlarmTempLow=99; break;case 2:if(AlarmTempTop<99) AlarmTempTop+;else AlarmTempTop=99; break;i1 = AlarmTempLow/100; /獲得溫度值的百位 i2 = AlarmTempLow%10
33、0/10; /獲得溫度值的十位i3 = AlarmTempLow%10; /獲得溫度值的個(gè)位i4 = AlarmTempTop/100; /獲得溫度值的百位 i5 = AlarmTempTop%100/10; /獲得溫度值的十位i6 = AlarmTempTop%10; /獲得溫度值的個(gè)位writestring(5,1," ");writestring(13,1," ");if(i1!=0)writeChar(5,1,i1+'0');if(i1=0)&&(i2!=0) writeChar(5,1,i2+'0'
34、;);if(i1!=0) writeChar(6,1,i2+'0');if(i1=0)&&(i2=0)writeChar(5,1,i3+'0');else if(i1=0)&&(i2!=0)writeChar(6,1,i3+'0');if(i1!=0) writeChar(7,1,i3+'0');if(i4!=0)writeChar(13,1,i4+'0');if(i4=0)&&(i5!=0) writeChar(13,1,i5+'0');if(i4!
35、=0) writeChar(14,1,i5+'0');if(i4=0)&&(i5=0)writeChar(13,1,i6+'0');else if(i4=0)&&(i5!=0)writeChar(14,1,i6+'0');if(i4!=0) writeChar(15,1,i6+'0');while(UpKey=0);if(DnKey=0)&&(Set!=0)delayms(20);if(DnKey=0)switch(Set)case 1:if(AlarmTempLow>0) A
36、larmTempLow-;else AlarmTempLow=0; break;case 2:if(AlarmTempTop>0) AlarmTempTop-;else AlarmTempTop=0; break;i1 = AlarmTempLow/100; /獲得溫度值的百位 i2 = AlarmTempLow%100/10; /獲得溫度值的十位i3 = AlarmTempLow%10; /獲得溫度值的個(gè)位i4 = AlarmTempTop/100; /獲得溫度值的百位 i5 = AlarmTempTop%100/10; /獲得溫度值的十位i6 = AlarmTempTop%10; /
37、獲得溫度值的個(gè)位writestring(5,1," ");writestring(13,1," ");if(i1!=0)writeChar(5,1,i1+'0');if(i1=0)&&(i2!=0) writeChar(5,1,i2+'0');if(i1!=0) writeChar(6,1,i2+'0');if(i1=0)&&(i2=0)writeChar(5,1,i3+'0');else if(i1=0)&&(i2!=0)writeChar(6,1,i3+'0');if(i1!=0) writeChar(7,
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- CPA財(cái)務(wù)成本管理第十二章產(chǎn)品成本計(jì)算相關(guān)習(xí)題及解析20題
- 聘用幼兒園園長(zhǎng)協(xié)議書
- 爸爸的背影成長(zhǎng)的故事6篇
- 接受忠告作文800字10篇
- 一堂生動(dòng)的語(yǔ)文課生動(dòng)的課堂記敘文6篇
- 2025年凝血酶原復(fù)合物項(xiàng)目提案報(bào)告
- 2025年鈹板、棒、異形件項(xiàng)目申請(qǐng)報(bào)告
- 2025年鄉(xiāng)村醫(yī)生公共衛(wèi)生服務(wù)考試題庫(kù):公共衛(wèi)生服務(wù)慢性病管理心理輔導(dǎo)試題
- 保護(hù)環(huán)境的重要性:議論文作文11篇
- 2025年俄語(yǔ)ТРКИ考試語(yǔ)法應(yīng)用專項(xiàng)試卷
- 新教科版三年級(jí)下冊(cè)科學(xué)期末測(cè)試卷及完整答案(網(wǎng)校專用)
- 2024屆福建省寧德市英語(yǔ)七下期末綜合測(cè)試試題含答案
- 三年級(jí)下冊(cè)道德與法治課件-第二單元《我在這里長(zhǎng)大》教材解讀-人教(新版)
- 《天然氣壓縮機(jī)》
- 鐵路行車組織(高職)全套教學(xué)課件
- 市政道路工程技術(shù)標(biāo)正文樣本
- 大腦后動(dòng)脈動(dòng)脈瘤破裂伴蛛網(wǎng)膜下腔出血個(gè)案護(hù)理
- 東方市生活垃圾焚燒爐渣綜合利用項(xiàng)目 環(huán)評(píng)報(bào)告
- 如何預(yù)防錯(cuò)混料
- 不規(guī)格符石鑲嵌工藝
- 全新版大學(xué)進(jìn)階英語(yǔ)綜合教程2綜合訓(xùn)練第二單元(含答案)
評(píng)論
0/150
提交評(píng)論