




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課程設計報告單片機課程設計報告數字溫度計2009 年6月 15日摘要隨著電子技術的進步和發展,單片機的應用已經普及到我們生活、工作、科研等各個領域,其技術日趨成熟和完善。本設計是一個基于at89s52單片機,采用“一線總線”數字化溫度傳感器ds18b20的測溫系統。采用wave6000集成調試軟件編寫匯編程序實現溫度的轉化、數值計算以及數碼管顯示當前溫度功能,并且可以通過按鍵設置高低溫報警溫度,對應配置報警器和報警指示燈。數碼管顯示采取動態掃描的方法,簡化了硬件電路;溫度調整運用中斷處理,保證了報警溫度調整的實時性。本設計可以方便快捷的實現溫度的采集和顯示,具有精度高、測溫范圍寬、體積小、功耗
2、低等優點,適用于我們日常生活和工、農業生產中的溫度測量,也可以作為溫度處理模塊嵌入其它系統中,作為其他主系統的擴展電路。ds18b20與at89s52結合實現最簡溫度檢測系統,結構簡單,抗干擾能力強,適合于惡劣環境下進行現場溫度測量,有廣泛的應用前景。關鍵詞:一線總線 動態掃描 中斷處理 報警溫度目錄1 概述31.1 設計目的與意義31.2 設計任務及要求32 系統總體方案及硬件設計42.1數字溫度計設計方案論證:42.1.1 方案一42.1.2 方案二42.1.3 方案三42.2 選用方案的設計思路42.2.1 主控芯片52.2.2 顯示電路52.2.3 報警溫度調整電路52.2.4 報警電
3、路52.2.5 溫度傳感器52.3 ds18b20溫度傳感器與單片機的接口電路62.4 系統整體硬件電路73 軟件設計93.1主程序93.2讀溫度子程序103.3報警溫度調整子程序113.4 顯示子程序124 實驗仿真134.1 溫度顯示134.2 報警溫度調節155 課程設計體會17參考文獻17附件1: 源程序代碼18附件2: 系統原理圖271 概述隨著電子技術水平的不斷提高,單片機在日常生活中的應用也越來越廣泛,它所給人類帶來的方便也是有目共睹的,其中數字溫度計就是一個典型的例子。隨著人們對它的要求越來越高,要為現代人的生活、工作以及科研提供更為方便的設施還需要從單片機技術和更優越的溫度傳
4、感器入手,一切向著數字化控制,智能化控制方向發展。 我們設計的數字溫度計與傳統的溫度計相比,具有讀數直觀、方便,測溫范圍廣,測溫準確等優點,其輸出溫度采用數碼管顯示。主要應用于對測溫精度和測溫范圍要求比較高的場所,也可在科研實驗室使用。該設計主控芯片使用at89s52單片機,測溫傳感器使用“一線總線”數字化溫度傳感器ds18b20,使用4位共陰極led數碼管以動態掃描方式,實現溫度顯示,能準確達到以上要求。1.1 設計目的與意義綜合利用所學單片機知識完成一個單片機應用系統設計并仿真實現所要求的功能,從而加深對單片機軟硬件知識的理解和對相關傳感器的原理和使用方法的掌握,獲得進一步的應用實踐經驗,
5、為走出校門從事單片機應用的相關工作打下基礎。該設計同時也是我們對所學理論知識進行的檢測和驗證,理論與實踐相結合,探索知識的真理殿堂,不拘泥于課本,培養自己發現問題并獨立解決問題的能力。1.2 設計任務及要求 1)基本范圍-50-110 2)精度誤差小于0.5 3)led數碼直讀顯示 4)擴展功能 5)可以任意設定上下限報警溫度2 系統總體方案及硬件設計2.1數字溫度計設計方案論證:2.1.1 方案一 由于本設計是測溫電路,可以使用熱敏電阻等器件利用其感溫效應,在把隨溫度變化的電壓或電流采集過來進行a/d轉換之后,再利用單片機進行數據的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設計需要用
6、到a/d轉換電路,感溫電路比較麻煩,而且熱敏電阻的線性度不高,測量精度。2.1.2 方案二 直接使用數字溫度傳感器來測溫,可以使用“一線總線”數字化溫度傳感器ds18b20。此傳感器可以直接讀取被測溫度值,只需進行簡單轉換,就可以得到所測環境的溫度值。顯示電路采用串口移位靜態顯示方式,采用串入并出移位芯片74ls164和數碼管來實現溫度的顯示。2.1.3 方案三 也是直接使用數字溫度傳感器ds18b20來測溫,但顯示電路采用動態掃描的方式來實現,電路簡單,容易實現,節約成本。 比較以上三種方案,很容易看出,采用方案三,硬件電路比較簡單,軟件設計也不難,是為最佳選擇,故采用方案三。2.2 選用方
7、案的設計思路 數字溫度計電路設計總體設計方框圖如圖2-1所示,主控芯片采at89s52,溫度傳感器采用ds18b20,用4位led數碼管以動態掃描方式實現溫度顯示,報警溫度調整采用獨立按鍵,報警電路由蜂鳴器和報警指示燈組成。 圖2-1 系統總體框圖2.2.1 主控芯片 at89s52價格便宜、體積小,很適合便攜手持式產品的設計,4個io端口和2個外部中斷完全能滿足本設計的需要。2.2.2 顯示電路顯示電路采用4位共陰led數碼管,從p0口輸出段碼,接470上拉電阻,用p2口的p2.4-p2.7腳來輸出數碼管動態掃描位選信號。2.2.3 報警溫度調整電路采用獨立鍵盤,分別用外部中斷0和1來調整高
8、溫報警溫度和低溫報警溫度,在中斷中查詢加減按鍵的動作來調整溫度,進入中斷后,清ea,然后將與中斷1即p3.3腳相連的按鍵作為確定鍵使用。2.2.4 報警電路采用蜂鳴器來發出報警聲音,超高亮發光二極管作為報警指示燈,由于at89s52的驅動能力較弱,所以蜂鳴器要加三極管驅動,報警燈外接上拉電阻,單片機用灌電流方式點亮它,可獲得較高的亮度!2.2.5 溫度傳感器 ds18b20溫度傳感器是美國dallas半導體公司最新推出的一種改進型智能溫度傳感器,與傳統的熱敏電阻等測溫元件相比,它可根據實際要求通過簡單的編程實現912位的分辨率的設定。ds18b20的性能特點如下: 零待機功耗;溫度以9或12位
9、數字;用戶可定義報警設置;可通過數據線供電,電壓范圍為3.05.5v;獨特的單線接口,僅需要一個端口引腳進行通信;多個ds18b20可以并聯在一條線上,輕松實現傳感器網絡組建;報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件。 ds18b20內部高速暫存ram為8字節的存儲器,前2個字節包含測得的溫度信息,第3和第4字節th和tl的拷貝,是易失的,每次上電復位時被刷新。第5個字節,為配置寄存器,它的內容用于確定溫度值的數字轉換分辨率。ds18b20溫度轉換得時間比較長,而且分辨率越高,所需要得溫度數據轉換時間越長。具體得分辨率轉換為相應精度得溫度數值所需時間如表2-1所示。我們的設
10、計采用12位精度,因此對18b20操作時要對時序根據表2-1來調整。當ds18b20接收到溫度轉換命令后,開始啟動轉換。轉換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1、2字節中。單片機可以通過單線接口讀出該數據,讀數據時低8位在先,高8位在后,數據格式以0.0625lsb形式表示。當符號位s0時,表示測得的溫度值為正值,可以直接將二進制位轉換為十進制;當符號位s1時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數值。表2-1 ds18b20溫度轉換時間表r1r0分辨率/位溫度最大轉換時間00993.750110187.510113751112750
11、另外,由于ds18b20單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫時序很重要。系統對ds18b20的各種操作按協議進行。操作協議為:初使化ds18b20(發復位脈沖)發rom功能命令發存儲器操作命令處理數據。1、初始化:單總線的所有處理均從初始化開始。初始化過程是主機通過向作為從機的ds18b20芯片發一個具有一定時間寬度的初始化脈沖實現的。初始化后,才可進行讀寫操作。2 、rom操作命令:總線主機檢測到ds18b20的存在 便可以發出rom操作命令。rom操作命令如表2-2所示:表2-2 rom操作命令指令代碼read rom(讀rom)33hmatch rom(匹配rom)55
12、hskip rom(跳過rom)cchsearch rom(搜索rom)f0halarm search(告警搜索)ech3、存儲器操作:存儲器操作命令如表2-3所示:4、時序:主機使用時間隙(time slots)來讀寫ds18b20的數據位和寫命令字的位。2.3 ds18b20溫度傳感器與單片機的接口電路ds18b20可以采用兩種方式供電,一種是采用電源供電方式,此時ds18b20的1腳接地,2腳作為信號線,3腳接電源;另一種是寄生電源供電方式。本設計采用第一種供電方式,為保證在有效的ds18b20時鐘周期內提供足夠的電流,可在信號線與電源線之間接上拉電阻,接口電路如圖2-2所示。表2-3
13、存儲區操作命令指令代碼write scratchpad(寫暫存存儲器)4ehread scratchpad(讀暫存存儲器)behcopy scratchpad(復制暫存存儲器)48hconvert temperature(溫度變換)44hrecall eprom(重新調用)b8hread power supply(讀電源)b4h圖2-2 ds18b20與單片機的接口電路2.4 系統整體硬件電路系統整體硬件電路包括:傳感器數據采集電路,溫度顯示電路,上下限報警溫度調整電路和報警電路,如圖2-3所示。圖中有4個獨立式按鍵可以分別調整溫度計的上下限報警溫度,蜂鳴器可以在被測溫度超出上下限范圍內時,發
14、出報警鳴叫聲音,同時報警指示燈超高亮發光二極管將被點亮。圖中畫出來的是上電復位電路,實際電路將采用按健加上電復位電路,使用比較方便,在程序跑飛時,可以手動復位,這樣就不用重啟單片機電源,就可以實現復位。顯示電路采用動態掃描方式,這樣不僅使用單片機端口較少,而且外圍電路也比較簡單。圖2-3 系統整體硬件電路3 軟件設計系統程序主要包括主程序,讀溫度子程序,報警溫度調整子程序和顯示子程序。3.1主程序主程序的主要功能是負責溫度的實時顯示、讀出并處理ds18b20測量的當前溫度值,其程序流程如圖3-1所示。圖3-1 主程序流程圖3.2讀溫度子程序讀出溫度子程序的主要功能是讀出溫度轉換之后ram中的前
15、2個字節中暫存的溫度值,其程序流程圖如圖3-2所示。 圖3-2 讀溫度流程圖3.3報警溫度調整子程序報警溫度調整子程序主要是對按鍵的處理,具體流程如圖3-3所示。 圖3-3 報警溫度調整流程圖3.4 顯示子程序顯示子程序要先判斷要顯示的是18b20采集到的溫度值還是報警溫度值,再計算出溫度值的百位(若溫度值大于99c)、十位和個位并掃描顯示,如圖3-4。 圖3-4 顯示流程圖4 實驗仿真4.1 溫度顯示 由于18b20的測溫范圍是-55125c,所以當溫度為負值時,第一位數碼管用來顯示溫度的負號,如圖4-1所示。圖4-1 當溫度值的十位數字為0時,不顯示,如圖4-2所示。圖4-2 溫度值為正且
16、小于100c時,第一位數碼管也是用來顯示符號,為正時不顯示,如圖4-3。圖4-3當溫度值大于等于100c時,第一位數碼管用來顯示溫度的百位數字,如圖4-4。圖4-44.2 報警溫度調節調節高溫報警溫度時,先按下高溫調節按鍵,進入高溫調節模式,此時4位數碼管的第一位當報警溫度小于100c時不顯示,大于等于100c時顯示百位數字,第二位顯示報警溫度的十位數字,第三位顯示報警溫度的個位,第四位顯示“h” ,表示處于高溫報警溫度調節狀態。按下加一鍵后報警溫度值會加一并且數碼管閃亮一次顯示更新的高溫報警溫度值,按下減一鍵時執行同樣操作。直到按下確定鍵,才退出設定狀態。高溫報警溫度調節狀態如圖4-5所示。
17、調節低溫報警溫度時,先按下低溫調節按鍵,進入低溫調節模式,數碼管顯示和高溫調節時相似,只是第四位顯示“l” ,表示處于低溫報警溫度調節狀態。按鍵操作也和高溫調節時相同。低溫報警溫度調節狀態如圖4-6所示。在此值得一提的是低溫調節按鍵和確認鍵是復用的,也就是說如果按下低溫調節按鍵后再按一次,就會直接退出低溫設定狀態。另外低溫調節按鍵還具有關報警電路的功能,當所測溫度值超出上下限報警溫度時,蜂鳴器響同時報警指示燈亮,此時連續按下2次確認鍵即可關掉報警,再連續按下2次確認鍵就又進入了報警狀態。圖4-5 高溫報警溫度調節圖4-6 低溫報警溫度調節5 課程設計體會經過將近三周的學習與實踐,終于成功的完成
18、了我的數字溫度計的設計,它的各方面的性能基本上都已達到課程設計要求。 在本次設計過程中,我發現了很多的問題,而這些問題是在只學習課本知識時所不能遇到的,比如說由于at89s52的端口驅動能力較弱,用p0口送段碼時要接上拉電阻,數碼管的位選端理論上采用三極管驅動才能使數碼管的亮度比較可觀,可是在實際操作中,接上三極管驅動后出現了亮度不均勻的現象,而且很容受到干擾,去掉三極管驅動電路之后,顯示正常,而且亮度也能滿足要求,這就是理論與實踐的差別。我在大量搜集資料的基礎上,結合向同學和老師請教的策略,把遇到的問題都一一解決了,這使我增長了不少知識。尤其在用匯編語言編寫單片機程序方面,我終于邁出了堅實的
19、一步。從這次的課程設計中,我真真切切的體會到了理論與實踐的差距,所以在以后的學習中,我會更加注意理論聯系實際,多親自動手操作。把我所學的理論知識運用到實踐當中去,在實踐中檢驗理論知識,以此來加深對其的理解和掌握。這是我在這次課程設計中的最大收獲。參考文獻1 余發山,王福忠,單片機原理及應用技術,徐州:中國礦業大學出版社,2008,2 王為青,邱文勛,51單片機應用開發案例精選,北京:人民郵電出版社,2007.8,145-1583 ds18b20 pdf:附件1: 源程序代碼;溫度檢測temper_l equ 29h ;溫度低8位temper_h equ 28h ;溫度高8位flag0 equ
20、35h ;溫度調整狀態標志flag1 equ 36h ;是否檢測到18b20標志位flag2 equ 37h ;報警標志位flag3 equ 38h ;高低溫調整標志位flag4 equ 39h ;閃爍標志位f_bit equ 20h ;符號位a_bit equ 21h ;數碼管個位b_bit equ 22h ;數碼管十位x_bit equ 23h ;小數位h_tem equ 24h ;高溫報警l_tem equ 25h ;低溫報警dq bit p2.2 ;18b20數據線 org 0000h ljmp main org 0003h ljmp key_h org 0013h ljmp key_
21、l org 0050hmain: mov sp,#57h mov tcon,#00h ;定義中斷方式 setb ex0 setb ex1 setb ea mov 24h,#35 ;送高溫報警初值 mov 25h,#15 ;送低溫報警初值 clr flag2main0: lcall get_temper ;讀轉換溫度 mov a,28h anl a,#0f0h jz zheng ;判斷符號位 clr c mov a,29h cpl a inc a mov 29h,a mov a,28h cpl a jnc aaa inc aaaa: mov 28h,a mov f_bit,#10 ajmp bb
22、bzheng: mov f_bit,#11bbb: mov a,29h anl a,#0fh mov dptr,#numtab2 ;查表求得小數位值 movc a,a+dptr mov x_bit,a mov a,29h mov c,40h rrc a mov c,41h rrc a mov c,42h rrc a mov c,43h rrc a jb flag2,above ;若報警標志位為1,關報警 cjne a,24h,bud ;若報警標志位為0,則判斷是否bud: jc below ;報警 setb p2.0 clr p2.1 ajmp dddbelow: cjne a,25h,bud
23、0bud0: jnc above setb p2.0 clr p2.1 ajmp dddabove: clr p2.0 setb p2.1ddd: mov 29h,a clr flag0 lcall display ;調用顯示子程序 ajmp main0 ;循環處理;ds18b20復位初始化init_18b20: setb dq nop clr dq mov r1,#3tsr1: mov r0,#107 djnz r0,$ djnz r1,tsr1 setb dq nop nop nop mov r0,#25tsr2: jnb dq,tsr3 djnz r0,tsr2 ljmp tsr4tsr
24、3: setb flag1 ljmp tsr5tsr4: clr flag1 ljmp tsr7tsr5: mov r0,#117tsr6: djnz r0,tsr6tsr7: setb dq ret;讀出轉換后的溫度get_temper: setb dq lcall init_18b20 jb flag1,tss2 clr dq rettss2: mov a,#0cch lcall write_18b20 mov a,#44h lcall write_18b20 lcall display lcall init_18b20 mov a,#0cch lcall write_18b20 mov
25、a,#0beh lcall write_18b20 lcall read_18b20 ret;寫ds18b20write_18b20: mov r2,#8 clr cwr1: clr dq mov r3,#5 djnz r3,$ rrc a mov dq,c mov r3,#21 djnz r3,$ setb dq nop djnz r2,wr1 setb dq ret;讀18b20的子程序read_18b20: mov r4,#2 mov r1,#29hre00: mov r2,#8re01: clr c setb dq nop nop clr dq nop nop nop setb dq
26、mov r3,#8re10: djnz r3,re10 mov c,dq mov r3,#21re20: djnz r3,re20 rrc a djnz r2,re01 mov r1,a dec r1 djnz r4,re00 ret;報警溫度調整子程序key_h: acall d5ms jb p3.2,over push acc push psw setb rs0 clr ea setb flag0 ;置位溫度調整標志位 setb flag3 ;置位高溫報警調整標志位 mov a,24h mov 30h,akey_ch: jb p3.4,jj_h acall d20ms jb p3.4,jj
27、_h inc 24h mov a,24h mov 30h,a acall displayjj_h: jb p3.5,qd_h acall d20ms jb p3.5,qd_h dec 24h mov a,24h mov 30h,a acall displayqd_h: jb p3.3,key_ch acall d5ms jb p3.3,key_ch clr flag0 ;即將退出調整,清零調整狀態位 clr rs0 pop psw pop acc setb eaover: retikey_l: acall d20ms jb p3.3,over0 push acc push psw setb r
28、s0 setb flag0 ;置位溫度調整標志位 cpl flag2 ;對報警標志位取反 clr flag3 ;清零高溫報警調整標志位 clr ea mov a,25h mov 30h,akey_cl: jb p3.4,jj_l acall d20ms jb p3.4,jj_l inc 25h mov a,25h mov 30h,a acall displayjj_l: jb p3.5,qd_l acall d20ms jb p3.5,qd_l dec 25h mov a,25h mov 30h,a acall displayqd_l: jb p3.3,key_cl acall d20ms j
29、b p3.3,key_cl clr flag0 ;即將退出調整,清零調整狀態位 clr rs0 pop psw pop acc setb eaover0: reti;顯示子程序display: jb flag0,jian ;調整狀態位為1,報警溫度送顯示處理 mov a,29h ;否則處理溫度傳感器讀取的溫度值 ajmp temjian: mov a,30htem: cjne a,#100,nx ;若溫度=100,符號位用來顯示百位nx: jc nnn mov b,#100 div ab mov f_bit,a mov 29h,b mov a,29h ajmp mmnnn: jnb flag0,mm mov f_bit,#11 ;若符號位值為0,不顯示mm: m
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB31/T 480-2018超級電容電動城市客車營運技術規范
- DB31/T 316-2012城市環境(裝飾)照明規范
- DB31/T 1359-2022健康通行核驗及人體測溫篩查出入口控制系統應用技術要求
- DB31/T 1295-2021立體花壇技術規程
- DB31/ 1291-2021燃煤耦合污泥電廠大氣污染物排放標準
- 2024年網紅直播資金申請報告代可行性研究報告
- 種子批發商營銷數據分析與應用考核試卷
- 電機制造的質保體系和售后服務考核試卷
- 故事代替道理:《想飛的鷹》
- 信息安全技術的社會責任與試題與答案
- 《數據資產會計》 課件 第五章 數據資產的價值評估
- 合同到期不續簽的模板
- 北京市2018年中考歷史真題試卷(含答案)
- (完整版)新概念英語第一冊單詞表(打印版)
- 露天煤礦智能集控員職業技能競賽理論考試題庫(含答案)
- 市政府綜合服務樓食堂及綜合服務托管投標方案(技術方案)【附圖】
- 北京市《配電室安全管理規范》(DB11T 527-2021)地方標準
- 工程物品采購清單-含公式
- 湖北武漢歷年中考語文現代文閱讀真題45篇(含答案)(2003-2023)
- 帶貨主播規章制度范本
- 數據真實性保證書
評論
0/150
提交評論