單片機(jī)課程設(shè)計(jì)數(shù)字溫度計(jì)_第1頁
單片機(jī)課程設(shè)計(jì)數(shù)字溫度計(jì)_第2頁
單片機(jī)課程設(shè)計(jì)數(shù)字溫度計(jì)_第3頁
單片機(jī)課程設(shè)計(jì)數(shù)字溫度計(jì)_第4頁
單片機(jī)課程設(shè)計(jì)數(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)

文檔簡介

1、前 言 單片機(jī)技術(shù)作為計(jì)算機(jī)技術(shù)的一個(gè)分支,廣泛地應(yīng)用于工業(yè)控制,智能儀器儀表,機(jī)電一體化產(chǎn)品,家用電器等各個(gè)領(lǐng)域?!皢纹瑱C(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ù)涉及的內(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ì)是針

2、對(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)容。通過此次課程設(shè)計(jì)實(shí)現(xiàn)以下三個(gè)目標(biāo):第一,讓學(xué)生初步掌握單片機(jī)課程的試驗(yàn)、設(shè)計(jì)方法,即學(xué)生根據(jù)設(shè)計(jì)要求和性能約束,查閱文獻(xiàn)資料,收集、分析類似的相關(guān)題目,并通過元器件的組裝調(diào)試等實(shí)踐環(huán)節(jié),使最終硬件電路達(dá)到題目要求的性能指標(biāo);第二,課程設(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é)過的定性分析、定量計(jì)算的方法,逐步掌握工程設(shè)計(jì)的步驟和方法

3、,了解科學(xué)實(shí)驗(yàn)的程序和實(shí)施方法。第三,培養(yǎng)學(xué)生勤于思考樂于動(dòng)手的習(xí)慣,同時(shí)通過設(shè)計(jì)并制作單片機(jī)類產(chǎn)品,使學(xué)生能夠自己不斷地學(xué)習(xí)接受新知識(shí)(如在本課設(shè)題目中存在智能測溫器件ds18b20,就是課堂環(huán)節(jié)中不曾提及的“新器件”),通過多人的合作解決現(xiàn)實(shí)中存在的問題,從而不斷地增強(qiáng)學(xué)生在該方面的自信心及興趣,也提高了學(xué)生的動(dòng)手能力,對(duì)學(xué)生以后步入社會(huì)參加工作打下一定良好的實(shí)踐基礎(chǔ)。 摘要:隨著時(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é)合不同種類的傳感器

4、,可實(shí)現(xiàn)諸如電壓、濕度、溫度、速度、硬度、壓力等的物理量的測量。本文將介紹一種基于單片機(jī)控制理論及其應(yīng)用系統(tǒng)設(shè)計(jì)的數(shù)字溫度計(jì)。 本文主要介紹了一個(gè)基于at89c51單片機(jī)的測溫系統(tǒng),詳細(xì)描述了利用數(shù)字溫度傳感器ds18b20開發(fā)測溫系統(tǒng)的過程,重點(diǎn)對(duì)傳感器在單片機(jī)喜愛的硬件連接,軟件編程以及各模塊系統(tǒng)流程進(jìn)行了詳盡分析,對(duì)各部分的電路也進(jìn)行一一介紹,該系統(tǒng)可以方便的是實(shí)現(xiàn)溫度采集和顯示,并可以根據(jù)需要任意設(shè)定上下限報(bào)警溫度,它使用起來方便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優(yōu)點(diǎn),適合我們?nèi)粘I詈凸まr(nóng)業(yè)生產(chǎn)中的溫度測量,也可以當(dāng)做溫度處理模塊嵌入其他系統(tǒng)中,作為其他主系統(tǒng)的輔助擴(kuò)展

