基于單片機的數字溫度計設計_第1頁
基于單片機的數字溫度計設計_第2頁
基于單片機的數字溫度計設計_第3頁
基于單片機的數字溫度計設計_第4頁
基于單片機的數字溫度計設計_第5頁
免費預覽已結束,剩余23頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于單片機的數字溫度計設計摘要:本文設計了一種基于單片機控制的數字溫本設計度計,本設計所介紹的數字溫度計與傳統溫度計相比,具有讀數方便,測溫范圍廣,輸出溫度采用數字顯示。該設計控制器使用單片機AT89S51,測溫傳感器使用DS18B2Q用共陽極LED數碼管顯示,能夠 準確達到要求。溫度計電路設計控制器采用單片機AT89S51, 具有低電壓供電和體積小等特點,溫度傳感器采用DS18B2Q DS18B20溫度傳感器是美國最新推出的一種溫度傳感器,它能直接讀出被測溫度,并且可根據實際要求通過簡單的編程實現讀數方式,僅需要一個端口引腳進行通信,內部存儲器還包括一個高速暫存RAM 和一個非易失性的可電擦

2、除的EERAM.顯示電路采用LED 動態顯示方式。關鍵詞:單片機; DS18B20 ;超限報警;LED 顯示;前言隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標之一,它所給人帶來的方便也是不可否定的,其中數字溫度計就是一個典型的例子,但人們對它的要求越來越高, 要為現代人工作、科研、 生活、 提供更好的更方便的設施就需要從數單片機技術入手,一切向著數字化控制,智能化控制方向發展。溫度是日常生活、工業、 醫學、 環境保護、化工、 石油等領域最常用到的一個物理量。測量溫度的基本方法是使用溫度計直接讀取溫度。最常見到得測量溫度的工具是各種各樣的溫度計,例如:水銀玻璃溫度計,酒精溫度計,熱

3、電偶或熱電阻溫度計等。它們常常以刻度的形式表示溫度的高低,人們必須通過讀取刻度值的多少來測量溫度。利用單片機和溫度傳感器構成的電子式智能溫度計就可以直接測量溫度,得到溫度的數字值,既簡單方便,有直觀準確。1 總體方案設計1.1 設計方案論證針對本課題的設計任務,進行分析得到:本次設計用溫度傳感器進行溫度的測量,轉化了的溫度信號由傳感器直接得到了數字信號。該數字溫度計的設計,在總體上大致可分為以下幾個部分組成:1.單片機控制電路;2.溫度傳感器;3.開關控制電路;4.LED 顯示電路。可以使用熱敏電阻之類的器件利用其感溫效應,在將隨被測編輯版 word溫度變化的電壓或電流采集過來,進行 A/D轉

4、換后,就可以用單片機進行數據的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設計需要用到A/D轉換電路,感溫電路比較麻煩。進而考慮到用溫度傳感器,在單片機電路設計中,大多都是使用傳感器,所以這是非 常容易想到的,所以可以采用一只溫度傳感器 DS18B20此傳感器,可以很容易直接讀取 被測溫度值,進行轉換,就可以滿足設計要求。從以上兩種方案,很容易看出,采用方案二,電路比較簡單,軟件設計也比較簡單, 故采用了方案二。系統原理框圖如圖1所示。圖1系統原理框圖1.2 硬件構成1.21 主控制器AT89C51具有以下標準功能:8K字節FLASH,256字節RAM, 32位I/O總線,看門狗定時器2

5、個數據指針,3個 16位定時器、計數器,一個6向量2級中斷結構,全雙工用行口,片內晶振及時鐘電路。P0 口: P0 口是一個8位漏極開路的雙向I/O 口。作為輸出口,每位能驅動8個TTL 邏輯電平。對P0 口寫“1”時,引腳用作高阻抗輸入。當訪問外部程序和數據存儲器時, P0也被作為低8位地址/數據使用。在這種模式下,P0具有內部上拉電阻。在FLASH編 程時,P0 口也用來接收指令字節;在程序校驗時,輸出指令字節。程序校驗時,需要外部 上拉電阻。P1 口: P1 口是一個具有內部上拉電阻的 8位雙向I/O 口,P1輸出緩沖器能驅動4個 TTL 邏輯電平。對P1 端口寫“1”時,內部上拉電阻把

