




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于單片機(jī)的DS18B20數(shù)字溫度計(jì)設(shè)計(jì)學(xué)生姓名: 侯晉啟 專(zhuān)業(yè)名稱(chēng): 自動(dòng)化專(zhuān)業(yè) 班 級(jí): 2014級(jí)自動(dòng)化1班 學(xué) 號(hào): 20144786 摘 要本設(shè)計(jì)采用的主控芯片是ATMEL公司的AT89C51單片機(jī),數(shù)字溫度傳感器是DALLAS公司的DS18B20。本設(shè)計(jì)用數(shù)字傳感器DS18B20測(cè)量溫度,測(cè)量精度高,傳感器體積小,使用方便。所以本次設(shè)計(jì)的數(shù)字溫度計(jì)在工業(yè)、農(nóng)業(yè)、日常生活中都有廣泛的應(yīng)用。單片機(jī)技術(shù)已經(jīng)廣泛應(yīng)用社會(huì)生活的各個(gè)領(lǐng)域,已經(jīng)成為一種非常實(shí)用的技術(shù)。51單片機(jī)是最常用的一種單片機(jī),而且在高校中都以51單片機(jī)教材為藍(lán)本,這使得51單片機(jī)成為初學(xué)單片機(jī)技術(shù)人員的首選。本次設(shè)計(jì)采用
2、的AT89C51是一種flash型單片機(jī),可以直接在線(xiàn)編程,向單片機(jī)中寫(xiě)程序變得更加容易。本次設(shè)計(jì)的數(shù)字溫度計(jì)采用的是DS18B20數(shù)字溫度傳感器,DS18B20是一種可組網(wǎng)的高精度數(shù)字式溫度傳感器,由于其具有單總線(xiàn)的獨(dú)特優(yōu)點(diǎn),可以使用戶(hù)輕松地組建起傳感器網(wǎng)絡(luò),并可使多點(diǎn)溫度測(cè)量電路變得簡(jiǎn)單、可靠。本設(shè)計(jì)根據(jù)設(shè)計(jì)要求,首先設(shè)計(jì)了硬件電路,然后繪制軟件流程圖及編寫(xiě)程序。本設(shè)計(jì)屬于一種多功能溫度計(jì),溫度測(cè)量范圍是-55到125。溫度值的分辨率可以被用戶(hù)設(shè)定為9-12位,可以設(shè)置上下限報(bào)警溫度,當(dāng)溫度不在設(shè)定的范圍內(nèi)時(shí),就會(huì)啟動(dòng)報(bào)警程序報(bào)警。本設(shè)計(jì)的顯示模塊是用液晶顯示屏1602實(shí)現(xiàn)溫度顯示。在顯示
3、實(shí)時(shí)測(cè)量溫度的模式下還可以通過(guò)查詢(xún)按鍵查看設(shè)定的上下限報(bào)警溫度。一、實(shí)驗(yàn)設(shè)計(jì)概述本系統(tǒng)所設(shè)計(jì)的數(shù)字溫度計(jì)采用的是DS18B20數(shù)字溫度傳感器測(cè)溫,測(cè)溫上下限為10°C40°C。DS18B20直接輸出的就是數(shù)字信號(hào),與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫準(zhǔn)確,上下限報(bào)警功能。其輸出溫度采用LCD1602顯示,主要用于對(duì)測(cè)溫比較準(zhǔn)確的場(chǎng)所。該設(shè)計(jì)控制器使用的是51單片機(jī)AT89C51,AT89C51單片機(jī)在工控、測(cè)量、儀器儀表中應(yīng)用還是比較廣泛的。測(cè)溫傳感器使用的是DS18B20,DS18B20是一種可組網(wǎng)的高精度數(shù)字式溫度傳感器,由于其具有單總線(xiàn)的獨(dú)特優(yōu)點(diǎn),可以使
4、用戶(hù)輕松地組建起傳感器網(wǎng)絡(luò),并可使多點(diǎn)溫度測(cè)量電路變得簡(jiǎn)單、可靠。顯示是用液晶顯示屏1602實(shí)現(xiàn)溫度顯示。蜂鳴器用來(lái)實(shí)現(xiàn)當(dāng)測(cè)量溫度超過(guò)設(shè)定的上下限時(shí)的報(bào)警功能。二、系統(tǒng)總體方案及硬件設(shè)計(jì)2.1系統(tǒng)總體設(shè)計(jì)框圖由于DS18B20數(shù)字溫度傳感器具有單總線(xiàn)的獨(dú)特優(yōu)點(diǎn),可以使用戶(hù)輕松地組建起傳感器網(wǎng)絡(luò),并可使多點(diǎn)溫度測(cè)量電路變得簡(jiǎn)單、可靠,所以在該設(shè)計(jì)中采用DS18B20數(shù)字溫度傳感器測(cè)量溫度。 溫度計(jì)電路設(shè)計(jì)總體設(shè)計(jì)框圖如圖2-1所示,控制器采用單片機(jī)AT89C51,溫度傳感器采用DS18B20,顯示采用液晶顯示1602,報(bào)警采用蜂鳴器、LED燈實(shí)現(xiàn),鍵盤(pán)用來(lái)設(shè)定報(bào)警上下限溫度。顯示電路驅(qū)動(dòng)電路單片
5、機(jī)時(shí)鐘、復(fù)位電路測(cè)溫電路按鍵輸入電路報(bào)警電路圖2-1 溫度計(jì)電路總體設(shè)計(jì)框圖2.2各模塊簡(jiǎn)介(1)控制模塊AT89C51單片機(jī)是美國(guó)ATMEL公司生產(chǎn)的低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含有8kb的可系統(tǒng)編程的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)8051指令系統(tǒng)及引腳。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程的Flash,使得AT89C51為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89C51具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線(xiàn),看門(mén)狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定
6、時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89C51 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。(2)顯示模塊顯示電路采用液晶顯示屏1602。LCD1602采用標(biāo)準(zhǔn)的14腳(無(wú)背光)或16腳(帶背光)接口,各引腳接口說(shuō)明如表2-1所示:表2-1:LCD1602引腳說(shuō)明編號(hào)符號(hào)引腳說(shuō)明編號(hào)符號(hào)引腳說(shuō)明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓1
7、1D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫(xiě)選擇13D6數(shù)據(jù)6E使能信號(hào)14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極表10-13:引腳接口說(shuō)明表第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:R/W為讀寫(xiě)信號(hào)線(xiàn),高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫(xiě)入指令或者顯示地址,當(dāng)RS為低電平R/
8、W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線(xiàn)。第15腳:背光源正極。第16腳:背光源負(fù)極。本實(shí)驗(yàn)設(shè)計(jì)采用14腳接口。1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表2-2所示:表2-2:LCD1602控制指令序號(hào)指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開(kāi)/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L*6置功能00001DLNF*7置字
9、符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計(jì)數(shù)器地址10寫(xiě)數(shù)到CGRAM或DDRAM)10要寫(xiě)的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容(3)溫度傳感器模塊DS18B20溫度傳感器是美國(guó)DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)912位的數(shù)字值讀數(shù)方式。DS18B20的性能特點(diǎn)如下:獨(dú)特的單線(xiàn)接口僅需要一個(gè)端口引腳進(jìn)行通信;多個(gè)DS18B20可以并聯(lián)在惟一的三線(xiàn)上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;無(wú)須外部器件;可通過(guò)數(shù)據(jù)
10、線(xiàn)供電,電壓范圍為3.05.5v;零待機(jī)功耗;溫度以9或12位二進(jìn)制數(shù)字表示;用戶(hù)可定義報(bào)警設(shè)置;報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)警條件)的器件;負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作; DS18B20采用3腳TO92封裝或8腳SO或µSOP封裝,其其封裝形式如圖2-2所示。圖2-2 DS18B20的封裝形式DS18B20的64位ROM的結(jié)構(gòu)開(kāi)始8位是產(chǎn)品類(lèi)型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線(xiàn)進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器TH和TL,可通過(guò)軟件寫(xiě)入戶(hù)報(bào)警上下
11、限。DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EEPRAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖2-3所示。圖2-3 DS18B20的高速暫存RAM的結(jié)構(gòu)頭2個(gè)字節(jié)包含測(cè)得的溫度信息,第3和第4字節(jié)TH和TL的拷貝是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率,DS18B20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值,該字節(jié)各位的定義如表2-3所示。表2-3:配置寄存器D7 D6 D5 D4 D3 D2 D1 D0TMR1R011111配置寄存器的低5位一直為1,TM是工作模式位,用于設(shè)
12、置DS18B20在工作模式還是在測(cè)試模式,DS18B20出廠時(shí)該位被設(shè)置為0,用戶(hù)要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來(lái)設(shè)置分辨率,“R1R0”為“00”是9位,“01”是10位,“10”是11位,“11”是12位。當(dāng)DS18B20分辨率越高時(shí),所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來(lái)檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開(kāi)始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第
13、1、2字節(jié)。單片機(jī)可以通過(guò)單線(xiàn)接口讀出該數(shù)據(jù),讀數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以0.0625LSB形式表示。當(dāng)符號(hào)位s0時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位s1時(shí),表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制數(shù)值。輸出的二進(jìn)制數(shù)的高5位是符號(hào)位,最后4位是溫度小數(shù)點(diǎn)位,中間7位是溫度整數(shù)位。表2-4是一部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)。表2-4 DS18B20輸出的溫度值溫度值二進(jìn)制輸出十六進(jìn)制輸出+1250000 0111 1101 000007D0h+850000 0101 0101 00000550h+25.06250000 0001 100
14、1 00010191h+10.1250000 0000 1010 001000A2h+0.50000 0000 0000 10000008h00000 0000 0000 00000000h-0.51111 1111 1111 1000FFF8h-10.1251111 1111 0101 1110FF5Eh-25.06251111 1110 0110 1111FF6Fh-551111 1100 1001 0000FC90hDS18B20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。若TTH或TTL,則將該器件內(nèi)的報(bào)警標(biāo)志位置位,并對(duì)主機(jī)發(fā)出的報(bào)警搜索命令作出響應(yīng)。因此,
15、可用多只DS18B20同時(shí)測(cè)量溫度并進(jìn)行報(bào)警搜索。在64位ROM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余檢驗(yàn)碼(CRC)。主機(jī)ROM的前56位來(lái)計(jì)算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。DS18B20傳感器的操作指令如表2-5所示。傳感器復(fù)位后向傳感器寫(xiě)相應(yīng)的命令才能實(shí)現(xiàn)相應(yīng)的功能。表2-5 DS18B20的指令表指 令指令代碼功 能讀ROM0x33讀DS1820溫度傳感器ROM中的編碼(即64位地址)符合 ROM0x55發(fā)出此命令之后,接著發(fā)出 64 位 ROM 編碼,訪問(wèn)單總線(xiàn)上與該編碼相對(duì)應(yīng)的 DS1820 使之作出響應(yīng),為下一步對(duì)該 DS1820
16、的讀寫(xiě)作準(zhǔn)備。搜索 ROM0xF0用于確定掛接在同一總線(xiàn)上 DS1820 的個(gè)數(shù)和識(shí)別 64 位 ROM 地址。為操作各器件作好準(zhǔn)備。跳過(guò) ROM0xCC忽略 64 位 ROM 地址,直接向 DS1820 發(fā)溫度變換命令。適用于單片工作。告警搜索命令0xEC執(zhí)行后只有溫度超過(guò)設(shè)定值上限或下限的片子才做出響應(yīng)。溫度變換0x44啟動(dòng)DS1820進(jìn)行溫度轉(zhuǎn)換,12位轉(zhuǎn)換時(shí)最長(zhǎng)為750ms(9位為93.75ms)。結(jié)果存入內(nèi)部9字節(jié)RAM中。讀暫存器0xBE讀內(nèi)部RAM中9字節(jié)的內(nèi)容寫(xiě)暫存器0x4E發(fā)出向內(nèi)部RAM的3、4字節(jié)寫(xiě)上、下限溫度數(shù)據(jù)命令,緊跟該命令之后,是傳送兩字節(jié)的數(shù)據(jù)。復(fù)制暫存器0x4
17、8將RAM中第3 、4字節(jié)的內(nèi)容復(fù)制到EEPROM中。重調(diào) EEPROM0xB8將EEPROM中內(nèi)容恢復(fù)到RAM中的第3 、4字節(jié)。讀供電方式0xB4讀DS1820的供電模式。寄生供電時(shí)DS1820發(fā)送“ 0 ”,外接電源供電 DS1820發(fā)送“ 1 ”。DS18B20傳感器為單總線(xiàn)結(jié)構(gòu)器件,在讀寫(xiě)操作之前,傳感器芯片應(yīng)先進(jìn)性復(fù)位操作也就是初始化操作。DS18B20的初始化時(shí)序如圖2-4所示。首先控制器拉高數(shù)據(jù)總線(xiàn),接著控制器給數(shù)據(jù)總線(xiàn)一低電平,延時(shí)480s,控制器拉高數(shù)據(jù)總線(xiàn),等待傳感器給數(shù)據(jù)線(xiàn)一個(gè)60-240s的低電平,接著上拉電阻將數(shù)據(jù)線(xiàn)拉高,這樣才初始化完成。圖2-4 DS18B20初
18、始化時(shí)序DS18B20傳感器的讀寫(xiě)時(shí)序 1.寫(xiě)時(shí)序DS18B20傳感器的讀寫(xiě)操作是在傳感器初始化后進(jìn)行的。每次操作只能讀寫(xiě)一位。當(dāng)主機(jī)把數(shù)據(jù)線(xiàn)從高電平拉至低電平,產(chǎn)生寫(xiě)時(shí)序。有兩種類(lèi)型的寫(xiě)時(shí)序:寫(xiě)“0”時(shí)序,寫(xiě)“1”時(shí)序。所有的時(shí)序必須有最短60s的持續(xù)期,在各個(gè)寫(xiě)周期之間必須有最短1s的恢復(fù)期。在數(shù)據(jù)總線(xiàn)由高電平變?yōu)榈碗娖街螅珼S18B20在15s至60s的時(shí)間間隙對(duì)總線(xiàn)采樣,如果為“1”則向DS18B20寫(xiě)“1”, 如果為“0”則向DS18B20寫(xiě)“0”。如圖2-5的上半部分。對(duì)于主機(jī)產(chǎn)生寫(xiě)“1”時(shí)序時(shí),數(shù)據(jù)線(xiàn)必須先被拉至低電平,然后被釋放,使數(shù)據(jù)線(xiàn)在寫(xiě)時(shí)序開(kāi)始之后15s內(nèi)拉至高電平。對(duì)
19、于主機(jī)產(chǎn)生寫(xiě)“1”時(shí)序時(shí),數(shù)據(jù)線(xiàn)必須先被拉至低電平,且至少保持低電平60s。2.讀時(shí)序在數(shù)據(jù)總線(xiàn)由高電平變?yōu)榈碗娖街?,?shù)據(jù)線(xiàn)至少應(yīng)保持低電平1s,來(lái)自DS18B20的輸出的數(shù)據(jù)在下降沿15s后有效,所以在數(shù)據(jù)線(xiàn)保持低電平1s之后,主機(jī)將數(shù)據(jù)線(xiàn)拉高,等待來(lái)自DS18B20的數(shù)據(jù)變化,在下降沿15s之后便可開(kāi)始讀取DS18B20的輸出數(shù)據(jù)。整個(gè)讀時(shí)序必須有最短60s的持續(xù)期。如圖2-5的下半部分。讀時(shí)序結(jié)束后數(shù)據(jù)線(xiàn)由上拉電阻拉至高電平。圖2-5 DS18B20傳感器的讀寫(xiě)時(shí)序(4)調(diào)節(jié)模塊介紹調(diào)節(jié)模塊是由六個(gè)按鍵接地后直接接單片機(jī)的I/O口完成的。當(dāng)按鍵沒(méi)有按下時(shí)單片機(jī)管腳相當(dāng)于懸空,默認(rèn)下為高
20、電平,當(dāng)按鍵按下時(shí)相當(dāng)于把單片機(jī)的管腳直接接地,此時(shí)為低電平。程序設(shè)計(jì)為低電平觸發(fā)。K1鍵: 查看上下限溫度報(bào)警值。K2鍵: 返回實(shí)時(shí)溫度。K3鍵: 上調(diào)溫度上限值。K4鍵: 下調(diào)溫度下限值。K5鍵: 上調(diào)溫度下限值。K6鍵: 下調(diào)溫度下限值。(5)報(bào)警模塊介紹報(bào)警模塊是由一個(gè)npn型的三極管9012驅(qū)動(dòng)的12V蜂鳴器,兩個(gè)發(fā)光二極管組成的。低溫報(bào)警時(shí),蜂鳴器工作,藍(lán)色發(fā)光二極管發(fā)光。高溫報(bào)警時(shí),蜂鳴器工作,紅色發(fā)光二極管發(fā)光。三、 系統(tǒng)硬件設(shè)計(jì)3.1 單片機(jī)電路設(shè)計(jì) 圖3-1 單片機(jī)最小系統(tǒng)原理圖單片機(jī)最小系統(tǒng)是由晶振電路,上電復(fù)位、按鍵復(fù)位電路,ISP下載接口和電源指示燈組成。原理圖如圖3
21、-1所示。3.2.DS18B20溫度傳感器電路設(shè)計(jì)DS18B20溫度傳感器是單總線(xiàn)器件與單片機(jī)的接口電路采用電源供電方。電源供電方式如圖3-2,此時(shí)DS18B20的1腳接地,2腳作為信號(hào)線(xiàn),3腳接電源。 圖3-2 DS18B20電源供電方式當(dāng)DS18B20處于寫(xiě)存儲(chǔ)器操作和溫度A/D轉(zhuǎn)換操作時(shí),總線(xiàn)上必須有強(qiáng)的上拉,上拉開(kāi)啟時(shí)間最大為10us。采用寄生電源供電方式時(shí)VDD端接地。由于單線(xiàn)制只有一根線(xiàn),因此發(fā)送接口必須是三態(tài)的。3.3 顯示電路設(shè)計(jì)顯示電路是由液晶顯示屏1602進(jìn)行顯示的,由單片機(jī)P0口輸出時(shí),需要加上一個(gè)上拉電阻穩(wěn)定電壓,本設(shè)計(jì)采用排阻來(lái)實(shí)現(xiàn)。顯示電路的總體設(shè)計(jì)如圖3-3所示。
22、圖3-3 顯示電路3.4 按鍵電路設(shè)計(jì)按鍵電路是用來(lái)實(shí)現(xiàn)調(diào)節(jié)設(shè)定報(bào)警溫度的上下限和查看上下報(bào)警溫度的功能。電路原理圖如圖3-4所示。圖3-4 按鍵電路原理圖3.5 報(bào)警電路設(shè)計(jì)報(bào)警電路是在測(cè)量溫度大于上限或小于下限時(shí)提供報(bào)警功能的電路。該電路是由一個(gè)蜂鳴器和一個(gè)紅色的發(fā)光二極管組成,具體的電路如圖3-6所示。圖3-5 報(bào)警電路原理圖四、軟件設(shè)計(jì)4.1 主程序設(shè)計(jì)主程序需要調(diào)用3個(gè)子程序,分別為: 實(shí)時(shí)溫度顯示子程序:驅(qū)動(dòng)數(shù)碼管把實(shí)時(shí)溫度值送出在液晶顯示屏顯示 查詢(xún)記錄溫度值子程序:查詢(xún)過(guò)去存儲(chǔ)的溫度值,最多可查詢(xún)10個(gè)值 溫度設(shè)定、報(bào)警子程序:設(shè)定報(bào)警溫度值,當(dāng)溫度超過(guò)該值時(shí)產(chǎn)生報(bào)警,即驅(qū)動(dòng)蜂
23、鳴器鳴叫、8個(gè)發(fā)光二極管發(fā)光主程序流程圖:開(kāi)始定時(shí)器初始化、啟動(dòng)顯示實(shí)時(shí)溫度溫度設(shè)定、報(bào)警查詢(xún)記錄溫度值圖4-1 主程序流程圖4.2 DS18B20程序設(shè)計(jì)讀溫度值模塊需要調(diào)用4個(gè)子程序,分別為:l DS18B20初始化子程序:讓單片機(jī)知道DS18B20在總線(xiàn)上且已準(zhǔn)備好操作l DS18B20寫(xiě)字節(jié)子程序:對(duì)DS18B20發(fā)出命令l DS18B20讀字節(jié)子程序:讀取DS18B20存儲(chǔ)器的數(shù)據(jù)l 延時(shí)子程序:對(duì)DS18B20操作時(shí)的時(shí)序控制1. 讀溫度值模塊流程圖:圖4-2 讀溫度值子程序流程圖 2. DS18B20初始化子程序流程圖:圖4-5 DS18B20初始化子程序流程圖3. DS18B2
24、0寫(xiě)字節(jié)和讀字節(jié)子程序流程圖: 圖4-6 DS18B20寫(xiě)字節(jié)子程序流程圖 圖4-7 DS18B20讀字節(jié)子程序流程圖4.3 按鍵程序設(shè)計(jì)按鍵是用來(lái)查看上下報(bào)警溫度值以及設(shè)定上下限報(bào)警溫度的。具體的程序流程圖如圖3-5所示。圖4-9 按鍵程序流程圖五、實(shí)驗(yàn)設(shè)計(jì)結(jié)果此次實(shí)驗(yàn)設(shè)計(jì)完成比較理想,仿真實(shí)驗(yàn)結(jié)果符合設(shè)計(jì)結(jié)果。LCD1602能實(shí)時(shí)顯示DS18B20檢測(cè)到的溫度。當(dāng)前溫度超過(guò)設(shè)定的上下限溫度報(bào)警值時(shí),蜂鳴器和發(fā)光二極管能正常發(fā)出警報(bào)。并且通過(guò)按鍵可以完成以下操作:K1鍵: 查看上下限溫度報(bào)警值。K2鍵: 返回實(shí)時(shí)溫度。K3鍵: 上調(diào)溫度上限值。K4鍵: 下調(diào)溫度下限值。K5鍵: 上調(diào)溫度下限
25、值。K6鍵: 下調(diào)溫度下限值。六、實(shí)驗(yàn)設(shè)計(jì)總結(jié)此次的設(shè)計(jì)使我從中學(xué)到了一些很重要的東西,那就是如何從理論到實(shí)踐的轉(zhuǎn)化,怎樣將我們所學(xué)到的知識(shí)運(yùn)用到實(shí)踐中去。在大學(xué)課堂的學(xué)習(xí)只是給我們灌輸專(zhuān)業(yè)知識(shí),而我們應(yīng)把所學(xué)的知識(shí)應(yīng)用到我們現(xiàn)實(shí)的生活中去。這次的設(shè)計(jì)不僅使我們將課堂上學(xué)到的理論知識(shí)與實(shí)際應(yīng)用結(jié)合了起來(lái),而且使我們對(duì)電子電路、電子元器件、印制電路板等方面的知識(shí)有了更進(jìn)一步的認(rèn)識(shí),同時(shí)在軟件編程、相關(guān)軟件的使用等方面得到較全面的鍛煉和提高,為今后能夠獨(dú)立進(jìn)行某些單片機(jī)應(yīng)用系統(tǒng)的開(kāi)發(fā)設(shè)計(jì)工作打下一定的基礎(chǔ)。此次單片機(jī)設(shè)計(jì)也為我們以后進(jìn)行更復(fù)雜的單片機(jī)系統(tǒng)設(shè)計(jì)提供了寶貴的經(jīng)驗(yàn)。本次設(shè)計(jì)的另一個(gè)重點(diǎn)就
26、是軟件程序的設(shè)計(jì),其中需要有很巧妙的程序算法,雖然以前寫(xiě)過(guò)幾次程序,但我覺(jué)的寫(xiě)好一個(gè)程序并不是一件簡(jiǎn)單的事,有好多的東西,只有我們?nèi)ピ囍隽耍拍苷嬲恼莆?,只學(xué)習(xí)理論,有些東西是很難理解的,更談不上掌握。通過(guò)此次的綜合設(shè)計(jì),我們初步掌握了單片機(jī)系統(tǒng)設(shè)計(jì)的基本原理。充分認(rèn)識(shí)到理論學(xué)習(xí)與實(shí)踐相結(jié)合的重要性,對(duì)于書(shū)本上的很多知識(shí),不但要學(xué)會(huì),更重要的是會(huì)運(yùn)用到實(shí)踐中去。在以后的學(xué)習(xí)中,我們會(huì)更加注重實(shí)踐方面的鍛煉,多提高自己的動(dòng)手實(shí)踐能力。七、實(shí)驗(yàn)設(shè)計(jì)程序#include<reg51.h>#include<intrins.h>#include<math.h>#d
27、efine uchar unsigned char#define uint unsigned intsbit DQ=P37;/ds18b20與單片機(jī)連接口sbit RS=P25;sbit RW=P26;sbit E=P27;sbit k=P10;sbit k_=P11;sbit k1=P14;sbit k2=P15;sbit k3=P16;sbit k4=P17;sbit led_red=P22;sbit led_blue=P23;sbit beep=P30;uint H,L,L1;uint M,M1;uint gw = 40;uint dw = 10;unsigned char code s
28、tr1="temperature: "unsigned char code str2=" " unsigned char code str3= "HI: "unsigned char code str4= "LO: "unsigned char code str5="-0123456789"uchar data disdata5;uchar data disbj50;uint tvalue;/溫度值uchar tflag;/溫度正負(fù)標(biāo)志uchar bjflag;/低溫報(bào)警正負(fù)標(biāo)志/*lcd160
29、2程序*/ void delay1ms(unsigned int ms)/延時(shí)1毫秒(不夠精確的) unsigned int i,j; for(i=0;i<ms;i+) for(j=0;j<100;j+); void wr_com(unsigned char com)/寫(xiě)指令/ delay1ms(1); RS=0; RW=0; E=0; P0=com; delay1ms(1); E=1; delay1ms(1); E=0; void wr_dat(unsigned char dat)/寫(xiě)數(shù)據(jù)/ delay1ms(1); RS=1; RW=0; E=0; P0=dat; delay1
30、ms(1); E=1; delay1ms(1); E=0; void lcd_init()/初始化設(shè)置/delay1ms(15); wr_com(0x38);delay1ms(5); wr_com(0x08);delay1ms(5); wr_com(0x01);delay1ms(5); wr_com(0x06);delay1ms(5); wr_com(0x0c);delay1ms(5); void display(unsigned char *p)/顯示/while(*p!='0')wr_dat(*p);p+;delay1ms(1);void init_play()/初始化顯示
31、 lcd_init(); wr_com(0x80); display(str1); /*ds1820程序*/ void delay_18B20(unsigned int i)/延時(shí)1微秒 while(i-);void ds1820rst()/*ds1820復(fù)位*/ unsigned char x=0; DQ = 1; /DQ復(fù)位 delay_18B20(4); /延時(shí) DQ = 0; /DQ拉低 delay_18B20(100); /精確延時(shí)大于480us DQ = 1; /拉高 delay_18B20(40); uchar ds1820rd()/*讀數(shù)據(jù)*/ unsigned char i=
32、0; unsigned char dat = 0; for (i=8;i>0;i-) DQ = 0; /給脈沖信號(hào) dat>>=1; DQ = 1; /給脈沖信號(hào) if(DQ) dat|=0x80; delay_18B20(10); return(dat); void ds1820wr(uchar wdata)/*寫(xiě)數(shù)據(jù)*/ unsigned char i=0; for (i=8; i>0; i-) DQ = 0; DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata>>=1; /*讀取溫度值并轉(zhuǎn)換*/ re
33、ad_temp() uchar a,b; ds1820rst(); ds1820wr(0xcc);/*跳過(guò)讀序列號(hào)*/ ds1820wr(0x44);/*啟動(dòng)溫度轉(zhuǎn)換*/ ds1820rst(); ds1820wr(0xcc);/*跳過(guò)讀序列號(hào)*/ ds1820wr(0xbe);/*讀取溫度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; M=b; tvalue<<=8; M<<=8; tvalue=tvalue|a; M=M|a; if(tvalue<0x0fff) tflag=0; else tvalue=tvalue+1; t
34、flag=1; tvalue=tvalue*5/8; /溫度值擴(kuò)大10倍,精確到1位小數(shù)return(tvalue); /*溫度計(jì)算顯示*/ void ds1820disp()/溫度值顯示 uchar flagdat; disdata0=tvalue/1000+0x30;/百位數(shù) disdata1=tvalue%1000/100+0x30;/十位數(shù) disdata2=tvalue%100/10+0x30;/個(gè)位數(shù) disdata3=tvalue%10+0x30;/小數(shù)位 if(tflag=0) flagdat=0x20;/正溫度不顯示符號(hào) else flagdat=0x2d;/負(fù)溫度顯示負(fù)號(hào):
35、- if(disdata0=0x30) disdata0=0x20;/如果百位為0,不顯示 if(disdata1=0x30) disdata1=0x20;/如果百位為0,十位為0也不顯示 wr_com(0x80); display(str1); wr_com(0xc0); wr_dat(flagdat);/顯示符號(hào)位 wr_com(0xc1); wr_dat(disdata0);/顯示百位 wr_com(0xc2); wr_dat(disdata1);/顯示十位 wr_com(0xc3); wr_dat(disdata2);/顯示個(gè)位 wr_com(0xc4); wr_dat(0x2e);/
36、顯示小數(shù)點(diǎn) wr_com(0xc5); wr_dat(disdata3);/顯示小數(shù)位 /*報(bào)警設(shè)置顯示*在此修改報(bào)警值位置*/void bj_play() unsigned char flagdat=0x00 ; int t=dw; if(dw<0x0fff) bjflag=0; else /低溫負(fù)數(shù)符號(hào)判斷以及補(bǔ)碼轉(zhuǎn)為原碼 dw=dw+1; bjflag=1; disbj0=gw/100+0x30;/百位數(shù) disbj1=gw%100/10+0x30;/十位數(shù) /高溫報(bào)警計(jì)算 disbj2=gw%10+0x30;/個(gè)位數(shù) disbj3=gw%1+0x30;/小數(shù)位 if(bjflag
37、=0) flagdat=0x20;/正溫度不顯示符號(hào) else flagdat=str50;/負(fù)溫度顯示負(fù)號(hào):- disbj5=dw/100+0x30;/百位數(shù) disbj6=dw%100/10+0x30;/十位數(shù) /低溫報(bào)警計(jì)算 disbj7=dw%100%10+0x30;/個(gè)位數(shù) disbj8=dw%1+0x30;/小數(shù)位 if(disbj0=0x30) disbj0=0x20;/如果百位為0,不顯示 if(disbj1=0x30) disbj1=0x20;/如果百位為0,十位為0也不顯示 if(disbj5=0x30) disbj5=0x20;/如果百位為0,不顯示 if(disbj6=0x30) disbj6=0x20;/如果百位為0,十位為0也不顯示 wr_com(0x80); wr_dat(str30); wr_com(0x81); wr_dat(str31); wr_com(0x82); wr_dat(str32); wr_com(0xc0); wr_dat(str40); wr_com(0xc1); wr_dat(str41);
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 腸梗阻健康課件
- 肝膽病中醫(yī)診治技術(shù)課件
- 安全聯(lián)鎖培訓(xùn)課件模板
- 高考遼寧真題數(shù)學(xué)試卷
- 拱墅區(qū)小升初數(shù)學(xué)試卷
- 典中點(diǎn)魯教版五四制數(shù)學(xué)試卷
- 高三歷年高考數(shù)學(xué)試卷
- 二年級(jí)上學(xué)期期中數(shù)學(xué)試卷
- 高一一學(xué)期數(shù)學(xué)試卷
- 2025年03月浙江臺(tái)州市立醫(yī)院招聘高層次(博士高級(jí)職稱(chēng))衛(wèi)技人員15人筆試歷年專(zhuān)業(yè)考點(diǎn)(難、易錯(cuò)點(diǎn))附帶答案詳解
- 配電故障緊急搶修
- (2025)發(fā)展對(duì)象培訓(xùn)考試題和答案
- 2025年經(jīng)濟(jì)學(xué)基礎(chǔ)理論考試試卷及答案
- 測(cè)繪工程應(yīng)急預(yù)案
- 2025生產(chǎn)與運(yùn)作管理試題及答案
- 入職預(yù)支薪資協(xié)議書(shū)
- 2024年重慶開(kāi)州區(qū)中醫(yī)院招聘筆試真題
- 海外倉(cāng)一件代發(fā)服務(wù)合同范本下載
- 2025年山西省華艦體育控股集團(tuán)有限公司所屬企業(yè)校園招聘19人筆試參考題庫(kù)附帶答案詳解
- 《中國(guó)特色社會(huì)主義理論體系的形成和發(fā)展》(課件)
- 職業(yè)技術(shù)學(xué)院嬰幼兒托育服務(wù)與管理專(zhuān)業(yè)人才培養(yǎng)方案
評(píng)論
0/150
提交評(píng)論