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

下載本文檔

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

文檔簡介

1、.基于 51 單片機的數(shù)字溫度計設計一課題選擇隨著時代的發(fā)展,控制智能化,儀器小型化, 功耗微量化得到廣泛關注。單片機控制系統(tǒng)無疑在這方面起到了舉足輕重的作用。單片機的應用系統(tǒng)設計業(yè)已成為新的技術熱點,其中數(shù)字溫度計就是一個典型的例子, 它可廣泛應用與生產(chǎn)生活的各個方面, 具有巨大的市場前景。二設計目的1. 理解掌握 51 單片機的功能和實際應用。2. 掌握仿真開發(fā)軟件的使用。3. 掌握數(shù)字式溫度計電路的設計、組裝與調試方法。三實驗要求1. 以 51 系列單片機為核心器件,組成一個數(shù)字式溫度計。2. 采用數(shù)字式溫度傳感器為檢測器件,進行單點溫度檢測。3. 溫度顯示采用 4 位 LED數(shù)碼管顯示

2、,三位整數(shù),一位小數(shù)。四設計思路1. 根據(jù)設計要求,選擇 STC89C51RC單片機為核心器件。2.溫度檢測采用DS18B20 數(shù)字式溫度傳感器。與單片機的接口為P3.6 引腳。3. 采用 usb 數(shù)據(jù)線連接充電寶供電,接電后由按鈕開關控制電路供電。硬件電路設計總體框圖為圖 1:五系統(tǒng)的硬件構成及功能1. 主控制器單片機 STC89C51RC具有低電壓供電和體積小等特點, 有 40 個引腳 ,其仿真圖像如下圖所示:.2. 顯示電路顯示電路采用 4 位共陽 LED數(shù)碼管, 從 P3 口 RXD,TXD串口輸出段碼。 LED數(shù)碼管在仿真軟件中如下圖所示:3. 溫度傳感器DS18B20 是美國 DA

3、LLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn) 912 位的數(shù)字值讀數(shù)方式。 DS18B20的性能特點如下:1. 獨特的單線接口僅需一個端口引腳進行通訊。2. 簡單的多點分布應用。3. 無需外部器件。4. 可通過數(shù)據(jù)線供電。5. 零待機功耗。6. 測溫范圍 -55+125 攝氏度。其電路圖如下圖所示:.在仿真軟件中如下圖所示:DS18B20 的測溫原理圖如下圖所示:在正常測溫情況下,DS18B20的測溫分辨力為0.5 攝氏度,可采用下述方法獲得高分辨率的.溫度測量結果。 :首先用 DS18B20

4、提供的讀暫存器指令( BEH)讀出以 0.5 攝氏度為分辨率的溫度測量結果, 然后切去測量結果中的最低有效位 ( LSB),得到所測實際溫度的整數(shù)部分Tz,然后再利用 BEH 指令取計數(shù)器 1 的計數(shù)剩余值 Cs 和每度計數(shù)值 CD。考慮到 DS18B20 測量溫度的整數(shù)部分以 0.25、0.75 攝氏度為進位界限的關系, 實際溫度 Ts可以用下式計算:Ts=(Tz-0.25)+(CD-Cs)/CD六系統(tǒng)整體硬件電路根據(jù)設計要求與設計思路,硬件電路設計框圖如下圖所示,在仿真軟件Proteus 上完成,其中 LED 數(shù)碼管以動態(tài)掃描法實現(xiàn)溫度顯示,由四個PNP 型晶體管Q2,Q3, Q4, Q5

5、 和 8個電阻組成。基極與單片機的 P1.0, P1.1, P1.2 連接, DS18B20的數(shù)據(jù) I/O 端與單片機 P3.6 引腳連接。外部晶振為 12MHZ。.七系統(tǒng)程序設計數(shù)字式溫度計的應用程序主要包括主程序,溫度檢測程序,溫度轉換程序,LED顯示程序等。其思路如下圖所示:八測量及其結果分析.1. Proteus 仿真結果軟件方面,在Proteus 編譯下進行,源程序編譯及仿真調試。在軟件中選定傳感器后可對其進行環(huán)境溫度設置,如下圖,將環(huán)境溫度設為34.9.2.硬件測試結果在硬件測試方面,檢查電路板及焊接的質量情況,在焊接無誤后通電檢查LED顯示器。其中成品圖如圖所示:.通電后,室溫下

6、LED的示數(shù)如圖所示九設計心得體會本次實驗對我們組來說是一次難得的經(jīng)歷,首先是第一次接觸了仿真軟件Proteus,在使用時經(jīng)歷了很多次失敗,因為這款軟件與以前使用過的軟件有很大不同,使用時不停出錯,接線時由于原件放置不合理而接的雜亂無章,輸入源程序時還算順利,顯示結果比較滿意。其次是程序設計, 我們在參考別人成功先例的基礎上根據(jù)自己設計的需要進行編程,其中經(jīng)歷了不少曲折, 最后我的收獲是編程一定要細心,針對每一個細節(jié),稍有疏忽程序就不能正常運行。在這次的實踐與學習中,盡管期間困難重重,但我們還是從中學習了不少新的知識和技能,也體會到了經(jīng)歷失敗最終成功的喜悅。總之,通過這次電工電子綜合設計,我收

7、獲了很多,我希望自己在今后的各項研究工作中也堅持這種精神。十附錄源程序#include#include #define uchar unsigned char#define uintunsigned intsbit DATA = P11; /DS18B20 接入口ucharcodetable=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/.共陰極字型碼int temp; / 溫度值int ss;/ 中間的一個變量int dd;int j;uchar data b;/ 定時器中斷次

