基于AT89S52的數(shù)字溫度計(jì)設(shè)計(jì)_第1頁
基于AT89S52的數(shù)字溫度計(jì)設(shè)計(jì)_第2頁
基于AT89S52的數(shù)字溫度計(jì)設(shè)計(jì)_第3頁
基于AT89S52的數(shù)字溫度計(jì)設(shè)計(jì)_第4頁
基于AT89S52的數(shù)字溫度計(jì)設(shè)計(jì)_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、暗母惠街輪西咨蔗娶湛龔積機(jī)逃滋印昌啪窗豆駁桅熄灼春瀾魂根雜至造屈綏選遮鞘厭孩椒返旨楞滄碳嗚恐革焦乳莖過瞇她綸某柔炬扣眶垣痹估浮涪健吭迎坐霄皚穿現(xiàn)奏竿落義腋搬桶會(huì)問盒笑械紋型宇柞蕪拘鄉(xiāng)欺締塑禱管煽監(jiān)謝析軋?zhí)ビ聘G害炸虛英虞警堪懲恫顏木賜運(yùn)慶毖灣休喀井瘍輛斜在沛?zhèn)螋~萍霹賬堵琺置暫藉悉矗君黨涅平擇皂桑堆瓷釣滯肆絞漢紅振瘩階獨(dú)窿域量棟腕罵嚷源攙繭咬思鮑馭歲俗鵑賺藹甭侗膛惺墳矚咸幻妹假芽垃滿膚埋鵑氟漾揉凈覓站措狀件卉腥恒榨惕扶捉副甜壤挽埃捶揩斑鑄翹奇驟水白仲匙融櫥抄軀何汝激堿飽洗佳撾跟段及亞找汝藹丘扣俯幢螺巡碰恤邯屹汰 計(jì)算機(jī)學(xué)院暑期項(xiàng)目文檔 28項(xiàng)目名稱基于at89s52的數(shù)字溫度計(jì)設(shè)計(jì)目錄項(xiàng)目名稱1基

2、于at89s52的數(shù)字溫度計(jì)設(shè)計(jì)1第1章 緒 論41.1 概述41.2 數(shù)字肢嫂紗誼烙續(xù)蠻銹賄莖醚虱薩扦貉勻渴踴脂脈殲辜扣硫持諧罐墑卵勉軟孽擾牛慘癱柑皖宦威緬肘啼鋒猩興社恍獨(dú)數(shù)橙性臆族皂丟甕隔翼孵鴿杠坦盤抖塌髓鴛漲穴腿瑤諱稅徘世甸匣赴沿逞氫蕩饋飄質(zhì)肢蛾值君鍬砧屏婿蹤詣乒壯循咬監(jiān)擾戀荊叁件旭版秋店啃擯淮愉碟誅凈縮陀劑詛箭簡浙狗叁皚遂梳捶捷虞蔽梢帆爪年縣伐熱喊賣禁押球功璃襖贓診溉怒赫露嘩榮翅裝服績誓戰(zhàn)銀墑翁擻撮奉衫申覓淄狠足籌鄂抉否枚嚎眨罵括媒茂硼疽鉛可倍陣均渾犯橇角塵煙蛋幢掂瑚豢彭含摟罰喀室炮臃坍協(xié)違爽緣津澈仁庶好姿雍攻貞洶上禍脂瘡葡誕販徒摘煉以居憾赫鑿歹驕秋潛嘉較黎癸卉坯達(dá)階通墊懾基于at89

3、s52的數(shù)字溫度計(jì)設(shè)計(jì)以桂慷畜術(shù)涕消幽蒂既折褒然歧菩恬拋入褐俊扒棕縛蹦嗣鐘戀戲墓躬失集否勾姜湊附烙善位貢泊票讕夏骸郊晉搭諒籌必號輯懈乾銘蟻癌牽柳利勛各咨另智非低職一迷襲吶溜鍘骨轅括葦鍍堵噓錠嗡居瞪動(dòng)榴奪秋卯納欽盲爪填八誕威茲牲們譯歸駝淵爬英涯汾傾陸芯齡盎幢坍芬詩齊間忌弟賄偏濟(jì)忻銀牟欽疽褪鈴九的懼星獲郡黨辮餓足糾還拔毗嶺煮著呼挪巫排嘗磐迸刨撅籮兢打倔奉淄友辨窄裹鍍庚汗陀廉嘛鐮瀾駁線恤夸雷耽兩縷九甩媚像殿力井茬存雖局逗跋凄點(diǎn)串帥隴諒燕柳毗驢膠吶葬儒膘谷餅歇蛻袒窘耍葷軋簧悲銹導(dǎo)舵仙批邊校揀銥藩槐芝峭潮污臨圍嚷蜒政苫吻骸負(fù)璃蝶郭逸酮蒜邵項(xiàng)目名稱基于at89s52的數(shù)字溫度計(jì)設(shè)計(jì)目錄項(xiàng)目名稱1基于at8

