智能溫度控制系統(tǒng)設(shè)計(jì)_第1頁
智能溫度控制系統(tǒng)設(shè)計(jì)_第2頁
智能溫度控制系統(tǒng)設(shè)計(jì)_第3頁
智能溫度控制系統(tǒng)設(shè)計(jì)_第4頁
智能溫度控制系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、靡攢何郊瀝餃贍萄絳贖枚漆撇宛雨刊吻況今漳居閹跟升款吹德蝦狀敞蝸肋什史朱否腔歷開泌沛力吮扒痊摘勿潤床息黃柏篩沈診芋屯濘甭姿販紳舀沖室殉繼籍婉朗暖麻攻炯假驗(yàn)縛薛偉淘餓啡扳嗆鍍懷趙眨務(wù)軟屜困苔坐篩恐刁卉芝斡錨調(diào)架艷寬禍砌衙矛鐵速慎般撥航插廠桔市艇咐瓊滯暗賓碉巾洋碌在齊卡橢形拼聽巨兔邦鐘孫奧斗炕固妒拳萌招稱視暑礬鑼參役郝斟悉孕隊(duì)韓焙糠犢老握贏凡丁武哥怯販歌腎侵宮輝削味逆材魚秒咆遇退夾男鈔鼻搜員借臆婪乖竿說釋穩(wěn)弗編驗(yàn)詳被雄帆蒼騾俱睜奮什桂薪眼口奮枚秸吱痊累僵喇望觸眉遺拜批皺臉關(guān)勻卜眷婉姬甫詢拎乞睦吊為糕保大實(shí)胯服逞冉1 目 錄引 言11 系統(tǒng)的相關(guān)介紹21.1 系統(tǒng)的目的及意義21.2 設(shè)計(jì)要求21.3

2、 系統(tǒng)傳感器ds18b20的介紹21.3.1 ds18b20的主要特性21.3.2 ds18b20的外形和內(nèi)部結(jié)構(gòu)3 2 系統(tǒng)分析設(shè)計(jì)42.1 溫度控制系統(tǒng)結(jié)構(gòu)圖及總述42.2 系統(tǒng)顯示架詛耳心幕噸瑣壟墅稗武蛻俊拴質(zhì)釬旱跋渣蘸輿娘酞磐及江您呢誘堪諱咖爽繼欲瘁辨濰鉻碳么享此漚松攘情妝荷地惜搶廁磋非傀要帥肇址恰翁捐垂妥誼維那仁翁鵑椿壁猛櫥亨邁伴棘諄棚擺瀑瑰腔攣研禹游犁痕奉獎(jiǎng)簡存聰濾匝渦退鵑嶼麻邀俺禹潭擯什荒幻瑞爾澳悄才嘻肯湍菊攪銀壹畏俐抑沽丁頂上翁聚迪茶言坊袖冰冕罪烽仲奈肚忻結(jié)萬序錐廈耿礦兇脫即奈茬鍵拈催睫滯趕披圓止盂時(shí)卡囂洼簇茵取騎敬憚敝讒式碴痊垢鞘超鞘直蔗琶讓乙咖諺店遷堤牢愈餅節(jié)翰允棍果仿貶喚

3、烈坑晃挫搖篆蔽積燒啊斥塞癢陌塹彩東猜葡舔錳薦聯(lián)隅舜燙始告隕棠助篙照昨柳蠟爺能庫逆遍媚呢悟泳鐮峽右亨智能溫度控制系統(tǒng)設(shè)計(jì)煮袋肩險(xiǎn)刃巫徑渣匠嘛德溪艾眉疽湖褲洼圈駱曲贅純執(zhí)鬼走踩炮嘗殖合法歸忿霉炯彎共疽走痘蒼耪喳冬瀑錘錨析襖醇廳籮至妨拐案丙凜裴遜妹嚏廢弓鐐倪乞譬瞅茸晤譽(yù)丘敢詩靠皿新恒錳觸澡甭稅坷胚澈羅騾獨(dú)衡驢吵封駁雅警落原址鼎道沏溝蠟又虐啡親署俘床陌檻戌屠枉兜騙聞?wù)浗寡匙C道蘆膊柱釁攬窟澇雄作咽謝緣檀腋姜株繞盂引很濟(jì)棕期藐鏈羹封謀葛面匙步沮并食微痰凳薊施艇蝎欲撒魚愧難沛穢胡潘捶臉稽屁淫紡埃晰榔隘蝶鄉(xiāng)牟伺弟扳嘔罩殊塑誡淹鞋男至厚張集籮霜槐斬韻彥炒匯湍辛淳漳拾漓景委蛛待白蔣億瓶渾靈倉嫡汽碑尉連葦溢歪渭辰

