基于單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì)本科畢業(yè)論文_第1頁(yè)
基于單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì)本科畢業(yè)論文_第2頁(yè)
基于單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì)本科畢業(yè)論文_第3頁(yè)
基于單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì)本科畢業(yè)論文_第4頁(yè)
基于單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì)本科畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、欽 州學(xué)院本科畢業(yè)論文(設(shè)計(jì)) 基于單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì) 院 系 物理與電子工程學(xué)院 專 業(yè) 自動(dòng)化 學(xué) 生 班 級(jí) 2010級(jí)1班 姓 名 學(xué) 號(hào) 指導(dǎo)教師單位 物理與電子工程學(xué)院 指導(dǎo)教師姓名 指導(dǎo)教師職稱 講師 2014年4月基于單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì) 自動(dòng)化專業(yè)2010級(jí) 指導(dǎo)教師 摘 要隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到生活、工作、科研等各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù)。本文將介紹一種基于單片機(jī)控制的多功能數(shù)字溫度計(jì),該設(shè)計(jì)主要包括溫度模塊和時(shí)鐘模塊,溫度模塊實(shí)現(xiàn)了溫度的上下限設(shè)置報(bào)警功能,當(dāng)溫度不在設(shè)定范圍內(nèi)時(shí),可以報(bào)警;時(shí)鐘模塊可以同步顯示時(shí)間日歷,日期和時(shí)間都

2、可通過(guò)按鍵校整。本系統(tǒng)顯示部分采用lcd液晶顯示屏顯示,工作方便,外形美觀。關(guān)鍵詞:?jiǎn)纹瑱C(jī)stc89c52;lcd1602;ds18b20;ds1302design of digital thermometer based on single chipautomation professional 2010instructorabstractwith the era of progress and development, single-chip technology has spread to live, work, research and other fields, has become

3、 a relatively mature technology. this paper will introduce a single-chip microcomputer-based control of multifunctional digital thermometer. this design includes a temperature module and a clock module. temperature modules can achieve alarm function by setting the upper and lower limits of temperatu

4、re. when the temperature is not within the set range, it could alarm. and clock modules can simultaneous display the calendar, which date and time can be corrected through the keys. parts of the system display use lcd liquid crystal display screen, work convenient with beautiful appearance.key words

5、: single chip stc89c52, lcd1602, ds18b20, ds1302 目錄前言11 方案論證與系統(tǒng)總體框圖11.1 方案論證11.1.1 方案一11.1.2 方案二11.2 系統(tǒng)設(shè)計(jì)框圖22 主要器件功能介紹22.1 stc89c52rc單片機(jī)32.2 lcd1602顯示屏42.3 ds1302時(shí)鐘芯片62.3.1 ds1302的寄存器72.3.2 ds1302的讀寫方式82.4 溫度傳感器ds18b2092.4.1 ds18b20接口電路102.4.2 ds18b20工作原理102.4.3 ds18b20工作時(shí)序133 硬件電路163.1 單片機(jī)主控制模塊設(shè)計(jì)16

6、3.2 顯示模塊設(shè)計(jì)183.3 時(shí)鐘電路模塊設(shè)計(jì)183.4 溫度測(cè)量電路模塊設(shè)計(jì)183.5 報(bào)警和按鍵模塊設(shè)計(jì)203.6 系統(tǒng)總體硬件電路204 軟件設(shè)計(jì)214.1 系統(tǒng)軟件程序設(shè)計(jì)214.2 液晶顯示程序224.3 時(shí)鐘芯片程序234.4 溫度傳感器程序24總結(jié)26致謝27參考文獻(xiàn)27附錄a29附錄b30附錄c31前言時(shí)代在變化,科學(xué)技術(shù)不斷地融入人們的生活中,因此單片機(jī)的應(yīng)用越來(lái)越廣泛。單片機(jī)常作為一個(gè)核心部件使用,特別是在自動(dòng)控制系統(tǒng)和實(shí)時(shí)檢測(cè)系統(tǒng)中1。數(shù)字溫度計(jì)和數(shù)字鐘便是其中的代表之一,把單片機(jī)結(jié)合到溫度計(jì)和時(shí)鐘的設(shè)計(jì)中,使他們實(shí)現(xiàn)數(shù)字化,大大方便了人們對(duì)溫度的測(cè)量和時(shí)間的記錄。科學(xué)

7、技術(shù)能夠讓舊的東西煥發(fā)新的活力,從而改變?nèi)藗兊纳罘绞?。溫度是常用到的一個(gè)物理量,特別是在石油、化工、環(huán)境保護(hù) 、醫(yī)學(xué)、工業(yè)等領(lǐng)域更是作為必測(cè)參數(shù)2。對(duì)溫度的測(cè)量就必須用到溫度計(jì),傳統(tǒng)的溫度計(jì)有酒精溫度計(jì)、水銀玻璃溫度計(jì)、熱電偶和熱電阻溫度計(jì)等。傳統(tǒng)的溫度計(jì)反應(yīng)速度慢、讀數(shù)麻煩等缺點(diǎn),因此應(yīng)用起來(lái)比較麻煩,在一些領(lǐng)域,傳統(tǒng)的溫度計(jì)往往達(dá)不到測(cè)量要求3-4。時(shí)代在進(jìn)步,科學(xué)技術(shù)也快速發(fā)展,新技術(shù)推動(dòng)了溫度測(cè)量方式的變化,無(wú)需人員參與就能夠自動(dòng)檢測(cè)的測(cè)溫系統(tǒng)被廣泛應(yīng)用。本設(shè)計(jì)的數(shù)字溫度計(jì)可以實(shí)現(xiàn)數(shù)字顯示,使得讀數(shù)變得更加方便快捷,同時(shí)也能夠達(dá)到比較高的測(cè)量精度。本設(shè)計(jì)中采用8位單片機(jī)作為主控制器件

8、,添加了8管腳封裝的時(shí)鐘芯片,以實(shí)現(xiàn)計(jì)時(shí)功能。測(cè)溫元件選用的是一種封裝類似于三極管的溫度傳感器,此溫度傳感器具備把模擬量轉(zhuǎn)變?yōu)閿?shù)字量的功能,大大簡(jiǎn)化了本設(shè)計(jì)的電路,提高了系統(tǒng)的穩(wěn)定性,同時(shí)也降低了設(shè)計(jì)成本。為了具備比較好的顯示界面,顯示器件采用的是lcd液晶屏,1 方案論證與系統(tǒng)總體框圖1.1 方案論證1.1.1 方案一感溫器件選用的是日常生活中比較常見的熱敏電阻,溫度與時(shí)間的數(shù)字則用led數(shù)碼管顯示。本系統(tǒng)的測(cè)溫電路利用熱敏電阻的感溫效應(yīng),采集隨被測(cè)溫度變化的電流值或者電壓值,然后經(jīng)過(guò)a/d芯片把模擬量轉(zhuǎn)換成單片機(jī)可以處理的數(shù)字量,然后用led數(shù)碼管將被測(cè)溫度顯示出來(lái)。這樣的設(shè)計(jì)方案需用到比

