畢業(yè)設(shè)計---數(shù)字溫度計設(shè)計與實現(xiàn)_第1頁
已閱讀1頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  姓 名 </p><p>  專 業(yè) 班 級 微電子 </p><p>  論 文 名 稱 數(shù)字溫度計設(shè)計與實現(xiàn) </p><p>  指 導(dǎo) 教 師

2、 </p><p><b>  目錄</b></p><p><b>  摘要:3</b></p><p>  Abstract3</p><p><b>  第一章 前言3</b></p><p>

3、  1.1 課題研究的意義4</p><p>  1.2本課題主要的研究工作4</p><p>  第二章 總體方案設(shè)計5</p><p><b>  2.1設(shè)計要求5</b></p><p>  2.2選擇方案和論證5</p><p>  第三章 系統(tǒng)硬件設(shè)計6</p>

4、;<p>  3.1硬件總設(shè)計6</p><p>  3.2單片機介紹7</p><p>  3.3單片機的應(yīng)用8</p><p>  3.4單片機的開發(fā)過程9</p><p>  3.5 DS18B20介紹11</p><p>  3.6顯示電路設(shè)計12</p><p&g

5、t;  3.7電路設(shè)計圖12</p><p>  第四章 系統(tǒng)軟件設(shè)計13</p><p>  4.1主程序流程圖13</p><p>  4.2溫度轉(zhuǎn)換命令子程序13</p><p>  4.3顯示數(shù)據(jù)刷新子程序14</p><p><b>  致謝14</b></p>

6、;<p><b>  參考文獻15</b></p><p><b>  附錄一15</b></p><p><b>  源程序代碼15</b></p><p><b>  摘要:</b></p><p>  利用單片機AT89S52作為

7、控制器,以及用改進型智能溫度傳感器DS18B20作為溫度采集器,設(shè)計了一款數(shù)字溫度計。該數(shù)字溫度計能夠測出-55~+125 ℃之間的溫度,與傳統(tǒng)的溫度計相比,具有讀數(shù)方便、測溫范圍廣、測溫準(zhǔn)確等特點,適合日常生活、工業(yè)生產(chǎn)和科學(xué)研究等領(lǐng)域?qū)囟葴y量的需要。</p><p>  關(guān)鍵詞:溫度測量; DS18B20; AT89S52; 數(shù)字溫度計。</p><p><b>  Abs

8、tract</b></p><p>  A digital thermometer was designed with AT89C2051 MCU as controller and improved intelligent temperature sensor DS18B20 as temperature collector. The temperature between -55~+125 ℃ c

9、an be measured by this digital thermo-meter. Compared with the traditional thermometer, this digital thermometer has features of convenient reading, wide range temperature measurement, accurate temperature measurement an

10、d so on, it is suitable for the requirement of temperature measurement in daily life, industrial p</p><p>  Keywords: temperature measurement; DS18B20; AT89C2051; digital thermometer</p><p><

11、b>  第一章 前言</b></p><p>  單片機技術(shù)作為計算機技術(shù)的一個分支,廣泛地應(yīng)用于工業(yè)控制,智能儀器儀表,機電一體化產(chǎn)品,家用電器等各個領(lǐng)域。“單片機原理與應(yīng)用”在工科院校各專業(yè)中已作為一門重要的技術(shù)基礎(chǔ)課而普遍開設(shè)。學(xué)生在課程設(shè)計,畢業(yè)設(shè)計,科研項目中會廣泛應(yīng)用到單片機知識,而且,進入社會后也會廣泛接觸到單片機的工程項目。鑒于此,提高“單片機原理及應(yīng)用”課的教學(xué)效果,讓學(xué)生參

12、與課程設(shè)計實習(xí)甚為重要。單片機應(yīng)用技術(shù)涉及的內(nèi)容十分廣泛,如何使學(xué)生在有限的時間內(nèi)掌握單片機應(yīng)用的基本原理及方法,是一個很有價值的教學(xué)項目。為此,我們進行了“單片機的學(xué)習(xí)與應(yīng)用”方面的課程設(shè)計,鍛煉學(xué)生的動腦動手以及協(xié)作能力。</p><p>  單片機課程設(shè)計是針對模擬電子技術(shù),數(shù)字邏輯電路,電路,單片機的原理及應(yīng)用課程的要求,對我們進行綜合性實踐訓(xùn)練的實踐學(xué)習(xí)環(huán)節(jié),它包括選擇課設(shè)任務(wù)、軟件設(shè)計,硬件設(shè)計,調(diào)試