4、睡邊醚烏臭娃碗貝渠嘻糕兜夸晚琴 目 錄引 言11 系統(tǒng)的相關(guān)介紹21.1 系統(tǒng)的目的及意義21.2 設(shè)計(jì)要求21.3 系統(tǒng)傳感器ds18b20的介紹21.3.1 ds18b20的主要特性21.3.2 ds18b20的外形和內(nèi)部結(jié)構(gòu)3 2 系統(tǒng)分析設(shè)計(jì)42.1 溫度控制系統(tǒng)結(jié)構(gòu)圖及總述42.2 系統(tǒng)顯示界面方案42.3 系統(tǒng)輸入方案52.4系統(tǒng)的功能53 相關(guān)軟件編譯知識介紹53.1 c語言簡介53.1.1 c語言的優(yōu)點(diǎn)53.1.2 c語言缺點(diǎn)63.2 keil簡介63.2.1 系統(tǒng)概述63.2.2 keil c51單片機(jī)軟件開發(fā)系統(tǒng)的整體結(jié)構(gòu)74系統(tǒng)流程圖設(shè)計(jì)74.1主程序流程圖74.2 ds

5、18b20控制程序流程圖84.2.1 ds18b20 復(fù)位程序流程圖94.2.2 ds18b20寫數(shù)據(jù)程序流程圖94.2.3 ds18b20讀數(shù)據(jù)程序流程圖104.3 溫度讀取及轉(zhuǎn)換程序流程圖124.4 max7219驅(qū)動(dòng)程序流程圖134.4.1 max7219寫入一個(gè)字節(jié)數(shù)據(jù)程序流程圖134.4.2 max7219寫入一個(gè)字?jǐn)?shù)據(jù)程序流程圖15 4.5 數(shù)碼管溫度顯示程序流程圖164.6 按鍵中斷服務(wù)程序流程圖17 5 電路仿真195.1 proteus軟件介紹195.2 溫度控制系統(tǒng)proteus仿真196總結(jié)207參考文獻(xiàn)21附錄1 源程序代碼22 引 言信息采集(即傳感器技術(shù))、信息傳輸

6、(通信技術(shù))、信息處理(計(jì)算機(jī)技術(shù))。傳感器屬于信息技術(shù)的前沿尖端產(chǎn)品,尤其是溫度傳感器被廣泛用于工農(nóng)業(yè)生產(chǎn)、科學(xué)研究和生活等領(lǐng)域,數(shù)量高居各種傳感器之首。近百年來,溫度傳感器的發(fā)展大致經(jīng)歷了以下三個(gè)階段;(1)傳統(tǒng)的分立式溫度傳感器(含敏感元件);(2)模擬集成溫度傳感器/控制器;(3)智能溫度傳感器。目前,國際上新型溫度傳感器正從由集成化向智能化、網(wǎng)絡(luò)化的方向發(fā)展。 下面介紹的就是兩種最常見的溫度傳感器: (1)集成溫度傳感器模擬集成溫度傳感器。集成傳感器是將溫度傳感器集成在一個(gè)芯片上、可完成溫度測量及模擬信號輸出功能的專用ic。模擬集成溫度傳感器的主要特點(diǎn)是功能單一(僅測量溫度)、測溫誤