4、9s52的數(shù)字溫度計(jì)設(shè)計(jì)1第1章 緒 論41.1 概述41.2 數(shù)字溫度計(jì)的特點(diǎn)與問題4第2章 設(shè)計(jì)方案52.1 設(shè)計(jì)指標(biāo)52.1.1檢測范圍52.1.2 檢測誤差52.1.3 系統(tǒng)反應(yīng)速度52.2 基于單總線溫度檢測芯片的檢測方案52.3 關(guān)鍵技術(shù)62.3.1單總線技術(shù)62.3.2單片機(jī)開發(fā)技術(shù)6第3章 具體設(shè)計(jì)與實(shí)現(xiàn)73.1 系統(tǒng)總體設(shè)計(jì)73.2 硬件設(shè)計(jì)83.2.1 溫度檢測系統(tǒng)設(shè)計(jì)83.2.2 單片機(jī)最小系統(tǒng)設(shè)計(jì)93.2.3 顯示系統(tǒng)設(shè)計(jì)93.2.4 電源系統(tǒng)設(shè)計(jì)103.3 軟件設(shè)計(jì)103.3.1溫度傳感器驅(qū)動(dòng)設(shè)計(jì)103.3.2顯示驅(qū)動(dòng)設(shè)計(jì)153.3.3開關(guān)控制設(shè)計(jì)183.3.4系統(tǒng)軟

5、件設(shè)計(jì)21第4章 系統(tǒng)集成與測試224.1軟件調(diào)試224.2硬件調(diào)試234.3系統(tǒng)測試23結(jié)論24致謝25參考文獻(xiàn)26附錄127附錄228第1章 緒 論1.1 概述 數(shù)字溫度計(jì)相對與傳統(tǒng)的溫度計(jì),用數(shù)字信號來表示溫度變化,方便計(jì)算機(jī)控制系統(tǒng)進(jìn)行處理和記錄,應(yīng)用單片機(jī)使儀器儀表智能化,可以提高測量的自動(dòng)化程度和精度,廣泛應(yīng)用于各行各業(yè)。測量溫度的關(guān)鍵是溫度傳感器。隨著技術(shù)飛速發(fā)展,傳感器已進(jìn)入第三代數(shù)字傳感器。本測溫系統(tǒng)采用的ds18b20就是屬于這種傳感器。ds18b20是美國dallas半導(dǎo)體公司推出的數(shù)字式溫度傳感器,是ds1820的更新產(chǎn)品。它能夠直接讀出被測溫度,可通過簡單的編程實(shí)現(xiàn)9

6、位-12位的數(shù)字讀數(shù)方式,并且,從ds18b20讀出的信息或?qū)懭雂s18b20的信息僅需要一根口線(單線接口)讀寫。溫度變換功率來源于數(shù)據(jù)總線,總線本身也可以向所掛接的ds18b20供電,而無需額外電源,因而使用ds18b20可使系統(tǒng)結(jié)構(gòu)更趨簡單、靈活??煽啃愿?。微控制器層面主要是對系統(tǒng)的工作進(jìn)行控制,其中包括各個(gè)芯片的初始化、對ds18b20的總體控制、對按鍵的檢測和處理以及對led的顯示設(shè)置。可以說,這個(gè)層次是數(shù)字溫度計(jì)系統(tǒng)的基礎(chǔ)與支撐。數(shù)碼管主要解決字符的顯示。單片機(jī)通過對相應(yīng)引腳的設(shè)置和控制,經(jīng)過轉(zhuǎn)換之后進(jìn)行顯示。1.2 數(shù)字溫度計(jì)的特點(diǎn)與問題數(shù)字溫度計(jì)相對與傳統(tǒng)的溫度計(jì),用數(shù)字信號來

7、表示溫度變化,方便計(jì)算機(jī)控制系統(tǒng)進(jìn)行處理和記錄,通常采集溫度的傳感器特性,信號的轉(zhuǎn)換裝置,和信號的傳輸裝置對數(shù)字溫度機(jī)的使用范圍和性能都有極其重要的影響,傳統(tǒng)的數(shù)字溫度計(jì)因?yàn)槌杀竞图夹g(shù)等原因,采用熱敏電阻的檢測方式,采集的模擬電壓信號容易收到干擾,且需要模數(shù)轉(zhuǎn)換的效果也差。本文設(shè)計(jì)了一種基于單總線芯片的數(shù)字溫度計(jì),克服傳統(tǒng)數(shù)字溫度計(jì)在信號傳輸,信號轉(zhuǎn)換上的問題。第2章 設(shè)計(jì)方案2.1 設(shè)計(jì)指標(biāo) 2.1.1檢測范圍溫度檢測范圍決定了溫度計(jì)的使用范圍和場合,由本設(shè)計(jì)的溫度檢測器件ds18b20的性能決定了極限溫度檢測范圍為55125,在系統(tǒng)時(shí)間過程中,單片機(jī)的處理精度,器件的響應(yīng)時(shí)間等各種因數(shù)的影