13、和編寫課設(shè)報告等實踐內(nèi)容。通過此次課程設(shè)計實現(xiàn)以下三個目標(biāo):第一,讓學(xué)生初步掌握單片機課程的試驗、設(shè)計方法,即學(xué)生根據(jù)設(shè)計要求和性能約束,查閱文獻資料,收集、分析類似的相關(guān)題目,并通過元器件的組裝調(diào)試等實踐環(huán)節(jié),使最終硬件電路達到題目要求的性能指標(biāo);第二,課程設(shè)計為后續(xù)的畢業(yè)設(shè)計打好基礎(chǔ),畢業(yè)設(shè)計是系統(tǒng)的工程設(shè)計實踐,而課程設(shè)計的著眼點是讓學(xué)生開始從理論學(xué)習(xí)的軌道上逐漸引向?qū)嶋H運用,從已學(xué)過的定性分析、定量計算的方法,逐步掌握工程設(shè)計的

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

15、課題研究的意義</p><p>  隨著科技的不斷發(fā)展,現(xiàn)代社會對各種信息參數(shù)的準(zhǔn)確度和精確度要求都有了幾何的增長,而如何準(zhǔn)確而又迅速獲得這些參數(shù)就需要受制于現(xiàn)代信息基礎(chǔ)的發(fā)展水品。在三大信息信息采集(即傳感器技術(shù))信息傳輸(通信技術(shù))和信息處理(計算機技術(shù))中,傳感器屬于信息技術(shù)的前沿尖端產(chǎn)品,尤其是溫度傳感器技術(shù),在我國各領(lǐng)域已經(jīng)引用的非常廣泛,可以說是參透到社會的每一個領(lǐng)域,人民的生活與環(huán)境的溫度息息相關(guān),

16、在工業(yè)生產(chǎn)過程中需要實時測量溫度,在農(nóng)業(yè)生產(chǎn)也離不開溫度測量,因此研究溫度的測量方法和裝置具有重要的意義。</p><p>  1.2本課題主要的研究工作</p><p>  溫度是工業(yè)對象的一個重要的被控參數(shù)。然而采用的測溫元件和測溫方法也不相同:產(chǎn)品的工藝不同,控制溫度的精度也不同。傳統(tǒng)的控制方式已不能滿足高精度,高速度的控制要求,如溫度控制表溫度接觸器,其主要缺點是溫度波動范圍大,由

17、于他主要通過控制接觸器的通斷時間比例來達到改變加熱功率的目的,受儀表本身誤差和交流接觸器的壽命限制,通斷頻率很低。近幾年來快速發(fā)展了多種先進的溫度控制方式,如:PID控制,模糊控制,神經(jīng)網(wǎng)絡(luò)及遺傳算法控制等。</p><p>  這些控制技術(shù)大大的提高了控制精度,不但使控制變的簡便,而且使產(chǎn)品的質(zhì)量更好,降低了產(chǎn)品的成本,提高了生產(chǎn)效率。</p><p>  第二章 總體方案設(shè)計<

18、/p><p><b>  2.1設(shè)計要求</b></p><p>  1.溫度大于上限或小于下限時可以進行兩路繼電器的控制,并有狀態(tài)指示燈顯示。</p><p>  2.溫度上限下限可以設(shè)定。</p><p>  3.用按鍵進行上下限的設(shè)定</p><p><b>  操作:</b&g

19、t;</p><p>  1.按下設(shè)置鍵,進入溫度下限設(shè)置報警值,按加則加,減則減</p><p>  2.再按下設(shè)置鍵,進入溫度上限設(shè)置報警值,按加則加,減則減</p><p>  3.再按下設(shè)置鍵,返回顯示當(dāng)時的溫度值。</p><p>  2.2選擇方案和論證</p><p><b>  芯片方案一&l

20、t;/b></p><p>  采用AT89S51芯片作為硬件核心,內(nèi)部具有4KB ROM存儲空間,能于3V的超低壓工作,而且與MCS-51系列的單片機完全兼容,但是運用于電路設(shè)計中時由于不具備ISP在線編程技術(shù),所以在對電路進行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,對芯片的多次撥插會對芯片造成一定的損壞。</p><p><b>  芯片方案二<

21、;/b></p><p>  采用AT89S52芯片,AT89S52是一種低功耗,高性能的8位CMOS微控制器,具有8K的可編程Flash存儲器。同時具有AT89S51的功能,且具有在線編程可擦除技術(shù),當(dāng)對電路進行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦蛐略龉δ苄枰獰氤绦驎r,不需要對芯片多次拔插,所以不會對芯片造成損壞,隱刺選擇采用AT89S52作為主控制系統(tǒng)核心。</p><p>&l