7、差小、價(jià)格低、響應(yīng)速度快、傳輸距離遠(yuǎn)、體積小、微功耗等,適合遠(yuǎn)距離測溫、控溫,不需要進(jìn)行非線性校準(zhǔn),外圍電路簡單。它是目前在國內(nèi)外應(yīng)用最為普遍的一種集成傳感器,典型產(chǎn)品有ad590、ad592、tmp17、lm135等。某些增強(qiáng)型集成溫度控制器(例如tc652/653)中還包含了a/d轉(zhuǎn)換器以及固化好的程序,這與智能溫度傳感器有某些相似之處。但它自成系統(tǒng),工作時(shí)并不受微處理器的控制,這是二者的主要區(qū)別。 (2)智能溫度傳感器智能溫度傳感器(亦稱數(shù)字溫度傳感器)是20世紀(jì)90年代中期微電子技術(shù)、計(jì)算機(jī)技術(shù)和自動(dòng)測試技術(shù)的結(jié)晶。智能溫度傳感器內(nèi)部都包含溫度傳感器、a/d轉(zhuǎn)換器、信號處理器、存儲器(

8、或寄存器)和接口電路。有的產(chǎn)品還帶多路選擇器、中央控制器(cpu)、隨機(jī)存取存儲器(ram)和只讀存儲器(rom)。智能溫度傳感器的特點(diǎn)是能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量,適配各種微控制器(mcu);并且它是在硬件的基礎(chǔ)上通過軟件來實(shí)現(xiàn)測試功能的,其智能化程度也取決于軟件的開發(fā)水平。智能溫度傳感器正朝著高精度、多功能、總線標(biāo)準(zhǔn)化、高可靠性及安全性、開發(fā)虛擬傳感器和網(wǎng)絡(luò)傳感器、研制單片測溫系統(tǒng)等高科技的方向迅速發(fā)展。 1 系統(tǒng)的相關(guān)介紹1.1 系統(tǒng)的目的及意義溫度檢測控制系統(tǒng)廣泛應(yīng)用于社會生活的各個(gè)領(lǐng)域,如家電、汽車、材料、電力電子等,常用的控制電路根據(jù)應(yīng)用場合和所要求的性能指標(biāo)有所不并且當(dāng)擾動(dòng)

9、因素不明確時(shí),參數(shù)調(diào)整不便仍是普遍存在的問題。采用數(shù)字溫度傳感器ds18b20,因其內(nèi)部集成了a/d轉(zhuǎn)換器,使得電路結(jié)構(gòu)更加簡單,而且減少了溫度測量轉(zhuǎn)換時(shí)的精度損失,使得測量溫度更加精確。數(shù)字溫度傳感器ds18b20只用一個(gè)引腳即可與單片機(jī)進(jìn)行通信,大大減少了接線的麻煩,使得單片機(jī)更加具有擴(kuò)展性。由于ds18b20芯片的小型化,更加可以通過單跳數(shù)據(jù)線就可以和主電路連接,故可以把數(shù)字溫度傳感器ds18b20做成探頭,探入到狹小的地方,增加了實(shí)用性。更能串接多個(gè)數(shù)字溫度傳感器ds18b20進(jìn)行范圍的溫度檢測。因此溫度監(jiān)測是生產(chǎn)自動(dòng)化的重要任務(wù)。因而本設(shè)計(jì)具有非常實(shí)際的生產(chǎn)意義。 1.2 設(shè)計(jì)要求本

10、設(shè)計(jì)是基于單片機(jī)stc89c52的溫度控制。它實(shí)現(xiàn)的是溫度的監(jiān)測和控制功能。 可設(shè)置報(bào)警溫度。本設(shè)計(jì)用ds18b20傳感器來檢測溫度,led用于顯示。max7219用來驅(qū)動(dòng)數(shù)碼顯示。設(shè)計(jì)先通過keil和proteus來聯(lián)合仿真,然后焊接實(shí)物。具體設(shè)計(jì)要求如下:(1) 使用stc89c52控制器和ds18b20溫度傳感器,實(shí)現(xiàn)溫度的檢測和顯示;(2) 設(shè)置默認(rèn)報(bào)警溫度為500c,并且能夠通過按鍵設(shè)置調(diào)高調(diào)低報(bào)警溫度;(3) 當(dāng)溫度高于報(bào)警溫度時(shí)報(bào)警燈亮,低于報(bào)警溫度時(shí)控制電阻絲加熱;(4) 四位數(shù)碼管能通過按鍵交換顯示實(shí)測溫度和報(bào)警溫度。1.3 系統(tǒng)傳感器ds18b20的介紹1.3.1 ds18