9、較繁雜的a/d轉(zhuǎn)換電路,要比較完整的顯示所有內(nèi)容需用到多位數(shù)碼管,電路比較繁雜。1.1.2 方案二 選擇ds18b20作為測(cè)溫器件,把測(cè)得的溫度和同步的時(shí)間日歷顯示在lcd液晶里。本系統(tǒng)僅使用一只ds18b20傳感器,ds18b20不僅可以直接讀取被測(cè)溫度值進(jìn)行顯示,而且溫度傳感器ds18b20具有獨(dú)特的單總線接口方式,與單片機(jī)連接時(shí)僅需要一條線既可實(shí)現(xiàn)通訊,無(wú)需太多外部元件,簡(jiǎn)化了外圍電路5。1602液晶的顯示空間大,完全滿足溫度和日歷的顯示要求,電路簡(jiǎn)單,顯示信息完整,可以很好的滿足設(shè)計(jì)要求。綜上所述,方案一中的電路比較復(fù)雜,器件多,不便于調(diào)試;方案二的電路相對(duì)簡(jiǎn)單,器件消耗少,并且程序編

10、寫也比較簡(jiǎn)單,所以本設(shè)計(jì)選用方案二。1.2 系統(tǒng)設(shè)計(jì)框圖主控器模塊、顯示模塊、測(cè)溫模塊和時(shí)鐘模塊是本系統(tǒng)的主要部分,另外還加有一些簡(jiǎn)單電路,例如復(fù)位電路、報(bào)警電路和按鍵等。測(cè)溫模塊的核心器件是ds18b20溫度傳感器,其應(yīng)用電路簡(jiǎn)單,方便使用。計(jì)時(shí)芯片使用的是ds1302,它能夠精準(zhǔn)計(jì)時(shí),而且能夠在失去主電源的情況下由后備電源對(duì)它供電,以保證芯片的正常工作。顯示模塊采用液晶顯示屏lcd1602,簡(jiǎn)潔美觀。主控芯片使用stc公司生產(chǎn)的rc系列stc89c52rc單片機(jī)。具體系統(tǒng)設(shè)計(jì)框圖如圖1.1所示。lcd顯示屏?xí)r鐘溫度傳感器報(bào)警電路按鍵 復(fù)位電路主控制器圖1.1 系統(tǒng)設(shè)計(jì)框圖2 主要器件功能介

11、紹2.1 stc89c52rc單片機(jī) stc89c52rc單片機(jī)是國(guó)內(nèi)公司生產(chǎn)的一種8位單片機(jī),屬于rc系列單片機(jī)中的一種。這種系列單片機(jī)在出廠時(shí)就已經(jīng)被完全加密,不可能被解密,用戶程序可以用isp/iap機(jī)制寫入。它分有dip-40,plcc-44,pqfp-44三種封裝類型,第一種封裝類型是最普遍的,也是最常用的,所以此系統(tǒng)選擇了第一種封裝類型。此單片機(jī)的功耗比較很低,運(yùn)行速度也比較快,內(nèi)部帶有多達(dá)8k容量的可編程存儲(chǔ)器,完全滿足了本設(shè)計(jì)的控制要求。芯片中包含著非常靈巧的8位處理器和大容量的可編程存儲(chǔ)器,這特性加快了此單片機(jī)在很多不同控制領(lǐng)域的使用。此單片機(jī)具有這樣的一些標(biāo)準(zhǔn)功能,如32

12、位i/o口線,512字節(jié)隨機(jī)存儲(chǔ)器,8k字節(jié)可編程存儲(chǔ)器,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器,內(nèi)部復(fù)位電路,內(nèi)置4kb帶電可擦寫可編程只讀存儲(chǔ)器,掉電時(shí)數(shù)據(jù)不會(huì)丟失,可以同時(shí)接收與發(fā)送數(shù)據(jù)的串行口。另外它可降至0hz 靜態(tài)邏輯操作,有兩種軟件節(jié)電模式可選擇??臻e模式下,cpu不工作,但串口、ram、中斷、定時(shí)器/計(jì)數(shù)器仍然工作6。掉電保護(hù)方式下,ram內(nèi)容不丟失,振蕩器不工作,因此單片機(jī)停止所有工作,當(dāng)新中斷或硬件復(fù)位時(shí),單片機(jī)又開始工作。在此采用的stc公司生產(chǎn)的stc89c52rc單片機(jī),它不僅價(jià)格便宜,而且焊接簡(jiǎn)單方便,并有著比較大的存儲(chǔ)空間7。其管腳圖如下圖2.1所示。圖2.1 stc89c

13、52單片機(jī)管腳圖stc89c52rc各個(gè)管腳的功能如下8-9:(1)主電源引腳(2根)vcc(pin40):電源輸入,接正五伏電源;gnd(pin20):接地。(2)外接晶振引腳(2根)xtal1(pin19):片內(nèi)振蕩電路的輸入端;xtal2(pin18):片內(nèi)振蕩電路的輸出端。(3)控制引腳(4根)rst/vpp(pin9):復(fù)位用的引腳,高電平有效,當(dāng)高電平持續(xù)的時(shí)間為24個(gè)時(shí)鐘振蕩周期時(shí)就可以實(shí)現(xiàn)單片機(jī)的復(fù)位操作,如果高電平的持續(xù)時(shí)間過(guò)短將不能復(fù)位成功。ale/prog(pin30):地址鎖存允許信號(hào);psen(pin29):外部存儲(chǔ)器讀選通信號(hào)。ea/vpp(pin31):程序存儲(chǔ)器

14、的選擇腳,當(dāng)這個(gè)管腳接到高電平時(shí)指令被從內(nèi)部程序存儲(chǔ)器讀取,當(dāng)這個(gè)管腳接到低電平時(shí)指令被從外部程序存儲(chǔ)器讀取。(4)可編程輸入/輸出引腳(32根)這種類型的單片機(jī)中共32個(gè)可編程的i/o引腳,每8位作為一個(gè)口,共分為4組,分別為p0、p1、p2、p3口。p0口(pin39pin32):8位雙向i/o引腳,名稱為p0.0p0.7;p1口(pin1pin8):8位準(zhǔn)雙向i/o引腳,名稱為p1.0p1.7; p2口(pin21pin28):8位準(zhǔn)雙向i/o引腳,名稱為p2.0p2.7 ;p3口(pin10pin17):8位準(zhǔn)雙向i/o引腳,名稱為p3.0p3.7。2.2 lcd1602顯示屏lcd1