22、t;b>  溫度傳感方案一</b></p><p>  由于本設(shè)計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進行A/D轉(zhuǎn)換后,就可以用單片機進行數(shù)據(jù)的處理,在現(xiàn)實點路上,就可以將被測溫度顯示出來,這種設(shè)計需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。</p><p><b>  溫度傳感方案二</b>&

23、lt;/p><p>  進而考慮到用溫度傳感器,在單片機電路設(shè)計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進行轉(zhuǎn)換,就可以滿足設(shè)計要求。</p><p><b>  最終方案</b></p><p>  采用AT89S52作為主控制芯片, DS18B20采集溫度

24、來設(shè)置此畢業(yè)作品。</p><p>  第三章 系統(tǒng)硬件設(shè)計</p><p><b>  3.1硬件總設(shè)計</b></p><p>  系統(tǒng)框圖:如圖3-1所示 </p><p><b>  圖3-1 系統(tǒng)框圖</b></p><p><b>  3

25、.2單片機介紹</b></p><p>  二十世紀(jì)跨越了三個“電”的時代,即電氣時代、電子時代和現(xiàn)已進入的電腦時代。不過,這種電腦,通常是指個人計算機,簡稱PC機。它由主機、鍵盤、顯示器等組成。還有一類計算機,大多數(shù)人卻不怎么熟悉。這種計算機就是把智能賦予各種機械的單片機(亦稱微控制器)。顧名思義,這種計算機的最小系統(tǒng)只用了一片集成電路,即可進行簡單運算和控制。因為它體積小,通常都藏在被控機械的“肚

26、子”里。它在整個裝置中,起著有如人類頭腦的作用,它出了毛病,整個裝置就癱瘓了?,F(xiàn)在,這種單片機的使用領(lǐng)域已十分廣泛,如智能儀表、實時工控、通訊設(shè)備、導(dǎo)航系統(tǒng)、家用電器等。各種產(chǎn)品一旦用上了單片機,就能起到使產(chǎn)品升級換代的功效,常在產(chǎn)品名稱前冠以形容詞——“智能型”,如智能型洗衣機等。</p><p>  計算機的產(chǎn)生加快了人類改造世界的步伐,但是它畢竟體積大。單片機在這種情況下誕生了。截止今日,單片機應(yīng)用技術(shù)飛速

27、發(fā)展,縱觀我們現(xiàn)在生活的各個領(lǐng)域,從導(dǎo)彈的導(dǎo)航裝置,到飛機上各種儀表的控制,從計算機的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,到工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,以及我們生活中廣泛使用的各種智能IC卡、電子寵物等,這些都離不開單片機。</p><p>  單片機自70年代問世以來得到蓬勃發(fā)展,目前單片機功能正日漸完善:單片機集成越來越多資源,內(nèi)部存儲資源日益豐富,用戶不需要擴充資源就可以完成項目開發(fā),不僅是開發(fā)簡單,產(chǎn)品小巧美觀,

28、同時抗干擾能力加強,系統(tǒng)也更加穩(wěn)定,使得它更加適合工業(yè)控制領(lǐng)域,具有更加廣闊的市場前景;提供在線編程能力,加速了產(chǎn)品的開發(fā)進程,為企業(yè)產(chǎn)品上市贏得寶貴時間。此外單片機具有性能高、速度快、體積小、價格低、穩(wěn)定可靠、應(yīng)用廣泛、通用性強等突出優(yōu)點。單片機的設(shè)計目標(biāo)主要是增強“控制”能力,滿足實時控制(就是快速反應(yīng)) 的需要。</p><p>  我作為21世紀(jì)的工科大學(xué)生,學(xué)的是電氣的專業(yè),無論是從事科學(xué)研究工作,還是

29、開辦電子器件的工廠還是經(jīng)營電子廠品的貿(mào)易,不僅要熟練地使用通用微機進行各種數(shù)據(jù)處理,還要把計算機技術(shù)運用到本專業(yè)領(lǐng)域或相關(guān)領(lǐng)域,既具有開發(fā)創(chuàng)新能力。這就要求我們要熟練地掌握單片機。</p><p>  單片機是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計時器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬

30、多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的計算機系統(tǒng)。這些電路能在軟件的控制下準(zhǔn)確、迅速、高效地完成程序設(shè)計者實現(xiàn)規(guī)定的任務(wù)。</p><p><b>  3.3單片機的應(yīng)用</b></p><p>  單片機廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過程控制等領(lǐng)域,大致可分如下幾個范疇:</p>