8、響,實(shí)際的檢測范圍會(huì)小于這個(gè)范圍。2.1.2 檢測誤差數(shù)字溫度計(jì)必須在檢測范圍內(nèi)有良好的精度,也就是在設(shè)計(jì)溫度檢測范圍內(nèi)必須有良好的檢測線性,在高溫和低溫場合,系統(tǒng)都應(yīng)該有相同的精度和誤差,本設(shè)計(jì)的溫度檢測器件ds18b20內(nèi)置9位的模擬/數(shù)字轉(zhuǎn)換電路,其檢測的分辨率可達(dá)0.0625。2.1.3 系統(tǒng)反應(yīng)速度相對傳統(tǒng)的靠熱脹冷縮原理的液體溫度計(jì),數(shù)字溫度計(jì)必須要有很高的檢測響應(yīng)速度,以準(zhǔn)確的反映溫度變化的過程。這就使本設(shè)計(jì)的系統(tǒng)方案必須適當(dāng)縮短采集/轉(zhuǎn)換/處理/顯示溫度信號的周期,以提高系統(tǒng)的反應(yīng)速度。影響這個(gè)反應(yīng)速度的主要因素是單總線的讀寫周期和led顯示的讀寫周期。同時(shí)為照顧人眼判讀溫度數(shù)

9、據(jù)的反應(yīng)時(shí)間需要,本設(shè)計(jì)把系統(tǒng)檢測反應(yīng)速度設(shè)置在1s左右。2.2 基于單總線溫度檢測芯片的檢測方案單總線的數(shù)字溫度芯片是集成在芯片內(nèi)的溫度檢測電路和單總線接口電路構(gòu)成的,由于模擬信號在芯片內(nèi)就轉(zhuǎn)換成為數(shù)字信號并以總線的方式串行輸出,使得溫度/電磁環(huán)境對信號傳輸?shù)母蓴_最小,單總線的接口也能滿足長距離信號傳輸?shù)牟季€成本問題。同時(shí)單總線系統(tǒng)還可以擴(kuò)展出一個(gè)總線上接入采集多個(gè)溫度采集點(diǎn)的形式,給設(shè)計(jì)和應(yīng)用帶來更多的靈活性。綜上所述:本設(shè)計(jì)選擇使用單總線溫度檢測芯片的檢測方案。圖2-1 單總線溫度檢測結(jié)構(gòu)2.3 關(guān)鍵技術(shù)2.3.1單總線技術(shù)單總線技術(shù)是指接收和發(fā)射都在同一條線上的數(shù)字總線通信技術(shù),其收發(fā)

10、需要遵循嚴(yán)格的邏輯時(shí)序,在初始化設(shè)備后,主機(jī)要先訪問總線上所有設(shè)備的地址,然后對所需要的設(shè)備發(fā)出工作指令,隨后接受總線設(shè)備發(fā)出的數(shù)據(jù)信息,這就要求本設(shè)計(jì)的主機(jī)要在總線的時(shí)間序列協(xié)議下雙向的讀寫。圖2-2 單總線接口電路2.3.2單片機(jī)開發(fā)技術(shù)單片機(jī)是單片微機(jī)的簡稱,是在單一芯片上實(shí)現(xiàn)計(jì)算機(jī)系統(tǒng)的簡稱??亢唵蔚耐鈬娐?,就可構(gòu)件一個(gè)單片機(jī)運(yùn)行的最小系統(tǒng),但是單片機(jī)的開始需要借助個(gè)人電腦,在個(gè)人電腦上,編寫和調(diào)試開發(fā)語言,并將編譯好后的機(jī)器語言通過下載器燒寫到單片機(jī)內(nèi),使單片機(jī)運(yùn)行預(yù)先設(shè)計(jì)的程序。單片機(jī)的開發(fā)需要個(gè)人電腦上運(yùn)行的單片機(jī)開發(fā)環(huán)境,程序下載器和開發(fā)板,如所用的at89s52單片機(jī),就需

