基于單片機控制的數(shù)字溫度計的設(shè)計_第1頁
基于單片機控制的數(shù)字溫度計的設(shè)計_第2頁
基于單片機控制的數(shù)字溫度計的設(shè)計_第3頁
基于單片機控制的數(shù)字溫度計的設(shè)計_第4頁
基于單片機控制的數(shù)字溫度計的設(shè)計_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目 錄1引言12總體設(shè)計方案1 2.1設(shè)計思路 1 2.2總體設(shè)計框圖13硬件分析設(shè)計2 3.1溫度采集及轉(zhuǎn)換電路的設(shè)計2 3.2顯示電路的設(shè)計3 4軟件設(shè)計分析4 41主程序4 4.2讀出溫度子程序 5 4.3溫度轉(zhuǎn)換命令子程序 54.4計算溫度子程序54.5顯示數(shù)據(jù)刷新子程序75總結(jié)與體會 8參考文獻 8附錄 9數(shù)字溫度計的設(shè)計摘要:該系統(tǒng)主電路采用89s51單片機實現(xiàn)溫度控制,經(jīng)溫度傳感器采集溫度,電路可實現(xiàn)溫度的顯示,可實現(xiàn)基本溫度計功能。另外可設(shè)置設(shè)置上下限溫度,超出范圍報警以及和pc機通信的功能。系統(tǒng)測量精度和控制精度良好。關(guān)鍵詞:數(shù)字顯示 溫度計 1 引言隨著科技的發(fā)展,單片機的

2、應(yīng)用越來越廣泛,基本已經(jīng)深入到人民生活的各個領(lǐng)域。在生活中溫度計也已成為生活必需品,鑒于此,特別介紹一種數(shù)字式溫度計。眾所周知,溫度是一種模擬信號,要做到數(shù)字顯示。自然要用到模數(shù)轉(zhuǎn)換。該系統(tǒng)主電路采用89s51單片機實現(xiàn)溫度控制,采用數(shù)字式溫度傳感器為檢測器件,進行單點溫度檢測。通過模數(shù)轉(zhuǎn)換功能,采用數(shù)碼管直接顯示溫度值,方便快捷的實現(xiàn)溫度顯示。檢測范圍廣,溫度轉(zhuǎn)換精度比較精確。為人們的生活提供方便。2 總體設(shè)計方案2.1 設(shè)計思路溫度是一種典型的模擬信號,用數(shù)字電路來進行檢測就必須將這一非電量先變成電(電壓或電流),然后將模擬電信號經(jīng)a/d電路變換成數(shù)字信號,經(jīng)譯碼顯示而得到對應(yīng)的數(shù)字。要實

3、現(xiàn)數(shù)字溫度計的基本功能,大致可分為四大基本模塊。即單片機最小系統(tǒng)模塊,溫度采集模塊,模數(shù)轉(zhuǎn)換模塊及數(shù)字顯示模塊。2.2 設(shè)計方框圖單片機最小系統(tǒng)溫度采集數(shù)字顯示模數(shù)轉(zhuǎn)換圖1總體設(shè)計框圖3 硬件設(shè)計分析3.1 溫度采集及轉(zhuǎn)換電路的設(shè)計考慮到數(shù)字溫度計要用到溫度采集及模數(shù)轉(zhuǎn)換模塊。而ds18b20芯片能夠?qū)崿F(xiàn)完整的溫度采集及模數(shù)轉(zhuǎn)換功能。在此特選用此芯片。由dallas半導(dǎo)體公司生產(chǎn)的ds18b20型單線智能溫度傳感器,屬于新一代適配微處理器的智能溫度傳感器,可廣泛用于工業(yè)、民用、軍事等領(lǐng)域的溫度測量及控制儀器、測控系統(tǒng)和大型設(shè)備中。它具有體積小,接口方便,傳輸距離遠等特點。 ds18b20的性能

4、特點:采用單總線專用技術(shù),既可通過串行口線,也可通過其它i/o口線與微機接口,無須經(jīng)過其它變換電路,直接輸出被測溫度值(9位二進制數(shù),含符號位),測溫范圍為-55-+125,測量分辨率為0.0625,內(nèi)含64位經(jīng)過激光修正的只讀存儲器rom,適配各種單片機或系統(tǒng)機,用戶可分別設(shè)定各路溫度的上、下限,內(nèi)含寄生電源。 ds18b20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻rom,溫度傳感器,非揮發(fā)的溫度報警觸發(fā)器th和tl,高速暫存器。64位光刻rom是出廠前被光刻好的,它可以看作是該ds18b20的地址序列號。64位rom結(jié)構(gòu)圖如圖3所示。不同的器件地址序列號不同。ds18b20的管腳排列如圖2所示

