版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
-.z.《單片機(jī)原理與應(yīng)用》課程設(shè)計(jì)報(bào)告題目:LCD數(shù)字式溫度濕度測(cè)量計(jì)專業(yè):自動(dòng)化班級(jí):A1332**:10姓名:曾志勇指導(dǎo)老師:查兵2016-06-08目錄1.設(shè)計(jì)題目、要求及分工11.1.設(shè)計(jì)要求11.2.分工12.系統(tǒng)設(shè)計(jì)方案論證與選擇13.系統(tǒng)硬件電路設(shè)計(jì)13.1.單片機(jī)的選擇13.2.溫度傳感器電路的設(shè)計(jì)2顯示設(shè)計(jì)34.系統(tǒng)軟件設(shè)計(jì)44.1.主程序44.2.讀出溫度子程序65.系統(tǒng)仿真調(diào)試結(jié)果記錄及分析116.總結(jié)13參考文獻(xiàn)14-.z.設(shè)計(jì)題目、要求及分工設(shè)計(jì)要求(1)熟悉掌握單片機(jī)的中斷,定時(shí)器及各并行口的應(yīng)用;(2)熟悉掌握單片機(jī)溫度濕度的測(cè)量方法;(3)利用溫度傳感器及單片機(jī)完成對(duì)溫度的檢測(cè);(4)掌握將檢測(cè)的溫度信號(hào)轉(zhuǎn)換為數(shù)碼管顯示的數(shù)字信號(hào);(5)設(shè)計(jì)一個(gè)簡(jiǎn)單數(shù)字溫度計(jì),能夠測(cè)量通常環(huán)境下的溫度,能夠?qū)崿F(xiàn)零下溫度的測(cè)量,能夠測(cè)量小數(shù),精度為0.01度。分工經(jīng)過(guò)我和隊(duì)友的商討,為了能最大發(fā)揮各自的長(zhǎng)處。我主要負(fù)責(zé)程序的編寫(xiě)與單片機(jī)的調(diào)試。他主要負(fù)責(zé)一些相關(guān)資料文獻(xiàn)的查找與課程設(shè)計(jì)報(bào)告。系統(tǒng)設(shè)計(jì)方案論證與選擇在日常生活和生產(chǎn)中,我們經(jīng)常要測(cè)量環(huán)境的溫度濕度,傳統(tǒng)的測(cè)量方式采用水銀溫度計(jì)和干濕球濕度計(jì)查算法,存在著誤差大,操作使用不便等問(wèn)題,采用工業(yè)級(jí)測(cè)量?jī)x表價(jià)格昂貴。采用AT89C51和溫度傳感器等構(gòu)成的LCD數(shù)字式溫度濕度測(cè)量計(jì)精度高且價(jià)格便宜。由于本設(shè)計(jì)是測(cè)溫電路,可以使用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測(cè)溫度值,進(jìn)行A/D轉(zhuǎn)換,將數(shù)據(jù)傳入80C51單片機(jī)中,單片機(jī)處理后,通過(guò)LED顯示出當(dāng)前實(shí)測(cè)溫度。系統(tǒng)硬件電路設(shè)計(jì)單片機(jī)的選擇單片80C51具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)。本次設(shè)計(jì)需要注意的幾個(gè)端口:P0口(39—32):是一組8位漏極開(kāi)路行雙向I/O口,也既地址/數(shù)據(jù)總線復(fù)用口??勺鳛檩敵隹谑褂脮r(shí),每位可吸收電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯電路,對(duì)端口寫(xiě)“1”可作為高阻抗輸入輸入端用。在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問(wèn)期間激活內(nèi)部上拉電阻。在Flash編程時(shí),PO口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求接上拉電阻。P3口(10—17):是一組帶有內(nèi)部上拉電阻的8位雙向I/O口,,P1的輸入緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門(mén)電路。對(duì)P3口寫(xiě)入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸出端口。作輸出端口時(shí),被外部拉低的P3口將用上拉電阻輸出電流。。溫度傳感器電路的設(shè)計(jì)DS18B20溫度傳感器是美國(guó)DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式。64位ROM的結(jié)構(gòu)開(kāi)始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器TH和TL,可通過(guò)軟件寫(xiě)入戶報(bào)警上下限。DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖2.3所示。頭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é)各位的定義:低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式,DS18B20出廠時(shí)該位被設(shè)置為0,用戶要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來(lái)設(shè)置分辨率S18B20溫度轉(zhuǎn)換的時(shí)間比較長(zhǎng),而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。溫度傳感器18B20匯編程序,采用器件默認(rèn)的12位轉(zhuǎn)化,最大轉(zhuǎn)化時(shí)間750微秒,可以將檢測(cè)到的溫度直接顯示到80C51的兩個(gè)數(shù)碼管上。高速暫存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ǔ)器的第1、2字節(jié)。單片機(jī)可以通過(guò)單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以0.0625℃/LSB式表示。當(dāng)符號(hào)位S=0時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位S=1時(shí),表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制數(shù)值。表2是一部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)。DS18B20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。若T>TH或T<TL,則將該器件內(nèi)的報(bào)警標(biāo)志位置位,并對(duì)主機(jī)發(fā)出的報(bào)警搜索命令做出響應(yīng)。因此,可用多只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單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫(xiě)時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲(chǔ)器操作命令→處理數(shù)據(jù)。圖STYLEREF1\s3SEQ圖\*ARABIC\s11溫度傳感器電路LCD1602顯示設(shè)計(jì)圖STYLEREF1\s3SEQ圖\*ARABIC\s12LCD顯示電路圖LCD1602顯示流程:圖3-3流程圖系統(tǒng)軟件設(shè)計(jì)主程序主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量溫度值。溫度測(cè)量每1s進(jìn)行一次。主程序流程圖如圖4.1所示:*include<reg51.h>*include"lcd.h"*include"temp.h"voidLcdDisplay(int);voidmain(){LcdInit(); //初始化LCD1602 LcdWrite(0*88); //寫(xiě)地址80表示初始地址 LcdWriteData('C'); while(1) {LcdDisplay(Ds18b20ReadTemp());// Delay1ms(1000);//1s鐘刷一次 }}/*函數(shù)名:LcdDisplay()*函數(shù)功能 :LCD顯示讀取到溫度/voidLcdDisplay(inttemp) //lcd顯示{unsignedchardatas[]={0,0,0,0,0};//定義數(shù)組 floattp; if(temp<0) //當(dāng)溫度值為負(fù)數(shù) { LcdWrite(0*80); //寫(xiě)地址80表示初始地址 LcdWriteData('-'); //顯示負(fù)temp=temp-1; temp=~temp; tp=temp; temp=tp*0.0625*100+0.5; } else { LcdWrite(0*80); LcdWriteData('+'); tp=temp; temp=tp*0.0625*100+0.5; } datas[0]=temp/10000; datas[1]=temp%10000/1000; datas[2]=temp%1000/100; datas[3]=temp%100/10; datas[4]=temp%10;LcdWrite(0*82); //寫(xiě)地址80表示初始地址 LcdWriteData('0'+datas[0]);//百位LcdWrite(0*83); //寫(xiě)地址80表示初始地址 LcdWriteData('0'+datas[1]);//十位LcdWrite(0*84); //寫(xiě)地址80表示初始地址 LcdWriteData('0'+datas[2]);//個(gè)位LcdWrite(0*85); //寫(xiě)地址80表示初始地址 LcdWriteData('.'); //顯示‘.’LcdWrite(0*86); //寫(xiě)地址80表示初始地址 LcdWriteData('0'+datas[3]);//顯示小數(shù)點(diǎn)LcdWrite(0*87); //寫(xiě)地址80表示初始地址 LcdWriteData('0'+datas[4]);//顯示小數(shù)點(diǎn)}圖STYLEREF1\s4SEQ圖\*ARABIC\s11主程序流程圖讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節(jié)。在讀出時(shí)必須進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不能進(jìn)行溫度數(shù)據(jù)的改寫(xiě)。讀出溫度子程序流程圖如下圖所示:*include"temp.h"voidDelay1ms(uinty){uint*; for(;y>0;y--) {for(*=110;*>0;*--); }}ucharDs18b20Init(){ uchari; DSPORT=0; //將總線拉低480us~960us i=70; while(i--);//延時(shí)642us DSPORT=1; //然后拉高總線,如果DS18B20做出反應(yīng)會(huì)將在15us~60us后總線拉低 i=0; while(DSPORT) //等待DS18B20拉低總線 { i++; if(i>5)//等待>5MS { return0;//初始化失敗 } Delay1ms(1); } return1;//初始化成功}voidDs18b20WriteByte(uchardat){ uinti,j;for(j=0;j<8;j++) { DSPORT=0; //每寫(xiě)入一位數(shù)據(jù)之前先把總線拉低1us i++; DSPORT=dat&0*01;//然后寫(xiě)入一個(gè)數(shù)據(jù),從最低位開(kāi)始 i=6; while(i--);//延時(shí)68us,持續(xù)時(shí)間最少60us DSPORT=1; //然后釋放總線,至少1us給總線恢復(fù)時(shí)間才能接著寫(xiě)入第二個(gè)數(shù)值 dat>>=1; }}ucharDs18b20ReadByte(){ ucharbyte,bi; uinti,j; for(j=8;j>0;j--) { DSPORT=0;//先將總線拉低1us i++; DSPORT=1;//然后釋放總線 i++; i++;//延時(shí)6us等待數(shù)據(jù)穩(wěn)定 bi=DSPORT; //讀取數(shù)據(jù),從最低位開(kāi)始讀取 /*將byte左移一位,然后與上右移7位后的bi,注意移動(dòng)之后移掉那位補(bǔ)0。*/ byte=(byte>>1)|(bi<<7); i=4; //讀取完之后等待48us再接著讀取下一個(gè)數(shù) while(i--); } returnbyte;}voidDs18b20ChangTemp(){ Ds18b20Init(); Delay1ms(1); Ds18b20WriteByte(0*cc); //跳過(guò)ROM操作命令 Ds18b20WriteByte(0*44); //溫度轉(zhuǎn)換命令// Delay1ms(100); //等待轉(zhuǎn)換成功,而如果你是一直刷著的話,就不用這個(gè)延時(shí)了}voidDs18b20ReadTemp(){ Ds18b20Init(); Delay1ms(1); Ds18b20WriteByte(0*cc); //跳過(guò)ROM操作命令 Ds18b20WriteByte(0*be); //發(fā)送讀取溫度命令}intDs18b20ReadTemp(){inttemp=0; uchartmh,tml; Ds18b20ChangTemp(); //先寫(xiě)入轉(zhuǎn)換命令 Ds18b20ReadTemp(); //然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令 tml=Ds18b20ReadByte(); //讀取溫度值共16位,先讀低字節(jié) tmh=Ds18b20ReadByte(); //再讀高字節(jié) temp=tmh; temp<<=8; temp|=tml; returntemp;}讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節(jié)。在讀出時(shí)須進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫(xiě)。得出溫度子程序流程圖如下圖所示。圖STYLEREF1\s42溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開(kāi)始命令。當(dāng)采用12位分辨率時(shí),轉(zhuǎn)換時(shí)間約為750ms。在本程序設(shè)計(jì)中,采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如下圖所示。圖STYLEREF1\s4SEQ圖\*ARABIC\s14系統(tǒng)仿真調(diào)試結(jié)果記錄及分析硬件調(diào)試比較簡(jiǎn)單,首先檢查電感的焊接是否正確,然后可用萬(wàn)用表測(cè)試或通電檢測(cè)。軟件調(diào)試可以先編寫(xiě)顯示程序并進(jìn)行硬件的正確性檢驗(yàn),然后分別進(jìn)行主程序、讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序和現(xiàn)實(shí)數(shù)據(jù)刷新子程序等的編程及調(diào)試由于DS18B20與單片機(jī)采用串行數(shù)據(jù)傳送,因此,對(duì)DS18B20進(jìn)行讀/寫(xiě)編程時(shí)必須嚴(yán)格地保證讀/寫(xiě)時(shí)序;否則將無(wú)法讀取測(cè)量結(jié)果。電路Isis仿真測(cè)試燒寫(xiě)程序至單片機(jī):液晶顯示室溫為+28.06度用手觸摸DS18B20,發(fā)現(xiàn)溫度上升為+32.75度,證明溫度傳感正常工作??偨Y(jié)這次課程設(shè)計(jì),主要是以STC89C51單片機(jī)為核心的,對(duì)溫度的檢測(cè)與顯示進(jìn)行了簡(jiǎn)單的設(shè)計(jì)與闡述。因沒(méi)有濕度傳感器模塊,所以未進(jìn)行濕度檢測(cè)。本次課程設(shè)計(jì)可以說(shuō)是軟硬結(jié)合,又以硬件為主。當(dāng)今科技發(fā)展迅速,單片機(jī)開(kāi)發(fā)有著光明的前景。由于單片機(jī)經(jīng)濟(jì)實(shí)用、開(kāi)發(fā)簡(jiǎn)便等特點(diǎn)依然在工業(yè)控制、家電等領(lǐng)域占據(jù)了廣泛的市場(chǎng)。所以我選擇這樣的設(shè)計(jì)課題,并且能通過(guò)此次設(shè)計(jì)來(lái)提高自己軟件編制和硬件電路設(shè)計(jì)的能力。在我完成這次課程設(shè)計(jì)的過(guò)程中,當(dāng)看到自己將專業(yè)知識(shí)用于解決實(shí)際的問(wèn)題時(shí),那份成就感和喜悅感是難以形容的。在這次實(shí)際的編程以及調(diào)試程序過(guò)程中,我發(fā)現(xiàn)自己學(xué)很多課本以外的東西。光靠自己在書(shū)本上所學(xué)過(guò)的這點(diǎn)知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,真正地認(rèn)識(shí)到了工作就是學(xué)習(xí)的道理。尤其是對(duì)于編程來(lái)說(shuō),需要硬件的功底,也需要軟件的能力。當(dāng)程序
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度日本貿(mào)易法規(guī)體系下進(jìn)口企業(yè)合規(guī)管理合同3篇
- 礦山網(wǎng)絡(luò)化延期合同
- 產(chǎn)業(yè)園區(qū)通信網(wǎng)絡(luò)共建租賃合同
- 安徽省創(chuàng)業(yè)孵化器租賃合同
- 2025年度:協(xié)議離婚與訴訟離婚法律程序及注意事項(xiàng)合同3篇
- 汽車(chē)用品存儲(chǔ)續(xù)租合同
- 高空電力線路施工合同
- 鑄造廠自來(lái)水安裝合同
- 2025國(guó)內(nèi)民用船舶修理標(biāo)準(zhǔn)合同
- 航空公司飛機(jī)購(gòu)置融資租賃合同
- 春季餐飲營(yíng)銷(xiāo)策劃
- 企業(yè)會(huì)計(jì)機(jī)構(gòu)的職責(zé)(2篇)
- 《疥瘡的防治及治療》課件
- Unit4 What can you do Part B read and write (說(shuō)課稿)-2024-2025學(xué)年人教PEP版英語(yǔ)五年級(jí)上冊(cè)
- 2025年MEMS傳感器行業(yè)深度分析報(bào)告
- 《線控底盤(pán)技術(shù)》2024年課程標(biāo)準(zhǔn)(含課程思政設(shè)計(jì))
- 學(xué)校對(duì)口幫扶計(jì)劃
- 倉(cāng)庫(kù)倉(cāng)儲(chǔ)安全管理培訓(xùn)課件模板
- 風(fēng)力發(fā)電場(chǎng)運(yùn)行維護(hù)手冊(cè)
- 河道旅游開(kāi)發(fā)合同
- 情人合同范例
評(píng)論
0/150
提交評(píng)論