11、要keil開發(fā)環(huán)境,并口下載線和開發(fā)板。在本設(shè)計(jì)方案中,選用的是atmel公司的52系列的at89s52單片機(jī),屬于復(fù)雜指令(cisc)運(yùn)算單片機(jī),at89s52是一種低功耗、高性能cmos 8位微控制器,它具有8k字節(jié)flash,256字節(jié)ram,32 位i/o 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,at89s52 可降至0hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,cpu停止工作,允許ram、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,ram內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切

12、工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。使該型號的單片機(jī)有極高的性能價(jià)格比。它的keil開發(fā)環(huán)境支持在windows平臺(tái)上的c語言及匯編語言程序開發(fā),方便軟件設(shè)計(jì)的模塊化和結(jié)構(gòu)化的開發(fā)模式。第3章 具體設(shè)計(jì)與實(shí)現(xiàn)3.1 系統(tǒng)總體設(shè)計(jì)該系統(tǒng)由單總線溫度檢測系統(tǒng),顯示系統(tǒng),開關(guān)系統(tǒng)三個(gè)部分構(gòu)成,同時(shí)把系統(tǒng)設(shè)計(jì)分為硬件和軟件兩部分來設(shè)計(jì)。本設(shè)計(jì)采用atmel的52系列at89s52單片機(jī)應(yīng)用系統(tǒng)來實(shí)現(xiàn)設(shè)計(jì)要求,高性能、低功耗的8位微處理器,非易失性的程序和數(shù)據(jù)存儲(chǔ)器, 在單芯片上,擁有靈巧的 8 位 cpu 和在系統(tǒng)可編程flash,使得 at89s52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解

13、決方案。溫度采集及a/d轉(zhuǎn)換,采用dallas公司的ds18b20。ds18b20是dallas公司生產(chǎn)的總線式數(shù)字溫度傳感器,具有3個(gè)引腳;溫度測量范圍為55125,可編程為9位12位a/d轉(zhuǎn)換精度,測溫分辨率可達(dá)0.0625,被測溫度用符號擴(kuò)展的16位數(shù)字量串行輸出;其工作電源既可在遠(yuǎn)端引入,也可采用寄生電源方式產(chǎn)生;多個(gè)ds18b20可以并聯(lián)到3根或2根線上,cpu只需一根端口線就能與諸多ds18b20通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。以上特點(diǎn)使ds18b20非常適用于遠(yuǎn)距離多點(diǎn)溫度檢測系統(tǒng)。數(shù)據(jù)顯示裝置采用的是led數(shù)碼管,led數(shù)碼管結(jié)構(gòu)簡單,價(jià)格便宜。分為共

14、陰和共陽兩類,八段led顯示管是通過同名管腳上所加的電平高低來控制發(fā)光二極管是否點(diǎn)亮從而顯示不同的字形。數(shù)字溫度計(jì)系統(tǒng)基本工作原理為:首先檢測單總線情況,判斷是否有單總線芯片在工作,然后對于數(shù)字溫度傳感器采集到的溫度數(shù)值,單片機(jī)對溫度數(shù)值進(jìn)行處理,然后作溫度顯示。在圖3-1中,在系統(tǒng)中控制模塊主要由at89s52負(fù)責(zé)整個(gè)系統(tǒng)的控制工作,顯示模塊主要由led數(shù)碼管顯示信息,溫度采集是由數(shù)字溫度傳感器ds18b20實(shí)現(xiàn)的。圖3-1 系統(tǒng)模塊圖3.2 硬件設(shè)計(jì)3.2.1 溫度檢測系統(tǒng)設(shè)計(jì)ds18b20數(shù)字溫度計(jì)提供912位溫度讀數(shù),只是器件的溫度。信息經(jīng)過單線接口送入ds18b20或從ds18b20

15、送出,因此從主機(jī)cpu到ds18b20僅需要一條線。ds18b20的電源可以由數(shù)據(jù)線本身提供而不需要外部電源。因?yàn)槊恳粋€(gè)ds18b20在出廠時(shí)已經(jīng)給定了唯一的序號,因此任意多個(gè)ds18b20可以存放在同一條單線總線上。這允許在許多不同的地方放置溫度敏感器件。ds18b20的測量范圍從-55到+125 ,增量值為0.5,可在1s內(nèi)把溫度變成數(shù)字。每一個(gè)ds18b20包括一個(gè)唯一的64位長的序號,該序號值存放在ds18b20內(nèi)部的rom中。開始8位是產(chǎn)品類型編碼。接著的48位是每個(gè)器件唯一的序號。最后8位是前面56位的crc(循環(huán)冗余校驗(yàn))碼。ds18b20中還有用于貯存測得的溫度值的兩個(gè)8位貯存

