單片機數字溫度計測溫報警電路課程設計報告_第1頁
單片機數字溫度計測溫報警電路課程設計報告_第2頁
單片機數字溫度計測溫報警電路課程設計報告_第3頁
單片機數字溫度計測溫報警電路課程設計報告_第4頁
單片機數字溫度計測溫報警電路課程設計報告_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、南京工程學院 通信工程學院 單片機原理及應用課程設計報告實驗學生班級 實驗學生姓名 實驗學生學號 實 驗 時 間 實 驗 地 點 指 導 教 師 實驗成績評定 指導教師簽字 年 月 日目錄摘要3方案論證3方案一3方案二3一.芯片介紹41.1 AT89C5141.2 DS18B205二.設計目的6三.設計要求6四.設計思路64.1硬件設計64.2 軟件設計64.2.1 主程序64.2.2 讀溫度函數74.2.3 溫度轉換函數74.2.4 溫度顯示函數8五 電路設計95.1 外部振蕩源設計95.2 1602液晶顯示電路95.3 數碼管報警次數電路設計95.4 LED報警閃爍電路105.5 蜂鳴器電

2、路105.6 DS18B20與AT89C51連接電路105.7 報警溫度改變電路11六.程序分析116.1主函數116.2 讀取溫度函數126.3 溫度轉換函數126.4 顯示函數126.5軟件運行時間函數146.6改變報警溫度146.7報警計數15七.單片機資源配置15八. 小結15九.參考文獻16附錄 總電路原理圖17附錄 C程序18 摘要 隨著國民經濟的發展,人們需要對各中加熱爐、熱處理爐、反應爐和鍋爐中溫度進行監測和控制。采用單片機來對他們控制不僅具有控制方便,簡單和靈活性大等優點,而且可以大幅度提高被控溫度的技術指標,從而能夠大大的提高產品的質量和數量。在日常生活及工業生產過程中,經

3、常要用到溫度的檢測及控制,溫度是生產過程和科學實驗中普遍而且重要的物理參數之一。在生產過程中,為了高效地進行生產,必須對它的主要參數,如溫度、壓力、流量等進行有效的控制。溫度控制在生產過程中占有相當大的比例。溫度測量是溫度控制的基礎,技術已經比較成熟。傳統的測溫元件有熱電偶和二電阻。而熱電偶和熱電阻測出的一般都是電壓,再轉換成對應的溫度,這些方法相對比較復雜,需要比較多的外部硬件支持。我們用一種相對比較簡單的方式來測量。我們采用美國DALLAS半導體公司繼DS18B20之后推出的一種改進型智能溫度傳感器DS18B20作為檢測元件,溫度范圍為-55125 ºC,最高分辨率可達0.062

4、5 ºC。DS18B20可以直接讀出北側溫度值,而且采用三線制與單片機相連,減少了外部的件電路,具有低成本和易使用的特點。本文介紹一種基于AT89C51單片機的一種溫度測量及報警電路,該電路采用DS18B20作為溫度監測元件,測量范圍0-+100,使用LED模塊顯示,能設置溫度報警上下限。正文著重給出了軟硬件系統的各部分電路,介紹了集成溫度傳感器DS18B20的原理,AT89C51單片機功能和應用。該電路設計新穎、功能強大、結構簡單 關鍵詞:溫度測量;DS18B20;AT89C51方案論證該系統主要由溫度測量和數據采集兩部分電路組成,實現的方法有很多種,下面將列出兩種在日常生活中和工

5、農業生產中經常用到的實現方案。 方案一:使用熱敏電阻由于本設計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應,在將隨被測溫度變化的電壓或電流采集過來,進行A/D轉換后,就可以用單片機進行數據的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設計需要用到A/D轉換電路,感溫電路比較麻煩。 方案二:采用數字溫度芯片DS18B20 采用數字溫度芯片DS18B20 測量溫度,輸出信號全數字化。便于單片機處理及控制,省去傳統的測溫方法的很多外圍電路。且該芯片的物理化學性很穩定,它能用做工業測溫元件,此元件線形較好。在0100 攝氏度時,最大線形偏差小于1 攝氏度。DS18B20 的最大特點之一采