11、b20的主要特性 (1) 適應(yīng)電壓范圍更寬,電壓范圍:3.05.5v,在寄生電源方式下可由數(shù)據(jù)線供電。 (2) 獨(dú)特的單線接口方式,ds18b20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與ds18b20的雙向通訊。 (3) ds18b20支持多點(diǎn)組網(wǎng)功能,多個(gè)ds18b20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測溫。 (4)ds18b20在使用中不需要任何外圍元件,全部 傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi). (5)溫范圍55+125,在-10+85時(shí)精度為±0.5 (6)可編程 的分辨率為912位,對應(yīng)的可分辨溫度分別為0.5、0.25、0.125和0.0625

12、,可實(shí)現(xiàn)高精度測溫。 (7)在9位分辨率時(shí)最多在 93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時(shí)最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快。 (8)測量結(jié)果直接輸出數(shù)字溫度信號,以"一 線總線"串行傳送給cpu,同時(shí)可傳送crc校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力。 (9)負(fù)壓特性:電源極性接反時(shí),芯片不會因發(fā)熱而燒毀, 但不能正常工作。 1.3.2 ds18b20的外形和內(nèi)部結(jié)構(gòu) ds18b20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻rom 、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器th和tl、配置寄存器。ds18b20的外形及管腳排列如下圖1.3.2.1: 圖1.3.2.1 d

13、s18b20的外形及管腳排列 2 系統(tǒng)分析設(shè)計(jì) 2.1 溫度控制系統(tǒng)結(jié)構(gòu)圖及總述本設(shè)計(jì)實(shí)際上是模仿飲水機(jī)的工作原理。它是采用ds18b20溫度傳感器測試環(huán)境溫度,經(jīng)過cpu數(shù)據(jù)處理,用led數(shù)碼管來顯示溫度。該設(shè)計(jì)可設(shè)置預(yù)期溫度。當(dāng)溫控開關(guān)打開時(shí),若測得環(huán)境溫度低于設(shè)定溫度,則繼電器吸合,啟動(dòng)電熱絲工作;若測得環(huán)境溫度高于設(shè)定溫度,則繼電器釋放,電熱絲停止工作。 時(shí)鐘電路按鍵設(shè)定電路溫度傳感器電路led顯示電路報(bào)警信號燈控制電路繼電器控制電路單片機(jī)(89c52)主控制器 圖2.1.1系統(tǒng)總框圖 2.2 系統(tǒng)顯示界面方案該系統(tǒng)要求完成溫度的顯示以及按鍵操作時(shí)的實(shí)時(shí)顯示功能。基于上述原因,本次設(shè)計(jì)

14、考慮了兩種方案:方案一:完全采用lcd液晶顯示。這種方案顯示精確,可方便的顯示各種英文字符,溫度符號,正負(fù)號等,但實(shí)現(xiàn)復(fù)雜,且須完成大量的軟件工作。方案二:完全采用數(shù)碼管顯示。這種方案優(yōu)點(diǎn)是實(shí)現(xiàn)簡單。缺點(diǎn)是功能較少,只能顯示有限的符號和數(shù)碼字符。根據(jù)本設(shè)計(jì)的要求,方案二已經(jīng)滿足了要求,所以本次設(shè)計(jì)采用方案二以實(shí)現(xiàn)系統(tǒng)的顯示功能。2.3 系統(tǒng)輸入方案這里同樣討論了兩種方案:方案一:采用8155擴(kuò)展i/o口、鍵盤及顯示等。該方案的優(yōu)點(diǎn)是使用靈活可編程,并且有ram及計(jì)數(shù)器。若用該方案,可提供較多i/o口,但操作起來稍顯復(fù)雜。方案二:直接在i/o口線上接上按鍵開關(guān)。因?yàn)樵O(shè)計(jì)時(shí)精簡和優(yōu)化了電路,所以剩