6、端口拉高,此時可以作為輸入口使用。作為輸入口使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流。P2 口: P2 口是一個具有內部上拉電阻的 8位雙向I/O 口,P2 口輸出緩沖器驅動4 個TTL邏輯電平。對P2端口寫1時,內部上拉電阻把端口拉高,此時可以作為輸入口使 用。作為輸入口使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流。1.22 數碼管顯示顯示電路采用共陽LED數碼管,從P3 口 RXD,TXD串口輸出段碼。1.23 溫度傳感器DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳 感器, 與傳統的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,

7、并且可根據實際要求通過簡單的編程實現91 2位的數字值讀數方式。DS18B20的性能特點如下:a.獨特的單線接口僅需要一個端口引腳進行通信;b.多個DS18B20可以并聯在惟一的三線上,實現多點組網功能;c.無須外部器件;d.可通過數據線供電,電壓范圍為 3.05.5V;e.零待機功耗;f.溫度以9或1 2位數字;g.用戶可定義報警設置;h.報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;1 .負電壓特性,電源極性接反時,溫度計不會因發熱而燒毀,但不能正常工作;DS18B20溫度傳感器的內部存儲器還包括一個高速暫存R AM和一個非易失性的可電擦除的EERAM o高速暫存RAM的結

8、構為8字節的存儲器,結構如圖 3所示。頭2個 字節包含測得的溫度信息,第3和第4字節T H和T L的拷貝, 是易失的,每次上電復位 時被刷新。第5個字節,為配置寄存器,它的內容用于確定溫度值的數字轉換分辨率。DS18B20工作時寄存器中的分辨率轉換為相應精度的溫度數值。該字節各位的定義如圖3所示。低5位一直為1 , TM是工作模式位,用于設置DS18B20在工作模式還是在測試模式,DS18B20出廠時該位被設置為0 ,用戶要去改動,R1和R 0決定溫度轉換的精度位數,來設置分辨率。圖2DS18B20字節定義DS18B20溫度轉換的時間比較長,而且分辨率越高,所需要的溫度數據轉換時間越長。 因此

9、,在實際應用中要將分辨率和轉換時間權衡考慮。高速暫存RAM的第6、7、8字節保留未用,表現為全邏輯1。第9字節讀出前面所有8字節的CRC碼,可用來檢驗數據,從而保證通信數據的正確性。當DS18B20接收到溫度轉換命令后,開始啟動轉換。轉換完成后的溫度值就以 16位 帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1、 2字節。單片機可以通過單 線接口讀出該數據,讀數據時低位在先,高位在后,數據格式以0.0625c/LSB形式表示。當符號位S = 0時,表示測得的溫度值為正值,可以直接將二進制位轉換為十進制; 當符號位S=1時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數值。 表

10、2是一部分溫度值對應的二進制溫度數據。DS18B20完成溫度轉換后,就把測得的溫度值與RAM中的TH、TL字節內容作比較。 若T>TH或T<TL,則將該器件內的報警標志位置位,并對主機發出的報警搜索命令作 出響應。因此,可用多只 DS18B20同時測量溫度并進行報警搜索。在64位ROM的最高有效字節中存儲有循環冗余檢驗碼(CRC)。主機ROM的前56 位來計算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機收到的ROM數據是 否正確。DS18B20的測溫原理是這這樣的,器件中低溫度系數晶振的振蕩頻率受溫度的影響很 小,用于產生固定頻率的脈沖信號送給減法計數器1 ;高溫度

11、系數晶振隨溫度變化其振蕩頻率明顯改變,所產生的信號作為減法計數器2的脈沖輸入。器件中還有一個計數門,當計數門打開時,DS18B20就對低溫度系數振蕩器產生的時鐘脈沖進行計數進而完成溫度測 量。計數門的開啟時間由高溫度系數振蕩器來決定,每次測量前,首先將-55C所對應的一個基數分別置入減法計數器1、 溫度寄存器中,計數器1和溫度寄存器被預置在-55c 所對應的一個基數值。編輯版 word減法計數器1對低溫度系數晶振產生的脈沖信號進行減法計數,當減法計數器1的預置值減到0時,溫度寄存器的值將加1 ,減法計數器1的預置將重新被裝入, 減法計數器 1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此