5、。ds18b20和at89c51結(jié)合實(shí)現(xiàn)最簡溫度檢測系統(tǒng),該系統(tǒng)結(jié)構(gòu)簡單,抗干擾能力強(qiáng),適合與惡劣環(huán)境下進(jìn)行現(xiàn)場溫度測量,有廣泛的應(yīng)用前景。 本設(shè)計(jì)首先是確定目標(biāo),氣候是各個(gè)功能模塊的設(shè)計(jì),再在proteus軟件上進(jìn)行仿真,修改,仿真。本溫度計(jì)屬于多功能溫度計(jì),可以設(shè)置上下報(bào)警溫度,當(dāng)溫度不在設(shè)置范圍內(nèi)時(shí),可以報(bào)警。 關(guān)鍵詞:單片機(jī),數(shù)字控制,溫度計(jì), ds18b20,at89c51目 錄 前言1 摘要3 關(guān)鍵字3一單片機(jī)簡介511單片機(jī)的應(yīng)用512單片機(jī)的開發(fā)過程6二、設(shè)計(jì)方案621設(shè)計(jì)任務(wù)和要求622方案辯證71溫度計(jì)軟件設(shè)計(jì)流程圖72元器件的選取73系統(tǒng)最終設(shè)計(jì)方案8三、設(shè)計(jì)方案的總體設(shè)

6、計(jì)框圖831硬件電路框圖832硬件電路概述933主控電路934顯示電路1035報(bào)警溫度調(diào)節(jié)電路1036溫度傳感器及 ds18b20測溫原理11四、系統(tǒng)軟件算法設(shè)計(jì)1541主程序1542讀出溫度子程序1643溫度轉(zhuǎn)換命令子程序1744 計(jì)算溫度子程序1745 顯示數(shù)據(jù)刷新子程序1746 1602的液晶顯示18五、軟件仿真1851系統(tǒng)仿真設(shè)計(jì)1852系統(tǒng)原理圖19結(jié)與體會(huì)20附錄21參考文獻(xiàn)29二、設(shè)計(jì)方案21設(shè)計(jì)務(wù)任和要求1、基本范圍-201252、精度誤差小于0.53、led 數(shù)碼直讀顯示4、可以任意設(shè)定溫度的上下限報(bào)警功能.22方案辯證1溫度計(jì)軟件設(shè)計(jì)流程圖: 設(shè)置堆棧指針將溫度轉(zhuǎn)換為bcd

7、碼發(fā)讀存儲(chǔ)器命令讀溫度數(shù)據(jù)復(fù)位ds18b20發(fā)跳過rom命令顯示緩沖區(qū)初始化更新數(shù)據(jù)緩沖區(qū)延時(shí)發(fā)溫度轉(zhuǎn)換命令復(fù)位ds18b20發(fā)跳過rom命令開始 2元器件的選取:單片機(jī)芯片的選?。悍桨敢?采用89c51芯片作為硬件核心,利用flash rom,內(nèi)部具有4kb rom 存儲(chǔ)空間,能于3v的超低壓工作,而且與mcs-51系列單片機(jī)完全兼容,但是運(yùn)用于電路設(shè)計(jì)中時(shí)由于不具備isp在線編程技術(shù), 當(dāng)在對(duì)電路進(jìn)行調(diào)試時(shí),由于程序的錯(cuò)誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r(shí),對(duì)芯片的多次拔插會(huì)對(duì)芯片造成一定的損壞。方案二:采用at89c51單片機(jī)與mcs-51系列單片機(jī)相比有兩大優(yōu)勢:第一,片內(nèi)程序存儲(chǔ)器

8、采用閃存,使程序的寫入更加方便;第二,提供了更小尺寸的芯片,使整個(gè)硬件電路的體積更小,且管腳數(shù)目為20個(gè),與mcs-51相比減少一倍,使理解更容易。綜上所述:本課設(shè)中單片機(jī)芯片采用at89c51。 溫度傳感器的選?。?方案一:采用熱敏電阻傳感器。利用熱敏電阻隨溫度變化而顯著變化,能直接將溫度的變化轉(zhuǎn)換為能量的變化,進(jìn)而制成溫度計(jì)。但是其測溫傳感器比較復(fù)雜,而且不易通過編制程序來控制測溫精度,增大系統(tǒng)設(shè)計(jì)的難度。 方案二: 采用ds18b20溫度傳感器。ds18b20的內(nèi)部3腳(或8腳)封裝;使用特有的溫度測量技術(shù),將被測溫度轉(zhuǎn)換成數(shù)值信號(hào);3.05.5v的電源供電方式和寄生電源供電方式;rom