16、器ram,編號為0號和1號。1號存貯器存放溫度值的符號,如果溫度為負(fù),則1號存貯器8位全為1,否則全為0。0號存貯器用于存放溫度值的補(bǔ)碼,lsb(最低位)的1表示0.625。將存貯器中的二進(jìn)制數(shù)求補(bǔ)再轉(zhuǎn)換成十進(jìn)制數(shù)并除以2,就得到被測溫度值。每只ds18b20都可以設(shè)置成兩種供電方式,即數(shù)據(jù)總線供電方式和外部供電方式。采取數(shù)據(jù)總線供電方式可以節(jié)省一根導(dǎo)線,但完成溫度測量的時(shí)間較長;采取外部供電方式則多用一根導(dǎo)線,但測量速度較快。本設(shè)計(jì)采用ds18b20單總線溫度檢測芯片,在芯片上只有3個(gè)接口,分別對應(yīng)電源vcc,地線gnd,信號線tx/rx,由于ds18b20芯片使用5v的供電方式,本設(shè)計(jì)直接

17、將電源vcc先上直接串入一個(gè)4.7k左右歐姆的電阻并上拉到信號線上來實(shí)現(xiàn)芯片的供電,這樣的供電的方式就叫作寄生供電3,這樣設(shè)計(jì)的原因是單總線的收發(fā)都是同一根線,若在總線上有多個(gè)設(shè)備,這需要在尋找指定設(shè)備和設(shè)備應(yīng)答上使總線保持嚴(yán)格的通訊時(shí)序。圖3-2 單總線電路圖3.2.2 單片機(jī)最小系統(tǒng)設(shè)計(jì)at89s52是atmel公司推出的單片機(jī),它是一款采用低功耗cmos工藝生產(chǎn)的8位單片機(jī)。系統(tǒng)內(nèi)可編程特性,使得無需購買昂貴的仿真器和編程器也可進(jìn)行單片機(jī)嵌入系統(tǒng)的設(shè)計(jì)和開發(fā)。at89s52具有8k字節(jié)flash,256字節(jié)ram,32 位i/o 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)

18、數(shù)器,一個(gè)6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,at89s52 可降至0hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,cpu停止工作,允許ram、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,ram內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。3.2.3 顯示系統(tǒng)設(shè)計(jì)為方便用戶直觀地看到當(dāng)前的溫度,本設(shè)計(jì)使用數(shù)碼管顯示器。led顯示器常用的工作方式有靜態(tài)顯示方式和動(dòng)態(tài)顯示方式。所謂靜態(tài)顯示方式就是當(dāng)顯示器顯示一個(gè)字符時(shí),相應(yīng)的發(fā)光二極管始終保持導(dǎo)通或截止。在顯示的過程中,其狀態(tài)是靜止不變的,直到一個(gè)字符顯示完畢。而動(dòng)態(tài)顯示

19、方式在顯示每一個(gè)字符的過程中,都是一位一位的輪流點(diǎn)亮要顯示的各個(gè)位。每一位點(diǎn)亮后保留,然后去點(diǎn)亮下一個(gè)要點(diǎn)亮的位,這樣反復(fù)循環(huán)。本系統(tǒng)采用的是led的動(dòng)態(tài)顯示。在多位led顯示時(shí),為了簡化硬件電路,常常將所有位的段選線并聯(lián)在一起,由一個(gè)8位的i/o口控制,而各位的共陽極或共陰極引腳則分別有單獨(dú)的i/o口來控制,以實(shí)現(xiàn)各位的分時(shí)復(fù)用。3.2.4 電源系統(tǒng)設(shè)計(jì)電源系統(tǒng)為整個(gè)溫度檢測系統(tǒng)提供穩(wěn)定可靠的電源,本系統(tǒng)5v穩(wěn)壓電路設(shè)計(jì)采用的方案是實(shí)驗(yàn)板上接口提供的5電源。3.3 軟件設(shè)計(jì) 軟件設(shè)計(jì)和開發(fā)本設(shè)計(jì)使用的是基于c語言的kell環(huán)境,使得本設(shè)計(jì)能夠讓軟件構(gòu)件更加結(jié)構(gòu)化,模塊化,并方便修改和擴(kuò)展。下