6、用了單總線的數據傳輸,由數字溫度計DS18B20和微控制器AT89c51構成的溫度測量裝置,它直接輸出溫度的數字信號,可直接與計算機連接。這樣,測溫系統的結構就比較簡單,體積也不大。采用51 單片機控制,軟件編程的自由度大,可通過編程實現各種各樣的算術算法和邏輯控制,而且體積小,硬件實現簡單,安裝方便。從以上兩種方案,容易看出方案一的測溫裝置可測溫度范圍寬、體積小,但是線性誤差較大。方案二的測溫裝置電路簡單、精確度較高、實現方便、軟件設計也比較簡單,故本次設計采用了方案二。 一.芯片介紹1.1 AT89C51AT89C51 提供以下標準功能:4k 字節Flash 閃爍存儲器,128字節內部RA

7、M,32 個I/O 口線,兩個16位定時/計數器,一個5向量兩級中斷結構,一個全雙工串行接口,片內振蕩器及時鐘電路。同時,AT89C51可降至0Hz的靜態邏輯操作,并支持兩種軟件可選的節電工作模式。空閑方式停止CPU的工作,但允許RAM,定時/計數器,串行通信口及中斷系統繼續工作。掉電方式保存RAM中的內容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位。1.2 DS18B20性能描述:、 獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊。 、測溫范圍 55+125,固有測溫誤差(注意,不是分辨率,這里之前是錯誤的)0.5。

8、、支持多點組網功能,多個DS18B20可以并聯在唯一的三線上,最多只能并聯8個,實現多點測溫,如果數量過多,會使供電電源電壓過低,從而造成信號傳輸的不穩定。、工作電源: 35V/DC (可以數據線寄生電源) 、在使用中不需要任何外圍元件、 測量結果以912位數字量方式串行傳送 、不銹鋼保護管直徑 6 、適用于DN1525, DN40DN250各種介質工業管道和狹小空間設備測溫、 標準安裝螺紋 M10X1, M12X1.5, G1/2”任選 、PVC電纜直接出線或德式球型接線盒出線,便于與其它電器設備連接。字節序號功能0溫度轉換后的低字節1溫度轉換后的低字節2高溫度觸發器TH3低溫度觸發器TL4

9、配置寄存器5保留6保留7保留8CRC校驗寄存器二.設計目的2.1掌握單總線協議的基本特點及通信過程;2.2掌握數字溫度傳感線DS18B20的基本特點及單總線控制協議;2.3掌握單片機IO端口模擬單總線時序控制程序的編寫方法;2.4掌握LCD液晶顯示器的顯示驅動方法。三.設計要求3.1單片機P0.0和DS18B20的數據端相連;3.2編寫單片機通過IO端口模擬單總線時序控制DS18B20的程序,讀出溫度;3.3在1602字符點陣液晶顯示模塊上顯示實測溫度。四.設計思路4.1硬件設計 按照系統設計功能的要求,確定系統由3個模塊組成:主控制器、測溫電路和顯示電路。數字溫度計總體電路結構框圖所示:DS

10、18B20掃描驅動顯示電路AT89C51 主 控 制 器4.2 軟件設計本系統的軟件系統主要可分為主程序,讀溫度函數,溫度轉換函數,顯示函數等幾個模塊。 4.2.1 主程序 主程序的主要功能是負責溫度的實時顯示、讀出并處理DS18B20的測量溫度值。溫度測量每1S進行一次。主流程圖如下: 4.2.2 讀溫度函數 4.2.3 溫度轉換函數流程圖如下: 4.2.4 溫度顯示函數流程圖如下:五 電路設計5.1 外部振蕩源設計5.2 1602液晶顯示電路5.3 數碼管報警次數電路設計5.4 LED報警閃爍電路5.5 蜂鳴器電路5.6 DS18B20與AT89C51連接電路5.7 報警溫度改變電路六.程

11、序分析6.1主函數void main()delay(10);flag=0;init();initds18b20();while(1)flag=0;Read_Temperature(); temperature_cov();display();6.2 讀取溫度函數 void Read_Temperature(void)ow_reset();write_byte(0xCC); write_byte(0x44); ow_reset();write_byte(0xCC);write_byte(0xBE); temp.c1=read_byte();temp.c0=read_byte();6.3 溫度轉換