12、循環直到減法計數器計數到 0時,停止溫度寄存器的累加,此時溫度寄存器中的數值就是所測溫度值。其輸出用于修正減法計數器的預置值,只要計數器門仍未關閉就重復上述過程,直到溫度寄存器值大致 被測溫度值。2硬件電路設計2.1 主控制器單片機AT89S51具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足 電路系統的設計需要,很適合便攜手持式產品的設計使用系統可用二節電池供電。AT89C51是一種低功耗,高性能的8位微控制器,具有8K在系統可編程FLASH存 儲器。使用Atmel公司高密度非易失性存儲器技術制造, 與工業80C51產品指令和引腳完 全兼容。片上FLASH允許程序存儲器在系統可編程

13、,亦適于常規編程器。在單芯片上, 擁有靈巧的8位CPU和在系統可編程FLASH,使得AT89S52為眾多嵌入式控制應用系統 提供高靈活,超有效的解決方案。P10Pilpi©P1 iP1J>XTAL1PO.QTADOPO 1/AD1P9 2/AD2XTAL2P0 3JAD3n.4AMP0.5MB8POLADSRSTP0 7/AD7P2WABP1VA9P2 2/AT0PSENaleP24A12EAP2冊EP2&AT4P2 Z'ATSPIOP3 0WCDP11PJI.TKDM2內獷師P13P3WT1PIAP3.VTOP1JSpismpiepaawRP17P3 7

14、71;DU19172S丁7-Lrr i杏二1148P20 ?1113博R3編輯版word圖3主控制器電路2.2 顯示電路顯示電路采用集成的數碼管,為共陽極結構,采用動態顯示,P1 口作為輸出編碼端,P2.0到P2.7作為位選控制端,其中P1做輸出端口需要上拉電阻,通過設置不同的段碼可 以顯示溫度,可以對溫度進行實時檢測。圖4顯示電路小編輯版word2.3 數據采集電路DS18B20的內部結構主要包括:寄生電源,溫度傳感器,64位激光ROM和單總線接 口,存放中間數據的高速暫存器 RAM,用于存儲用戶設定溫度上下限值得 TH和TL觸發 器,存儲和邏輯控制,8位循環冗余碼發生器等七部分。DS18B

15、20測量溫度時使用特有的溫度測量技術, 將被測溫度轉換成數值信號,測量結 果將存入溫度寄存器中。12圖5數據采集電路2.4 報警電路當溫度超過設定的上下限溫度時,蜂鳴器會發出聲響,下圖為報警電路LS1R210kSOUNDERT圖6報警電路3軟件設計3.1 主程序設計系統的主程序主要用來初始化一些參數,對DS18B20的配置數據進行一系列的設定另外對DS18B20的狀態不斷的查詢,以讀取當前的溫度值,并對溫度進行處理,溫度值 的BCD碼處理后,將其段碼送顯示緩沖區,以備定時掃描服務程序處理。圖7主程序流程圖3.2 溫度轉換程序讀出溫度子程序的主要功能是讀出 RAM中的9字節,在讀出時需進行 CR

16、C校驗, 校驗有錯時不進行溫度數據的改寫。其程序流程圖如下所示。圖8溫度轉換流程圖3.3 溫度顯示程序和報警電路程序此程序是將采集到得數據用LED數碼管顯示,然后將實際溫度與設置的報警上下限 進行比較,決定是否發出報警信號。由于 T為實際溫度的絕對值,TH,TL也是溫度的絕 對值,因此判斷大小關系時,要通過正負號來確定。編輯版word圖9溫度顯示流程圖圖10報警程序流程圖4調試分析4.1軟件調試本次設計采用的是keil仿真器進行軟件調試,此系統可以開發應用軟件,以及對硬件 電路進行診斷、調試等。它的具體功能是可以進行 CPU仿真,可以單步、跟蹤、斷點和 全速運行,而且,程序的編譯過程中,可以對