15、602液晶屏,可以顯示兩行的內(nèi)容,共有32小格,每個(gè)字符占用一個(gè)小格子的空間??梢阅脕?lái)顯示符號(hào)、數(shù)字、字母等的點(diǎn)陣型液晶模塊,也可以顯示漢字,但是實(shí)現(xiàn)的過(guò)程相當(dāng)復(fù)雜,1602液晶也常常被叫為1602字符型液晶,它由若干個(gè)57或者511等點(diǎn)陣字符位組成,字符可以顯示在任何一個(gè)點(diǎn)陣字符位上。這種液晶有不少的優(yōu)點(diǎn),例如超薄而輕巧、體積較小、顯示的內(nèi)容比較豐富和微功耗等,所以比較受歡迎,它被越來(lái)越廣泛的應(yīng)用到袖珍式儀表以及低功耗應(yīng)用系統(tǒng)中10。比傳統(tǒng)的數(shù)碼管顯示它的顯示界面有了很大的改善,雖然它的價(jià)格高點(diǎn),但是它顯示的效果好也很耐用。與數(shù)碼管相比,它接線相對(duì)簡(jiǎn)單,容易焊接,而且它的顯示程序相對(duì)數(shù)碼管的

16、顯示程序來(lái)說(shuō)也比較短,容易編寫和調(diào)試。lcd1602可以能讓系統(tǒng)的顯示模塊能夠可以顯示比較多的信息,該器件采用并行接口,傳送數(shù)據(jù)的效率也比較好。lcd1602的管腳圖和接口信號(hào)說(shuō)明分別如圖2.2和表2.1所示。圖2.2 lcd1602的管腳圖 表2.1 lcd1602的接口信號(hào)說(shuō)明引腳號(hào)標(biāo)識(shí) 說(shuō)明pin1gnd接0vpin2vcc接4.8v-5vpin3v0對(duì)地接電阻470-2kpin4rsrs=0,指令寄存器;rs=1,數(shù)據(jù)寄存器pin5r/wr/w=0,寫;r/w=1,讀pin6e允許信號(hào)pin7d0數(shù)據(jù)0pin8d1數(shù)據(jù)1pin9d2數(shù)據(jù)2pin10d3數(shù)據(jù)3pin11d4數(shù)據(jù)4pin1

17、2d5數(shù)據(jù)5pin13d6數(shù)據(jù)6pin14d7數(shù)據(jù)7pin15led+背光正極,接4.8v - 5vpin16led-背光負(fù)極,接0v使用指令可以實(shí)現(xiàn)對(duì)1602屏的操作,例如讀、寫、顯示地址等。使用這類型的液晶前要了解相關(guān)指令的作用以及指令的設(shè)置方法,只有在完成相關(guān)指令的設(shè)置的情況下,才能在屏幕上顯示所需的效果,這種液晶總共有11條指令,如表2.2所示。表2.2 lcd1602指令表指令rsrwd7d6d5d4d3d2d1d01清屏00000000012光標(biāo)返回0000000013輸入模式00000001i/ds4顯示控制0000001dcb5光標(biāo)/字符移位000001s/cr/l6功能000

18、01dlnf7置字符發(fā)生器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志和地址01bf計(jì)數(shù)器地址10寫數(shù)據(jù)到指令7.8所設(shè)地址10要寫的數(shù)據(jù)11從指令7.8所設(shè)的地址讀數(shù)據(jù)11讀出的數(shù)據(jù)2.3 ds1302時(shí)鐘芯片ds1302芯片是由國(guó)外公司研制生產(chǎn)的,一般為8管腳封裝,它作為一種自帶隨機(jī)存儲(chǔ)器、運(yùn)行功耗低、運(yùn)行速度快的適時(shí)時(shí)鐘芯片,它的實(shí)時(shí)時(shí)鐘電路提供了年、月、日、星期、時(shí)、分還有秒的信息。這種時(shí)鐘芯片可以自動(dòng)調(diào)整閏年的天數(shù)和每月的天數(shù),改變了以往只能靠人工進(jìn)行調(diào)整的情況,時(shí)鐘操作能以指令設(shè)定為12或24小時(shí)格式11-12。它與主控制器之間的通信方式為同步

19、串行方式,節(jié)省了主控制器的i/o資源,也簡(jiǎn)化了系統(tǒng)的電路設(shè)計(jì)結(jié)構(gòu)。ds1302管腳圖及內(nèi)部結(jié)構(gòu)圖如下圖2.3所示。(1)1腳vcc1為后備電源引腳;(2)2和3腳x1、x2是晶振引腳;(3)4腳gnd作為接地引腳;(4)5腳rst作為復(fù)位引腳;(5)6腳i/o作為數(shù)據(jù)輸入、輸出引腳;(6)7腳sclk作為串行時(shí)鐘引腳;(7)8腳vcc2作為主電源引腳;圖2.3 ds1302管腳及內(nèi)部結(jié)構(gòu)圖2.3.1 ds1302的寄存器ds1302內(nèi)部含有時(shí)鐘相關(guān)的寄存器,通過(guò)向相關(guān)寄存器寫入一些命令字實(shí)現(xiàn)對(duì)時(shí)鐘ds1302的操作,例如在需改變某時(shí)刻分的初始值,首先要把命令字82h寫入寄存器,然后就可以把初始

20、值寫入分寄存器;當(dāng)某時(shí)刻分的值需要讀出時(shí),需要先寫入命令字82h,然后才可以從分寄存器讀取數(shù)據(jù)。表2.3列出了ds1302內(nèi)部和時(shí)鐘相關(guān)的寄存器分布。表2.3 ds1302內(nèi)部和時(shí)鐘相關(guān)的寄存器分布寄存器名稱命令字取值范圍各位名稱寫讀76543210秒寄存器80h81h0059ch10secsec分寄存器82h82h0059010minmin時(shí)寄存器84h85h0112,002312/240aphrhr日寄存器86h87h0128,29,30,310010datedate月寄存器88h89h011200010mmonth周寄存器8ah8bh010700000day年寄存器8ch8dh09991