9、由64位二進(jìn)制數(shù)字組成,共分為8個(gè)字節(jié);ram由9個(gè)字節(jié)的高速暫存器和非易失性電擦寫rom組成。綜上所述:溫度傳感器選取智能測溫器件ds18b20。本設(shè)計(jì)顯示電路采用1602液晶顯示模塊芯片。3系統(tǒng)最終設(shè)計(jì)方案:綜上各方案所述,對(duì)此次課設(shè)的方案選定: 采用at89c51作為主控制系統(tǒng); 1602液晶顯示模塊芯片作為溫度數(shù)據(jù)顯示裝置;而智能溫度傳感器ds18b20器件作為測溫電路主要組成部分。至此,系統(tǒng)最終方案確定。三、設(shè)計(jì)方案的總體設(shè)計(jì)框圖溫度計(jì)電路設(shè)計(jì)總體設(shè)計(jì)方框圖如圖所示,控制器采用單片機(jī)at89c51,溫度傳感器采用ds18b20,用1602液晶顯示屏以串口傳送數(shù)據(jù)實(shí)現(xiàn)溫度顯示。3.1硬

10、件電路框圖: 單片機(jī)芯片at89c51復(fù)位電路晶振控制1602 顯示器溫度檢測電路ds18b20報(bào)警溫度調(diào)整鍵蜂鳴器,指示燈 圖總體設(shè)計(jì)方框圖3.2硬件電路概述:系統(tǒng)由單片機(jī)最小系統(tǒng)、顯示電路、按鍵、溫度傳感器等組成。本電路是由at89c2051單片機(jī)為控制核心,具有與mcs-51系列單片機(jī)完全兼容,程序加密等功能,帶2kb字節(jié)可編程閃存,工作電壓范圍為2.76v,全靜態(tài)工作頻率為024mhz;顯示電路由1602液晶顯示模塊芯片,可以進(jìn)行多行顯示;溫度報(bào)警按鍵設(shè)為五個(gè),可以顯示華氏溫度,調(diào)節(jié)高低報(bào)警溫度;溫度傳感器電路主要由ds18b20測溫器件構(gòu)成,該器件主要功能有:采用單總線技術(shù);每只ds

11、18b20具有一個(gè)獨(dú)立的不可修改的64位序列號(hào);低壓供電,電源范圍為35v;測溫范圍為-20+125,誤差為0.5;復(fù)位電路是10k電阻構(gòu)成的上電自動(dòng)復(fù)位。3.3主控電路單片機(jī)at89c51 具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電池供電。晶振采用12mhz。復(fù)位電路采用上電加自動(dòng)復(fù)位。主控芯片at89c51 晶振電路 復(fù)位電路3.4顯示電路 本設(shè)計(jì)顯示電路采用1602液晶顯示模塊芯片,該芯片可現(xiàn)實(shí)16x2個(gè)字符,比以前的七段數(shù)碼管led顯示器在顯示字符的數(shù)量上要多得多。另外,由于1602芯片編程比較簡單,界面直