17、設計軟件進行自診斷,并自動給出故障原因。 同時用戶調試程序時,可以通過窗口觀察寄存器的工作狀況,以便及時發現和排除編程中可能出現的錯誤。軟件的調試是利用keil軟件,模塊化調試,通過觀察存儲單元數據的變化,查找并解 決程序的語法和邏輯錯誤,具體的調試步驟如下:1 .把系統的各個模塊在仿真軟件中逐個調試,如數據采集模塊、顯示模塊等。2 .對各個需要賦值模塊調試時,賦入初值,單步調試,觀察數據窗口,看輸出結果 是否為設計時想要的結果。3 .把各個模塊組合起來,全速運行,看程序是否能流暢的,是否能實現設計的系統 的所有功能。4.1軟硬聯調本設計是采用Proteus軟件實現電路圖設計和仿真的,Prot

18、eus軟件與Keil軟件聯合使 用,實現設計要求。在Keil軟件中創建新文件,輸入所編寫的 c語言程序并保存,在編譯源程序無誤后, 會產出相應的” .HEX”文件;將所生成的” .HEX”文件加載到已繪制好的 Proteus原理 圖中,使Proteus與Keil真正連接起來,實現聯合調試。調試結果下15所示。、圖11仿真測試圖5結論及進一步設想根據實驗結果,本設計基本完成了設計要求,但上下限閾值的設置過于繁瑣,在原有結構的基礎上,可以更簡化。本課程設計的主要任務是設計一個89C51 單片機為核心的數字溫度計。從確定課設題目,到查閱質料確定總體方案設計,硬件電路仿真的設計,硬件電路的優化,軟件的

19、設計,軟件的優化,檢驗仿真電路,調試軟件程序,到最后的軟硬件聯調, 都是我努力去完成的。在最后的仿真電路圖中達到了我想要的結果,并且對串口通訊有了更一步的認識。對單片機也有了更加深刻的了解。對以后很好的應用單片機打下了深刻的基礎。參考文獻1 劉復華 .單片機及其應用系統.北京:清華大學出版社,19922 韓志軍 .單片機系統設計與應用實例.北京:機械工業出版社,20103 余永全 .ATMEL89 系列單片機應用技術.北京:北京航空航天大學出版社,20024 馬中梅 .單片機的C 語言程序設計.北京:北京航空航天大學出版社,19995 胡汗才 .單片機原理及系統設計.北京:清華大學出版社,20

20、026李華.MCS-51單片機實用接口技術.北京:北京航空航天出版社大學,19997 方彥軍,孫建.智能儀器技術及其應用.北京:化學工業出版社,20038 孫傳友 .測控系統原理與設計.北京:北京航空航天大學出版社,20029 劉守義等.單片機應用技術.西安:西安電子科技大學出版社,200210 何立民 .單片機高級教程.北京:北京航空航天大學出版社,2000編輯版 word課設體會經過了兩個星期的課設,讓我對以前學的理論知識有了較深的體會,要用理論指導實踐, 在實踐中發現自己的不足之處,不斷完善自己。這一周的課程設計讓我體會到很多東西,不僅僅是知識本身的,更多的是自己動手能力和邏輯思維能力的

21、鍛煉,同時,也知道自己還有許多要學的東西。在社會實踐中,單片機是一個熱門的話題,所以我要認真學習單片機的知識,這對我們找工作是很有幫組的,遇到問題并不可怕關鍵是我們要找到方法去解決問題,一定要勤于動手, 這樣自己才會有提高。當然在這次寶貴的課程設計活動中,經驗才是對于我們最大的收獲,而且還增強了自身對未知問題以及對知識的深化認識的能力,用受益匪淺這個詞語來概括這次難忘的活動我覺得再合適不過了。但是, 光是完成了作品還是不可以自我滿足的, 在從一開始的時候就懷著將作品制作得更加人性化,更加令人滿意,更加地使功能完美又方便地被應用領域這個最終目的下,隨著對單片機這門學科的認識加深,到達了拓展的程度