31、<p>  1.在智能儀器儀表上的應(yīng)用 </p><p>  單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等優(yōu)點,廣泛應(yīng)用于儀器儀表中,結(jié)合不同類型的傳感器,可實現(xiàn)諸如電壓、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。采用單片機控制使得儀器儀表數(shù)字化、智能化、微型化,且功能比起采用電子或數(shù)字電路更加強大。例如精密的測量設(shè)備(功率計,示波器,各

32、種分析儀)。</p><p>  2.在工業(yè)控制中的應(yīng)用 </p><p>  用單片機可以構(gòu)成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)。例如工廠流水線的智能化管</p><p>  理,電梯智能化控制、各種報警系統(tǒng),與計算機聯(lián)網(wǎng)構(gòu)成二級控制系統(tǒng)等。 </p><p>  3.在家用電器中的應(yīng)用 </p><p>  可以這樣

33、說,現(xiàn)在的家用電器基本上都采用了單片機控制,從電飯褒、洗衣機、電冰箱、空調(diào)機、彩電、其他音響視頻器材、再到電子秤量設(shè)備,五花八門,無所不在。 </p><p>  4.在計算機網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用 </p><p>  現(xiàn)代的單片機普遍具備通信接口,可以很方便地與計算機進行數(shù)據(jù)通信,為在計算機網(wǎng)絡(luò)和通信設(shè)備間的應(yīng)用提供了極好的物質(zhì)條件,現(xiàn)在的通信設(shè)備基本上都實現(xiàn)了單片機智能控制,從手機,

34、電話機、小型程控交換機、樓宇自動通信呼叫系統(tǒng)、列車無線通信、再到日常工作中隨處可見的移動電話,集群移動通信,無線電對講機等。 </p><p>  5.單片機在醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用 </p><p>  單片機在醫(yī)用設(shè)備中的用途亦相當(dāng)廣泛,例如醫(yī)用呼吸機,各種分析儀,監(jiān)護儀,超聲診斷設(shè)備及病床呼叫系統(tǒng)等等。 </p><p>  6.在各種大型電器中的模塊化應(yīng)用 &

35、lt;/p><p>  某些專用單片機設(shè)計用于實現(xiàn)特定功能,從而在各種電路中進行模塊化應(yīng)用,而不要求使用人員了解其內(nèi)部結(jié)構(gòu)。如音樂集成單片機,看似簡單的功能,微縮在純電子芯片中(有別于磁帶機的原理),就需要復(fù)雜的類似于計算機的原理。如:音樂信號以數(shù)字的形式存于存儲器中(類似于ROM),由微控制器讀出,轉(zhuǎn)化為模擬音樂電信號(類似于聲卡)。 </p><p>  在大型電路中,這種模塊化應(yīng)用極大地

36、縮小了體積,簡化了電路,降低了損壞、錯誤率,也方便于更換。 </p><p>  7.單片機在汽車設(shè)備領(lǐng)域中的應(yīng)用 </p><p>  單片機在汽車電子中的應(yīng)用非常廣泛,例如汽車中的發(fā)動機控制器,基于CAN總線的汽車發(fā)動機智能電子控制器,GPS導(dǎo)航系統(tǒng),abs防抱死系統(tǒng),制動系統(tǒng)等等。 </p><p>  此外,單片機在工商,金融,科研、教育,國防航空航天等領(lǐng)域

37、都有著十分廣泛的用途。</p><p>  3.4單片機的開發(fā)過程</p><p>  這里所說的開發(fā)過程并不是一般書中所說的從任務(wù)分析開始,我們假設(shè)已設(shè)計并制作好硬件,下面就是編寫軟件的工作。在編寫軟件之前,首先要確定一些常數(shù)、地址,事實上這些常數(shù)、地址在設(shè)計階段已被直接或間接地確定下來了。如當(dāng)某器件的連線設(shè)計好后,其地址也就被確定了,當(dāng)器件的功能被確定下來后,其控制字也就被確定了。然后

38、用文本編輯器(如EDIT、CCED等)編寫軟件,編寫好后,用編譯器對源程序文件編譯,查錯,直到?jīng)]有語法錯誤,除了極簡單的程序外,一般應(yīng)用仿真機對軟件進行調(diào)試,直到程序運行正確為止。運行正確后,就可以寫片(將程序固化在EPROM中)。在源程序被編譯后,生成了擴展名為HEX的目標(biāo)文件,一般編程器能夠識別這種格式的文件,只要將此文件調(diào)入即可寫片。</p><p>  單片機 AT89S52 如圖3-2所示</p&

39、gt;<p>  圖3-2 單片機原理圖</p><p>  而AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器。使用Atmel公司高度密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)

40、用系統(tǒng)提供高靈活、超有效的解決方案。</p><p>  AT89S52具有以下標(biāo)準(zhǔn)功能:8K字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護