12、函數 void temperature_cov(void) cc=temp.c0*256.0+temp.c1; /將溫度從兩個八位數表示成一個十六位數 if (temp.c0>0xF8)/判斷溫度是正數還是負數flag=1; /溫度為負數flag置1cc=cc+1; cc=cc*0.0625;xs = temp.x&0x0f;xs = xs*10;xs = xs/16; 6.4 顯示函數 void display()int i;wc51r(0x80); /寫入緩沖區起始地址為第一行第一列 wc51ddr(0x53); /szmwc51ddr(0x5a);wc51ddr(0x4d)

13、;wc51ddr(0x20);wc51ddr(0x20);time();buzzer=1;for( i=0;i<8;i+) delay(5000);zeng=1;jian=1;wc51r(0xc0);change();if(cc>high) buzzer=0;for(i=0;i<6;i+) wc51ddr(0x20);wc51r(0xc5); wc51ddr(0x41);wc51ddr(0x4c);wc51ddr(0x41);wc51ddr(0x52);wc51ddr(0x4d);for(i=0;i<6;i+) wc51ddr(0x20); wc51ddr(0x54);

14、 wc51ddr(0x4d);if(flag = 1)wc51ddr(0x2d); /如果flag為1表示溫度為負值,顯示-符號,否則顯示+if(cc <= -10) buzzer = 0;else wc51ddr(0x2b); count();wc51ddr(cc/10+0x30); /十位數轉換為LCD顯示模式 wc51ddr(cc%10+0x30); /個位數轉換為LCD顯示模式 wc51ddr(0x2e); /顯示'.'小數點wc51ddr(xs+0x30); wc51ddr(0xdf); /顯示'。符號 wc51ddr(0x43); /顯示C 符號wc5

15、1ddr(0x20); wc51ddr(0x41);wc51ddr(0x3a);wc51ddr(high/10+0x30);wc51ddr(high%10+0x30);s+;for( i=0;i<8;i+)delay (5000);6.5軟件運行時間函數void time() if(s>59) s = 0;m+;if(m>59)m = 0;h+;if(h>11)h=0;wc51ddr(h/10+0x30); wc51ddr(h%10+0x30);wc51ddr(0x3a);wc51ddr(m/10+0x30); wc51ddr(m%10+0x30);wc51ddr(0x

16、3a);wc51ddr(s/10+0x30);wc51ddr(s%10+0x30);6.6改變報警溫度 void change() delay(5); if(zeng = 0)high+;if(jian = 0)high-;delay(100); 6.7報警計數 unsigned char code CharCode=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;void count()if(buzzer = 0)c+;if(c>15) c=0;P0 = CharCodec;

17、七.單片機資源配置引腳名稱用途P24DS18B20溫度傳感器P20RS1602數據命令選擇端P21E1602使能端P22LEDP27蜂鳴器報警P25加1按鍵溫度報警上限調整P26減1按鍵溫度報警上限調整P3LED燈報警閃爍燈P2數碼管報警次數P1D0D71602數據線八. 小結通過一周的課程設計,我對課上的知識理解的更加透徹,對c語言的編程也更加熟練,在收獲知識的同時,還收獲了閱歷,收獲了成熟,在此過程中,我們通過查找大量資料,請教老師,以及不懈的努力,不僅培養了獨立思考、動手操作的能力,在各種其它能力上也都有了提高。更重要的是,在課上,我們學會了很多學習的方法,而這是日后最實用的,真的是受益

18、匪淺。九.參考文獻1. 單片機原理與應用及C51程序設計(第2版)【謝維成 楊加國 主編】2. 單片機原理與應用實驗與課程設計指導書 【岳俊生 宗慧 編】附錄 總電路原理圖附錄 C程序#include <reg51.h>#include <stdio.h>#define uchar unsigned char#define uint unsigned intvoid fbusy();void init();void wc51r(uchar cmd) ;void wc51ddr(uchar dat);uchar ow_reset(void);void initds18b2

