《畢業(yè)論文DS18B20數(shù)字溫度計的設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《畢業(yè)論文DS18B20數(shù)字溫度計的設(shè)計(15頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、數(shù)字溫度計的設(shè)計目 錄第一節(jié) 引言.3 1.1 DS18B20引腳功能.4第二節(jié) DS18B20數(shù)字溫度計的硬件結(jié)構(gòu)設(shè)計.52.1 總體設(shè)計框圖.5 2.1.1 主控制器.52.1.2 顯示電路.52.1.3 溫度傳感器.52.2 DS18B20溫度傳感器與單片機的借口電路.62.3 系統(tǒng)整體硬件電路.7 2.3.1 主板電路.7 2.3.2 系統(tǒng)板上硬件連接.7第三節(jié) 軟件設(shè)計.83.1 主程序.83.2 讀出溫度子程序.83.3 溫度轉(zhuǎn)換命令子程序.9 3.4 計算溫度子程序.93.5 顯示數(shù)據(jù)刷新子程序.10第四節(jié) 總結(jié)與體會.10致謝.10參考文獻.11附錄 匯編源程序代碼.12DS1
2、8B20數(shù)字溫度計的設(shè)計摘 要 : 本論文介紹了一種以單片機為主要控制器件,以DS18B20為溫度傳感器的新型數(shù)字溫度計。主要包括硬件電路的設(shè)計和系統(tǒng)程序的設(shè)計。硬件電路主要包括主控制器,測溫電路和顯示電路等,主控制器采用單片機AT89C2051,溫度傳感器采用美國DALLAS半導(dǎo)體公司生產(chǎn)的DS18B20,顯示電路采用4位共陽極LED數(shù)碼管以動態(tài)掃描法直讀顯示。系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計算溫度子程序,顯示數(shù)據(jù)刷新子程序等。此外,還介紹了系統(tǒng)的調(diào)試和性能分析。由于采用了改進型智能溫度傳感器DS18B20作為檢測元件,與傳統(tǒng)的溫度計相比,本數(shù)字溫度計減少了外部
3、的硬件電路,具有低成本和易使用的特點。DS18B20溫度計還可以在高溫報警、遠距離多點測溫控制等方面進行應(yīng)用開發(fā),具有很好的發(fā)展前景。關(guān)鍵詞:單片機,主控制器,溫度傳感器,DS18B20,AT89C51, 顯示電路,數(shù)字溫度計第一節(jié) 引言隨著電子技術(shù)的迅速發(fā)展,計算機已深入的滲透到我們的生活中,就51系列而言,由于Intel公司將其內(nèi)核使用權(quán)以專利互換或出售的形式轉(zhuǎn)給世界許多著名IC制造商,隨著計算機技術(shù)的不斷發(fā)展,在工業(yè)測量控制領(lǐng)域內(nèi)單片機的應(yīng)用越來越廣泛。同時,隨著超大規(guī)模集成電路工藝和集成制造技術(shù)的不斷完善,單片機的硬件集成度也不斷提高,已經(jīng)出現(xiàn)了能滿足各種不同需求、具有各種特殊功能的單
4、片機,這類單片機具有集成度高、性能價格比優(yōu)越、貨源充足等優(yōu)點,在工業(yè)測量領(lǐng)域內(nèi)獲得了極為廣泛的應(yīng)用價值。溫度是一個十分重要的物理量,對它的測量與控制有十分重要的意義。隨著現(xiàn)代工農(nóng)業(yè)技術(shù)的發(fā)展及人們對生活環(huán)境要求的提高,人們也迫切需要檢測與控制溫度。在人類的生活環(huán)境中,溫度扮演著極其重要的角色。無論你生活在哪里,從事什么工作,無時無刻不在與溫度打著交道。在冶金、鋼鐵、石化、水泥、玻璃、醫(yī)藥等等行業(yè),可以說幾乎80%的工業(yè)部門都不得不考慮著溫度的因素。溫度對于工業(yè)如此重要,由此推進了溫度傳感器的發(fā)展。本應(yīng)用系統(tǒng)設(shè)計的目的是通過在“單片機原理及應(yīng)用”課堂上學(xué)習(xí)的知識,以及查閱資料,培養(yǎng)一種自學(xué)的能力
5、。并且引導(dǎo)一種創(chuàng)新的思維,把學(xué)到的知識應(yīng)用到日常生活當中。在設(shè)計的過程中,不斷的學(xué)習(xí),思考和同學(xué)間的相互討論,運用科學(xué)的分析問題的方法解決遇到的困難,掌握單片機系統(tǒng)一般的開發(fā)流程,學(xué)會對常見問題的處理方法,積累設(shè)計系統(tǒng)的經(jīng)驗,充分發(fā)揮教學(xué)與實踐的結(jié)合。全能提高個人系統(tǒng)開發(fā)的綜合能力,開拓了思維,為今后能在相應(yīng)工作崗位上的工作打下了堅實的基礎(chǔ)。本課題研究的內(nèi)容就是以單片機為主要控制元件,通過溫度傳感器實現(xiàn)對溫度的測量,并通過數(shù)碼管直接顯示所測溫度。由于本人所學(xué)知識有限,設(shè)計過程中難免出現(xiàn)錯誤,還請各位老師批評指正。1.1 DS18B20引腳功能TO92封裝的DS18B20的引腳排列見圖1,其引腳
6、功能描述見表1。 (底視圖)圖1 表1DS18B20詳細引腳功能描述 序號名稱引腳功能描述1GND地信號2DQ數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當被用著在寄生電源下,也可以向器件提供電源。3VDD可選擇的VDD引腳。當工作于寄生電源時,此引腳必須接地。第2節(jié) DS18B20數(shù)字溫度計的硬件結(jié)構(gòu)設(shè)計2.1 總體設(shè)計框圖 溫度計電路設(shè)計總體設(shè)計方框圖如圖2所示,控制器采用單片機AT89C51,溫度傳感器采用DS18B20,用LED數(shù)碼管以串口傳送數(shù)據(jù)實現(xiàn)溫度顯示。 圖2 總體設(shè)計方框圖2.1.1 主控制器單片機AT89C51具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的
7、設(shè)計需要,很適合便攜手持式產(chǎn)品的設(shè)計使用系統(tǒng)可用二節(jié)電池供電。2.1.2 顯示電路 顯示電路采用共陽LED數(shù)碼管,從P1.0P1.7串口輸出段碼。2.1.3 溫度傳感器 DS18B20溫度傳感器是美國DALLAS半導(dǎo)體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)9-12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點如下:(1)、只要求一個端口即可實現(xiàn)通信;(2)、在DS18B20中的每個器件上都有獨一無二的序列號;(3)、實際應(yīng)用中不需要外部任何元器件即可實現(xiàn)測溫;(4)、測量溫度范圍在55。C到125。C之間
8、;(5)、數(shù)字溫度計的分辨率用戶可以從9位到12位選擇;(6)、內(nèi)部有溫度上、下限告警設(shè)置; DS18B20采用3腳PR-35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如圖3所示。 圖3 DS18B20內(nèi)部結(jié)構(gòu)2.2 DS18B20溫度傳感器與單片機的借口電路DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時DS18B20的1腳接地,2腳座位信號線,3腳接電源。另一種是寄生電源供電方式,如圖4所示單片機端口接單線總線,為保證在有效地DS18B20時鐘周期內(nèi)提供足夠的電源,可用一個MOSFET管來完成對總線的上拉。當DS18B20處于寫存儲器操作和溫度A/D轉(zhuǎn)換操作時,總線上必須有強的
9、上拉,上拉開啟時間最大為10us.采用寄生電源供電方式時VDD端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。 圖4 DS18B20與單片機的接口電路2.3 系統(tǒng)整體硬件電路2.3.1 主板電路系統(tǒng)整體硬件電路包括:傳感器數(shù)據(jù)采集電路,溫度顯示電路,單片機主板電路等,如圖5所示。2.3.2 系統(tǒng)板上硬件連接(1) .把“單片機系統(tǒng)”區(qū)域中的P0.0-P0.7用8芯排線連接到“動態(tài)數(shù)碼顯示”區(qū)域中的ABCDEFGH端子上。(2) .把“單片機系統(tǒng)”區(qū)域中的P2.0-P2.7用8芯排線連接到“動態(tài)數(shù)碼顯示”區(qū)域中的 S1S2S3S4S5S6S7S8端子上。(3) .把DS18B20芯片插入
10、“四路單總線”區(qū)域中的任一個插座中,注意電源與地信號不要接反。(4) .把“四路單總線”區(qū)域中的對應(yīng)的DQ端子連接到“單片機系統(tǒng)”區(qū)域中的P3.7/RD端子上。第3節(jié) 軟件系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計算溫度子程序,顯示數(shù)據(jù)刷新子程序等。3.1 主程序主程序的主要功能是負責(zé)溫度的實時顯示、讀出并處理DS18B20的測量的當前溫度值,溫度測量每1s進行一次。這樣可以在一秒之內(nèi)測量一次被測溫度,其程序流程見圖6所示。 圖6 主程序流程圖 圖7 讀溫度流程圖3.2 讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時需進行CRC校驗,校驗有錯時不進行
11、溫度數(shù)據(jù)的改寫。其程序流程圖如圖7所示。圖8 溫度轉(zhuǎn)換流程圖3.3 溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是溫度轉(zhuǎn)換開始命令,當采用12位分辨率時轉(zhuǎn)換時間約為750ms,在本程序設(shè)計中采用1s顯示程序延時法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如上圖8所示。3.4 計算溫度子程序計算溫度子程序?qū)AM中讀取值進行BCD碼的轉(zhuǎn)換運算,并進行溫度值正負的判定,其程序流程圖如圖9所示。圖9 計算溫度流程圖 圖10 顯示數(shù)據(jù)刷新流程圖3.5 顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對現(xiàn)實緩沖器中的顯示數(shù)據(jù)進行刷新操作,當最高顯示位為0時將符號顯示位移入下一位。程序流程圖如圖10所示。第4節(jié) 總結(jié)
12、與體會 經(jīng)過這段時間的努力,終于完成了我的DS18B20數(shù)字溫度計的設(shè)計,雖然沒有完全達到設(shè)計要求,但從心底里說,還是非常開心的,高興之余不得不深思呀!在本次設(shè)計的過程中,我發(fā)現(xiàn)很多問題,雖然以前也做過這樣類似的設(shè)計但這次設(shè)計真的讓我長進了很多,單片機課程設(shè)計重點就在于軟件算法的設(shè)計,需要有很巧妙地程序算法,雖然以前寫過幾次程序,但我覺得寫好一個程序并不是一件簡單的事。舉個例子,以前寫的那幾次,數(shù)據(jù)加減時我用的都是BCD碼,這一次,我全部用的都是16進制的數(shù)直接加減,顯示處理時在用除法去刪分,感覺效果比較好,有好多的東西,只要我們?nèi)ピ囍隽耍拍苷嬲恼莆?,只學(xué)習(xí)理論有些東西是很難理解的,更說
13、不上掌握。從這次的設(shè)計中,我真真正正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實際,把我們所學(xué)的理論知識用到實際當中,學(xué)習(xí)單片機更應(yīng)該這樣,程序只有在經(jīng)常地寫與讀的過程中才能提高,這就是我在這次設(shè)計中的最大收獲。參考文獻1 李朝青.單片機原理及接口技術(shù)(簡明修訂版).杭州:北京航空航天大學(xué)出版社,19982 李廣弟.單片機基礎(chǔ)M.北京:北京航空航天大學(xué)出版社,19943 閻石.數(shù)字電子技術(shù)基礎(chǔ)(第三版).北京:高等教育出版社,19894 廖常初.現(xiàn)場總線概述J.電工技術(shù),19995 張靖武,周靈彬.單片機原理、應(yīng)用與PROTEUS仿真.北京:電子工業(yè)出版社,2007附錄 匯編源程序代碼ORG 00H
14、 TMPL EQU 29H ;用于保存讀出溫度的低8位 TMPH EQU 28H ;用于保存讀出溫度的高8位 FLAG1 EQU 38H ;是否檢測到DS18B20標志位27H.0 DATAIN BIT P3.7MAIN: LCALL GET_TEMPER ;調(diào)用讀溫度子程序 LCALL CVTTMP LCALL DISP1 AJMP MAIN ;DS18B20復(fù)位初始化子程序INIT_1820: SETB DATAIN NOP CLR DATAIN ;主機發(fā)出延時537ms的復(fù)位低脈沖 MOV R1,#3TSR1: MOV R0,#107 DJNZ R0,$ DJNZ R1,TSR1 SET
15、B DATAIN ;然后拉高數(shù)據(jù)線 NOP NOP NOP MOV R0,#25HTSR2: JNB DATAIN,TSR3 ;等待DS18B20回應(yīng) DJNZ R0,TSR2 CLR FLAG1 ;清標志位,表示DS18B20不存在 SJMP TSR7TSR3: SETB FLAG1 ;置標志位,表示DS18B20存在 CLR P1.7 ;檢測到DS18B20就點亮P1.7LED MOV R0,#117TSR6: DJNZ R0,$ ;時序要求延時一段時間TSR7: SETB DATAIN RET ;讀出轉(zhuǎn)換后的溫度值GET_TEMPER:SETB DATAIN LCALL INIT_182
16、0 ;先復(fù)位DS18B20 JB FLAG1,TSS2 NOP RET ;判斷DS18B20是否存在?若DS18B20不存在,則返回TSS2: MOV A,#0CCH ;跳過ROM匹配 LCALL WRITE_1820 MOV A,#44H ;發(fā)出溫度轉(zhuǎn)換命令 LCALL WRITE_1820 ACALL DISP1 LCALL INIT_1820 ;準備讀溫度前先復(fù)位 MOV A,#0CCH ;跳過ROM匹配 LCALL WRITE_1820 MOV A,#0BEH ;發(fā)出溫度轉(zhuǎn)換命令 LCALL WRITE_1820 LCALL READ_18200 ;將讀出的溫度數(shù)據(jù)保存到35H/36H
17、 RET ;寫DS18B20的子程序(有具體的時序要求)WRITE_1820:MOV R2,#8 ;一共8位數(shù)據(jù) CLR CWR1: CLR DATAIN MOV R3,#6 DJNZ R3,$ RRC A MOV DATAIN,C MOV R3,#23 DJNZ R3,$ SETB DATAIN NOP DJNZ R2,WR1 SETB DATAIN RET ;讀DS18B20的程序,從DS18B20中讀出兩個字節(jié)的溫度數(shù)據(jù)READ_18200:MOV R4,#2 ;將溫度高位和低位從DS18B20中讀出 MOV R1,#29H ;低位存入29H(TEMP_L)中,高位存入28H(TEMPH
18、)中RE00: MOV R2,#8 ;數(shù)據(jù)一共有8位RE01: CLR C SETB DATAIN NOP NOP CLR DATAIN NOP NOP NOP SETB DATAIN MOV R3,#9RE10: DJNZ R3,RE10 MOV C,DATAIN MOV R3,#23RE20: DJNZ R3,RE20 RRC A DJNZ R2,RE01 MOV R1,A DEC R1 DJNZ R4,RE00 RETCVTTMP: MOV A,TMPH ANL A,#80H JZ TMPC1 CLR C MOV A,TMPL CPL A ADD A,#1 MOV TMPL,A MOV
19、A,TMPH CPL A ADDC A,#0 MOV TMPH,A MOV 73H,#0BH ;顯示負號”-“ SJMP TMPC11 TMPC1: MOV 73H,#0AH ;正數(shù)符號不顯示TMPC11: MOV A,TMPL ANL A,#0FH MOV DPTR,#TMPTAB MOVC A,A+DPTR MOV 70H,A ;小數(shù)部分 MOV A,TMPL ANL A,#0F0H SWAP A MOV TMPL,A MOV A,TMPH ANL A,#0FH SWAP A ORL A,TMPLH2BCD: MOV B,#100 DIV AB JZ B2BCD1 MOV 73H,A ;百
20、位不等于0時,保存B2BCD1: MOV A,#10 XCH A,B DIV AB MOV 72H,A ;十位 MOV 71H,B ;個位TMPC12: NOPDISBCD: MOV A,73H ANL A,#0FH CJNE A,#1,DISBCD0 SJMP DISBCD1 ;百位為1,個位、十位不管是不是0,都要顯示DISBCD0: MOV A,72H ;百位不為1,就是0A不顯示,0B為負號 ANL A,#0FH ;十位是0時,正數(shù)只顯示個位 JNZ DISBCD1 ;十位是0時,負數(shù)的負號移到十位的位置上 MOV A,73H ;此時百位不顯示,為0BH MOV 72H,A MOV 7
21、3H,#0AHDISBCD1: RETTMPTAB: DB 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9DISP1: MOV R1,#70H MOV R5,#0FEHPLAY: MOV P1,#0FFH MOV A,R5 MOV P2,A MOV A,R1 MOV DPTR,#TAB MOVC A,A+DPTR MOV P1,A MOV A,R5 JB ACC.1,LOOP1 CLR P1.7 ;顯示小數(shù)點LOOP1: LCALL DL1MS INC R1 MOV A,R5 JNB ACC.3,ENDOUT RL A MOV R5,A SJMP PLAYENDOUT: MOV P1,#0FFH ;關(guān)顯示,消串影 MOV P2,#0FFH RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H,0FFH,0BFHDL1MS: MOV R6,#14HDL1: MOV R7,#100 DJNZ R7,$ DJNZ R6,DL1 RET END