41、方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。</p><p>  AT89S52主要性能</p><p>  與MCS-51單片機產(chǎn)品兼容</p><p>  8K字節(jié)在系統(tǒng)可編程Flash存儲器</p><p><b>  1000次擦寫周期</b></p>

42、<p>  全靜態(tài)操作:0Hz~33Hz</p><p><b>  三級加密程序存儲器</b></p><p>  32個可編程I/O口線</p><p>  三個16位定時器/計數(shù)器</p><p><b>  八個中斷源</b></p><p>  全雙工UA

43、RT串行通道</p><p>  低功耗空閑和掉電模式</p><p><b>  掉電后中斷可喚醒</b></p><p><b>  看門狗定時器</b></p><p><b>  雙數(shù)據(jù)指針</b></p><p><b>  掉電標(biāo)識

44、符</b></p><p>  3.5 DS18B20介紹</p><p>  傳感器 如圖3-3所示</p><p>  圖3-3 實物圖 </p><p>  DS18020數(shù)字溫度計以9位數(shù)字量的形式反映器件的溫度值, DS18020通過一個單線接口發(fā)送或接收信息,因此在中央微處理器和DS1820只見僅需一條連接線(加上地

45、線)。用于讀寫和溫度轉(zhuǎn)換的電源可以從數(shù)據(jù)線本身獲得,無需外部電源。因為每個DS1820都有一個獨特的片序列號,所以多只DS1820可以同時連在一根單線總線上,這樣就可以把溫度傳感器放在許多不同的地方。這一特性用在HVAC環(huán)境控制、探測建筑物。</p><p>  DS1820是這樣測溫的</p><p>  用一個高溫系數(shù)的振蕩器確定一個們周期,內(nèi)部計數(shù)器在這個們周期內(nèi)對一個低溫度系數(shù)的

46、震蕩器的脈沖進行計數(shù)來得到溫度值。計數(shù)器被預(yù)置到對應(yīng)于-55℃的一個值。如果計數(shù)器在們周期結(jié)束前到達0,則溫度寄存器(同樣被預(yù)置到-55℃)的值增加,表明所測溫度大于-55℃。同時,計數(shù)器被復(fù)位到一個值,這個值由斜坡式累加器電路確定,斜坡式累加器電路用來補償感溫振蕩器的拋物線特性,然后計數(shù)器又開始計數(shù)直到0,如果門周期仍未結(jié)束,將重復(fù)這一過程。</p><p><b>  3.6顯示電路設(shè)計</b

47、></p><p>  顯示電路采用4位共陰極LED數(shù)碼管,P0口由上拉電阻提高驅(qū)動能力,作為段碼輸出并作為數(shù)碼管的驅(qū)動。P2口的低四位作為數(shù)碼管的位選端。采用動態(tài)掃描的方式顯示。如圖3-4所示</p><p>  圖3-4 顯示電路原理圖</p><p><b>  3.7電路設(shè)計圖</b></p><p> 

48、 電路PCB圖如3-5所示</p><p>  圖3-5 電路PCB圖</p><p>  第四章 系統(tǒng)軟件設(shè)計</p><p><b>  4.1主程序流程圖</b></p><p>  程序的主要功能是負(fù)責(zé)溫度的實時顯示、讀出并處理DS18B20的測量的當(dāng)前溫度值,溫度測量每1s進行一次。如圖4-1所示<

49、/p><p>  圖4-1主程序流程圖</p><p>  4.2溫度轉(zhuǎn)換命令子程序</p><p>  溫轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時轉(zhuǎn)換時間約為750ms,在本程序設(shè)計中采用1s顯示程序延時法等待轉(zhuǎn)換的完成。如圖4-2所示 </p><p>

50、  圖4-2溫度轉(zhuǎn)換流程圖</p><p>  4.3顯示數(shù)據(jù)刷新子程序</p><p>  顯示數(shù)據(jù)刷新子程序主要是對分離后的溫度顯示數(shù)據(jù)進行刷新操作,當(dāng)標(biāo)志位位為1時將符號顯示位移入第一位。如圖4-3所示</p><p>  圖4-3顯示數(shù)據(jù)流程圖</p><p><b>  致謝</b></p>&l

51、t;p>  經(jīng)過將近七周的單片機課程設(shè)計,終于完成了我的數(shù)字溫度計畢業(yè)設(shè)計,雖然途中還遇到不少困難,但最終還是把實物做出來,從這次的課程設(shè)計中,我真真正正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實際,把我們所學(xué)的理論知識用到實際當(dāng)中,學(xué)習(xí)單機片機更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計中的最大收獲。通過這次對數(shù)字溫度計的設(shè)計與制作,讓我了解了設(shè)計電路的程序,也讓我了解了關(guān)于數(shù)字溫度計的原理與設(shè)計理念,要