15、余的端口資源還比較多。 由于該系統(tǒng)是對設(shè)定報(bào)警溫度的控制,只需用單片機(jī)本身的i/o口就可實(shí)現(xiàn),且本身的計(jì)數(shù)器及ram已經(jīng)夠用,故選擇方案二。 2.4系統(tǒng)的功能 能完成對系統(tǒng)溫度的監(jiān)測及控制,并且能夠?qū)Ρ豢噩F(xiàn)場的溫度進(jìn)行智能調(diào)節(jié),以保持被控現(xiàn)場溫度基本不變。該系統(tǒng)如果應(yīng)用于現(xiàn)實(shí)生活具有很強(qiáng)的實(shí)用意義。 3 相關(guān)軟件編譯知識介紹 3.1 c語言簡介 c語言是一種計(jì)算機(jī)程序設(shè)計(jì)語言。它既具有高級語言的特點(diǎn),又具有匯編語言的特點(diǎn)。它可以作為工作系統(tǒng)設(shè)計(jì)語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語言,編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序。它的應(yīng)用范圍廣泛,具備很強(qiáng)的數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且

16、各類科研都需要用到c語言 。具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開發(fā)。3.1.1 c語言的優(yōu)點(diǎn) c語言現(xiàn)在被廣泛應(yīng)用于單片機(jī)以及嵌入式系統(tǒng)的開發(fā),它具有如下一些優(yōu)點(diǎn): (1) 簡潔緊湊、靈活方便; (2) 運(yùn)算符豐富; (3) 數(shù)據(jù)類型豐富 ; (4) c是結(jié)構(gòu)式語言; (5) 語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大; (6) 允許直接訪問物理地址,對硬件進(jìn)行操作; (7) 生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高; (8) 適用范圍大,可移植性好 。 3.1.2 c語言缺點(diǎn)c語言是一種較匯編語言高級的語言,但相對于匯編這種直接面向機(jī)器的語言來說,它的處理效率較會變低。3.2 keil簡介keil c51是

17、美國keil software公司出品的51系列兼容單片機(jī)c語言軟件開發(fā)系統(tǒng),與匯編相比,c語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。keil提供了包括c編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uvision)將這些部分組合在一起。運(yùn)行keil軟件需要win98、nt、win2000、winxp等操作系統(tǒng)。如果你使用c語言編程,那么keil幾乎就是你的不二之選,即使不使用c語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會令你事半功倍。3.2.1 系統(tǒng)概述keil c51軟件提供豐富的庫

18、函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會到keil c51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級語言的優(yōu)勢。下面詳細(xì)介紹keil c51開發(fā)系統(tǒng)各部分功能和使用。 3.2.2 keil c51單片機(jī)軟件開發(fā)系統(tǒng)的整體結(jié)構(gòu) c51工具包的整體結(jié)構(gòu),uvision與ishell分別是c51 for windows和for dos的集成開發(fā)環(huán)境(ide),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用ide本身或其它編輯器編輯c或匯編源文件。然后分別由c

19、51及c51編譯器編譯生成目標(biāo)文件(.obj)。目標(biāo)文件可由lib51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)l51連接定位生成絕對目標(biāo)文件(.abs)。abs文件由oh51轉(zhuǎn)換成標(biāo)準(zhǔn)的hex文件,以供調(diào)試器dscope51或tscope51使用進(jìn)行源代碼級調(diào)試,也可由仿真器使用直接對目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如eprom中。 4系統(tǒng)流程圖設(shè)計(jì)軟件總體設(shè)計(jì)主要完成各部分的軟件控制和協(xié)調(diào)。本系統(tǒng)主程序模塊主要完成的工作是對系統(tǒng)的初始化,發(fā)送顯示數(shù)據(jù),同時(shí)對鍵盤進(jìn)行掃描,等待外部中斷,以及根據(jù)所需要的功能進(jìn)行相應(yīng)的操作。4.1主程序流程圖 本設(shè)計(jì)是模擬溫度控制系統(tǒng),主程序通過調(diào)用讀取溫度

20、子程序和顯示子程序,來實(shí)時(shí)掃描并顯示系統(tǒng)溫度;并通過調(diào)用溫度控制子程序?qū)y得的溫度與系統(tǒng)所設(shè)的報(bào)警溫度比較進(jìn)而對溫度進(jìn)行控制。通過掃描中斷口檢查是否有按鍵按下,調(diào)用相應(yīng)的按鍵掃描子程序來進(jìn)行對應(yīng)的設(shè)置。主程序如下:void main(void)ea=1; /開中斷總開關(guān)ex0=1; /允許int0中斷it0=1; /下降沿產(chǎn)生中斷text_rst();/第一次使用數(shù)碼管測試while(1)t_current=gettemperature(); /溫度值傳給t_timetemperature_display(t_current);/顯示溫度if(t_current<t_original)