21、0year10year上表中各寄存器存放的數(shù)據(jù)位均為bcd碼,所用符號(hào)的意義如下:(1)ch為時(shí)鐘停止位,ch=0,振蕩器開始工作;ch=1,振蕩器停止工作。(2)10sec為秒的十位數(shù)字,sec為秒的個(gè)位數(shù)字; (3)10min為分的十位數(shù)字,min為分的個(gè)位數(shù)字;(4)ap為小時(shí)的格式設(shè)置位,ap=0,上午模式(ap);ap=1,下午模式(pm);(5)10date為日期的十位數(shù)字,date為日期的個(gè)位數(shù)字;(6)10m為月的十位數(shù)字,month為月的個(gè)位數(shù)字;(7)day為周的個(gè)位數(shù)字;(8)10year為年的十位數(shù)字,year為年的個(gè)位數(shù)字; ds1302內(nèi)部的ram共有兩種,一種是單

22、個(gè)ram單元,總共31個(gè),一個(gè)8位的字節(jié)作為每一個(gè)單元13。c0h到fdh作為命令控制字,偶數(shù)表示寫操作,奇數(shù)表示讀操作;另一種是突發(fā)方式下的ram, 所有的ram的31個(gè)字節(jié)可一次性被讀寫,ffh和feh分別作為讀寫命令控制字。在一般情況下,不需要對(duì)ram進(jìn)行操作。2.3.2 ds1302的讀寫方式如圖2.4所示為ds1302的命令字結(jié)構(gòu)。第8位為最高控制位,當(dāng)它為1時(shí),表示允許寫入;如果不為1,則表示禁止寫入。第7位表示操作對(duì)象是ram還是寄存器,該位為1,對(duì)ram操作;不為1,對(duì)時(shí)鐘寄存器操作。最后一位為0,表示寫;為1,表示讀。剩下的5個(gè)位是ram或時(shí)鐘寄存器的內(nèi)部地址。1ram/ck

23、a4a3a2a1a0r/w圖2.4 ds1302的命令字結(jié)構(gòu)圖2.5 ds1302工作時(shí)序圖單片機(jī)和ds1302之間的通信協(xié)議規(guī)定:無(wú)數(shù)據(jù)傳遞時(shí),sclk這個(gè)引腳會(huì)保持低電平的狀態(tài),此時(shí)如果ce從低電平變成高電平時(shí)即啟動(dòng)數(shù)據(jù)傳輸,ce為低電平時(shí)禁止數(shù)據(jù)傳輸。在時(shí)鐘脈沖的上升沿?cái)?shù)據(jù)被寫入到時(shí)鐘芯片內(nèi),而在時(shí)鐘脈沖的另一種狀態(tài),數(shù)據(jù)被從時(shí)鐘芯片中讀出。傳遞數(shù)據(jù)時(shí),低位(bit0)在前,高位(bit7)在后。工作時(shí)序如圖2.5所示。根據(jù)這些規(guī)則,即可對(duì)ds1302進(jìn)行讀寫操作。2.4 溫度傳感器ds18b20ds18b20是新研發(fā)生產(chǎn)的傳感器,具備單總線方式和數(shù)字化的特點(diǎn),這種傳感器適配微處理器屬于

24、一種改進(jìn)型器件,具備了智能化的特點(diǎn),可直接讀出被測(cè)溫度14。這種溫度傳感器的內(nèi)部都刻錄有64位序列號(hào),做到每個(gè)器件序號(hào)的唯一性,這種特點(diǎn)有助于在通信過(guò)程中的器件識(shí)別。又采用單總線這樣的獨(dú)特的接口方式,也就是多個(gè)數(shù)字式傳感器可以同時(shí)掛在一根信號(hào)線上,所以比較容易實(shí)現(xiàn)用單塊微控制器去控制分布在很多區(qū)域的ds18b20。這樣的一種特性在過(guò)程監(jiān)測(cè)和控制、機(jī)器溫度探測(cè)、儀器溫度探測(cè)、建筑物溫度探測(cè)等方面都極其有用15-16。圖2.6是ds18b20的引腳排列,表2.4是ds18b20的引腳說(shuō)明,圖2.7是ds18b20的方框圖。有兩個(gè)字節(jié)的溫度寄存器包含于高速暫存器中,傳感器采集得的溫度數(shù)據(jù)被存儲(chǔ)到這兩

25、個(gè)寄存器中,以便后續(xù)的輸出。每個(gè)器件的片序列號(hào)被存放到64 位只讀存儲(chǔ)器中。除了這些,一個(gè)字節(jié)的配置寄存器和一個(gè)用于溫度報(bào)警值存儲(chǔ)的寄存器也包含在這個(gè)高速暫存器里。有這種配置寄存器,用戶可以設(shè)定溫度的精度為12、11、10還有9 位這四種中的其中一種。配置寄存器,tl 和th是一種不容易丟失數(shù)據(jù)的可擦除程序寄存器,因此在器件得不到供電的情況下寄存器中存儲(chǔ)的數(shù)據(jù)依然保留著。圖2.6 ds18b20引腳圖 圖2.7 ds18b20方框圖表2.4 ds18b20的引腳說(shuō)明表ds18b20引腳詳細(xì)說(shuō)明8引腳soic封裝 t0-92封裝 符號(hào)說(shuō)明51gnd接地42dq數(shù)據(jù)輸入/輸出引腳。對(duì)于單線操作:漏

26、極開路。當(dāng)工作在寄生電源模式時(shí)用來(lái)提供電源。33vdd可選的vdd 引腳。工作于寄生電源模式時(shí)vdd必須接地。所有表中未提及的腳均都無(wú)連接 2.4.1 ds18b20接口電路ds18b20使用一個(gè)單線端口就能夠?qū)崿F(xiàn)通訊,其中使用的是一種非常獨(dú)特的單總線協(xié)議。當(dāng)在所有器件都經(jīng)由漏極開路端口或者一個(gè)3態(tài)端口與總線連接到一塊的情況下,控制線需要連接一個(gè)弱上拉電阻。在所設(shè)計(jì)的總線系統(tǒng)上,微控制器會(huì)根據(jù)每個(gè)器件獨(dú)有的64位片序列號(hào)來(lái)辨認(rèn)總線上的器件和記錄總線上的器件地址。因?yàn)槊總€(gè)器件內(nèi)都有一個(gè)獨(dú)特的片序列碼,所有從理論上講在單根總線上能夠連接的器件個(gè)數(shù)是無(wú)限的,但是在實(shí)際應(yīng)用中總線上掛有的器件越多,溫度

27、檢測(cè)的時(shí)間也越長(zhǎng),精度也有所下降。ds18b20有兩種供電模式,一種是外部電源供電模式,即把外部電源接到vdd引腳即可完成供電,另一種是寄生電源供電模式,該模式允許ds18b20工作于無(wú)外部電源需求狀態(tài)。在本設(shè)計(jì)中ds18b20采用外部供電模式,把5v電源接到vdd引腳,這是一種典型的接法,見圖2.8。采用這種接法的好處就是單總線上省去了強(qiáng)上拉。此外在溫度轉(zhuǎn)換期間總線不用總維持在高電平。圖2.8 ds18b20典型接口電路2.4.2 ds18b20工作原理ds18b20的顯著特點(diǎn)是它能夠直接讀數(shù)字的溫度傳感器。ds18b20成功啟動(dòng)之后處于低功耗等待狀態(tài),如果要進(jìn)行溫度測(cè)量以及ad轉(zhuǎn)換時(shí),主控