5、。lsbmsb8位檢驗crc 48位序列號 8位工廠代碼(10h)圖2ds18b20引腳分布圖 圖3 64位rom結(jié)構(gòu)圖ds18b20高速暫存器共9個存儲單元,如表1所示:以12位轉(zhuǎn)化為例說明溫度高低字節(jié)存放形式及計算:12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18b20的兩個高低兩個8位的ram中,二進制中的前面5位是符號位。如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625才能得到實際溫度。ds18b20有六條控制命令,如表2所示:表1存儲單元序號 寄存器名稱 作 用 序號 寄存器名稱 作 用

6、0 溫度低字節(jié) 以16位補碼形式存放 4 配置寄存器 1 溫度高字節(jié) 5、6、7 保留 2 th/用戶字節(jié)1 存放溫度上限 8 crc 3 hl/用戶字節(jié)2 存放溫度下限 表2控制指令指 令 約定代碼 操 作 說 明 溫度轉(zhuǎn)換 44h 啟動ds18b20進行溫度轉(zhuǎn)換 讀暫存器 beh 讀暫存器9個字節(jié)內(nèi)容 寫暫存器 4eh 將數(shù)據(jù)寫入暫存器的th、tl字節(jié) 復(fù)制暫存器 48h 把暫存器的th、tl字節(jié)寫到e2ram中 重新調(diào)e2ram b8h 把e2ram中的th、tl字節(jié)寫到暫存器th、tl字節(jié) 讀電源供電方式 b4h 啟動ds18b20發(fā)送電源供電方式的信號給主cpu 3.2 顯示電路的設(shè)

7、計顯示電路可以采用串行口通信也可以采用并行口通信,在此采用并行通信方式。選用驅(qū)動芯片74ls245來驅(qū)動四位led數(shù)碼管顯示溫度。數(shù)碼管采用共陽數(shù)碼管。需要接上拉電阻。設(shè)計電路圖見圖4.圖4顯示電路設(shè)計圖74ls245是我們常用的芯片,用來驅(qū)動led或者其他的設(shè)備,他是8路同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數(shù)據(jù)。74ls245還具有雙向三態(tài)功能,既可以輸出,也可以輸入數(shù)據(jù)。當(dāng)8051單片機的p0口總線負載達到或超過p0最大負載能力時,必須接入74ls245等總線驅(qū)動器。當(dāng)片選端/ce低電平有效時,dir=“0”,信號由 b 向 a 傳輸;(接收)dir=“1”,信號由 a 向 b 傳輸;(發(fā)送

8、)當(dāng)/ce為高電平時,a、b均為高阻態(tài)。數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個發(fā)光二極管單元(多一個小數(shù)點顯示);按能顯示多少個“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(com)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時應(yīng)將公共極com接到+5v,當(dāng)某一字段發(fā)光二極管的陰極為低電平時,相應(yīng)字段就點亮。當(dāng)某一字段的陰極為高電平時,相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(com)的數(shù)碼管。共陰數(shù)碼管在應(yīng)用時應(yīng)將公共極com接到地線gnd上

9、,當(dāng)某一字段發(fā)光二極管的陽極為高電平時,相應(yīng)字段就點亮。當(dāng)某一字段的陽極為低電平時,相應(yīng)字段就不亮。數(shù)碼管要正常顯示,就要用驅(qū)動電路來驅(qū)動數(shù)碼管的各個段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動方式的不同,可以分為靜態(tài)式和動態(tài)式兩類。靜態(tài)顯示驅(qū)動:靜態(tài)驅(qū)動也稱直流驅(qū)動。靜態(tài)驅(qū)動是指每個數(shù)碼管的每一個段碼都由一個單片機的i/o端口進行驅(qū)動,或者使用如bcd碼二-十進制譯碼器譯碼進行驅(qū)動。靜態(tài)驅(qū)動的優(yōu)點是編程簡單,顯示亮度高,缺點是占用i/o端口多,如驅(qū)動5個數(shù)碼管靜態(tài)顯示則需要5840根i/o端口來驅(qū)動,要知道一個89s51單片機可用的i/o端口才32個呢:),實際應(yīng)用時必須增加譯碼驅(qū)動器