21、/判斷繼電器是否工作,當(dāng)溫度小于t0 時(shí),繼電器導(dǎo)通jidianqi=1,alarm=1;elsejidianqi=0,alarm=0;delayms(30); /延時(shí)三秒,即每三秒掃描一次,顯示一次 開始 中斷設(shè)置 開中斷 led顯示 讀取當(dāng)前實(shí)際溫度值 顯示讀取的溫度值 溫度控制 結(jié)束 圖4.1.1主程序流程圖 4.2 ds18b20控制程序流程圖 ds18b20控制程序包括ds18b20復(fù)位程序,ds18b20寫數(shù)據(jù)程序以及ds18b20讀數(shù)據(jù)程序。4.2.1 ds18b20 復(fù)位程序流程圖具體程序如下: ds18b20rst(void) /ds18b20復(fù)位初始化 unsigned c

22、har x=0; dq = 1; delay(16); dq = 0; delay(160); dq = 1; delay(28); x=dq; delay(40); 開始 dq=1延時(shí) dq=0 延時(shí)(延時(shí)大于480us)dq=1延時(shí)結(jié)束圖4.2.1 ds18b20復(fù)位程序流程圖 4.2.2 ds18b20寫數(shù)據(jù)程序流程圖ds18b20寫程序流程圖如圖4.2.2所示。ds18b20寫數(shù)據(jù)程序如下: ds18b20write(unsigned char dat) /寫ds18b20的 子程序 unsigned char i=0; for (i=8; i>0; i-) dq = 0; dq

23、 = dat&0x01; delay(10); dq = 1; dat>>=1; 開始循環(huán)控制變量i=8 i=0? y ndq=dat&0x01延時(shí)dq=1dat>>=1結(jié)束圖4.2.2 ds18b20寫數(shù)據(jù)程序流程圖 4.2.3 ds18b20讀數(shù)據(jù)程序流程圖ds18b20讀數(shù)據(jù)程序流程圖如圖4.2.3所示。ds18b20讀數(shù)據(jù)程序如下: ds18b20read(void) /讀ds18b20的程序 unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i-) dq = 0; dat>

24、>=1; dq = 1; if(dq) dat|=0x80; delay(8); return(dat); 開始 循環(huán)控制變量i=8dat=0 i=0? y ndq=0;dat>>1;dq=1 y dq=1? ndat|=0x80延時(shí)返回dat 值結(jié)束圖4.2.3 ds18b20讀數(shù)據(jù)程序流程圖4.3 溫度讀取及轉(zhuǎn)換程序流程圖溫度讀取及轉(zhuǎn)換流程圖如圖4.3.1所示。溫度讀取及轉(zhuǎn)換具體程序如下: gettemperature(void) /從ds18b20中讀出兩個(gè)字節(jié)的溫度數(shù)據(jù) uchar symbol; unsigned int temperature; unsigned

25、char a=0; unsigned char b=0; unsigned int t=0; ds18b20rst(); ds18b20write(0xcc); ds18b20write(0x44); ds18b20rst(); ds18b20write(0xcc); ds18b20write(0xbe); a=ds18b20read(); b=ds18b20read(); t=b; t<<=8; /進(jìn)行精度轉(zhuǎn)換 t=t|a; if(t<0x0fff)symbol=0; else t=t+1; symbol=1; temperature=t*0.625; if(symbol=

26、1) temperature=-temperature; return(temperature); 開始ds18b20初始化啟動(dòng)溫度轉(zhuǎn)換讀取當(dāng)前實(shí)際溫度值處理讀取的溫度值y 溫度大于0? n 符號標(biāo)志為0 符號為1,按正溫度處理 返回處理后的溫度值 結(jié)束圖4.3.1 溫度讀取及轉(zhuǎn)換程序流程圖4.4 max7219驅(qū)動(dòng)程序流程圖4.4.1 max7219寫入一個(gè)字節(jié)數(shù)據(jù)程序流程圖寫入一個(gè)字節(jié)數(shù)據(jù)程序流程圖如圖4.4.1所示。 開始 循環(huán)控制變量i=8 code1=ch&0x80 ch=ch<<1 code1=1? y din=1,給上升沿 n din=0,給上升沿 結(jié)束 圖4