12、觀,因此更加易于使用者的操作和觀測。1602a芯片的接口信號(hào)說明如下表:1602a芯片的接口信號(hào)說明圖 液晶顯示電路35報(bào)警溫度調(diào)節(jié)電路本系統(tǒng)一共設(shè)置了五個(gè)按鍵,k1鍵只是顯示華氏溫度,k4鍵按下不松開顯示高低報(bào)警溫度,松開后恢復(fù)顯示正常溫度,k2鍵和k3鍵是分別用來調(diào)節(jié)高低報(bào)警溫度,k鍵控制調(diào)節(jié)時(shí)的上調(diào)或下調(diào)。具體調(diào)節(jié)如將高溫報(bào)警溫度調(diào)高,第一步將k4鍵按下不松,k鍵升起位置,調(diào)節(jié)k2鍵,則高溫報(bào)警溫度向上增加,反之亦然。低溫報(bào)警同理。圖 報(bào)警點(diǎn)調(diào)節(jié)電路3.6溫度傳感器及ds18b20測溫原理ds18b20溫度傳感器是美國dallas半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏

13、電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實(shí)際要求通過簡單的編程實(shí)現(xiàn)9-12位的數(shù)字值讀數(shù)方式。ds18b20的性能特點(diǎn)如下:(1)獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信,ds18b20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與ds18b20的雙向通訊。(2)ds18b20支持多點(diǎn)組網(wǎng)功能,多個(gè)ds18b20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)測溫;(3)無須外部器件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi);(4)可通過數(shù)據(jù)線供電,電壓范圍為3.0-5.5;(5)零待機(jī)功耗;(6)溫度以9或12位數(shù)字,對(duì)應(yīng)的可分辨溫度分別為0.5、0.25、0.125和0.

14、0625,可實(shí)現(xiàn)高精度測溫;(7)用戶可定義報(bào)警設(shè)置;(8)報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件;(9)負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作;(10)測量結(jié)果直接輸出數(shù)字溫度信號(hào),以一線總線串行傳送給cpu,同時(shí)可傳送crc校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力ds18b20采用3腳pr35封裝或8腳soic封裝,其引腳排列及內(nèi)部結(jié)構(gòu)框圖如圖及測溫原理圖如下所示:圖 引腳排列圖 內(nèi)部結(jié)構(gòu)框圖預(yù)置斜率累加器比較低溫度系數(shù)振蕩器計(jì)數(shù)器1溫度寄存器tx預(yù)置=0高溫度系數(shù)振蕩器-0計(jì)數(shù)器2t1加1停止t2圖 ds18b20測溫原理圖64位rom的結(jié)構(gòu)開始

15、8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的crc檢驗(yàn)碼,這也是多個(gè)ds18b20可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器th和tl,可通過軟件寫入戶報(bào)警上下限。ds18b20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存ram和一個(gè)非易失性的可電擦除的eeram。高速暫存ram的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖4所示。頭2個(gè)字節(jié)包含測得的溫度信息,第3和第4字節(jié)th和tl的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。ds18b20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖5

16、所示。低5位一直為1,tm是工作模式位,用于設(shè)置ds18b20在工作模式還是在測試模式,ds18b20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng),r1和r0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。溫度 lsb溫度 msbth用戶字節(jié)1tl用戶字節(jié)2配置寄存器保留保留保留crctmr1r011111圖5 ds18b20的字節(jié)定義 ds18b20的分辨率定義如表1所示表1 分辨率設(shè)置表r0r1分辨率最大溫度轉(zhuǎn)移時(shí)間009位96.75ms0110位187.5ms1011位375ms1112位750ms由表1可見,ds18b20溫度轉(zhuǎn)換的時(shí)間比較長,而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長。因此,在實(shí)際應(yīng)

17、用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。主機(jī)控制ds18b20完成溫度轉(zhuǎn)換過程是:每一次讀寫之前都要對(duì)ds18b20進(jìn)行復(fù)位,即將數(shù)據(jù)總線下拉500us,然后釋放,ds18b20收到信號(hào)后等待16-60us左右,之后發(fā)出60-240us的存在低脈沖,主cpu收到此此信號(hào)表示復(fù)位成功;復(fù)位成功后發(fā)送一條rom指令,然后發(fā)送ram指令,這樣才能對(duì)ds18b20進(jìn)行預(yù)訂的讀寫操作。表2 rom指令集指令約定代碼功能讀rom33h讀ds18b20中的編碼符合rom55h發(fā)出此命令后,接著發(fā)出64位rom編碼,訪問單線總線上與該編輯相對(duì)應(yīng)的ds18b20使之做出響應(yīng),為下一步對(duì)該ds18b20的讀寫作準(zhǔn)備搜索

