單片機(jī)課程設(shè)計(jì)報(bào)告LCD顯示溫度_第1頁
單片機(jī)課程設(shè)計(jì)報(bào)告LCD顯示溫度_第2頁
單片機(jī)課程設(shè)計(jì)報(bào)告LCD顯示溫度_第3頁
單片機(jī)課程設(shè)計(jì)報(bào)告LCD顯示溫度_第4頁
單片機(jī)課程設(shè)計(jì)報(bào)告LCD顯示溫度_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

-.z.《單片機(jī)原理與應(yīng)用》課程設(shè)計(jì)報(bào)告題目:LCD數(shù)字式溫度濕度測量計(jì)專業(yè):自動化班級: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ī)的中斷,定時器及各并行口的應(yīng)用;(2)熟悉掌握單片機(jī)溫度濕度的測量方法;(3)利用溫度傳感器及單片機(jī)完成對溫度的檢測;(4)掌握將檢測的溫度信號轉(zhuǎn)換為數(shù)碼管顯示的數(shù)字信號;(5)設(shè)計(jì)一個簡單數(shù)字溫度計(jì),能夠測量通常環(huán)境下的溫度,能夠?qū)崿F(xiàn)零下溫度的測量,能夠測量小數(shù),精度為0.01度。分工經(jīng)過我和隊(duì)友的商討,為了能最大發(fā)揮各自的長處。我主要負(fù)責(zé)程序的編寫與單片機(jī)的調(diào)試。他主要負(fù)責(zé)一些相關(guān)資料文獻(xiàn)的查找與課程設(shè)計(jì)報(bào)告。系統(tǒng)設(shè)計(jì)方案論證與選擇在日常生活和生產(chǎn)中,我們經(jīng)常要測量環(huán)境的溫度濕度,傳統(tǒng)的測量方式采用水銀溫度計(jì)和干濕球濕度計(jì)查算法,存在著誤差大,操作使用不便等問題,采用工業(yè)級測量儀表價格昂貴。采用AT89C51和溫度傳感器等構(gòu)成的LCD數(shù)字式溫度濕度測量計(jì)精度高且價格便宜。由于本設(shè)計(jì)是測溫電路,可以使用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進(jìn)行A/D轉(zhuǎn)換,將數(shù)據(jù)傳入80C51單片機(jī)中,單片機(jī)處理后,通過LED顯示出當(dāng)前實(shí)測溫度。系統(tǒng)硬件電路設(shè)計(jì)單片機(jī)的選擇單片80C51具有低電壓供電和體積小等特點(diǎn),四個端口只需要兩個口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)。本次設(shè)計(jì)需要注意的幾個端口:P0口(39—32):是一組8位漏極開路行雙向I/O口,也既地址/數(shù)據(jù)總線復(fù)用口??勺鳛檩敵隹谑褂脮r,每位可吸收電流的方式驅(qū)動8個TTL邏輯電路,對端口寫“1”可作為高阻抗輸入輸入端用。在訪問外部數(shù)據(jù)存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在Flash編程時,PO口接收指令字節(jié),而在程序校驗(yàn)時,輸出指令字節(jié),校驗(yàn)時,要求接上拉電阻。P3口(10—17):是一組帶有內(nèi)部上拉電阻的8位雙向I/O口,,P1的輸入緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作為輸出端口。作輸出端口時,被外部拉低的P3口將用上拉電阻輸出電流。。溫度傳感器電路的設(shè)計(jì)DS18B20溫度傳感器是美國DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實(shí)際要求通過簡單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式。64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個DS18B20可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器TH和TL,可通過軟件寫入戶報(bào)警上下限。DS18B20溫度傳感器的內(nèi)部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲器,結(jié)構(gòu)如圖2.3所示。頭2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復(fù)位時被刷新。第5個字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義:低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測試模式,DS18B20出廠時該位被設(shè)置為0,用戶要去改動,R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率S18B20溫度轉(zhuǎn)換的時間比較長,而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時間越長。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時間權(quán)衡考慮。溫度傳感器18B20匯編程序,采用器件默認(rèn)的12位轉(zhuǎn)化,最大轉(zhuǎn)化時間750微秒,可以將檢測到的溫度直接顯示到80C51的兩個數(shù)碼管上。高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲在高速暫存存儲器的第1、2字節(jié)。單片機(jī)可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時低位在先,高位在后,數(shù)據(jù)格式以0.0625℃/LSB式表示。當(dāng)符號位S=0時,表示測得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號位S=1時,表示測得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制數(shù)值。表2是一部分溫度值對應(yīng)的二進(jìn)制溫度數(shù)據(jù)。DS18B20完成溫度轉(zhuǎn)換后,就把測得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。若T>TH或T<TL,則將該器件內(nèi)的報(bào)警標(biāo)志位置位,并對主機(jī)發(fā)出的報(bào)警搜索命令做出響應(yīng)。因此,可用多只DS18B20同時測量溫度并進(jìn)行報(bào)警搜索。在64位ROM的最高有效字節(jié)中存儲有循環(huán)冗余檢驗(yàn)碼(CRC)。主機(jī)ROM的前56位來計(jì)算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。另外,由于DS18B20單線通信功能是分時完成的,它有嚴(yán)格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)。圖STYLEREF1\s3SEQ圖\*ARABIC\s11溫度傳感器電路LCD1602顯示設(shè)計(jì)圖STYLEREF1\s3SEQ圖\*ARABIC\s12LCD顯示電路圖LCD1602顯示流程:圖3-3流程圖系統(tǒng)軟件設(shè)計(jì)主程序主程序的主要功能是負(fù)責(zé)溫度的實(shí)時顯示、讀出并處理DS18B20的測量溫度值。溫度測量每1s進(jìn)行一次。主程序流程圖如圖4.1所示:*include<reg51.h>*include"lcd.h"*include"temp.h"voidLcdDisplay(int);voidmain(){LcdInit(); //初始化LCD1602 LcdWrite(0*88); //寫地址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); //寫地址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); //寫地址80表示初始地址 LcdWriteData('0'+datas[0]);//百位LcdWrite(0*83); //寫地址80表示初始地址 LcdWriteData('0'+datas[1]);//十位LcdWrite(0*84); //寫地址80表示初始地址 LcdWriteData('0'+datas[2]);//個位LcdWrite(0*85); //寫地址80表示初始地址 LcdWriteData('.'); //顯示‘.’LcdWrite(0*86); //寫地址80表示初始地址 LcdWriteData('0'+datas[3]);//顯示小數(shù)點(diǎn)LcdWrite(0*87); //寫地址80表示初始地址 LcdWriteData('0'+datas[4]);//顯示小數(shù)點(diǎn)}圖STYLEREF1\s4SEQ圖\*ARABIC\s11主程序流程圖讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節(jié)。在讀出時必須進(jìn)行CRC校驗(yàn),校驗(yàn)有錯時不能進(jìn)行溫度數(shù)據(jù)的改寫。讀出溫度子程序流程圖如下圖所示:*include"temp.h"voidDelay1ms(uinty){uint*; for(;y>0;y--) {for(*=110;*>0;*--); }}ucharDs18b20Init(){ uchari; DSPORT=0; //將總線拉低480us~960us i=70; while(i--);//延時642us DSPORT=1; //然后拉高總線,如果DS18B20做出反應(yīng)會將在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; //每寫入一位數(shù)據(jù)之前先把總線拉低1us i++; DSPORT=dat&0*01;//然后寫入一個數(shù)據(jù),從最低位開始 i=6; while(i--);//延時68us,持續(xù)時間最少60us DSPORT=1; //然后釋放總線,至少1us給總線恢復(fù)時間才能接著寫入第二個數(shù)值 dat>>=1; }}ucharDs18b20ReadByte(){ ucharbyte,bi; uinti,j; for(j=8;j>0;j--) { DSPORT=0;//先將總線拉低1us i++; DSPORT=1;//然后釋放總線 i++; i++;//延時6us等待數(shù)據(jù)穩(wěn)定 bi=DSPORT; //讀取數(shù)據(jù),從最低位開始讀取 /*將byte左移一位,然后與上右移7位后的bi,注意移動之后移掉那位補(bǔ)0。*/ byte=(byte>>1)|(bi<<7); i=4; //讀取完之后等待48us再接著讀取下一個數(shù) while(i--); } returnbyte;}voidDs18b20ChangTemp(){ Ds18b20Init(); Delay1ms(1); Ds18b20WriteByte(0*cc); //跳過ROM操作命令 Ds18b20WriteByte(0*44); //溫度轉(zhuǎn)換命令// Delay1ms(100); //等待轉(zhuǎn)換成功,而如果你是一直刷著的話,就不用這個延時了}voidDs18b20ReadTemp(){ Ds18b20Init(); Delay1ms(1); Ds18b20WriteByte(0*cc); //跳過ROM操作命令 Ds18b20WriteByte(0*be); //發(fā)送讀取溫度命令}intDs18b20ReadTemp(){inttemp=0; uchartmh,tml; Ds18b20ChangTemp(); //先寫入轉(zhuǎn)換命令 Ds18b20ReadTemp(); //然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令 tml=Ds18b20ReadByte(); //讀取溫度值共16位,先讀低字節(jié) tmh=Ds18b20ReadByte(); //再讀高字節(jié) temp=tmh; temp<<=8; temp|=tml; returntemp;}讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節(jié)。在讀出時須進(jìn)行CRC校驗(yàn),校驗(yàn)有錯時不進(jìn)行溫度數(shù)據(jù)的改寫。得出溫度子程序流程圖如下圖所示。圖STYLEREF1\s42溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令。當(dāng)采用12位分辨率時,轉(zhuǎn)換時間約為750ms。在本程序設(shè)計(jì)中,采用1s顯示程序延時法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如下圖所示。圖STYLEREF1\s4SEQ圖\*ARABIC\s14系統(tǒng)仿真調(diào)試結(jié)果記錄及分析硬件調(diào)試比較簡單,首先檢查電感的焊接是否正確,然后可用萬用表測試或通電檢測。軟件調(diào)試可以先編寫顯示程序并進(jìn)行硬件的正確性檢驗(yàn),然后分別進(jìn)行主程序、讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序和現(xiàn)實(shí)數(shù)據(jù)刷新子程序等的編程及調(diào)試由于DS18B20與單片機(jī)采用串行數(shù)據(jù)傳送,因此,對DS18B20進(jìn)行讀/寫編程時必須嚴(yán)格地保證讀/寫時序;否則將無法讀取測量結(jié)果。電路Isis仿真測試燒寫程序至單片機(jī):液晶顯示室溫為+28.06度用手觸摸DS18B20,發(fā)現(xiàn)溫度上升為+32.75度,證明溫度傳感正常工作??偨Y(jié)這次課程設(shè)計(jì),主要是以STC89C51單片機(jī)為核心的,對溫度的檢測與顯示進(jìn)行了簡單的設(shè)計(jì)與闡述。因沒有濕度傳感器模塊,所以未進(jìn)行濕度檢測。本次課程設(shè)計(jì)可以說是軟硬結(jié)合,又以硬件為主。當(dāng)今科技發(fā)展迅速,單片機(jī)開發(fā)有著光明的前景。由于單片機(jī)經(jīng)濟(jì)實(shí)用、開發(fā)簡便等特點(diǎn)依然在工業(yè)控制、家電等領(lǐng)域占據(jù)了廣泛的市場。所以我選擇這樣的設(shè)計(jì)課題,并且能通過此次設(shè)計(jì)來提高自己軟件編制和硬件電路設(shè)計(jì)的能力。在我完成這次課程設(shè)計(jì)的過程中,當(dāng)看到自己將專業(yè)知識用于解決實(shí)際的問題時,那份成就感和喜悅感是難以形容的。在這次實(shí)際的編程以及調(diào)試程序過程中,我發(fā)現(xiàn)自己學(xué)很多課本以外的東西。光靠自己在書本上所學(xué)過的這點(diǎn)知識是遠(yuǎn)遠(yuǎn)不夠的,真正地認(rèn)識到了工作就是學(xué)習(xí)的道理。尤其是對于編程來說,需要硬件的功底,也需要軟件的能力。當(dāng)程序

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論