52、設(shè)計一個電路總要先用仿真仿真成功之后才實際接線的。但是最后的成品卻不一定與仿真時完全一樣,因為,再實際接線中有著各種各樣的條件制約著。而且,在仿真中無法成功的電路接法,在實際中因為芯片本身的特性而能夠成功。所以,在設(shè)計時應(yīng)考慮兩者的差異,從中找出最適合的設(shè)計方法。</p><p>  通過這次學(xué)習(xí),讓我對各種電路都有了大概的了解,所以說,坐而言不如立而行,對于這些電路還是應(yīng)該自己動手實際操作才會有深刻理解。<

53、;/p><p>  從這次的課程設(shè)計中,我真真正正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實際,把我們所學(xué)的理論知識用到實際當(dāng)中,學(xué)習(xí)單機片機更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計中的最大收獲。最后就是要感謝這三年所有的老師對我們一絲不茍和孜孜不倦的教育。還有學(xué)校那濃郁的學(xué)習(xí)氣氛。</p><p><b>  參考文獻</b></p&g

54、t;<p>  1.《AVR單片機原理及其應(yīng)用》—————————宋建國</p><p>  2.《單片機基礎(chǔ)》————————————————李光弟</p><p><b>  附錄一</b></p><p><b>  源程序代碼</b></p><p>  /**********

55、*************************************************</p><p>  ************************************************************/</p><p>  #include<regx52.h></p><p>  #define uchar uns

56、igned char</p><p>  #define uint unsigned int</p><p>  unsigned char dispcount;</p><p>  unsigned char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//七段共陽數(shù)碼管0

57、~9代碼</p><p>  sbit DQ = P1^4;</p><p>  sbit key1 = P2^0;</p><p>  sbit key2 = P2^1;</p><p>  sbit key3 = P2^2;</p><p>  sbit beel = P1^0;</p><p&

58、gt;  sbit D_re = P1^1;</p><p>  sbit U_re = P1^2;</p><p>  sbit LED_sum_1 = P2^4;</p><p>  sbit LED_sum_2 = P2^5;</p><p>  sbit LED_sum_3 = P2^6;</p><p>  

59、sbit LED_sum_4 = P2^7;</p><p>  /********************************************************/</p><p>  uchar data disdata[5];</p><p>  uchar data D_disdata[3];</p><p>  uc

60、har data U_disdata[3];</p><p>  uint tvalue;//溫度值</p><p>  uchar tflag;</p><p>  uchar flag;</p><p>  uint D_tvalue;</p><p>  uint U_tvalue;</p><

61、;p>  //******************************18B20溫度傳感程序***************************//</p><p>  void delay1ms(unsigned int ms)//延時1毫秒(不夠精確的)</p><p>  {unsigned int i,j;</p><p>  for(i=0;i

62、<ms;i++)</p><p>  for(j=0;j<100;j++);</p><p><b>  }</b></p><p>  /******************************ds1820程序***************************************/</p><p&g

63、t;  void delay_18B20(unsigned int i)//延時1微秒</p><p><b>  {</b></p><p>  while(i--);</p><p><b>  }</b></p><p>  void ds1820rst()/*ds1820復(fù)位*/</p

64、><p>  { unsigned char x=0;</p><p>  DQ = 1; //DQ復(fù)位</p><p>  delay_18B20(4); //延時</p><p>  DQ = 0; //DQ拉低</p><p>  delay_18B20(100); //精確延時大

65、于480us</p><p>  DQ = 1; //拉高</p><p>  delay_18B20(40); </p><p><b>  } </b></p><p>  uchar ds1820rd()/*讀數(shù)據(jù)*/</p><p>  { unsigned char i

66、=0;</p><p>  unsigned char dat = 0;</p><p>  for (i=8;i>0;i--)</p><p>  { DQ = 0; //給脈沖信號</p><p><b>  dat>>=1;</b></p><p>  DQ = 1;

67、//給脈沖信號</p><p><b>  if(DQ)</b></p><p>  dat|=0x80;</p><p>  delay_18B20(10);</p><p><b>  }</b></p><p>  return(dat);</p><

68、;p><b>  }</b></p><p>  void ds1820wr(uchar wdata)/*寫數(shù)據(jù)*/</p><p>  {unsigned char i=0;</p><p>  for (i=8; i>0; i--)</p><p><b>  { DQ = 0;</b&g

69、t;</p><p>  DQ = wdata&0x01;</p><p>  delay_18B20(10);</p><p><b>  DQ = 1;</b></p><p>  wdata>>=1;</p><p><b>  }</b></

70、p><p><b>  }</b></p><p>  //******************讀溫度*********************/</p><p>  read_temp()/*讀取溫度值并轉(zhuǎn)換*/</p><p><b>  {</b></p><p>  uc

71、har a,b;</p><p>  ds1820rst(); </p><p>  ds1820wr(0xcc);//*跳過讀序列號*/</p><p>  ds1820wr(0x44);//*啟動溫度轉(zhuǎn)換*/</p><p>  ds1820rst(); </p><p>  ds1820wr(0xcc

72、);//*跳過讀序列號*/ </p><p>  ds1820wr(0xbe);//*讀取溫度*/ </p><p>  a=ds1820rd();</p><p>  b=ds1820rd();</p><p><b>  tvalue=b;</b></p><p>  tvalue<&l