19、0(void);uchar read_byte(void);void write_byte(uchar val);void temperature_cov(void);void display();void delay(uint i);void time();void change();void count();sbit DQ =P24; /DS18B20端口sbit RS=P20;/LCD端口sbit RW=P21;sbit E=P22;sbit buzzer=P27; /定義蜂鳴器端口sbit zeng = P26;/定義報警溫度增減端口sbit jian = P25;unionuchar

20、 c2;uint x; temp; /聯合體uchar flag; /定義溫度正負值標志變量,正為'0',負為'1'int cc,xs,h,m,s,high,c;h=0;m=0;s=0,c=0;high=29;unsigned char code CharCode=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;/*/*延時函數 */*/void delay(uint i)for(;i>0;i-);/*/*復位函數 */*/uchar ow_re

21、set(void)uchar reset;DQ=0;delay(50);DQ=1;delay(3);reset=DQ;delay(25);return(reset);/*/*初始化DS18B20 */*/void initds18b20(void) ow_reset();write_byte(0xCC);write_byte(0x4E);write_byte(0x00);write_byte(0x00);write_byte(0x7F);/*/*從單總線讀取一個字節 */*/uchar read_byte(void)uchar i;uchar value=0;for (i=8;i>0;i

22、-)value>>=1;DQ=0;DQ=1;delay(1);if(DQ)value|=0x80;delay(6);return(value);/*/*向單總線上寫一個字節 */*/void write_byte(uchar val)uchar i;for(i=8;i>0;i-)DQ=0;DQ=val&0x01;delay(5);DQ=1;val=val/2;delay(5);/*/*讀取溫度 */*/ void Read_Temperature(void)ow_reset();write_byte(0xCC); write_byte(0x44); ow_reset(

23、);write_byte(0xCC);write_byte(0xBE); temp.c1=read_byte();temp.c0=read_byte();/*/*溫度轉換 */*/void temperature_cov(void) cc=temp.c0*256.0+temp.c1; /將溫度從兩個八位數表示成一個十六位數 if (temp.c0>0xF8)/判斷溫度是正數還是負數flag=1; /溫度為負數flag置1cc=cc+1; cc=cc*0.0625;xs = temp.x&0x0f;xs = xs*10;xs = xs/16; /*/*顯示 */*/void dis

24、play()int i;wc51r(0x80); /寫入緩沖區起始地址為第一行第一列 wc51ddr(0x53); /szmwc51ddr(0x5a);wc51ddr(0x4d);wc51ddr(0x20);wc51ddr(0x20);time();buzzer=1;for( i=0;i<8;i+) delay(5000);zeng=1;jian=1;wc51r(0xc0);change();if(cc>high) buzzer=0;for(i=0;i<6;i+) wc51ddr(0x20);wc51r(0xc5); wc51ddr(0x41);wc51ddr(0x4c);w

25、c51ddr(0x41);wc51ddr(0x52);wc51ddr(0x4d);for(i=0;i<6;i+) wc51ddr(0x20); wc51ddr(0x54); wc51ddr(0x4d);if(flag = 1)wc51ddr(0x2d); /如果flag為1表示溫度為負值,顯示-符號,否則顯示+if(cc <= -10) buzzer = 0;else wc51ddr(0x2b); count();wc51ddr(cc/10+0x30); /十位數轉換為LCD顯示模式 wc51ddr(cc%10+0x30); /個位數轉換為LCD顯示模式 wc51ddr(0x2e)

26、; /顯示'.'小數點wc51ddr(xs+0x30); wc51ddr(0xdf); /顯示'。符號 wc51ddr(0x43); /顯示C 符號wc51ddr(0x20); wc51ddr(0x41);wc51ddr(0x3a);wc51ddr(high/10+0x30);wc51ddr(high%10+0x30);s+;for( i=0;i<8;i+)delay (5000);/*/*檢查LCD忙狀態 */*fbusy為1時,忙,等待 fbusy為0時,閑,可寫指令與數據 */*/ void fbusy()P1=0xff;RS=0;RW=1;E=1;E=0;while(P1&0x80)E=0;E=1;delay(256);/*/* LCD初始化設定 */*/vo

溫馨提示

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

評論

0/150

提交評論