28、制器向傳感器發(fā)送44h命令。完成這個(gè)操作后,進(jìn)行溫度測(cè)量,轉(zhuǎn)換后得的溫度數(shù)據(jù)以兩個(gè)字節(jié)的形式被存放到高速暫存器的溫度寄存器中,接著ds18b20繼續(xù)處在等待狀態(tài)17。采用外部電源供電模式下的ds18b20,主控制器在向它發(fā)送溫度轉(zhuǎn)換指令之后接著發(fā)起“讀時(shí)序”,如果溫度傳感器把檢測(cè)來(lái)的溫度轉(zhuǎn)換完畢則返回1,處在溫度轉(zhuǎn)換過(guò)程則返回0。由一個(gè)或多個(gè)從機(jī)和一塊總線控制器組成的系統(tǒng)通常稱為單總線系統(tǒng)。當(dāng)只有一只從機(jī)掛在總線上時(shí),系統(tǒng)被稱為“單點(diǎn)”系統(tǒng);如果由多只從機(jī)掛在總線上,系統(tǒng)被稱為“多點(diǎn)”系統(tǒng)。在本設(shè)計(jì)中ds18b20只能充當(dāng)從機(jī)的角色。單總線系統(tǒng)中的指令和數(shù)據(jù)的傳遞一般從最低有效位開始,器件間的

29、通信要嚴(yán)格遵循通信協(xié)議。通過(guò)單線總線端口訪問(wèn)ds18b20的協(xié)議如下:步驟1:初始化。在單總線中,初始化序列是任何執(zhí)行操作處理的開始。組成初始化序列的內(nèi)容有兩個(gè)部分,一個(gè)部分是由總線控制器向從機(jī)發(fā)出的復(fù)位脈沖,另一部分是從機(jī)向總線控制器發(fā)出的存在脈沖。有存在脈沖的產(chǎn)生說(shuō)明總線上有ds18b20器件,同時(shí)也提示主控制器,表明自身已經(jīng)做好執(zhí)行其它操作的準(zhǔn)備。步驟2:rom操作指令。如果有一個(gè)存在脈沖被總線控制器探測(cè)到,控制器就會(huì)發(fā)送一條rom指令。當(dāng)有若干只ds18b20連接到總線上,總線控制器要識(shí)別總線上的器件型號(hào)和器件數(shù)目也是得根據(jù)這些指令來(lái)完成的。這些指令都是基于每個(gè)器件獨(dú)有的64 位rom

30、片序列碼,這樣可以讓總線控制器知道對(duì)眾多器件中的具體一個(gè)進(jìn)行操作。rom指令總共為五條,每一條指令的長(zhǎng)度都為八位??偩€控制器只有在發(fā)出一條rom指令之后才能發(fā)送一條ds18b20功能指令??刂芼s18b20的5條rom指令如下:(1)搜索rom指令 f0h。給系統(tǒng)上電完成系統(tǒng)初始化,總線控制器得到從機(jī)的型號(hào)和數(shù)目是根據(jù)識(shí)別總線上所有rom片序列碼來(lái)實(shí)現(xiàn)的。器件的rom編碼被總線控制器通過(guò)搜索rom指令不停的搜索,直到所有從機(jī)器件被確認(rèn)為止。當(dāng)只有一個(gè)從機(jī)在總線上時(shí),那么可以用較為簡(jiǎn)單的讀取rom指令代替搜索rom指令。在每次搜索rom指令之后,總線控制器必須返回步驟1。(2)讀取rom指令 3

31、3h。當(dāng)總線上單掛著一個(gè)ds18b20溫度傳感器的情況下,這條命令才能夠直接使用。在這樣的指令下總線控制器可以直接讀取從機(jī)中的64 位片序列碼,不在需要用到搜索rom指令。如果總線上不止有一個(gè)從機(jī)時(shí),直接使用這條指令就會(huì)發(fā)生數(shù)據(jù)沖突,因?yàn)樗袕臋C(jī)在接收到這條指令之后會(huì)同時(shí)向控制器傳送信號(hào)。(3)匹配rom指令 55h。匹配rom指令,控制器發(fā)送這個(gè)指令后,接著發(fā)送器件的64位rom編碼序列,目的是在總線上尋找與所發(fā)送的編碼序列匹配的器件。當(dāng)總線上的某個(gè)器件的片序列號(hào)與從控制器傳送來(lái)的片序列號(hào)相匹配時(shí),此器件就會(huì)做出響應(yīng),然后執(zhí)行隨后的其它操作指令;所有和64位rom片序列碼不匹配的器件都將等待

32、復(fù)位脈沖。(4)忽略rom指令 cch。此條指令的功能是讓總線控制器在沒有得到某個(gè)器件片序列碼的情況下也可以發(fā)送功能指令。比如,為了實(shí)現(xiàn)溫度轉(zhuǎn)換的操作,總線控制器首先把一條忽略rom指令發(fā)送到溫度傳感器,接著又把溫度轉(zhuǎn)換指令44h發(fā)送到溫度傳感器。值得注意的是當(dāng)總線上僅有一個(gè)器件時(shí),不管怎樣,當(dāng)要把一條讀取暫存器指令beh發(fā)出之前必須先發(fā)送忽略rom指令。當(dāng)總線上只有一個(gè)器件時(shí),采用這條命令可以提高系統(tǒng)的反應(yīng)速度,因?yàn)槠骷挥冒l(fā)回64 位rom 編碼,省掉了一部分的時(shí)間??偩€上有若干個(gè)從機(jī)的情況下,不可以使用這條指令,以避免因多只從機(jī)同時(shí)發(fā)送數(shù)據(jù)而引發(fā)的數(shù)據(jù)沖突。(5)報(bào)警搜索指令 ech。在

33、多個(gè)器件掛接在總線上的情況下,此條命令用于搜索符合報(bào)警條件的器件,只有滿足報(bào)警條件的從機(jī)才對(duì)該命令作出響應(yīng)。ds18b20會(huì)做出響應(yīng)的條件是在最近一次測(cè)溫后遇到符合報(bào)警的溫度。在每次報(bào)警搜索指令周期之后,總線控制器必須返回步驟1。步驟3:ds18b20功能指令。要完成對(duì)ds18b20的操作不得不使用兩種指令,一種是rom指令,另一種是功能指令。在系統(tǒng)中總線控制器發(fā)送一條ds18b20功能指令之前一定要先發(fā)送一條rom命令,兩者的發(fā)送順序不可顛倒,否則出現(xiàn)錯(cuò)誤。用了這些功能指令,總線控制器可以對(duì)ds18b20的暫存器進(jìn)行讀寫,可以判斷器件采用了那種電源模式還有可以啟動(dòng)器件進(jìn)行溫度轉(zhuǎn)換。ds18b