18、rom0f0h用于確定掛接在同一總線上的ds18b20個(gè)數(shù)和識(shí)別64位rom地址,為操作各器件作準(zhǔn)備跳過rom0cch忽略64位rom地址,直接向ds18b20發(fā)送溫度變換指令告警搜索命令0ech執(zhí)行后,只有溫度跳過設(shè)定值上限或下限的片子才能做出反應(yīng)表3 ram指令集指令約定代碼功能溫度轉(zhuǎn)換44h啟動(dòng)ds18b20進(jìn)行溫度轉(zhuǎn)換讀暫存器0beh讀暫存器9個(gè)字節(jié)內(nèi)容寫暫存器4eh將數(shù)據(jù)寫入暫存器的th、tl字節(jié)復(fù)制暫存器48h把暫存器的th、tl字節(jié)寫到e2ram中重調(diào)e2ram0b8h把e2ram中的th、tl字節(jié)寫到暫存器th、tl字節(jié)讀供電方式0b4h啟動(dòng)ds18b20發(fā)送電源供電方式的信號(hào)

19、給主cpuds18b20的測溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器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)而完成溫度測量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將最低溫所對(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í),溫度寄

20、存器的值將加1,減法計(jì)數(shù)器1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器計(jì)數(shù)到0時(shí),停止溫度寄存器的累加,此時(shí)溫度寄存器中的數(shù)值就是所測溫度值。其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)器門仍未關(guān)閉就重復(fù)上述過程,直到溫度寄存器值大致被測溫度值。測溫電路四、系統(tǒng)軟件算法設(shè)計(jì)整個(gè)系統(tǒng)是由硬件配合軟件來實(shí)現(xiàn)的,在硬件確定后,編寫的軟件的功能也就基本定型了。所以軟件的功能大致可分為兩個(gè)部分:一是監(jiān)控,這也是系統(tǒng)的核心部分,二是執(zhí)行部分,完成各個(gè)具體的功能。系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度子程序,顯示數(shù)據(jù)刷新

21、子程序等。4.1主程序主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理ds18b20的測量的當(dāng)前溫度值,溫度測量每1s進(jìn)行一次。這樣可以在一秒之內(nèi)測量一次被測溫度,其程序流程見圖所示。y發(fā)ds18b20復(fù)位命令發(fā)跳過rom命令發(fā)讀取溫度命令讀取操作,crc校驗(yàn)9字節(jié)完?crc校驗(yàn)正?確?移入溫度暫存器結(jié)束nny初始化調(diào)用顯示子程序1s到?初次上電讀出溫度值溫度計(jì)算處理顯示數(shù)據(jù)刷新發(fā)溫度轉(zhuǎn)換開始命令nyny圖 主程序流程圖圖讀溫度流程圖4.2讀出溫度子程序讀出溫度子程序的主要功能是讀出ram中的9字節(jié),在讀出時(shí)需進(jìn)行crc校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖示發(fā)ds18b20復(fù)

22、位命令發(fā)跳過rom命令發(fā)溫度轉(zhuǎn)換開始命令 結(jié)束圖 溫度轉(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ì)算溫度子程序?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é)束n

23、nyy圖計(jì)算溫度流程圖 圖顯示數(shù)據(jù)刷新流程圖4.5 顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高顯示位為0時(shí)將符號(hào)顯示位移入下一位。程序流程圖如圖。4.6 1602的液晶顯示1602液晶顯示流程圖:五、軟件仿真5.1系統(tǒng)仿真設(shè)計(jì)本設(shè)計(jì)是在proteus環(huán)境下進(jìn)行仿真的,仿真所用到的器件有:單片機(jī)at89c51,ds1820溫度傳感器,蜂鳴器,液晶顯示器,一些電阻,電容等。仿真結(jié)果如下: 顯示器顯示 傳感器溫度 高低報(bào)警溫度 高溫報(bào)警 低溫報(bào)警報(bào)警時(shí)的led燈提示5.2系統(tǒng)原理圖六、總結(jié)與體會(huì) 經(jīng)過將近三周的單片機(jī)課程設(shè)計(jì),終于完成了我的數(shù)字溫度計(jì)的設(shè)計(jì)