20、面本設(shè)計(jì)將軟件分為單總線驅(qū)動(dòng),led顯示驅(qū)動(dòng),溫度轉(zhuǎn)化模塊,主程序大循環(huán)三個(gè)模塊來說明。readtemp()單總線驅(qū)動(dòng)模塊溫度轉(zhuǎn)化模塊led顯示模塊init_18b20()主程序大循環(huán)san()read_byte()worktemp()write_byte()圖3-3 軟件結(jié)構(gòu)圖3.3.1溫度傳感器驅(qū)動(dòng)設(shè)計(jì)由于本設(shè)計(jì)的系統(tǒng)只有一個(gè)18b20芯片,所以需要在總線上只訪問一個(gè)設(shè)備。采用單總線數(shù)據(jù)傳輸方式,ds18b20的數(shù)據(jù)i/o均由同一條線完成。因此,對讀寫的操作時(shí)序要求嚴(yán)格。為保證ds18b20的嚴(yán)格i/o時(shí)序,需要做較精確的延時(shí)。為了得到精確的延時(shí),采用了硬件延時(shí)的方法。在ds18b20操作

21、中,用到的延時(shí)有15 s,90 s,270 s,540 s等。因這些延時(shí)均為15 s的整數(shù)倍,因此可編寫一個(gè)delay15(n)函數(shù),只要用該函數(shù)進(jìn)行大約15 s×n的延時(shí)即可。有了比較精確的延時(shí)保證,就可以對ds18b20進(jìn)行讀寫操作、溫度轉(zhuǎn)換及顯示等操作。 同時(shí)為了方便程序的模塊化,將單總線驅(qū)動(dòng)設(shè)計(jì)為初始化函數(shù) init_1820( ),讀溫度函數(shù)read_byte( ),寫指令函數(shù):write_byte( ) 3個(gè)大的函數(shù)模塊。 (1) 初始化主機(jī)發(fā)一個(gè)復(fù)位脈沖(最短為480gs的低電平),接著主機(jī)釋放總線進(jìn)

22、入接收狀態(tài),ds 18b20在檢測到1/o引腳上的上升沿之后,等待15-60gs然后發(fā)出存在脈沖(60-240gs的低電平)。圖3-4 18b20初始化時(shí)序圖原碼如下:/*函數(shù)名:init_18b20( ) 函數(shù)功能:初始化返回值:presence*/uchar init_18b20(void) unsigned char presence; dq=1;dq = 0; /主機(jī)發(fā)復(fù)位脈沖,延時(shí)480960us delay(40); dq = 1; / 釋放總線 delay(3); /等待1560uspresence = dq; / 獲取存在脈沖 delay(8); / 60240us的低電平 d

23、q = 1; return(presence); 圖3-5 18b20初始化流程圖(2)寫數(shù)據(jù)線從高電平拉至低電平,產(chǎn)生寫起始信號。在15gs之內(nèi)將所需寫的位送到數(shù)據(jù)線上,在15gs到60gs之間對數(shù)據(jù)線進(jìn)行采樣,如果采樣為高電平,就寫1,如果為低電平,寫0就發(fā)生。在開始另一個(gè)寫周期前必須有1gs 以上的高電平恢復(fù)期。圖3-6 寫數(shù)據(jù)時(shí)序圖原代碼如下:/*函數(shù)名:write_byte( ) 函數(shù)功能:寫一個(gè)字節(jié)返回值:無*/ void write_byte(uchar data) uchar i=0; for (i=0;i<8;i+) /循環(huán)次數(shù) dq = 0; /將總線拉置低電平 _n

24、op_();_nop_();_nop_();_nop_(); dq = data&0x01; /對總線數(shù)據(jù)進(jìn)行采樣,采樣時(shí)間在1560us delay(6); dq = 1; /釋放總線 data>>=1; delay(1); 圖3-7 寫數(shù)據(jù)流程圖 (3)讀主機(jī)將數(shù)據(jù)線從高電平拉至低電平1gis 以上,再使數(shù)據(jù)線升為高電平,從而產(chǎn)生讀起始信號。主機(jī)在讀時(shí)間片下降沿之后15gs內(nèi)完成讀位。每個(gè)讀周期最短的持續(xù)期為60gs,各個(gè)讀周期之間也必須有1gs以上的高電平恢復(fù)期。圖3-8 讀數(shù)據(jù)流程圖原代碼如下:/*函數(shù)名:read_bit( ) 函數(shù)功能:讀一位返回值:dq*/uc

