版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 姓 名 </p><p> 專 業(yè) 班 級 微電子 </p><p> 論 文 名 稱 數(shù)字溫度計設計與實現(xiàn) </p><p> 指 導 教 師
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> 第二章 總體方案設計5</p><p><b> 2.1設計要求5</b></p><p> 2.2選擇方案和論證5</p><p> 第三章 系統(tǒng)硬件設計6</p>
4、;<p> 3.1硬件總設計6</p><p> 3.2單片機介紹7</p><p> 3.3單片機的應用8</p><p> 3.4單片機的開發(fā)過程9</p><p> 3.5 DS18B20介紹11</p><p> 3.6顯示電路設計12</p><p&g
5、t; 3.7電路設計圖12</p><p> 第四章 系統(tǒng)軟件設計13</p><p> 4.1主程序流程圖13</p><p> 4.2溫度轉換命令子程序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ù)字溫度計能夠測出-55~+125 ℃之間的溫度,與傳統(tǒng)的溫度計相比,具有讀數(shù)方便、測溫范圍廣、測溫準確等特點,適合日常生活、工業(yè)生產和科學研究等領域對溫度測量的需要。</p><p> 關鍵詞:溫度測量; 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> 單片機技術作為計算機技術的一個分支,廣泛地應用于工業(yè)控制,智能儀器儀表,機電一體化產品,家用電器等各個領域?!皢纹瑱C原理與應用”在工科院校各專業(yè)中已作為一門重要的技術基礎課而普遍開設。學生在課程設計,畢業(yè)設計,科研項目中會廣泛應用到單片機知識,而且,進入社會后也會廣泛接觸到單片機的工程項目。鑒于此,提高“單片機原理及應用”課的教學效果,讓學生參
12、與課程設計實習甚為重要。單片機應用技術涉及的內容十分廣泛,如何使學生在有限的時間內掌握單片機應用的基本原理及方法,是一個很有價值的教學項目。為此,我們進行了“單片機的學習與應用”方面的課程設計,鍛煉學生的動腦動手以及協(xié)作能力。</p><p> 單片機課程設計是針對模擬電子技術,數(shù)字邏輯電路,電路,單片機的原理及應用課程的要求,對我們進行綜合性實踐訓練的實踐學習環(huán)節(jié),它包括選擇課設任務、軟件設計,硬件設計,調試
13、和編寫課設報告等實踐內容。通過此次課程設計實現(xiàn)以下三個目標:第一,讓學生初步掌握單片機課程的試驗、設計方法,即學生根據(jù)設計要求和性能約束,查閱文獻資料,收集、分析類似的相關題目,并通過元器件的組裝調試等實踐環(huán)節(jié),使最終硬件電路達到題目要求的性能指標;第二,課程設計為后續(xù)的畢業(yè)設計打好基礎,畢業(yè)設計是系統(tǒng)的工程設計實踐,而課程設計的著眼點是讓學生開始從理論學習的軌道上逐漸引向實際運用,從已學過的定性分析、定量計算的方法,逐步掌握工程設計的
14、步驟和方法,了解科學實驗的程序和實施方法。第三,培養(yǎng)學生勤于思考樂于動手的習慣,同時通過設計并制作單片機類產品,使學生能夠自己不斷地學習接受新知識(如在本課設題目中存在智能測溫器件DS18B20,就是課堂環(huán)節(jié)中不曾提及的“新器件”),通過多人的合作解決現(xiàn)實中存在的問題,從而不斷地增強學生在該方面的自信心及興趣,也提高了學生的動手能力,對學生以后步入社會參加工作打下一定良好的實踐基礎。</p><p> 1.1
15、課題研究的意義</p><p> 隨著科技的不斷發(fā)展,現(xiàn)代社會對各種信息參數(shù)的準確度和精確度要求都有了幾何的增長,而如何準確而又迅速獲得這些參數(shù)就需要受制于現(xiàn)代信息基礎的發(fā)展水品。在三大信息信息采集(即傳感器技術)信息傳輸(通信技術)和信息處理(計算機技術)中,傳感器屬于信息技術的前沿尖端產品,尤其是溫度傳感器技術,在我國各領域已經(jīng)引用的非常廣泛,可以說是參透到社會的每一個領域,人民的生活與環(huán)境的溫度息息相關,
16、在工業(yè)生產過程中需要實時測量溫度,在農業(yè)生產也離不開溫度測量,因此研究溫度的測量方法和裝置具有重要的意義。</p><p> 1.2本課題主要的研究工作</p><p> 溫度是工業(yè)對象的一個重要的被控參數(shù)。然而采用的測溫元件和測溫方法也不相同:產品的工藝不同,控制溫度的精度也不同。傳統(tǒng)的控制方式已不能滿足高精度,高速度的控制要求,如溫度控制表溫度接觸器,其主要缺點是溫度波動范圍大,由
17、于他主要通過控制接觸器的通斷時間比例來達到改變加熱功率的目的,受儀表本身誤差和交流接觸器的壽命限制,通斷頻率很低。近幾年來快速發(fā)展了多種先進的溫度控制方式,如:PID控制,模糊控制,神經(jīng)網(wǎng)絡及遺傳算法控制等。</p><p> 這些控制技術大大的提高了控制精度,不但使控制變的簡便,而且使產品的質量更好,降低了產品的成本,提高了生產效率。</p><p> 第二章 總體方案設計<
18、/p><p><b> 2.1設計要求</b></p><p> 1.溫度大于上限或小于下限時可以進行兩路繼電器的控制,并有狀態(tài)指示燈顯示。</p><p> 2.溫度上限下限可以設定。</p><p> 3.用按鍵進行上下限的設定</p><p><b> 操作:</b&g
19、t;</p><p> 1.按下設置鍵,進入溫度下限設置報警值,按加則加,減則減</p><p> 2.再按下設置鍵,進入溫度上限設置報警值,按加則加,減則減</p><p> 3.再按下設置鍵,返回顯示當時的溫度值。</p><p> 2.2選擇方案和論證</p><p><b> 芯片方案一&l
20、t;/b></p><p> 采用AT89S51芯片作為硬件核心,內部具有4KB ROM存儲空間,能于3V的超低壓工作,而且與MCS-51系列的單片機完全兼容,但是運用于電路設計中時由于不具備ISP在線編程技術,所以在對電路進行調試時,由于程序的錯誤修改或對程序的新增功能需要燒入程序時,對芯片的多次撥插會對芯片造成一定的損壞。</p><p><b> 芯片方案二<
21、;/b></p><p> 采用AT89S52芯片,AT89S52是一種低功耗,高性能的8位CMOS微控制器,具有8K的可編程Flash存儲器。同時具有AT89S51的功能,且具有在線編程可擦除技術,當對電路進行調試時,由于程序的錯誤修改或對程序新增功能需要燒入程序時,不需要對芯片多次拔插,所以不會對芯片造成損壞,隱刺選擇采用AT89S52作為主控制系統(tǒng)核心。</p><p>&l
22、t;b> 溫度傳感方案一</b></p><p> 由于本設計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應,在將隨被測溫度變化的電壓或電流采集過來,進行A/D轉換后,就可以用單片機進行數(shù)據(jù)的處理,在現(xiàn)實點路上,就可以將被測溫度顯示出來,這種設計需要用到A/D轉換電路,感溫電路比較麻煩。</p><p><b> 溫度傳感方案二</b>&
23、lt;/p><p> 進而考慮到用溫度傳感器,在單片機電路設計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進行轉換,就可以滿足設計要求。</p><p><b> 最終方案</b></p><p> 采用AT89S52作為主控制芯片, DS18B20采集溫度
24、來設置此畢業(yè)作品。</p><p> 第三章 系統(tǒng)硬件設計</p><p><b> 3.1硬件總設計</b></p><p> 系統(tǒng)框圖:如圖3-1所示 </p><p><b> 圖3-1 系統(tǒng)框圖</b></p><p><b> 3
25、.2單片機介紹</b></p><p> 二十世紀跨越了三個“電”的時代,即電氣時代、電子時代和現(xiàn)已進入的電腦時代。不過,這種電腦,通常是指個人計算機,簡稱PC機。它由主機、鍵盤、顯示器等組成。還有一類計算機,大多數(shù)人卻不怎么熟悉。這種計算機就是把智能賦予各種機械的單片機(亦稱微控制器)。顧名思義,這種計算機的最小系統(tǒng)只用了一片集成電路,即可進行簡單運算和控制。因為它體積小,通常都藏在被控機械的“肚
26、子”里。它在整個裝置中,起著有如人類頭腦的作用,它出了毛病,整個裝置就癱瘓了。現(xiàn)在,這種單片機的使用領域已十分廣泛,如智能儀表、實時工控、通訊設備、導航系統(tǒng)、家用電器等。各種產品一旦用上了單片機,就能起到使產品升級換代的功效,常在產品名稱前冠以形容詞——“智能型”,如智能型洗衣機等。</p><p> 計算機的產生加快了人類改造世界的步伐,但是它畢竟體積大。單片機在這種情況下誕生了。截止今日,單片機應用技術飛速
27、發(fā)展,縱觀我們現(xiàn)在生活的各個領域,從導彈的導航裝置,到飛機上各種儀表的控制,從計算機的網(wǎng)絡通訊與數(shù)據(jù)傳輸,到工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,以及我們生活中廣泛使用的各種智能IC卡、電子寵物等,這些都離不開單片機。</p><p> 單片機自70年代問世以來得到蓬勃發(fā)展,目前單片機功能正日漸完善:單片機集成越來越多資源,內部存儲資源日益豐富,用戶不需要擴充資源就可以完成項目開發(fā),不僅是開發(fā)簡單,產品小巧美觀,
28、同時抗干擾能力加強,系統(tǒng)也更加穩(wěn)定,使得它更加適合工業(yè)控制領域,具有更加廣闊的市場前景;提供在線編程能力,加速了產品的開發(fā)進程,為企業(yè)產品上市贏得寶貴時間。此外單片機具有性能高、速度快、體積小、價格低、穩(wěn)定可靠、應用廣泛、通用性強等突出優(yōu)點。單片機的設計目標主要是增強“控制”能力,滿足實時控制(就是快速反應) 的需要。</p><p> 我作為21世紀的工科大學生,學的是電氣的專業(yè),無論是從事科學研究工作,還是
29、開辦電子器件的工廠還是經(jīng)營電子廠品的貿易,不僅要熟練地使用通用微機進行各種數(shù)據(jù)處理,還要把計算機技術運用到本專業(yè)領域或相關領域,既具有開發(fā)創(chuàng)新能力。這就要求我們要熟練地掌握單片機。</p><p> 單片機是一種集成在電路芯片,是采用超大規(guī)模集成電路技術把具有數(shù)據(jù)處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計時器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬
30、多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的計算機系統(tǒng)。這些電路能在軟件的控制下準確、迅速、高效地完成程序設計者實現(xiàn)規(guī)定的任務。</p><p><b> 3.3單片機的應用</b></p><p> 單片機廣泛應用于儀器儀表、家用電器、醫(yī)用設備、航空航天、專用設備的智能化管理及過程控制等領域,大致可分如下幾個范疇:</p>
31、<p> 1.在智能儀器儀表上的應用 </p><p> 單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等優(yōu)點,廣泛應用于儀器儀表中,結合不同類型的傳感器,可實現(xiàn)諸如電壓、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。采用單片機控制使得儀器儀表數(shù)字化、智能化、微型化,且功能比起采用電子或數(shù)字電路更加強大。例如精密的測量設備(功率計,示波器,各
32、種分析儀)。</p><p> 2.在工業(yè)控制中的應用 </p><p> 用單片機可以構成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)。例如工廠流水線的智能化管</p><p> 理,電梯智能化控制、各種報警系統(tǒng),與計算機聯(lián)網(wǎng)構成二級控制系統(tǒng)等。 </p><p> 3.在家用電器中的應用 </p><p> 可以這樣
33、說,現(xiàn)在的家用電器基本上都采用了單片機控制,從電飯褒、洗衣機、電冰箱、空調機、彩電、其他音響視頻器材、再到電子秤量設備,五花八門,無所不在。 </p><p> 4.在計算機網(wǎng)絡和通信領域中的應用 </p><p> 現(xiàn)代的單片機普遍具備通信接口,可以很方便地與計算機進行數(shù)據(jù)通信,為在計算機網(wǎng)絡和通信設備間的應用提供了極好的物質條件,現(xiàn)在的通信設備基本上都實現(xiàn)了單片機智能控制,從手機,
34、電話機、小型程控交換機、樓宇自動通信呼叫系統(tǒng)、列車無線通信、再到日常工作中隨處可見的移動電話,集群移動通信,無線電對講機等。 </p><p> 5.單片機在醫(yī)用設備領域中的應用 </p><p> 單片機在醫(yī)用設備中的用途亦相當廣泛,例如醫(yī)用呼吸機,各種分析儀,監(jiān)護儀,超聲診斷設備及病床呼叫系統(tǒng)等等。 </p><p> 6.在各種大型電器中的模塊化應用 &
35、lt;/p><p> 某些專用單片機設計用于實現(xiàn)特定功能,從而在各種電路中進行模塊化應用,而不要求使用人員了解其內部結構。如音樂集成單片機,看似簡單的功能,微縮在純電子芯片中(有別于磁帶機的原理),就需要復雜的類似于計算機的原理。如:音樂信號以數(shù)字的形式存于存儲器中(類似于ROM),由微控制器讀出,轉化為模擬音樂電信號(類似于聲卡)。 </p><p> 在大型電路中,這種模塊化應用極大地
36、縮小了體積,簡化了電路,降低了損壞、錯誤率,也方便于更換。 </p><p> 7.單片機在汽車設備領域中的應用 </p><p> 單片機在汽車電子中的應用非常廣泛,例如汽車中的發(fā)動機控制器,基于CAN總線的汽車發(fā)動機智能電子控制器,GPS導航系統(tǒng),abs防抱死系統(tǒng),制動系統(tǒng)等等。 </p><p> 此外,單片機在工商,金融,科研、教育,國防航空航天等領域
37、都有著十分廣泛的用途。</p><p> 3.4單片機的開發(fā)過程</p><p> 這里所說的開發(fā)過程并不是一般書中所說的從任務分析開始,我們假設已設計并制作好硬件,下面就是編寫軟件的工作。在編寫軟件之前,首先要確定一些常數(shù)、地址,事實上這些常數(shù)、地址在設計階段已被直接或間接地確定下來了。如當某器件的連線設計好后,其地址也就被確定了,當器件的功能被確定下來后,其控制字也就被確定了。然后
38、用文本編輯器(如EDIT、CCED等)編寫軟件,編寫好后,用編譯器對源程序文件編譯,查錯,直到?jīng)]有語法錯誤,除了極簡單的程序外,一般應用仿真機對軟件進行調試,直到程序運行正確為止。運行正確后,就可以寫片(將程序固化在EPROM中)。在源程序被編譯后,生成了擴展名為HEX的目標文件,一般編程器能夠識別這種格式的文件,只要將此文件調入即可寫片。</p><p> 單片機 AT89S52 如圖3-2所示</p&
39、gt;<p> 圖3-2 單片機原理圖</p><p> 而AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器。使用Atmel公司高度密度非易失性存儲器技術制造,與工業(yè)80C51產品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應
40、用系統(tǒng)提供高靈活、超有效的解決方案。</p><p> AT89S52具有以下標準功能:8K字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護
41、方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。</p><p> AT89S52主要性能</p><p> 與MCS-51單片機產品兼容</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> 掉電標識
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、線)。用于讀寫和溫度轉換的電源可以從數(shù)據(jù)線本身獲得,無需外部電源。因為每個DS1820都有一個獨特的片序列號,所以多只DS1820可以同時連在一根單線總線上,這樣就可以把溫度傳感器放在許多不同的地方。這一特性用在HVAC環(huán)境控制、探測建筑物。</p><p> DS1820是這樣測溫的</p><p> 用一個高溫系數(shù)的振蕩器確定一個們周期,內部計數(shù)器在這個們周期內對一個低溫度系數(shù)的
46、震蕩器的脈沖進行計數(shù)來得到溫度值。計數(shù)器被預置到對應于-55℃的一個值。如果計數(shù)器在們周期結束前到達0,則溫度寄存器(同樣被預置到-55℃)的值增加,表明所測溫度大于-55℃。同時,計數(shù)器被復位到一個值,這個值由斜坡式累加器電路確定,斜坡式累加器電路用來補償感溫振蕩器的拋物線特性,然后計數(shù)器又開始計數(shù)直到0,如果門周期仍未結束,將重復這一過程。</p><p><b> 3.6顯示電路設計</b
47、></p><p> 顯示電路采用4位共陰極LED數(shù)碼管,P0口由上拉電阻提高驅動能力,作為段碼輸出并作為數(shù)碼管的驅動。P2口的低四位作為數(shù)碼管的位選端。采用動態(tài)掃描的方式顯示。如圖3-4所示</p><p> 圖3-4 顯示電路原理圖</p><p><b> 3.7電路設計圖</b></p><p>
48、 電路PCB圖如3-5所示</p><p> 圖3-5 電路PCB圖</p><p> 第四章 系統(tǒng)軟件設計</p><p><b> 4.1主程序流程圖</b></p><p> 程序的主要功能是負責溫度的實時顯示、讀出并處理DS18B20的測量的當前溫度值,溫度測量每1s進行一次。如圖4-1所示<
49、/p><p> 圖4-1主程序流程圖</p><p> 4.2溫度轉換命令子程序</p><p> 溫轉換命令子程序主要是發(fā)溫度轉換開始命令,當采用12位分辨率時轉換時間約為750ms,在本程序設計中采用1s顯示程序延時法等待轉換的完成。如圖4-2所示 </p><p>
50、 圖4-2溫度轉換流程圖</p><p> 4.3顯示數(shù)據(jù)刷新子程序</p><p> 顯示數(shù)據(jù)刷新子程序主要是對分離后的溫度顯示數(shù)據(jù)進行刷新操作,當標志位位為1時將符號顯示位移入第一位。如圖4-3所示</p><p> 圖4-3顯示數(shù)據(jù)流程圖</p><p><b> 致謝</b></p>&l
51、t;p> 經(jīng)過將近七周的單片機課程設計,終于完成了我的數(shù)字溫度計畢業(yè)設計,雖然途中還遇到不少困難,但最終還是把實物做出來,從這次的課程設計中,我真真正正的意識到,在以后的學習中,要理論聯(lián)系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設計中的最大收獲。通過這次對數(shù)字溫度計的設計與制作,讓我了解了設計電路的程序,也讓我了解了關于數(shù)字溫度計的原理與設計理念,要
52、設計一個電路總要先用仿真仿真成功之后才實際接線的。但是最后的成品卻不一定與仿真時完全一樣,因為,再實際接線中有著各種各樣的條件制約著。而且,在仿真中無法成功的電路接法,在實際中因為芯片本身的特性而能夠成功。所以,在設計時應考慮兩者的差異,從中找出最適合的設計方法。</p><p> 通過這次學習,讓我對各種電路都有了大概的了解,所以說,坐而言不如立而行,對于這些電路還是應該自己動手實際操作才會有深刻理解。<
53、;/p><p> 從這次的課程設計中,我真真正正的意識到,在以后的學習中,要理論聯(lián)系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設計中的最大收獲。最后就是要感謝這三年所有的老師對我們一絲不茍和孜孜不倦的教育。還有學校那濃郁的學習氣氛。</p><p><b> 參考文獻</b></p&g
54、t;<p> 1.《AVR單片機原理及其應用》—————————宋建國</p><p> 2.《單片機基礎》————————————————李光弟</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復位*/</p
64、><p> { unsigned char x=0;</p><p> DQ = 1; //DQ復位</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()/*讀取溫度值并轉換*/</p><p><b> {</b></p><p> uc
71、har a,b;</p><p> ds1820rst(); </p><p> ds1820wr(0xcc);//*跳過讀序列號*/</p><p> ds1820wr(0x44);//*啟動溫度轉換*/</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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字溫度計畢業(yè)設計
- 畢業(yè)設計---數(shù)字溫度計
- 數(shù)字溫度計畢業(yè)設計
- 數(shù)字溫度計設計畢業(yè)設計
- 畢業(yè)設計--數(shù)字溫度計設計
- 數(shù)字溫度計畢業(yè)設計
- 數(shù)字溫度計設計畢業(yè)設計
- 數(shù)字溫度計畢業(yè)設計論文
- 數(shù)字溫度計的設計畢業(yè)設計
- 數(shù)字溫度計的設計畢業(yè)設計
- 畢業(yè)設計---數(shù)字溫度計作
- 畢業(yè)設計---數(shù)字溫度計的設計
- 數(shù)字溫度計控制 畢業(yè)設計
- 畢業(yè)設計--- 數(shù)字溫度計的設計與制作
- 畢業(yè)設計開題報告(數(shù)字溫度計)
- 多點數(shù)字溫度計設計 畢業(yè)設計
- 畢業(yè)設計(論文)數(shù)字溫度計的設計
- 數(shù)字溫度計畢業(yè)設計論文1
- 數(shù)字溫度計論文數(shù)字溫度計設計論文
- 畢業(yè)設計----多功能數(shù)字溫度計的設計與制作
評論
0/150
提交評論