10、進行驅(qū)動,增加了硬件電路的復(fù)雜性。動態(tài)顯示驅(qū)動:數(shù)碼管動態(tài)顯示接口是單片機中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃a,b,c,d,e,f,g,dp的同名端連在一起,另外為每個數(shù)碼管的公共極com增加位選通控制電路,位選通由各自獨立的i/o線控制,當(dāng)單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位選通com端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的com端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在輪流顯示過程中,每位數(shù)

11、碼管的點亮?xí)r間為12ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的i/o端口,而且功耗更低。4 軟件設(shè)計分析系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計算溫度子程序,顯示數(shù)據(jù)刷新子程序等。4.1 主程序主程序的主要功能是負責(zé)溫度的實時顯示、讀出并處理ds18b20的測量溫度值,溫度測量每1s進行一次,其程序流程圖如圖5所示。初始化調(diào)用顯示子程序1s到?初次上電讀出溫度值溫度計算處理顯示數(shù)據(jù)刷新發(fā)溫度轉(zhuǎn)換開始命令nyny圖

12、5 主程序流程圖4.2 讀出溫度子程序讀出溫度子程序的主要功能是讀出ram中的9字節(jié),在讀出時需要進行crc校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。其程序流程圖如圖6所示。4.3 溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辯率時轉(zhuǎn)換時間約為750ms,在本程序設(shè)計中采用1s顯示程序延時法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如圖7所示。4.4 計算溫度子程序計算溫度子程序?qū)am中讀取值進行bcd碼的轉(zhuǎn)換運算,并進行溫度值正負的判定,其流程圖如圖8所示。y發(fā)ds18b20復(fù)位命令發(fā)跳過rom命令發(fā)讀取溫度命令讀取操作,crc校驗9字節(jié)完?crc校驗正?確?移入

13、溫度暫存器結(jié)束nny圖6 讀出溫度子程序流程圖發(fā)ds18b20復(fù)位命令發(fā)跳過rom命令發(fā)溫度轉(zhuǎn)換開始命令 結(jié)束圖7 溫度轉(zhuǎn)換命令子程序流程圖4.5 顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對顯示緩沖區(qū)中的顯示數(shù)據(jù)進行刷新操作,當(dāng)最高顯示位為時將符號顯示位移入下一位。程序流程圖如圖9所示。 開始溫度零下?溫度值取補碼置“”標(biāo)志計算小數(shù)位溫度bcd值 計算整數(shù)位溫度bcd值 結(jié)束置“+”標(biāo)志ny圖8計算溫度流程圖溫度數(shù)據(jù)移入顯示寄存器十位數(shù)0?百位數(shù)0?十位數(shù)顯示符號百位數(shù)不顯示百位數(shù)顯示數(shù)據(jù)(不顯示符號) 結(jié)束nnyy圖9顯示數(shù)據(jù)刷新流程圖 5 總結(jié)與體會通過這次課程設(shè)計使我學(xué)到了更多的單片機

14、知識,了解到單片機應(yīng)用領(lǐng)域的廣泛。單片機的應(yīng)用早已深入到人民的日常生活中。增強了對單片機的興趣。同時,在課程設(shè)計環(huán)節(jié)中也面臨的許多問題。硬件裝焊方面要有足夠的耐心和細心,就算電路設(shè)計的再好,在焊接時出一點小差錯,也是不允許的,往往電路的錯誤都是由于一些小問題引起的,如短路等,將造成不可預(yù)測的后果。軟件方面也是一樣,做課程設(shè)計就要用足夠的耐心和信心。參考文獻1 張鑫、華臻、陳書謙_單片機原理及應(yīng)用m電子工業(yè)出版社,20052 馬家辰_mcs-51單片機原理及接口技術(shù)m哈爾濱工業(yè)大學(xué)出版社,19863 劉建清_從零開始學(xué)單片機技術(shù)m國防工業(yè)出版社,20064 馬淑華_單片機原理與接口技術(shù)m北京郵電

15、大學(xué)出版社,20045康華光.模擬電子技術(shù)基礎(chǔ). 北京:高等教育出版社,20066康華光.數(shù)字電子技術(shù)基礎(chǔ).北京:高等教育出版社,2006附錄13 附錄temper_l equ 40h ;temper_h equ 41h ;flag1 equ 38h ;templ equ 30h ;temph equ 31h ;temphc equ 32h ;templc equ 33h ;buf1 equ 34h ;buf2 equ 35h ;buf3 equ 36h ;buf4 equ 37h ;tempdin bit p3.4 ;din bit p0.7 ; org 0000h ; ajmp main