24、,雖然沒有完全達(dá)到設(shè)計(jì)要求,但從心底里說,還是高興的,畢竟這次設(shè)計(jì)把實(shí)物都做了出來,高興之余不得不深思呀!在本次設(shè)計(jì)的過程中,我發(fā)現(xiàn)很多的問題,雖然以前還做過這樣的設(shè)計(jì)但這次設(shè)計(jì)真的讓我長進(jìn)了很多,單片機(jī)課程設(shè)計(jì)重點(diǎn)就在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我覺的寫好一個(gè)程序并不是一件簡單的事,舉個(gè)例子,以前寫的那幾次,數(shù)據(jù)加減時(shí),我用的都是bcd碼,這一次,我全部用的都是16進(jìn)制的數(shù)直接加減,顯示處理時(shí)在用除法去刪分,感覺效果比較好,有好多的東西,只有我們?nèi)ピ囍隽?,才能真正的掌握,只學(xué)習(xí)理論有些東西是很難理解的,更談不上掌握。從這次的課程設(shè)計(jì)中,我真真正正的意識(shí)

25、到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計(jì)中的最大收獲。通過這次對(duì)數(shù)字溫度計(jì)的設(shè)計(jì)與制作,讓我了解了設(shè)計(jì)電路的程序,也讓我了解了關(guān)于數(shù)字溫度計(jì)的原理與設(shè)計(jì)理念,要設(shè)計(jì)一個(gè)電路總要先用仿真仿真成功之后才實(shí)際接線的。但是最后的成品卻不一定與仿真時(shí)完全一樣,因?yàn)椋賹?shí)際接線中有著各種各樣的條件制約著。而且,在仿真中無法成功的電路接法,在實(shí)際中因?yàn)樾酒旧淼奶匦远軌虺晒?。所以,在設(shè)計(jì)時(shí)應(yīng)考慮兩者的差異,從中找出最適合的設(shè)計(jì)方法。 通過這次學(xué)習(xí),讓我對(duì)各種電路都有了大概的了解,所以說,坐而言

26、不如立而行,對(duì)于這些電路還是應(yīng)該自己動(dòng)手實(shí)際操作才會(huì)有深刻理解。 從這次的課程設(shè)計(jì)中,我真真正正的意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計(jì)中的最大收獲。 附錄:/*#include#include /shiyongyanshi#include #define uchar unsigned char#define uint unsigned intsbit dq=p33; sbit rs =p20;sbit rw =p21;sbit en =p22;sbit k=p10;sbit

27、 k1=p14;sbit k2=p15;sbit k3=p16;sbit k4=p17;sbit led_red=p25;sbit led_blue=p26;sbit beep=p37;uchar bz=1;/beep=0;uchar ng=0; /fuhaobiaoshiwei uchar tempbuffer =temp: ;int temp_value; /溫度值 uchar code dis_title=-current temp-; void xianshi_huashi();uchar gw=40;char dw= 10;uchar xianshi_title= temp alar

28、m ;uchar xianshi_baojing=hi: lo: ; /345 10 12/-延時(shí)- void delayxus(uint x) uchar i; while(x-) for(i=0;i200;i+); /*lcd 控制*/讀lcd 狀態(tài)uchar read_lcd_state() uchar state ; rs=0;rw=1;en=1;delayxus(1);state=p0;en=0;delayxus(1); return state; / 忙等待void lcd_busy_wait() while(read_lcd_state()&0x80)=0x80);delayxu