8、數(shù)uchar data buf4;/字型顯示中間變量int alarmH=320;/ 默認報警值int alarmL=100;/ 定義開關的接入口sbit k1=P25;/+sbit k2=P26;/-sbit k3=P27;/ 確認sbit k4=P24; / 切換sbit bell=P10; / 蜂鳴器sbit HLight=P12; / 正溫指示燈sbit LLight=P13; / 負溫度指示燈sbit warn=P14; / 報警指示燈sbit Red=P16;/ 溫度上限設置指示燈sbit Green=P17; / 溫度下限設置指示燈bit set=0;/ 初始化bit Flag=

9、0;/ 設置標志int n;/ 函數(shù)的聲明區(qū)void key_to1();void key_to2();void delay(uint);void key();void Show();/ 函數(shù)的定義區(qū)/* 延時子函數(shù) */void delay(uint num)while(num-) ;/DS18b20 溫度傳感器所需函數(shù),分為初始化,讀寫字節(jié),讀取溫度4 個函數(shù)Init_DS18B20(void)/ 傳感器初始化uchar x=0;DATA = 1;/DQ 復位delay(10); / 稍做延時DATA = 0;/ 單片機將DQ 拉低delay(80); / 精確延時大于 480us/450

10、.DATA = 1;/ 拉高總線delay(20);x=DATA; / 稍做延時后 如果 x=0 則初始化成功 delay(30);ReadOneChar(void) / 讀一個字節(jié)uchar i=0;uchar dat = 0;for (i=8;i0;i-)DATA = 0; / 給脈沖信號dat=1;DATA = 1; / 給脈沖信號if(DATA)dat|=0x80;delay(8);return(dat);WriteOneChar(unsigned char dat)/ 寫一個字節(jié)uchar i=0;for (i=8; i0; i-)DATA = 0;DATA = dat&0x01;d

11、elay(10);DATA = 1;dat=1;delay(8);int ReadTemperature(void) / 讀取溫度uchar a=0;uchar b=0;int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); / 跳過讀序號列號的操作 WriteOneChar(0x44); / 啟動溫度轉換 Init_DS18B20();WriteOneChar(0xCC); / 跳過讀序號列號的操作.x=1 則初始化失敗.WriteOneChar(0xBE); / 讀取溫度寄存器等(共可讀9 個寄存器)前兩個就是溫度a=ReadOneCha

12、r();/ 低位b=ReadOneChar();/ 高位t=b;t=8;t=t|a;tt=t*0.0625;t= tt*10+0.5;return(t);void display00()/*顯示負值子函數(shù)dd=-(temp-1);buf1=dd/100;buf2=dd/100;buf3=dd%100/10;buf0=dd%10;/ 動態(tài)顯示for(j=0;j5;j+)P2=0xff;/初始燈為滅的P0=0x00;P2=0xfd; / 顯示小數(shù)點P0=0x80; / 顯示小數(shù)點delay(100);P2=0xff; /初始燈為滅的P0=0x00;P2=0xf7; / 片選 LCD1P0=0x40

13、;delay(100);P2=0xff;P0=0x00;P2=0xfb; / 片選 LCD2P0=tablebuf2;delay(100);P2=0xff;P0=0x00;P2=0Xfd;/ 片選 LCD3P0=tablebuf3;delay(100);P2=0xff;P0=0x00;P2=0Xfe;P0=tablebuf0;/ 片選 LCD4.delay(100);P2=0xff;/ 顯示正值子函數(shù)void display()buf1=temp/1000;/顯示百位buf2=temp/100%10;/顯示十位buf3=temp%100/10;/顯示個位buf0=temp%10; / 小數(shù)位f

14、or(j=0;j3;j+)P2=0xff;/初始燈為滅的P0=0x00;P2=0xfd; / 顯示小數(shù)點P0=0x80; / 顯示小數(shù)點delay(300);P2=0xff;/初始燈為滅的P0=0x00;P2=0xf7;/ 片選 LCD1P0=tablebuf1;delay(300);P2=0xff;P0=0x00;P2=0xfb;/ 片選 LCD2P0=tablebuf2;delay(300);P2=0xff;P0=0x00;P2=0Xfd;/ 片選 LCD3P0=tablebuf3;delay(300);P2=0xff;P0=0x00;P2=0Xfe;P0=tablebuf0;/ 片選 L

15、CD4delay(300);P2=0xff;void key()/ 按鍵掃描子程序if(k1!=1).delay(20);if(k1!=1)while(k1!=1) key_to1(); for(n=0;n8;n+) Show();if(k2!=1)delay(20);if(k2!=1)while(k2!=1) key_to2();for(n=0;n=1100)temp=-550;.if(set=0)alarmH=temp;else alarmL=temp;void key_to2()TR0=0;/ 關定時器temp-=10;if(tempalarmH|temp=0)HLight=1;LLight=0;display();if(temp0).HLight=0;LLight=1;display00();void main()TCON=0x01; /定時器 T0 工作在 01 模式下TMOD=0X01;TH0=0XD8;/ 裝入初值TL0=0XF0;EA=1; / 開總中斷ET0=1; / 開 T0 中斷TR0=1; /T0 開始運行計數(shù)EX0=1; / 開外部中斷0for(n=0;n500

溫馨提示

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

評論

0/150

提交評論