34、20的功能指令詳見下文,同時(shí)被概括于表2.5。溫度傳感器ds18b20的功能指令具體說(shuō)明如下18:(1)溫度轉(zhuǎn)換指令 44h。此條命令的作用是完成一次溫度轉(zhuǎn)換的啟動(dòng)。執(zhí)行溫度轉(zhuǎn)換指令后,產(chǎn)生的溫度轉(zhuǎn)換結(jié)果數(shù)據(jù)以兩個(gè)字節(jié)的形式被存放于高速暫存器中,當(dāng)溫度傳感器接收到讀的命令,就把暫存器里的數(shù)據(jù)傳輸給主控制器。(2)寫暫存器指令 4eh。向ds18b20的暫存器寫入數(shù)據(jù)就需要用到這條命令,從開始到最后,寫入的地方也會(huì)有所變化的,可以分為三個(gè)階段,每個(gè)階段寫人一個(gè)字節(jié)。開始時(shí)寫入th 寄存器,這是第一個(gè)階段,第二階段是寫入到tl 寄存器,寫入配置寄存器即為第三個(gè)階段。傳送數(shù)據(jù)時(shí)是從最低位開始的,在總

35、線控制器發(fā)出復(fù)位命令前必須完成上邊講到的那三個(gè)字節(jié)的寫入,一旦執(zhí)行復(fù)位命令就不可以寫入。(3)讀暫存器指令 beh。暫存器內(nèi)容的讀取就需要這條指令。字節(jié)0作為讀取數(shù)據(jù)的開始位,一位一位的讀取,當(dāng)讀完第9字節(jié)也就是字節(jié)8時(shí)算是讀取完成,當(dāng)不必把所有的字節(jié)讀完,可以在任意時(shí)刻通過(guò)控制器發(fā)出復(fù)位命令的方式中止讀取。(4)拷貝暫存器指令 48h。如果想把配置寄存器、th還有tl中的內(nèi)容依次拷貝到eeprom內(nèi),就需要用到這一條命令。(5)召回eeprom指令 b8h。此條指令的作用是將eeprom中的配置數(shù)據(jù)、th中的報(bào)警值和tl中的報(bào)警值從拷回暫存器中。該命令被發(fā)出之后,總線控制器進(jìn)入讀時(shí)序狀態(tài),拷

36、回標(biāo)識(shí)從ds18b20輸出:1標(biāo)識(shí)表示拷回結(jié)束,0標(biāo)識(shí)表示正在拷回。ds18b20接電時(shí)此類拷回操作可以自動(dòng)完成,因此,一旦給器件供電成功,有效的數(shù)據(jù)立馬存在于暫存器里中。(6)讀電源模式指令 b4h。這條指令發(fā)到ds18b20后,總線控制器讀時(shí)序,如果采用的是外部電源供電模式,總線會(huì)被 ds18b20拉高。對(duì)ds18b20的所以操作都要嚴(yán)格遵循以上3個(gè)步驟,如果把順序弄顛倒了或者是缺少其中的某個(gè)步驟,那么對(duì)器件的操作將不會(huì)成功。具體的順序是這樣的:總線控制器先對(duì)器件進(jìn)行初始化,然后發(fā)送rom指令中的某一條指令,最后發(fā)送相應(yīng)的功能指令,都完成后又返回步驟1。2.4.3 ds18b20工作時(shí)序?yàn)?/p>

37、了確保數(shù)據(jù)的完整性ds18b20必須依靠嚴(yán)格的單總線協(xié)議。協(xié)議包括幾種單總線信號(hào)類型,它們是存在脈沖、復(fù)位脈沖、讀1、讀0、寫1和寫0。在這幾種信號(hào)中,存在脈沖由ds18b20發(fā)出,剩下的是由總線控制器發(fā)出的19。表2.5 ds18b20功能指令表ds18b20功能指令表指令說(shuō)明協(xié)議單總線發(fā)出協(xié)議后備注轉(zhuǎn)換指令溫度轉(zhuǎn)換指令開始溫度轉(zhuǎn)換44h讀溫度忙狀態(tài)1存儲(chǔ)器指令 寫暫存器指令讀取crc字節(jié)和暫存器4eh一直讀到最高位(第9字節(jié))2 讀暫存器指令把字節(jié)寫入配置寄存器、th和tlbeh寫入3個(gè)字節(jié)到ds18b203 拷貝暫存器指令拷貝配置寄存器、th和tl的數(shù)據(jù)到eeprom中48h無(wú)1 召回e

38、eprom指令把eeprom中的數(shù)據(jù)召回到配置寄存器、th和tl中b8h把拷貝標(biāo)識(shí)傳送到總線控制器讀電源模式指令器件供電模式的標(biāo)識(shí)b4h把供電狀態(tài)返回備注:(1)ds18b20采用寄生電源模式的情況下,處在拷貝數(shù)據(jù)到eeprom和溫度轉(zhuǎn)換的期間內(nèi),單總線必須得到一個(gè)強(qiáng)上拉。在這個(gè)時(shí)間段內(nèi)不可以有其它操作出現(xiàn)在總線上。(2)數(shù)據(jù)傳輸?shù)闹兄剐盘?hào)是由總線控制器發(fā)出的復(fù)位信號(hào),它在任意時(shí)刻都能夠發(fā)出這種信號(hào)。(3)在控制器發(fā)送復(fù)位命令之前,這3個(gè)字節(jié)一定要全部寫入。圖2.9 ds18b20初始化時(shí)序圖初始化序列是所有器件之間的通信的開始,控制器與ds18b20間的通訊也遵循這個(gè)原則,初始化序列見圖2.

