版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
成都理工大學(xué)工程技術(shù)學(xué)院本科課程設(shè)計報告PAGE20成都理工大學(xué)工程技術(shù)學(xué)院單片機(jī)課程設(shè)計報告數(shù)字溫度計設(shè)計摘要在這個信息化高速發(fā)展的時代,單片機(jī)作為一種最經(jīng)典的微控制器,單片機(jī)技術(shù)已經(jīng)普及到我們生活,工作,科研,各個領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù),作為自動化專業(yè)的學(xué)生,我們學(xué)習(xí)了單片機(jī),就應(yīng)該把它熟練應(yīng)用到生活之中來。本文將介紹一種基于單片機(jī)控制的數(shù)字溫度計,本溫度計屬于多功能溫度計,可以設(shè)置上下報警溫度,當(dāng)溫度不在設(shè)置范圍內(nèi)時,可以報警。本文設(shè)計的數(shù)字溫度計具有讀數(shù)方便,測溫范圍廣,測溫精確,數(shù)字顯示,適用范圍寬等特點。關(guān)鍵詞:單片機(jī),數(shù)字控制,數(shù)碼管顯示,溫度計,DS18B20,AT89S52。目錄1概述 41.1設(shè)計目的 41.2設(shè)計原理 41.3設(shè)計難點 42系統(tǒng)總體方案及硬件設(shè)計 42.1數(shù)字溫度計設(shè)計方案論證 52.2.1主控制器 52.4系統(tǒng)整體硬件電路設(shè)計 73系統(tǒng)軟件設(shè)計 83.1初始化程序 83.2讀出溫度子程序 93.3讀、寫時序子程序 103.4溫度處理子程序 113.5顯示程序 124Proteus軟件仿真 135硬件實物 146課程設(shè)計體會…………………...15附錄1: 16附錄2:………………..211概述1.1設(shè)計目的隨著人們生活水平的不斷提高,單片機(jī)控制無疑是人們追求的目標(biāo)之一,它所給人帶來的方便也是不可否定的,其中數(shù)字溫度計就是一個典型的例子,但人們對它的要求越來越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從數(shù)單片機(jī)技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。
本設(shè)計所介紹的數(shù)字溫度計與傳統(tǒng)的溫度計相比,具有讀數(shù)方便,測溫范圍廣,測溫準(zhǔn)確,其輸出溫度采用數(shù)字顯示,主要用于對測溫比較準(zhǔn)確的場所,或科研實驗室使用,可廣泛用于食品庫、冷庫、糧庫、溫室大棚等需要控制溫度的地方。目前,該產(chǎn)品已在溫控系統(tǒng)中得到廣泛的應(yīng)用。1.2設(shè)計原理本系統(tǒng)是一個基于單片機(jī)AT89S52的數(shù)字溫度計的設(shè)計,用來測量環(huán)境溫度,測量范圍為-50℃—110℃度。整個設(shè)計系統(tǒng)分為4部分:單片機(jī)控制、溫度傳感器、數(shù)碼顯示以及鍵盤控制電路。整個設(shè)計是以AT89S52為核心,通過數(shù)字溫度傳感器DS18B20來實現(xiàn)環(huán)境溫度的采集和A/D轉(zhuǎn)換,同時因其輸出為數(shù)字形式,且為串行輸出,這就方便了單片機(jī)進(jìn)行數(shù)據(jù)處理,但同時也對編程提出了更高的要求。單片機(jī)把采集到的溫度進(jìn)行相應(yīng)的轉(zhuǎn)換后,使之能夠方便地在數(shù)碼管上輸出。LED采用三位一體共陽的數(shù)碼管。1.3設(shè)計難點此設(shè)計的重點在于編程,程序要實現(xiàn)溫度的采集、轉(zhuǎn)換、顯示和上下限溫度報警,其外圍電路所用器件較少,相對簡單,實現(xiàn)容易。2系統(tǒng)總體方案及硬件設(shè)計2.1數(shù)字溫度計設(shè)計方案論證
由于本設(shè)計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進(jìn)行A/D轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進(jìn)行轉(zhuǎn)換,就可以滿足設(shè)計要求。
2.2總體設(shè)計框圖
溫度計電路設(shè)計總體設(shè)計方框圖如圖1所示,控制器采用單片機(jī)AT89S52,溫度傳感器采用DS18B20,用3位共陰LED數(shù)碼管以串口傳送數(shù)據(jù)實現(xiàn)溫度顯示。晶振電晶振電路AT89S52單片機(jī)主控電路三位LED顯示電路溫度檢測電路DS18B20復(fù)位溫度檢測電路DS18B20復(fù)位電路圖1總體設(shè)計框圖2.2.1主控制器
單片機(jī)AT89S52具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設(shè)計需要,適合便攜手持式產(chǎn)品的設(shè)計使用。AT89S52單片機(jī)芯片具有以下特性:1)指令集合芯片引腳與Intel公司的8052兼容;2)4KB片內(nèi)在系統(tǒng)可編程FLASH程序存儲器;3)時鐘頻率為0~33MHZ;4)128字節(jié)片內(nèi)隨機(jī)讀寫存儲器(RAM);5)6個中斷源,2級優(yōu)先級;6)2個16位定時/記數(shù)器;7)全雙工串行通信接口;8)監(jiān)視定時器;9)兩個數(shù)據(jù)指針;
2.2.2顯示電路
2.2.3溫度傳感器
DS18B20溫度傳感器是美國DALLAS半導(dǎo)體公司推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)9-12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點如下:1.全數(shù)字溫度轉(zhuǎn)換及輸出。2.先進(jìn)的單總線數(shù)據(jù)通信。3.最高12為\位分辨率,精度可達(dá)±0.5攝氏度。4.12位分辨率時的最大工作周期為750毫秒。5.可選擇寄生工作方式。6.檢測溫度范圍為+55℃~+125℃(-67℉~+257℉)。7.內(nèi)置EEPROM,限溫報警功能。8.64位光刻ROM,內(nèi)置產(chǎn)品序列號,方便多機(jī)鏈接。9.多樣封裝形式,便于不同硬件系統(tǒng)。若要讀出當(dāng)前的溫度數(shù)據(jù)我們需要執(zhí)行兩次工作周期,第一個周期為復(fù)位、跳過ROM指令、執(zhí)行溫度轉(zhuǎn)換存儲器操作指令、等待500uS溫度轉(zhuǎn)換時間。緊接著執(zhí)行第二個周期為復(fù)位、跳過ROM指令、執(zhí)行讀RAM的存儲器操作指令、讀數(shù)據(jù)2.3DS18B20溫度傳感器與單片機(jī)的接口電路2.4系統(tǒng)整體硬件電路設(shè)計
2.4.1主板電路
系統(tǒng)整體硬件電路包括,傳感器數(shù)據(jù)采集電路,溫度顯示電路,上下限報警調(diào)整電路,單片機(jī)主板電路等,單片機(jī)主板電路如圖5所示:圖5單片機(jī)主板電路
2.4.2顯示電路
圖6溫度顯示電路3系統(tǒng)軟件設(shè)計系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計算溫度子程序,顯示數(shù)據(jù)刷新子程序等。3.1初始化程序復(fù)位:首先我們必須對DS18B20芯片進(jìn)行復(fù)位,復(fù)位就是由控制器(單片機(jī))給DS18B20單總線至少480uS的低電平信號。當(dāng)18B20接到此復(fù)位信號后則會在15~60uS后回發(fā)一個芯片的存在脈沖。
結(jié)束釋放總線發(fā)出存在脈沖,低電平持續(xù)120us釋放總線延遲發(fā)出復(fù)位脈沖保持500us結(jié)束釋放總線發(fā)出存在脈沖,低電平持續(xù)120us釋放總線延遲發(fā)出復(fù)位脈沖保持500us等待100us釋放總線釋放總線并進(jìn)入接收狀態(tài)DSl820在檢測到總線的上升沿之后等待30us 圖7初始化程序流程圖3.2讀出溫度子程序讀時間隙時控制時的采樣時間應(yīng)該更加的精確才行,讀時間隙時也是必須先由主機(jī)產(chǎn)生至少1us的低電平,表示讀時間的起始。隨后在總線被釋放后的15us中DS18B20會發(fā)送內(nèi)部數(shù)據(jù)位,這時控制如果發(fā)現(xiàn)總線為高電平表示讀出“1”,如果總線為低電平則表示讀出數(shù)據(jù)“0”。每一位的讀取之前都由控制器加一個起始信號。讀出溫度子程序的主要功能是讀出RAM中的2字節(jié),讀出溫度的低八位和高八位,在讀出時需進(jìn)行CRC校驗,校驗有錯時不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖8示發(fā)出18B20復(fù)位命令發(fā)跳過ROM命令發(fā)讀取溫度命令發(fā)出18B20復(fù)位命令發(fā)跳過ROM命令發(fā)讀取溫度命令2字節(jié)是否讀完?YN移入溫度暫存器圖8讀溫度程序流程圖3.3讀、寫時序子程序讀寫的程序是本次設(shè)計中的重點和難點,通過我們對其時序的分析,從而寫出高效的程序。等待設(shè)置讀位數(shù)R5NR5-1=0?
C清零,把A環(huán)移給C設(shè)置寫位數(shù)R5C=1?釋放總線延遲等待設(shè)置讀位數(shù)R5NR5-1=0?C清零,把A環(huán)移給C設(shè)置寫位數(shù)R5C=1?釋放總線延遲寫0復(fù)位Y寫1N釋放總線總線上的數(shù)給CY總線上的數(shù)給CY延遲結(jié)束延遲結(jié)束NR5-1=0?NR5-1=0?寫時序子程序流程圖YY結(jié)束結(jié)束讀時序子程序流程圖3.4溫度處理子程序
計算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖11所示取30H的高4位位溫度低4位取30H的高4位位溫度低4位取31H的低4位位溫度高4位高低4位組合成溫度溫度除以10余數(shù)為溫度個位放42H商再除以10余數(shù)為溫度十位放43H結(jié)束取30H的低4位為溫度小數(shù)經(jīng)查表得,放于41H結(jié)束取30H的低4位為溫度小數(shù)經(jīng)查表得,放于41H圖11溫度處理程序流程圖3.5顯示程序
此函數(shù)實現(xiàn)的對數(shù)碼管顯示的處理,其亮點在于可以直接對數(shù)碼管進(jìn)行操作,其本身是個兩變量函數(shù),第一個變量是要開通的位選,第二個變量是要顯示的數(shù)據(jù),這樣我們可以直接方便而又簡單直觀的對數(shù)碼管進(jìn)行操作。程序流程圖如圖12。22H取反21H取反21H=1?22H=1?開始22H取反21H取反21H=1?22H=1?開始選中各位小數(shù)點點亮選中小數(shù)位小數(shù)點不亮選中十位小數(shù)點不亮YNYN結(jié)束4Proteus軟件仿真
6課程設(shè)計體會通過為時2周的單片機(jī)課程設(shè)計,在老師的知道和幫助下我我和我的搭檔共同完成數(shù)值溫度級的設(shè)計學(xué)習(xí)。其中包擴(kuò)了程序的學(xué)習(xí)與修改,程序的仿真,電路的仿真以及實體電路的搭建,使之可以初略的讀出溫度值。通過這次課程設(shè)計我學(xué)到了許多的知識,了解了DS18B20的使用和接線的方法,了解了數(shù)碼管的顯示原理。學(xué)會了單片機(jī)程序?qū)懭氲姆椒?,更加熟悉了單片機(jī)的一些常用管腳的功能。同時,在課程設(shè)計的過程中,我也發(fā)現(xiàn)了自己很多的不足之處,一些單片機(jī)用到的匯編指令不熟悉。也暴露了在單片機(jī)理論課上學(xué)到的知識掌握的不好。還有一點就是理論與實際的聯(lián)系對我們學(xué)習(xí)和掌握單片機(jī)是非常有幫助的。參考文獻(xiàn)[1]DS18b20數(shù)據(jù)手冊。[2]求是科技編著8051系列單片機(jī)C程序設(shè)計完全手冊北京:人民郵電出版社,2006[3]余發(fā)山,王福忠.單片機(jī)原理及應(yīng)用技術(shù).徐州:中國礦業(yè)大學(xué)出版社,2003附錄1:程序DQBITP3.7;1wirelineDPBITP2.0swpHequ0d2HswpLequ0ffHWDLSBDATA30H;WDMSBDATA31H;;***************************************************************ORG0000HLJMPMAINORG000BHLJMPTMR0;Timer0isr;********************************************************;Timer0InterruptServiceRoutineTMR0:MOVTH0,#swpH ;輪流送溫度值的高低兩位到數(shù)碼管.swph為0d2HMOVTL0,#swpLJB21H,DSLJB22H,DSL1MOVP0,43H ORLP0,#01000000B;十位位選SETBP2.0;小數(shù)點不亮SJMPEXITDSL:MOVP0,42H ORLP0,#00100000B;個位位選 CPLP2.0 ;個位后面小數(shù)位亮 SJMPEXIT1DSL1: MOVP0,41H ORLP0,#00010000B;小數(shù)位位選 SETBP2.0 ;小數(shù)點不亮 SJMPEXIT2;DSL2:;MOVP0,40H ;ORLP0,#10000000B ;SETBP2.0 ;SJMPEXIT3EXIT:CPL21H ;21h取反,即21h=1RETIEXIT1:CPL22H ;22h=1CPL21H ;21h=0RETIEXIT2:;CPL23H ; CPL22H;22h=0RETI;MainprogramMAIN:TOINIT:CLREAMOVTMOD,#01HMOVTH0,#swpHMOVTL0,#swpLSETBEASETBET0SETBTR0;***********************************************************;41H-43H清零MOVR2,#3MOVR0,#41HOVER:MOV@R0,#00HINCR0DJNZR2,OVER;OVER執(zhí)行完LOOP:LCALLDSWDSJMPLOOP;**********************************************************;ReadatemperaturefromtheDS18B20DSWD:LCALLRSTSNR;InitoftheDS18B20JNBF0,KENDMOVR0,#0CCH;要寫的數(shù)給R0LCALLSEND_BYTE;調(diào)用寫程序MOVR0,#44HLCALLSEND_BYTE;SendaConvertCommand(送一個溫度轉(zhuǎn)換指令)SETBEA;延遲 MOV48H,#1;1usSS2:MOV49H,#255;1usSS1:MOV4AH,#255;1usSS0:DJNZ4AH,SS0;2us/次,255*2DJNZ49H,SS1;2us/次,255次DJNZ48H,SS2;2us總時間1+1+(1+255*2+2)*255+2CLREA ;進(jìn)入讀時序禁用任何中斷LCALLRSTSNRJNBF0,KENDMOVR0,#0CCHLCALLSEND_BYTEMOVR0,#0BEHLCALLSEND_BYTE;SendReadScratchpadcommandLCALLREAD_BYTE;ReadthelowbytefromscratchpadMOVWDLSB,A;Savethetemperature(lowbyte)LCALLREAD_BYTE;ReadthehighbytefromscratchpadMOVWDMSB,A;Savethetemperature(highbyte)LCALLTRANS12KEND:SETBEARET;**********************************************************;TRANS12:MOVA,30H ;30H存從1820取的溫度值A(chǔ)NLA,#0F0H;取WDLSB高4為(低位置0)MOV3AH,AMOVA,31HANLA,#0FH;取WDMSB的低4位(高位置0)ORLA,3AH;將WDLSB的高4為與WDMSB的低4位組合SWAPA;高低位互換A溫度MOVB,#10 ;轉(zhuǎn)換為10進(jìn)制DIVAB;A/BA為商B為余數(shù)MOV42H,B;B為個位42H中放個位MOVb,#10DIVabMOV43H,B;43十位MOVA,30HANLA,#0FHMOVDPTR,#tab1MOVCA,@a+DPTRMOV41H,ARET;*************************************************;Sendabytetothe1wireline寫SEND_BYTE:;MOVA,R0MOVR5,#8;設(shè)置寫位個數(shù)SEN3:CLRCRRCA;把一個字節(jié)data(A)分成8個bit環(huán)移給CJCSEN1LCALLWRITE_0;等待60usSJMPSEN2SEN1:LCALLWRITE_1SEN2:DJNZR5,SEN3;寫下一位RET;*************************************************;Readabytefromthe1wireline讀READ_BYTE:MOVR5,#8READ1:LCALLREADRRCADJNZR5,READ1MOVR0,ARET;*************************************************;Reset1wireline初始化RSTSNR:SETBDQNOPNOPCLRDQ;發(fā)送一復(fù)位脈沖MOVR6,#250DJNZR6,$;保持低電平500usMOVR6,#50DJNZR6,$SETBDQ;釋放總線MOVR6,#15DJNZR6,$;釋放總線并進(jìn)入接收狀態(tài)DSl820在檢測到總線的上升沿之后等待30usCALLCHCK;MOVR6,#60DJNZR6,$;發(fā)出存在脈沖(低電平持續(xù)120us)SETBDQRET;*************************************************;lowlevelsubroutines判斷DQ位是否被拉高,如已經(jīng)拉高,則l低,否則,將其拉高CHCK:MOVC,DQJCRST0SETBF0;SJMPCHCK0RST0:CLRF0;CHCK0:RET;***********************
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 病房消毒清潔管理方案
- 病歷大數(shù)據(jù)研究報告
- 2024年核酸疫苗項目規(guī)劃申請報告模板
- 2024年心電監(jiān)護(hù)儀項目提案報告范文
- 玻璃教堂施工方案
- 玻璃幕墻吊裝方案
- 玻璃廠檢修方案
- 玻璃產(chǎn)業(yè)火災(zāi)研究報告
- 瀕危海洋動物研究報告
- 濱湖小區(qū)聲屏障施工方案
- 【人教版】八年級英語上冊 Unit 7 全單元英文教案
- (完整版)汽油發(fā)電機(jī)操作規(guī)程
- 大平礦副井2.25m過卷緩沖裝置安裝2課件
- 門窗工程項目特征描述情況
- 胸外心臟按壓術(shù)操作常見并發(fā)癥的預(yù)防
- 工程造價咨詢服務(wù)質(zhì)量承諾及保證措施
- 最新種植新病歷
- 水聯(lián)動試車方案(共33頁)
- 高效電池片(TOPCon)生產(chǎn)項目可行性研究報告模板-提供甲乙丙資質(zhì)資信
- INPLAN操作培訓(xùn)PPT課件
- VB和Oracle的鏈接
評論
0/150
提交評論