22、,我想這個目的將在不遠的時期內被實現。最后感謝老師及同學在這兩個星期對我的幫助。U119 XTAL1P0.0/AIP0.1/AI濯D438218293031、P101 <P112 P123 P134 P145 :P15678XTAL2RSTPSEN ALE EAAT89C5112附錄1電路原理圖RP1P0.2/ADP0.3/ADP0.4/ADP0.5/AD;P0.6/ADIP0.7/ADP2.0/AP2.1/AP2.2/A-P2.3/A-P2.4/A,P2.5/A-P2.6/A-P2.7/A1733643V355不:372334455667786 _ _73281 89P1.0P1.1P

23、1.2P1.3P1.4P1.5P1.6P1.7PPAU21LS1SOUNDER5672P52P3 22 2P P1 02 24VC( DQ GNDJ=L.-0 0-43P30 2R1 cn 10kESPACK-80 P30;4 P23821 P20822 P219 W.AA923 P22DS18B20押P2#7 P26428 P271XE1 11P3.1/TXD- _ 12P3.2/IN.尋2P3.0/R:13P3.3/IN七P34T碳P3.5/T4P3.6/WR16D17P3.7/RR210kR3 cn 200l/Q12N2926編輯版word附錄2元件清單元件名稱型號數量單片機AT89C5

24、11溫度傳感器DS18B20數碼管7SEG-MPX8-CA1按鍵BUTTON16電阻RES10三極管2N29261蜂鳴器SOUNDER13 程序源#include<reg51.h>#define uchar unsigned char#define uint unsigned intucharcodetable=0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e;uchar code address=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7

25、f;sbit DQ=P3A0;sbit dot=P1A0;sbit fm=P3A5;uchar a,i,temp1,temp2,c,t1,t2,yz1,yz2;bit flag,flag1;uint temp;void delay(uint m)while(m-);void Init()uchar i=0;DQ=1;delay(8);DQ=0;delay(80);DQ=1;delay(14);i=DQ;delay(20);uchar read_byte()uchar byte=0;for (i=0;i<8;i+)/ 先傳低位DQ=0;byte>>=1;DQ=1;if(DQ)

26、byte|=0x80;delay(4);return(byte);void write_byte(uchar byte)for (i=0;i<8;i+)/ 先傳低位DQ=0;byte>>=1;DQ=CY;delay(5);DQ=1; void read_temp()Init();write_byte(0xcc);write_byte(0x44);delay(10);Init();write_byte(0xcc);write_byte(0xbe);temp1=read_byte();temp2=read_byte();void ds()read_temp();temp=temp

27、1&0x0f;if(temp2>127)flag=1;/ Skip ROM/ 啟動溫度轉換/Skip ROM/ 讀取溫度寄存器/ 低位/ 高位temp1=temp1;temp2=temp2;temp=temp1&0x0f;temp+=0x01;temp=temp*625;temp1=temp1&0xf0; / 取整數部分temp1=temp1/16;temp2=temp2*16;temp1+=temp2;if(flag)temp1+=0x01;void xs()for(i=0;i<4;i+)/ 顯示小數部分P2=addressi;P1=tabletemp%1

28、0;delay(750);temp/=10;P2=0xef;/ 顯示整數部分P1=tabletemp1%10;dot=1;delay(750);if(temp1/100|temp1/10)/ 高位去 0P2=0xdf;P1=tabletemp1/10%10;delay(750);if(temp1/100)/ 高位去 0P2=0xbf;P1=tabletemp1/100%10;delay(800);if(flag) / 加負號P2=0x7f;P1=0x02;delay(750);flag=0;void bj()fm=1;delay(100);fm=0;delay(100);void jp()uc

29、har t,tempt,p;P0=0xfe;tempt=P0;tempt=tempt&0xf0;if(tempt!=0xf0)switch(tempt)case(0xe0):flag1=0;flag=0;p=1;break; /shangxiancase(0xd0):flag1=0;flag=1;p=2;break; /xiaxiancase(0xb0):flag1=0;a+;t=1;break;case(0x70):flag1=0;a+;t=2;break;while(temp!=0xf0)tempt=P0;tempt=tempt&0xf0;P0=0xfd;tempt=P0;tempt=tempt&0xf0;if(tempt!=0xf0)switch(tempt)case(0xe0):flag1=0;a+;t=3;break;case(0xd0):flag1=0;a+;t=4;break;case(0xb0):flag1=0;a+;t=5;break;c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論