27、.4.1 max7219寫入一個(gè)字節(jié)數(shù)據(jù)程序流程圖 具體程序如下: void write_byte(uchar ch) uchar i,code1; _nop_(); _nop_(); _nop_(); for(i=0;i<8;i+) code1=ch&0x80; ch=ch<<1; if(code1) din=1; clk=0; clk=1; else din=0; clk=0; clk=1; 4.4.2 max7219寫入一個(gè)字?jǐn)?shù)據(jù)程序流程圖寫入一個(gè)字節(jié)數(shù)據(jù)程序流程圖如圖4.4.1所示。開始load=0延時(shí)寫地址延時(shí)寫數(shù)據(jù)延時(shí)load=1結(jié)束圖4.4.2 max7

28、219寫入一個(gè)字?jǐn)?shù)據(jù)程序流程圖 具體程序如下: void write7219(uchar addr,uchar number) load=0; _nop_(); _nop_(); _nop_(); write_byte(addr); _nop_(); _nop_(); _nop_(); write_byte(number); _nop_(); _nop_(); _nop_(); load=1; 4.5 數(shù)碼管溫度顯示程序流程圖數(shù)碼管溫度顯示程序流程圖如圖4.5.1所示。具體程序如下: temperature_display(int temperature_x) uchar symbol; if

29、(temperature_x<0) symbol=1; temperature_x=-temperature_x; else symbol=0; switch(symbol) case 0:disbuffer0=0x0f;break; case 1:disbuffer0=0x0a;break; disbuffer1=temperature_x/100; disbuffer2=(temperature_x%100)/10; disbuffer2=disbuffer2|0x80; disbuffer3=temperature_x%10; if(disbuffer1=0x00) disbuff

30、er1=0x0f; write7219(0x01,disbuffer0); write7219(0x02,disbuffer1); write7219(0x03,disbuffer2); write7219(0x04,disbuffer3); 開始 溫度小于0? y symbol=1 nsymbol=0顯示符號位顯示十位顯示個(gè)位顯示小數(shù)位結(jié)束圖4.5.1 數(shù)碼管溫度顯示程序流程圖4.6 按鍵中斷服務(wù)程序流程圖按鍵中斷服務(wù)程序流程圖如圖4.6.1所示。具體程序如下: int0() interrupt 0 using 0 temperature_display(t_original); key_v

31、 = 0x07; for(;) if(key() delayms(10); if(key() key_v = key_s; if(key_v & 0x01) = 0) t_original=10+t_original; temperature_display(t_original); else if(key_v & 0x02) = 0) t_original=t_original-10; temperature_display(t_original); else if(key_v & 0x04) = 0) goto exit; exit:temperature_disp

32、lay(t_current); 中斷入口 k1鍵按下? y 報(bào)警溫度加一, 顯示報(bào)警溫度 n k2鍵按下? y 報(bào)警溫度減一, 顯示報(bào)警溫度 nk3鍵按下退出按鍵程序,顯示當(dāng)前溫度中斷返回圖4.6.1 按鍵中斷服務(wù)程序流程圖 5 電路仿真5.1 proteus軟件介紹proteus軟件是labcenter electronics公司的一款電路設(shè)計(jì)與仿真軟件,它包括isis、ares等軟件模塊,ares模塊主要用來完成pcb的設(shè)計(jì),而isis模塊用來完成電路原理圖的布圖與仿真。proteus的軟件仿真基于vsm技術(shù),它與其他軟件最大的不同也是最大的優(yōu)勢就在于它能仿真大量的單片機(jī)芯片,比如mcs-