73、t;=8;</p><p>  tvalue=tvalue|a;</p><p>  if(tvalue<0x0fff)</p><p><b>  tflag=0;</b></p><p><b>  else</b></p><p>  {tvalue=~tvalu

74、e+1;</p><p><b>  tflag=1;</b></p><p><b>  }</b></p><p>  tvalue=tvalue*(0.625);//溫度值擴大10倍,精確到1位小數(shù)</p><p>  return(tvalue);</p><p>&

75、lt;b>  }</b></p><p>  /************************************************ </p><p><b>  延時n個ms函數(shù) </b></p><p>  ***********************************************/ <

76、;/p><p>  void delay_nms(uint ms) //delay ms function </p><p>  { </p><p>  uchar i; </p><p>  while(ms--) </p&

77、gt;<p><b>  { </b></p><p>  for(i = 0; i < 80; i++); </p><p><b>  } </b></p><p><b>  } </b></p><p>  /********************

78、***********************************************/</p><p>  void ds1820disp()//溫度值顯示</p><p><b>  {</b></p><p>  disdata[0]=tvalue/100;//十位數(shù)</p><p>  disdata[1

79、]=tvalue%100/10;//個位數(shù)</p><p>  disdata[2]=tvalue%10;//小數(shù)位</p><p>  D_disdata[0]=D_tvalue/100;//十位數(shù)</p><p>  D_disdata[1]=D_tvalue%100/10;//個位數(shù)</p><p>  D_disdata[2]=D_t

80、value%10;//小數(shù)位</p><p>  U_disdata[0]=U_tvalue/100;//十位數(shù)</p><p>  U_disdata[1]=U_tvalue%100/10;//個位數(shù)</p><p>  U_disdata[2]=U_tvalue%10;//小數(shù)位</p><p>  if(flag==0)</p&g

81、t;<p><b>  {</b></p><p>  P0=dispcode[disdata[0]];</p><p>  LED_sum_1 = 1;</p><p>  LED_sum_2 = 0;</p><p>  LED_sum_3 = 1;</p><p>  LED_

82、sum_4 = 1;</p><p>  delay_nms(1);</p><p><b>  P0=0xff;</b></p><p>  P0=dispcode[disdata[1]] & 0x7f;</p><p>  LED_sum_1 = 1;</p><p>  LED_su

83、m_2 = 1;</p><p>  LED_sum_3 = 0;</p><p>  LED_sum_4 = 1;</p><p>  delay_nms(1);</p><p><b>  P0=0xff;</b></p><p>  P0=dispcode[disdata[2]];</

84、p><p>  LED_sum_1 = 1;</p><p>  LED_sum_2 = 1;</p><p>  LED_sum_3 = 1;</p><p>  LED_sum_4 = 0;</p><p>  delay_nms(1);</p><p><b>  P0=0xff;&

85、lt;/b></p><p><b>  }</b></p><p>  else if(flag==1)</p><p><b>  {</b></p><p>  P0=dispcode[D_disdata[0]];</p><p>  LED_sum_1 = 1;

86、</p><p>  LED_sum_2 = 0;</p><p>  LED_sum_3 = 1;</p><p>  LED_sum_4 = 1;</p><p>  delay_nms(1);</p><p><b>  P0=0xff;</b></p><p>  

87、P0=dispcode[D_disdata[1]] & 0x7f;</p><p>  LED_sum_1 = 1;</p><p>  LED_sum_2 = 1;</p><p>  LED_sum_3 = 0;</p><p>  LED_sum_4 = 1;</p><p>  delay_nms(1)

88、;</p><p><b>  P0=0xff;</b></p><p>  P0=dispcode[D_disdata[2]];</p><p>  LED_sum_1 = 1;</p><p>  LED_sum_2 = 1;</p><p>  LED_sum_3 = 1;</p>

89、;<p>  LED_sum_4 = 0;</p><p>  delay_nms(1);</p><p><b>  P0=0xff;</b></p><p><b>  }</b></p><p>  else if(flag==2)</p><p><