39、9。一個(gè)存在脈沖出現(xiàn)在一個(gè)復(fù)位脈沖之后,表示ds18b20已經(jīng)完成做好準(zhǔn)備,可以接收和發(fā)送數(shù)據(jù)。在初始化序列期間,總線控制器拉低總線并保持480us以發(fā)出一個(gè)復(fù)位脈沖,接著釋放總線,最后進(jìn)入接收狀態(tài)。單總線由4.7k上拉電阻拉到高電平。當(dāng)i/o引腳上的上升沿被ds18b20探測(cè)到后,等待15-60us,然后發(fā)出一個(gè)由60-240us低電平信號(hào)構(gòu)成的存在脈沖。ds18b20有寫時(shí)序和讀時(shí)序。寫時(shí)序又分為兩種:寫1時(shí)序和寫0時(shí)序??偩€控制器通過(guò)寫1時(shí)序?qū)戇壿?到ds18b20,寫0時(shí)序?qū)戇壿?到ds18b20。持續(xù)60us是所有寫時(shí)序的最少時(shí)間限,還包括兩個(gè)寫周期之間至少1us的恢復(fù)時(shí)間。當(dāng)總線控

40、制器把數(shù)據(jù)線從邏輯高電平拉到低電平的時(shí)候,寫時(shí)序開始,見圖2.10。要產(chǎn)生一個(gè)寫時(shí)序,數(shù)據(jù)線先被總線控制器拉到低電平接著再釋放,當(dāng)寫時(shí)序進(jìn)行到15us后總線被釋放。當(dāng)總線被釋放的時(shí)候,總線被4.7k的上拉電阻拉高。一個(gè)寫0時(shí)序的完整產(chǎn)生,數(shù)據(jù)線必須由總線控制器拉到低電平而且要持續(xù)保持至少60us??偩€控制器初始化寫時(shí)序后,15us到60us的這個(gè)時(shí)間段內(nèi)ds18b20對(duì)i/o線的電平進(jìn)行采樣。如果采得的是高電平,表示控制器進(jìn)行寫1操作。如果采得的是低電平,表示控制器進(jìn)行寫0操作。讀時(shí)序被總線控制器發(fā)出之后,ds18b20只能被用來(lái)傳輸數(shù)據(jù)給控制器。因此,總線控制器在發(fā)出讀暫存器指令beh或者讀

41、電源模式指令b4h后,一定馬上開始進(jìn)行讀時(shí)序,這樣ds18b20才能夠響應(yīng)請(qǐng)求信息。除此之外,召回eeprom指令b8h 或者溫度轉(zhuǎn)換指令44h被總線控制器發(fā)送之后,總線控制器也馬上進(jìn)行讀時(shí)序。所有讀時(shí)序的時(shí)間最少為60us,包括兩個(gè)讀周期間至少1us的恢復(fù)時(shí)間。如果總線從高電平變?yōu)榈碗娖綍r(shí),表示讀時(shí)序開始,總線必須至少保持1us,然后總線被釋放,如圖2.10所示。當(dāng)ds18b20識(shí)別到來(lái)自控制器的讀時(shí)序, 便會(huì)通過(guò)拉高或拉低總線來(lái)傳送數(shù)據(jù),拉高總線表示傳送1,拉低總線表示傳送0。當(dāng)結(jié)束了邏輯0的傳送時(shí),總線將被釋放,通過(guò)上拉電阻回到上升沿狀態(tài)。從ds18b20輸出的數(shù)據(jù)在讀時(shí)序的下降沿出現(xiàn)后

42、15us 內(nèi)有效。所以,總線控制器在讀時(shí)序開始后必須停止把i/o腳驅(qū)動(dòng)為低電平15us,以讀取i/o腳狀態(tài)。圖2.10 讀/寫時(shí)序圖3 硬件電路本設(shè)計(jì)的硬件電路有單片機(jī)主控制模塊、溫度和時(shí)鐘顯示模塊、時(shí)鐘電路模塊、溫度測(cè)量模塊、報(bào)警模塊以及按鍵模塊。這幾個(gè)模塊組合在一起構(gòu)成了系統(tǒng)的總體硬件電路。3.1 單片機(jī)主控制模塊設(shè)計(jì)為了讓單片機(jī)運(yùn)行起來(lái),其外圍要設(shè)計(jì)一些簡(jiǎn)單電路,構(gòu)成單片機(jī)的最小系統(tǒng)。主要有供電部分、晶振電路部分以及復(fù)位電路部分,具體如圖3.1所示。在本設(shè)計(jì)中的供電部分,采用現(xiàn)成的電源適配器,從而可以確保電源供電電壓的穩(wěn)定性;復(fù)位電路采用手動(dòng)復(fù)位;單片機(jī)使用外接晶振的方法,晶振頻率為12

43、mhz。圖3.1 單片機(jī)最小系統(tǒng)圖3.2 顯示模塊接口3.2 顯示模塊設(shè)計(jì)本設(shè)計(jì)的lcd1602采用并行口接法。根據(jù)lcd1602的引腳接口說(shuō)明與單片機(jī)連接,顯示模塊接口電路設(shè)計(jì)如圖3.2所示,電路圖的詳細(xì)說(shuō)明如下:液晶顯示屏lcd1602的第1腳和第16腳接地;液晶顯示屏lcd1602的第2腳和第15腳接電源;液晶顯示屏lcd1602的第3腳串聯(lián)一個(gè)10k的可調(diào)電阻器接地;液晶顯示屏lcd1602的第4、5、6腳分別接單片機(jī)的p3.5、p3.6及p3.7口液晶顯示屏lcd1602的第714腳分別接單片機(jī)的p0.0p0.7口;3.3 時(shí)鐘電路模塊設(shè)計(jì)本設(shè)計(jì)采用時(shí)鐘芯片ds1302,其連接圖如圖

44、3.3所示,采用了本芯片的典型,簡(jiǎn)單易懂。如圖單片機(jī)p1.7腳與ds1302的復(fù)位腳相連接;p1.5接到時(shí)鐘芯片的串行時(shí)鐘腳;p1.6接到時(shí)鐘芯片的數(shù)據(jù)輸入輸出口。采用雙電源給ds1302供電,主電源采用5v供電,當(dāng)失去主電源時(shí)自動(dòng)切換到3v備用電池,以保證時(shí)鐘芯片的正常計(jì)時(shí)。晶振引腳接入頻率為32.768khz的晶振。3.4 溫度測(cè)量電路模塊設(shè)計(jì)溫度傳感器ds18b20的信號(hào)輸入輸出口dq接到單片機(jī)的p1.1,在此采用的是單總線技術(shù),此信號(hào)線即可傳輸數(shù)據(jù),同時(shí)又可以傳輸時(shí)鐘,而且具有雙向傳輸數(shù)據(jù)的功能,因此這樣的接線方式具有成本低廉、硬件開銷少、線路簡(jiǎn)單、容易對(duì)總線進(jìn)行維護(hù)和拓展的優(yōu)點(diǎn)。單總