16、; org 0003h ; db 00h,00h,00h,00h,00h,00h,00h; reti ; org 000bh ; db 00h,00h,00h,00h,00h,00h,00h ; reti ; org 0013h ; db 00h,00h,00h,00h,00h,00h,00h ; reti ; org 001bh ; db 00h,00h,00h,00h,00h,00h,00h ; reti ; org 0023h ; db 00h,00h,00h,00h,00h,00h,00h ; reti ;main: mov sp, #50h ; mov p0, #0ffh ;lpte

17、mp: lcall get_temper ; lcall convtemp ; lcall dispbcd ; cpl p3.5 ; ajmp lptemp ; lcall display ; cpl p3.5 ; ajmp lptemp ;init_1820: setb tempdin nop clr tempdin ; mov r1,#3h tsr1: mov r0,#107 djnz r0,$ djnz r1,tsr1 setb tempdin ; nop nop nop mov r0,#25h ;tsr2: jnb tempdin,tsr3 ; djnz r0,tsr2 ljmp ts

18、r4 ;tsr3: setb flag1 ; clr p3.7 ; ljmp tsr5tsr4: clr flag1 ; clr p3.2 ljmp tsr7tsr5: mov r0,#117tsr6: djnz r0,tsr6 ;tsr7: setb tempdin ; retget_temper: setb tempdin ; lcall init_1820 ; jb flag1,tss2 ret ;tss2: clr p3.0 ; mov a,#0cch ; lcall write_1820 mov a,#44h ; lcall write_1820 lcall display ; lc

19、all init_1820 ; mov a,#0cch ; lcall write_1820 mov a,#0beh ; lcall write_1820 lcall read_18200 ; retwrite_1820: mov r2,#8 ; clr c ; setb tempdin ; nop ; nop ;wr1: clr tempdin ; mov r3,#6 ; djnz r3,$ rrc a ; mov tempdin,c ; mov r3,#23 ; djnz r3,$ setb tempdin ; nop djnz r2,wr1 ; setb tempdin ; retcon

20、vtemp: mov a,temph ; anl a,#80h ; jz tempc1 ; clr c ; mov a,templ ; cpl a add a,#01h ; mov templ,a ; mov a, temph ; cpl a ; addc a,#00h ; mov temph,a ; mov temphc,#0bh ; sjmp tempc11 ;tempc1: mov temphc,#0ah ; tempc11: mov a,temphc ; swap a mov temphc,a ; mov a,templ ; anl a,#0fh ; mov dptr,#tempdot

21、tab ; movc a,a+dptr ; mov templc,a ; mov a,templ ; anl a,#0f0h ; swap a ; mov templ,a ; mov a,temph ; anl a,#0fh ; swap a ; orl a,templ ; mov temper_l ,a ; lcall hex2bcd1 ; mov templ,a ; anl a,#0f0h ; swap a ; orl a,temphc ; mov temphc,a ; mov a,templ ; anl a,#0fh ; swap a ; orl a,templc ; mov templ

22、c,a ; mov a,r7 ; jz tempout ; anl a,#0fh ; swap a ; mov r7,a ; mov a,temphc ; anl a,#0fh ; orl a,r7 ; mov temphc,a ;tempout: ret ;tempdottab: db 00h,01h,01h,02h,03h,03h,04h,04h,05h,06h db 06h,07h,08h,08h,09h,09h ;dispbcd: mov a,templc ; anl a,#0fh ; mov buf1,a ; mov a,templc ; swap a ; anl a,#0fh ;

23、mov buf2,a ; mov a,temphc ; anl a,#0fh ; mov buf3,a ; mov a,temphc ; swap a ; anl a,#0fh ; mov buf4,a ; mov a,temphc ; anl a,#0f0h ; cjne a,#10h,dispbcd0 ; sjmp dispout ;dispbcd0: mov a,temphc ; anl a,#0fh ; jnz dispout ; mov a,temphc ; swap a ; anl a,#0fh ; mov buf4,0ah ; mov buf3,a ; dispout: ret

24、;hex2bcd1:mov b,#64h ; div ab ; mov r7,a ; mov a,#0ah ; xch a,b ; div ab ; swap a ; orl a,b ; ret ;crc8cal: push acc ; mov r7,#08h ; crc8loop1: xrl a,b ; rrc a ; mov a,b ; jnc crc8loop2 ; xrl a,#18h ; crc8loop2: rrc a ; mov b,a ; pop acc ; rr a ; push acc ; djnz r7,crc8loop1 ; pop acc ; ret ;read_18200: mov r4,#9 ; mov r1,#temper_l ; mov b, #00h ;re00: mov r2,#8 ; re01: clr c setb tempdin ; nop nop clr tempdin ; nop nop nop setb tempdin ; m

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論