90、;b>  {</b></p><p>  P0=dispcode[U_disdata[0]];</p><p>  LED_sum_1 = 1;</p><p>  LED_sum_2 = 0;</p><p>  LED_sum_3 = 1;</p><p>  LED_sum_4 = 1;<

91、/p><p>  delay_nms(1);</p><p><b>  P0=0xff;</b></p><p>  P0=dispcode[U_disdata[1]] & 0x7f;</p><p>  LED_sum_1 = 1;</p><p>  LED_sum_2 = 1;<

92、/p><p>  LED_sum_3 = 0;</p><p>  LED_sum_4 = 1;</p><p>  delay_nms(1);</p><p><b>  P0=0xff;</b></p><p>  P0=dispcode[U_disdata[2]];</p><

93、;p>  LED_sum_1 = 1;</p><p>  LED_sum_2 = 1;</p><p>  LED_sum_3 = 1;</p><p>  LED_sum_4 = 0;</p><p>  delay_nms(1);</p><p><b>  P0=0xff;</b>&

94、lt;/p><p><b>  }</b></p><p><b>  }</b></p><p>  /**************************************************************/ </p><p>  //======================

95、=========================</p><p>  void delayMs (uchar ms) </p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  while (--ms)</p><p>

96、;<b>  {</b></p><p>  for (i = 0; i < 125; i++);</p><p><b>  }</b></p><p><b>  }</b></p><p>  //==================================

97、=============</p><p>  void delaySec (uchar sec) </p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  while (--sec)</p><p><b>

98、;  {</b></p><p>  for (i = 0; i < 200; i++)</p><p><b>  {</b></p><p>  delayMs(6);</p><p><b>  }</b></p><p><b>  }&l

99、t;/b></p><p><b>  }</b></p><p>  void Countol()</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  if(tvalue<D_tva

100、lue)</p><p><b>  {</b></p><p><b>  D_re = 0;</b></p><p><b>  U_re = 1;</b></p><p><b>  TR1 = 1;</b></p><p>

101、  for(i=0;i<4;i++)</p><p><b>  {</b></p><p><b>  beel = 0;</b></p><p>  delaySec(2);</p><p><b>  beel = 1;</b></p><p&g

102、t;  delaySec(2);</p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(tvalue>U_tvalue) </p><p><b>  {</b></p><p><

103、;b>  D_re = 1;</b></p><p><b>  U_re = 0;</b></p><p><b>  TR1 = 1;</b></p><p>  for(i=0;i<4;i++)</p><p><b>  {</b></p&

104、gt;<p><b>  beel = 0;</b></p><p>  delaySec(2);</p><p><b>  beel = 1;</b></p><p>  delaySec(2);</p><p><b>  }</b></p>

105、<p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  D_re=1;</b></p><p><b>  U_re=1;</b>&l

106、t;/p><p><b>  beel=1;</b></p><p><b>  TR1 = 0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  main(

107、)</b></p><p><b>  {</b></p><p><b>  ET1=1;</b></p><p><b>  EA=1;</b></p><p>  TMOD=0x10; </p><p>  TH1=(65536-18

108、000)/256;</p><p>  TL1=(65536-18000)%256;</p><p><b>  TR1=0;</b></p><p>  D_tvalue = 100;</p><p>  U_tvalue = 370;</p><p><b>  while(1)&

109、lt;/b></p><p><b>  {</b></p><p>  read_temp();</p><p>  ds1820disp();</p><p>  Countol();</p><p>  if(key3 == 0)</p><p><b&g

110、t;  {</b></p><p>  delay1ms(10);</p><p>  if(key3 == 0)</p><p><b>  {</b></p><p>  while(key3 == 0);</p><p><b>  flag++;</b>&

111、lt;/p><p>  if(flag==3)flag=0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(key2 == 0)</p><p><b>  {</b></p><

112、;p>  delay1ms(10);</p><p>  if(key2 == 0)</p><p><b>  {</b></p><p>  while(key2 == 0);</p><p>  if(flag==1)</p><p><b>  {</b><

113、;/p><p>  D_tvalue+=10;</p><p>  if(D_tvalue==990)D_tvalue=0;</p><p><b>  }</b></p><p>  if(flag==2)</p><p><b>  {</b></p><

溫馨提示

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

評論

0/150

提交評論