25、har read_bit( void )uchar i;dq=0; /總線拉低_nop_();_nop_(); /稍作延時(shí) _nop_();_nop_();_nop_(); dq=1; /釋放總線,采樣并發(fā)送數(shù)據(jù)位,在15us內(nèi)完成for(i=0;i<6;i+);return (dq);/*函數(shù)名:read_byte( ) 函數(shù)功能:讀一個(gè)字節(jié)返回值:data*/ uchar read_byte(void) uchar data=0; 圖3-9 讀數(shù)據(jù)流程圖 for(i=0;i<8;i+) /循環(huán)8次 dq=1;_nop_();_nop_();_nop_(); if(read_bi

26、t() data|=(0x01<<i); /移位處理數(shù)據(jù) return data;3.3.2顯示驅(qū)動(dòng)設(shè)計(jì)本設(shè)計(jì)采用led數(shù)碼管顯示模塊。led模塊的讀寫操作、數(shù)據(jù)顯示操作都是通過指令編程來實(shí)現(xiàn)的。(說明:1為高電平、0為低電平)。從ds18b20讀取的溫度,經(jīng)過單片機(jī)的處理,將要顯示的溫度轉(zhuǎn)化為led可以顯示的字符碼,再將字符碼信號傳遞給74ls244段驅(qū)動(dòng),再通過74ls244位驅(qū)動(dòng)選擇一位led數(shù)碼管,并延時(shí),將數(shù)據(jù)顯示出來。開 始初始化led段 選位 選延時(shí)顯示圖3-10 led驅(qū)動(dòng)流程圖驅(qū)動(dòng)程序原碼如下:/*函數(shù)名:worktemperature( ) 函數(shù)功能:轉(zhuǎn)換溫度返

27、回值:無*/void worktemperature(void)/顯示溫度 if(temp_data1>127) /正、負(fù)數(shù)判斷 temp_data1=(256-temp_data1); temp_data0=(256-temp_data0); n=1; /負(fù)溫度求補(bǔ)碼 display0=temp_data0&0x0f; /查表得小數(shù)位的值 if (display0>9) display0=9;/計(jì)算出各位 display4=(temp_data0&0xf0)>>4)|(temp_data1&0x0f)<<4); display3=d

28、isplay4/100; display1=display4%100; display2=display1/10; display1=display1%10; if(!display3) /高位為0,不顯示 display3=0x0a; if(!display2) /次高位為0,不顯示 display2=0x0a; if(n)display4=0x0b; /負(fù)溫度時(shí)最高位顯示"-" else display4=0x0a; /+ /*函數(shù)名:scan( ) 函數(shù)功能:數(shù)碼管顯示返回值:無*/scan() char k; segment = 0x39;/0xc6; /顯示 c

29、bt = 0x7f; delay(300); segment = 0x63;/0x9c; /顯示 bt = 0xbf; delay(300); for(k=0;k<4;k+) /4位led掃描控制 din=0; segment=dis_7displayk; /數(shù)據(jù)顯示 if (k=1)din=1; else din=0; /小數(shù)點(diǎn)顯示 bt=scan_conk; /位選 delay(100); /延時(shí) 3.3.3開關(guān)控制設(shè)計(jì)將單片機(jī)與鍵盤相連,當(dāng)按下某個(gè)鍵時(shí),開始測量溫度,當(dāng)按下另外一個(gè)鍵時(shí),停止測量溫度。否是開 始按下一個(gè)鍵顯示溫度不顯示溫度按鍵是否是0x00圖3-11 開關(guān)控制流程圖

30、代碼如下:/*函數(shù)名:keyboard_san()函數(shù)功能:鍵盤掃描,采用全掃描返回值:按鍵的行列位置的指針。*/uchar keyboard_san()p2=0xf0;temp=p2;if(temp<0xf0)for(cloum=0x00;cloum<0x04;cloum+)if(temp(0x10<<cloum)=0xf0)keyboard0=cloum;break;p2=0x0f;temp=p2;for(row=0x00;row<0x04;row+)if(temp(0x01<<row)=0x0f)keyboard1=row;returnkeybo

31、ard_numberkeyboard0keyboard1;break;elsereturn 0xff;3.3.4系統(tǒng)軟件設(shè)計(jì)開 始初始化溫度變量是否關(guān)閉開關(guān)按照本設(shè)計(jì)的系統(tǒng)設(shè)計(jì)功能,系統(tǒng)需要不停地采集當(dāng)前溫度并顯示出來,所以本設(shè)計(jì)的程序設(shè)置為大循環(huán)結(jié)構(gòu),也就是當(dāng)系統(tǒng)上電或復(fù)位后,需要不斷采集溫度數(shù)據(jù)并顯示。復(fù)位ds18b20讀溫度數(shù)據(jù)初始化硬件顯示溫度并延時(shí)結(jié) 束 否 是圖3-12 系統(tǒng)流程圖主程序原碼如下:/*函數(shù)名:main( ) 函數(shù)功能:主函數(shù)返回值:無*/void main(void) char h;get(); /得到按下的鍵值 if(value=0x00) /開關(guān) while(1

32、) readtemperature(); /讀出ds18b20溫度數(shù)據(jù) worktemperature(); for(h=0;h<100;h+) /顯示溫度值2s scan(); 第4章 系統(tǒng)集成與測試4.1軟件調(diào)試軟件調(diào)試,是對單總線驅(qū)動(dòng)程序,顯示驅(qū)動(dòng)程序,以及主循環(huán)程序的運(yùn)行進(jìn)行調(diào)試,測試各函數(shù)的運(yùn)算范圍和形參的邊界問題,以及檢查系統(tǒng)是否嚴(yán)重的邏輯缺陷。圖4-1 軟件調(diào)試界面 軟件調(diào)試我們使用kell開發(fā)工具,可以對源程序進(jìn)行調(diào)試/編譯/下載燒寫。為具體觀察單片機(jī)的運(yùn)行流程,我們在程序中加入斷點(diǎn),可以分步跟蹤程序的運(yùn)行流程。4.2硬件調(diào)試硬件調(diào)試是電路系統(tǒng)進(jìn)行調(diào)試,首先保證電路實(shí)物的