45、線通常要求外接一個(gè)上拉電阻,在此采用的電阻阻值為4.7k。本設(shè)計(jì)中的ds18b20采用傳統(tǒng)供電模式,把一個(gè)外部電源接到溫度傳感器的電源引腳,這種電路接法的優(yōu)點(diǎn)是單總線上不在需要強(qiáng)上拉,同時(shí)總線在溫度轉(zhuǎn)換期間不需要總保持高電平。具體電路圖3.4所示。圖3.3 時(shí)鐘電路圖圖3.4 溫度測(cè)量電路3.5 報(bào)警和按鍵模塊設(shè)計(jì)蜂鳴器是一種很好的提示元件,在工業(yè)及民用設(shè)備中經(jīng)常用到,蜂鳴器分為直流和交流兩種,直流蜂鳴器只要通電就會(huì)發(fā)出聲音,使用簡(jiǎn)單,因此本設(shè)計(jì)采用直流蜂鳴器的聲響效果作為報(bào)警信號(hào)20。當(dāng)溫度超出設(shè)定值范圍時(shí),單片機(jī)通過(guò)置位p1.0口驅(qū)動(dòng)三極管導(dǎo)通使得蜂鳴器發(fā)出聲音實(shí)現(xiàn)報(bào)警。本設(shè)計(jì)按鍵分為兩部

46、分而且都是獨(dú)立按鍵,一部分是時(shí)間調(diào)整按鍵,另一部分是溫度上、下限調(diào)整按鍵。按鍵0至按鍵3用于時(shí)間調(diào)整,按鍵0是調(diào)整模式選擇健,可以對(duì)秒、分、時(shí)、星期、日、月和年進(jìn)行調(diào)整。按鍵1和按鍵2分別為增加健和減少健,用時(shí)間或日期的上調(diào)或下調(diào)。按鍵3則為退出健,用調(diào)整模式的退出。按鍵5至按鍵7用于溫度上、下限的調(diào)整,按鍵5為調(diào)整模式選擇鍵,用于對(duì)上限、下限和退出這是三種模式的選擇,按鍵6和按鍵7分別為增加和減少健,用來(lái)實(shí)現(xiàn)上限和下限的上調(diào)或下調(diào)。具體電路圖如圖3.5所示。3.6 系統(tǒng)總體硬件電路由上述個(gè)各部分的硬件電路組合在一起構(gòu)成了本設(shè)計(jì)的總體硬件電路。如圖3.6所示。圖3.5 報(bào)警和調(diào)整按鍵電路圖3.

47、6 總體硬件電路4 軟件設(shè)計(jì)4.1 系統(tǒng)軟件程序設(shè)計(jì) 開始液晶初始化溫度傳感器初始化時(shí)鐘芯片初始化是否調(diào)整時(shí)間、日期?調(diào)整時(shí)間或日期yn是否調(diào)整溫度上、下限?調(diào)整上、下限y溫度是否超限?n報(bào)警顯示yn按鍵掃描圖4.1 系統(tǒng)主程序執(zhí)行流程圖 主程序執(zhí)行流程如圖4.1所示,主程序先對(duì)液晶、溫度傳感器和時(shí)鐘芯片進(jìn)行初始化,然后不停判斷是否進(jìn)行時(shí)間、日期或者溫度上、下限的調(diào)整。接著判斷溫度值是否超出設(shè)定值,一旦溫度高于設(shè)定值就自動(dòng)報(bào)警,否則不報(bào)警。最后將數(shù)據(jù)處理后送lcd1602顯示, 4.2 液晶顯示程序 在讓液晶顯示一些內(nèi)容之前,要對(duì)液晶進(jìn)行相應(yīng)的設(shè)置,例如:是否有光標(biāo)、光標(biāo)是否閃爍、光標(biāo)的移動(dòng)方

48、向等,這樣之后便可以實(shí)現(xiàn)所需的顯示效果。使用控制指令可以實(shí)現(xiàn)液晶顯示模式的設(shè)置,全部指令都是由主控制器發(fā)出的。顯示一個(gè)字符的操作過(guò)程為“讀狀態(tài)寫指令或數(shù)據(jù)”。(1) 液晶初始化程序 void lcd_initial() lcden=0;lcd_write(lcd_command,0x38); /8位數(shù)據(jù)端口,2行顯示,lcd_write(lcd_command,0x38);lcd_setdisplay(lcd_show|lcd_no_cursor); /開啟顯示,無(wú)光標(biāo)lcd_write(lcd_command,lcd_clear_screen); /清屏lcd_setinput(lcd_ac

49、_up|lcd_no_move); /ac遞增, 畫面不動(dòng)(2) 讀狀態(tài)程序unsigned char lcd_wait(void) lcdrs=0;lcdrw=1;_nop_();lcden=1;_nop_(); lcden=0;return dbport;(3) 向液晶寫入命令或數(shù)據(jù)程序void lcd_write(bit style, unsigned char input) lcden=0;lcdrs=style;lcdrw=0;_nop_();dbport=input;_nop_();lcden=1;_nop_();lcden=0;_nop_();lcd_wait();4.3 時(shí)鐘芯

50、片程序?qū)r(shí)鐘芯片ds1302的操作是通過(guò)向芯片中的寄存器寫入相應(yīng)的指令實(shí)現(xiàn)的。具體如下:(1) 寫命令、數(shù)據(jù)程序void write1302(unsigned char ucaddr, unsigned char ucda) ds1302_rst = 0; ds1302_clk = 0; ds1302_rst = 1; ds1302inputbyte(ucaddr); ds1302inputbyte(ucda); ds1302_clk = 1; ds1302_rst = 0;(2) 讀取數(shù)據(jù)程序unsigned char read1302(unsigned char ucaddr) unsig

51、ned char ucdata; ds1302_rst = 0; ds1302_clk = 0; ds1302_rst = 1; ds1302inputbyte(ucaddr|0x01); ucdata = ds1302outputbyte(); ds1302_clk = 1; ds1302_rst = 0; return(ucdata);4.4 溫度傳感器程序根據(jù)前面ds18b20的接口電路便可以編寫溫度傳感器程序,從而實(shí)現(xiàn)溫度傳感器的運(yùn)行,然后對(duì)溫度進(jìn)行測(cè)量和輸出。(1) 溫度傳感器初始化程序void ds1820rst() uchar x=0; dq = 1; delay_18b20(4

52、); dq = 0; delay_18b20(100); dq = 1; delay_18b20(40); (2) 寫命令程序void ds1820wr(uchar dat) uchar i=0; for (i=0; i=1; (3) 讀取數(shù)據(jù)程序 uchar ds1820rd() uchar i=0; uchar dat = 0; for (i=0;i=1; dq = 1; if(dq) dat|=0x80; delay_18b20(10); return(dat); (4) 啟動(dòng)溫度轉(zhuǎn)換并讀取溫度程序void read_temp() uchar a,b; float tt; ds1820rst();

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論