29、s(5);/向lcd寫數(shù)據(jù) void write_lcd_data(uchar dat) lcd_busy_wait(); rs=1;rw=0;en=0;p0=dat;en=1;delayxus(1);en=0; /向lcd寫指令 void write_lcd_cmd(uchar cmd) lcd_busy_wait(); rs=0;rw=0;en=0;p0=cmd;en=1;delayxus(1);en=0; /-/lcd初始化void init_lcd() write_lcd_cmd(0x38); delayxus(1); write_lcd_cmd(0x01) ; delayxus(1)

30、; write_lcd_cmd(0x06); delayxus(1); write_lcd_cmd(0x0c) ; delayxus(1); /- /設(shè)置液晶顯示位置 void set_lcd_pos(uchar p) write_lcd_cmd(p| 0x80); /- /在lcd上顯示字符串 void dis_lcd_string(uchar p,uchar *s) /位置,字符指針 uchar i; set_lcd_pos(p);for(i=0;i16;i+) /16*2 write_lcd_data(si) ; delayxus(1); /- void delay_18b20(unsi

31、gned int i)while(i-);/-蜂鳴器- void beep() uchar i; for(i=0;i0;i-) dq = 0; / 給脈沖信號(hào) dat=1; dq = 1; / 給脈沖信號(hào) if(dq) dat|=0x80; delay_18b20(4); return(dat);/*ds18b20寫一個(gè)字節(jié)*/ void writeonechar(uchar dat) unsigned char i=0; for (i=8; i0; i-) dq = 0; dq = dat&0x01; delay_18b20(5); dq = 1; dat=1; /*讀取ds18b20當(dāng)前溫

32、度*/void readtemp(void)unsigned char a=0;unsigned char b=0;unsigned char t=0;init_ds18b20();writeonechar(0xcc); / 跳過讀序號(hào)列號(hào)的操作writeonechar(0x44); / 啟動(dòng)溫度轉(zhuǎn)換delay_18b20(100); / this message is wery importantinit_ds18b20();writeonechar(0xcc); /跳過讀序號(hào)列號(hào)的操作writeonechar(0xbe); /讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度delay_

33、18b20(100);a=readonechar(); /讀取溫度值低位 aaaaaaaaaaaaaaaaaaaab=readonechar(); /讀取溫度值高位 bbbbbbbbbb b.a temp_value= b4; void temp_to_str() /溫度數(shù)據(jù)轉(zhuǎn)換成液晶字符顯示 if(temp_value & 0xe0)=0xe0) temp_value =temp_value +1 ; ng=1;elseng=0; if(k1=0) /while(k1=0); bz=(bz+1) %2; if(bz=0) temp_value =(int)(temp_value )*(9.0

34、/5.0)+32; if(ng=1) tempbuffer9=temp_value/100+0; if(tempbuffer9= ) tempbuffer9=-; tempbuffer10=temp_value%100/10+0; /十位 tempbuffer11=temp_value%10+0; /個(gè)位 tempbuffer12=0xdf; /溫度符號(hào) tempbuffer13=c; tempbuffer14=0; /tempbuffer1=ng %10+ 0; if(ng=0) tempbuffer9=temp_value/100+0; if(temp_value/100=0) tempb

35、uffer9 = ; tempbuffer10=temp_value % 100/10+0; /十位 if(temp_value % 100/10=0) tempbuffer10 = ; tempbuffer11=temp_value%10+0; /個(gè)位 / if(temp_value%10=0) tempbuffer11 = ; tempbuffer13=c; /溫度符號(hào) if(bz=0) tempbuffer13=f; tempbuffer14=0; /tempbuffer1=ng%10+0; void delay1ms(unsigned int count)unsigned int i,j;for(i=0;icount;i+)for(j=0;j0;delay-) for(i=0;i=0) xianshi_baojing3=gw/100+0; xianshi_baojing4=gw%100/10+0

溫馨提示

  • 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)論