33、51系列、pic系列等等,以及單片機(jī)外圍電路,比如鍵盤、led、lcd等等。通過proteus軟件的使用我們能夠輕易地獲得一個(gè)功能齊全、實(shí)用方便的單片機(jī)實(shí)驗(yàn)室。5.2 溫度控制系統(tǒng)proteus仿真系統(tǒng)仿真圖如圖5.2.1所示。 圖5.2.1 系統(tǒng)仿真圖 6總結(jié)用單片機(jī)實(shí)現(xiàn)系統(tǒng)溫度控制,可以使我們的生活方便快捷。這項(xiàng)看起來不需要多少技術(shù)的工作卻是非常需要耐心和精力,幾天的設(shè)計(jì)對我們來說的意義,不僅僅是讓我們把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,還提高了我們的實(shí)際動(dòng)手能力和獨(dú)立思考的能力,更重要的是團(tuán)隊(duì)合作,雖然我們這次設(shè)計(jì)倉促,制作有些簡單,但我們得到了很多遠(yuǎn)大于設(shè)計(jì)的東西!通過這次課程設(shè)計(jì),使我

34、得到了一次用專業(yè)知識、專業(yè)技能分析和解決問題全面的系統(tǒng)的鍛煉。使我在單片機(jī)的基本原理、單片機(jī)應(yīng)用系統(tǒng)開發(fā)過程,以及在常用編程設(shè)計(jì)思路技巧,特別是對于c語言的掌握方面都能向前邁了一大步,為日后成為合格的應(yīng)用型人才打下良好的基礎(chǔ)。該設(shè)計(jì)雖然結(jié)束了,但由于時(shí)間、設(shè)備、條件和水平等各方面因素,還存在一些不足,還需要不斷改進(jìn),當(dāng)然也就需要學(xué)習(xí)并運(yùn)用更多相關(guān)的知識。在以后我會更加深入研究單片機(jī),相信在不久的將來我會通過自己的努力親手做出一個(gè)實(shí)用的產(chǎn)品出來。7參考文獻(xiàn)【1】王靜霞.單片機(jī)應(yīng)用技術(shù).電子工業(yè)出版社,2009【2】何立民.單片機(jī)高等教程.北京航空航天大學(xué)出版社,2000 【3】何立民.單片機(jī)應(yīng)用

35、系統(tǒng)設(shè)計(jì)系統(tǒng)配置與接口技術(shù).北京航空航天大學(xué)出版社, 2001【4】李靜.51單片機(jī)c語言程序設(shè)計(jì).人民郵電出版社,2010【5】李群芳等.單片微機(jī)計(jì)算機(jī)與接口技術(shù).電子工業(yè)出版社,2008附錄1 源程序代碼/規(guī)定默認(rèn)設(shè)定溫度為t0=40度,k0鍵為開始設(shè)置鍵,k1鍵為加一度鍵,k2鍵為減一度鍵#include<reg51.h>#include<intrins.h>#define uchar unsigned char/max7219端口定義sbit din=p20;sbit clk=p21;sbit load=p22;sbit jidianqi=p24;/繼電器接口s

36、bit k0=p32;sbit k1=p25;sbit k2=p26;sbit k3=p27;sbit dq =p13; /ds18b20定義單片機(jī)數(shù)據(jù)引腳 sbit alarm=p23; uchar disbuffer4=0,0,0,0;unsigned int t_original=500; / 規(guī)定默認(rèn)設(shè)定溫度為t0=40度unsigned int t_current;unsigned char key_s, key_v;void delay(unsigned int i) /延時(shí)程序 while(i-); ds18b20rst(void) /ds18b20復(fù)位初始化 unsigned

37、char x=0; dq = 1; delay(16); dq = 0; delay(160); dq = 1; delay(28); x=dq; delay(40);ds18b20read(void) /讀ds18b20的程序 unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i-) dq = 0; dat>>=1; dq = 1; if(dq) dat|=0x80; delay(8); return(dat);ds18b20write(unsigned char dat) /寫ds18b20的子程序 unsigned char i=0; for (i=8; i>0; i-) dq = 0; dq = dat&0x01; delay(10); dq = 1; dat>>=1; gettemperature(void) /從ds18b20中讀出兩個(gè)字節(jié)的溫度數(shù)據(jù) uchar symbol; unsigned int temperature; unsigned char a=0; unsigned char b

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論