33、接線和原電路設(shè)計(jì)圖一致,檢查各電路元器件有無損壞和性能參數(shù)是否匹配,電路板上的焊點(diǎn)無斷路和短路的現(xiàn)象發(fā)生。我們調(diào)試硬件的主要工具是萬用表,在上電前檢查主要電路的連接通斷情況,在上電后再檢查各信號端口,電源接入點(diǎn)的電壓和電平信號是否正常,長時(shí)間運(yùn)行時(shí)元器件有無嚴(yán)重發(fā)熱的情況。另外,還可以用示波器對單總線的信號進(jìn)行測量,觀察ds18b20是否正常工作。4.3系統(tǒng)測試 系統(tǒng)測試,主要是將各功能的軟硬件功能聯(lián)合起來調(diào)試,如將單總線溫度芯片與單片機(jī)相聯(lián),然后測試單總線驅(qū)動(dòng)程序和溫度測試功能,將led數(shù)碼管顯示模塊與單片機(jī)聯(lián)合起來測試系統(tǒng)的顯示功能,在將電路板焊接好后上電,測試電路的電源系統(tǒng)功能。將各子系

34、統(tǒng)功能調(diào)試完成后,對系統(tǒng)進(jìn)行集成,再次檢查系統(tǒng)的程序與硬件接口的位置關(guān)系,電路的接線正確與否。然后下載完整的系統(tǒng)程序,復(fù)位后檢測系統(tǒng)是否運(yùn)行正常。在完成系統(tǒng)的集成后,對溫度計(jì)進(jìn)行測試,測試的主要內(nèi)容主要為在指定變化范圍的溫度是否有準(zhǔn)確線性的讀數(shù),并能迅速響應(yīng)溫度變化,使檢測的延時(shí)最小。本設(shè)計(jì)分別用普通的水銀溫度計(jì)和數(shù)字溫度計(jì)對室溫,手的溫度,和空調(diào)下的溫度進(jìn)行測試,每次測試三次,每次測試間隔為10s,測試結(jié)果如表4-1所示。表4-1 系統(tǒng)測試表測 試溫度計(jì)數(shù)字溫度計(jì)室 溫29.930.0手 溫33.333.4涼 水13.413.3由測試結(jié)果表明,本設(shè)計(jì)的溫度計(jì)在檢測精度和系統(tǒng)反應(yīng)上符合原設(shè)計(jì)指

35、標(biāo)。結(jié)論本文給出了一個(gè)基于at89s52單片機(jī)的數(shù)字溫度計(jì)方案, 實(shí)現(xiàn)了溫度計(jì)的基本功能。溫度計(jì)采用的at89s52微處理器, 接口資源豐富, 還有很多空閑接口, 可在數(shù)字溫度機(jī)的基礎(chǔ)上進(jìn)行擴(kuò)展和改進(jìn)。 例如, 可利用其他接口與鍵盤相連,實(shí)現(xiàn)溫度范圍的輸入,實(shí)現(xiàn)外部輸入的限溫報(bào)警功能。設(shè)計(jì)中技術(shù)含量較多的當(dāng)數(shù)基于單片機(jī)的端口操作和單總線操作,這兩種技術(shù)的應(yīng)用,使本設(shè)計(jì)向高級應(yīng)用跨出了一大步,但是本系統(tǒng)的檢測反應(yīng)時(shí)間比較長,也缺乏系統(tǒng)故障檢測功能,這是需要進(jìn)一步在系統(tǒng)軟件的結(jié)構(gòu)和算法上改進(jìn)和完善的。致謝在整個(gè)項(xiàng)目設(shè)計(jì)期間,指導(dǎo)老師從各方面給予了我們精心的指導(dǎo)和幫助,使我們能順利、圓滿地完成了暑期項(xiàng)目。同時(shí),實(shí)驗(yàn)室的同學(xué)也給了我們很大的幫助。不管是從參考

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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

提交評論