




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優質文檔-傾情為你奉上題 目單片機溫度控制及報警系統的設計 一、 設計目的學習溫度的顯示、控制及報警,實現了溫度的實時顯示及控制。溫度控制部分,提出了用DS18B20、89C52單片機及LED的硬件電路完成對溫度的實時檢測及顯示,利用DS18B20與單片機連接由軟件與硬件電路配合來實現實時控制及超出設定的上下限溫度的報警系統。課題設計的目的:1.掌握用51單片機控制LCD顯示字符的方法。 2.掌握用單片機進行顯示系統開發的方法。3.掌握單片機軟件、硬件調試技術。4.了解單線器件DS18B20的驅動方法。 5.了解LCD顯示器的一般驅動原理二、使用主要電子元件1單片機89C52 2. 溫度傳
2、感器DS18B203. 顯示器LCD16024. 排插5.發光二極管6.電容若干7.電阻若干8.按鈕開關若干。9.導線若干10. 12MHZ晶振1個三系統設計思想及主要應用器件3.1 系統設計的總體思想 根據單片機溫度控制要實現的功能,設計了基于ATMEL公司的AT89C52芯片的溫度測量系統。這是一種低成本的利用單片機多余I/O口實現的溫度檢測電路。整個系統硬件部分包括溫度檢測系統、信號放大系統、A/D轉換、單片機、I/O設備、控制執行系統等.。溫度控制部分用DS18B20、89C52單片機及LED的硬件電路完成對溫度的實時檢測及顯示。3.2 系統硬件簡介硬件大致構成:核心控制器件AT89C
3、52 ,溫度傳感器DS18B20,顯示器1602A 報警控制LED。3.2.1 硬件設計思想 本設計是以AT89C52為單片機作為控制核心,提出了一種基于DS18B20的單總線多點溫度測控系統,多個溫度傳感節點通過單總線與單片機相聯形成分布式系統。單片機通過實時監控溫度的變化,通過LCD1602字符型液晶顯示各節點溫度的數值,當溫度值超出所設定的值時,報警器開始報警,從而遠程實現對整個溫度系統的管理和控制。這種分布式溫度測量系統具有成本低廉、傳感精度高、系統穩定、易于管理等優點。3.3 系統主要器件3.3.1 核心控制器件AT89C52 AT89C52是一個低電壓,高性能CMOS 8位單片機,
4、片內含8k bytes的可反復擦寫的Flash只讀程序存儲器和256 bytes的隨機存取數據存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統,片內置通用8位中央處理器和Flash存儲單元,功能強大的AT89C52單片機可為您提供許多較復雜系統控制應用場合。AT89C52有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內含2個外中斷口,3個16位可編程定時計數器,2個全雙工串行通信口,2個讀寫口線,AT89C52可以按照常規方法進行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結合在一起,特別是可反復擦寫的Flash存儲
5、器可有效地降低開發成本1。AT89C52有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應不同產品的需求。主要功能特性:· 兼容MCS51指令系統 · 32個雙向I/O口 · 3個16位可編程定時/計數器中斷 · 2個串行中斷 · 2個外部中斷源 · 2個讀寫中斷口線 · 低功耗空閑和掉電模式 AT89C52各引腳及管腳如圖3-1所示圖3-1 AT89C52各引腳概述:AT89C52為40 腳雙列直插封裝的8 位通用微處理器,采用工業標準的C51內核,在內部功能及管腳排布上與通用的8xc52 相同,其主要用于會聚
6、調整時的功能控制。功能包括對會聚主IC 內部寄存器、數據RAM及外部接口等功能部件的初始化,會聚調整控制,會聚測試圖控制,紅外遙控信號IR的接收解碼及與主板CPU通信等。主要管腳有:XTAL1(19 腳)和XTAL2(18 腳)為振蕩器輸入輸出端口,外接12MHz 晶振。RST/Vpd(9 腳)為復位輸入端口,外接電阻電容組成的復位電路。VCC(40 腳)和VSS(20 腳)為供電端口,分別接+5V電源的正負端。P0P3 為可編程通用I/O 腳,其功能用途由軟件定義,在本設計中,P0 端口(3239 腳)被定義為N1 功能控制端口,分別與N1的相應功能管腳相連接,13 腳定義為N1 功能控制端
7、口,分別與N1的相應功能管腳相連接,13 腳定義為IR輸入端,10 腳和11腳定義為I2C總線控制端口,分別連接N1的SDAS(18腳)和SCLS(19腳)端口,12 腳、27 腳及28 腳定義為握手信號功能端口,連接主板CPU 的相應功能端,用于當前制式的檢測及會聚調整狀態進入的控制功能。3.3.2 DS1820內部結構及工作原理DS18B20數字溫度傳感器是DALLAS公司生產的1Wire,即單總線器件,具有線路簡單,體積小的特點。因此用它來組成一個測溫系統,具有線路簡單,在一根通信線,可以掛很多這樣的數字溫度計,十分方便。1.DS18B20產品的特點:l 只要求一個端口即可實現通信。l
8、在DS18B20中的每個器件上都有獨一無二的序列號。l 實際應用中不需要外部任何元器件即可實現測溫。l 測量溫度范圍在55.C到125.C之間。l 數字溫度計的分辨率用戶可以從9位到12位選擇。l 內部有溫度上、下限告警設置。TO92封裝的DS18B20的引腳排列見圖3-3所示。 圖3-3 DS18B20的引腳排列DS18B20引腳功能描述見表3-4所示。表3-4 DS18B20引腳功能序號名稱引腳功能描述1GND地信號2DQ數字輸入輸出引腳,開漏單總線接口引腳,當使用寄生電源時,可向電源提供電源3VDD可選擇的VDD引腳,當工作于寄生電源時,該引腳必須接地2. DS18B20的內部結構DS1
9、8B20的內部框圖下圖3-5所示。64位ROM存儲器件獨一無二的序列號。暫存器包含兩字節(0和1字節)的溫度寄存器,用于存儲溫度傳感器的數字輸出。暫存器還提供一字節的上線警報觸發(TH)和下線警報觸發(TL)寄存器(2和3字節),和一字節的配置寄存器(4字節),使用者可以通過配置寄存器來設置溫度轉換的精度。暫存器的5、6和7字節器件內部保留使用。第八字節含有循環冗余碼(CRC )。 圖3-5 DS18B20的內部框圖3.3.3 LCD1602A內部結構及工作原理工作原理 LCD內部結構:由CGRAM(自建字型產生器)、DDRAM(數據顯示存儲器)、CGROM(內含字型產生器)、指令寄存器、數據
10、寄存器、地址計數器、指令譯碼器等組成 LCD顯示原理:利用旋光效應對光進行偏轉,再利用偏振片濾去不需要透過光的相應像素,從而實現圖像顯示。 LCD驅動原理:分成兩大步,即寫指令,寫數據,其中寫數據之前要找到顯示的位置。本實驗所采用的液晶型號為LCD1602A 。它位數多,可顯示32位,32個數碼管體積相當龐大了,顯示內容豐富,可顯示所有數字和大、小寫字母,程序簡單,如果用數碼管動態顯示,會占用很多時間來刷新顯示,而LCD1602A自動完成此功能。1602A采用標準的16腳接口如圖3-12所示。圖3-12 1602A的接口圖第1腳:VSS為地電源第2腳:VDD接5V正電源第3腳:V0為液晶顯示器
11、對比度調整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度(建議接地,弄不好有的模塊會不顯示)第4腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。第5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執行命令。第714腳:D0D7為8位雙向數據線。第1516腳:空腳(有的用來接背光) 1602A液晶模塊內部的字符發生存儲器(CGROM)已經存儲了不同的點陣字符圖形,這些字符有,阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,
12、每一個字符都有一個固定的代碼,其中數字與字母同ASCII碼兼容。其內部還有自定義字符(CGRAM),可用業存儲自已定義的字符。四系統軟件設計4.1 軟件設計總體思路及主程序流程圖本系統采用C語言編寫,主程序主要由四部分構成,系統通電后首先初始化系統,依次完成溫度采集、溫度處理、數據顯示、鍵盤處理等四項功能。溫度采集部分主要完成溫度測試點的溫度數據采集任務;溫度處理部分主要是將采集到的溫度數據與用戶設定的各點上下限溫度值進行比較處理,并判斷是否超出設定的上下限值,如果超出則led燈亮報警;數據顯示部分主要實現溫度數據的顯示,顯示方式根據設計要求支持溫度測試點的輪流循環顯示和固定顯示兩種方式;鍵盤
13、處理部分主要實現用戶對系統參數的設置,結合顯示部分,實現用戶與系統之間的人機接口。系統軟件主流程如圖4-1所示。 開始系統初始化溫度采集溫度處理數據顯示鍵盤處理圖4-1 系統軟件總流程圖4.2 測溫模塊測溫流程圖4-2所示。讀溫度初始化溫度傳感器掃描鍵盤選定所需芯片選定所需芯片進行溫度轉換讀取溫度調試顯示子程序子程序返回圖4-2 DSl8B20操作流程圖4.2.1 溫度的采集DSl8B20在其ROM中都存有其唯一的48位序列號,在出廠前已寫入片內ROM中,主機在進入操作程序前必須逐一接入DSl8B20,用讀ROM(33H)命令將該DSl8B20的序列號讀出并登錄。當主機需要對眾多在線DSl8B
14、20的某一個進行操作時首先要發出匹配ROM命令(55H),緊接著主機提供64位序列(包括該DSl8B20的48位序列號)之后的操作就是針對該DSl8B20的,而所謂跳過ROM命令即為之后的操作,是對所有DSl8B20的框圖中先有跳過ROM即是啟動所有DSl8B20進行溫度變換之后通過匹配ROM再逐一地讀回每個DSl8B20的溫度數據在DSl8B20組成的測溫系統中主機在發出跳過ROM命令之后再發出統一的溫度轉換啟動碼44H就可以實現所有DSl8B20的統一轉換再經過1s后就可以用很少的時間去逐一讀取這種方式,使其T值往往小于傳統方式7。4.2.2 溫度的測量單總線已經掛接了DS18B20。由于
15、已經在上面獲取了DS18B20的ROM代碼并在AT89C52單片機內部的中建立了測量位置點和傳感器64位ROM代碼之間的關系表,因此對溫度的巡回測量的步驟如下:(1)發跳過ROM命令CCH。(2)發啟動所有在線的DS18B20進行溫度轉換命令44H。(3)延遲1s。(4)發匹配ROM命令55H。(5)按照AT89C51中建立的關系表的順序取出64位ROM代碼發送到單總線。(6)發讀溫度值命令BEH,讀取溫度值。(7)進行CRC校驗和數據處理后送LCD顯示器顯示。(8)重復第4步到第7步,直到所有的DS18B20測量處理完。(9)再重復第1步到第8步,進行下一輪的巡回測量。溫度測量電路流程如圖4
16、-3所示。初始化跳過ROM等待1S初始化設置18B20符合ROM讀存儲器緩沖指針增一初始化B1=0?否 圖4-3 溫度測量電路流程4.3 顯示模塊流程圖4-4所示。 忙判斷P0.7=1?結束開始液晶初始化送顯示地址寫指令送顯示字符Y忙判斷P0.7=1?寫數據YNN專心-專注-專業圖4-4 LCD顯示流程圖 4.4 鍵盤掃描流程圖按鍵處理程序通過掃描按鍵情況,讀取鍵值。主要完成各點溫度傳感器上下限報警參數設置和顯示模式設置。(1)通過掃描鍵盤讀取鍵值,流程圖如圖4-5所示。YN鍵盤掃描有鍵閉合延時去鍵抖動動掃描鍵盤找到閉合鍵計算鍵值閉合鍵釋放建立有效標志返回建立無效標志NYNY圖4-5 鍵盤掃描
17、程序流程圖(2)設置報警上、下限值 DS18B20設有溫度上下限報警功能。DSl8B20的存儲器由兩部分組成:一個是9字節的靜態RAM,其中第0和第1字節用于存儲16位的溫度轉換值,第2(高溫限TH)和第3字節(低溫限TL)作為溫度報警限值或通用存儲器單元供用戶使用;另一個是非易失性的E²PROM。當靜態RAM作為溫度報警限值使用時,可以在系統安裝和工作前,用寫RAM命令4EH將高溫限TH和低溫限TL寫入第2和第3字節單元。由于靜態RAM掉電后信息即丟失,因此需要再通過拷貝RAM命令48H將第2和第3字節單元的溫度報警限值拷貝到E²PROM中。主程序只要在初始化部分使用重調
18、E²PROM命令B8H,就可以將E²PROM中的溫度報警限值重新拷貝到靜態RAM中。讀取DDRAM或CGRAM中的內容。五電路圖和程序1.最終原理圖2實物圖正面圖背面圖六本設計總結1、通過本次實驗,我們學習了單片機和溫度傳感器的工作原理、放大器和數碼管的工作原理;學會了電路組合設計的方法,掌握了單片機的中斷系統與延時程序的編寫方法及程序調試方法,仿真機的使用及在線調試的方法,硬件布線設計及焊接工藝等。2、這次實驗的不足之處:由于本次設計任務準備的時間不夠充分,造成準備的很倉促,出現了許多問題;資料查找不完全,因為單片機型號對不上沒燒進單片機,浪費時間和精力。 附錄1 軟件程
19、序/調用頭文件和初始化模塊#include<reg51.h>#include<intrins.h>#include <DigThermo.h>sbit RS =P27;sbit RW =P26;sbit EN =P25;sbit DB0 =P00;sbit DB1 =P01;sbit DB2 =P02;sbit DB3 =P03;sbit DB4 =P04;sbit DB5 =P05;sbit DB6 =P06;sbit DB7 =P07;uchar alarm1 =0x28;uchar alarm2 =0x19;sbit LED1 =P10;sbit LE
20、D2 =P11;sbit MODE =P24;sbit UP =P23;sbit DOWN =P22;/LCD驅動模塊void Delay100ms();void InitInterupt();void DelayL();void DelayS();void WriteCommand(unsigned char c);void WriteData(unsigned char c);void ShowChar(unsigned char pos,unsigned char c);void ShowString(unsigned char line,char *ptr);void InitLcd(
21、);void delay(unsigned int);void convert();void RdTemp();void check();static char line0=" 00:00 "static char line1=" . C "/* 延時t毫秒 */void delay(uint t)uint i;while(t-)/* 對于11.0592M時鐘,約延時1ms */for (i=0;i<125;i+) /* 產生復位脈沖初始化DS18B20 */*主程序,讀取的溫度值最終存放在tplsb和tpmsb變量中。 tplsb其中低4位為二進
22、制的“小數”部分;tpmsb其中高 5位為符號位。真正通過數碼管輸出時,需要進行到十進 制有符號實數(包括小數部分)的轉換。*/ void main(void)char code str1=" zhong guo ! "char code str2="2008-11-15 "unsigned char i; DelayL (); InitLcd (); DelayL (); ShowString (0,str1); ShowString (1,str2); for (i=0;i<15;i+) Delay100ms(); InitInterupt()
23、;do line10=0x20;delay(1);/ 延時1msconvert();/ 啟動溫度轉換,需要750msdelay(1000);/ 延時1sRdTemp(); line10=0x20; i=tpmsb; if(i>99) line10=0x31; i-=100; line11=i/10+0x30; line12=i%10+0x30; line14=tplsb+0x30; line18=alarm1/10+0x30; line19=alarm1%10+0x30; line110='' line111='C' line112=alarm2/10+0
24、x30; line113=alarm2%10+0x30; line114='' line115='C' ShowString (0,line1);Delay100ms(); check();if(!MODE&&!UP&&DOWN) alarm1=alarm1-0x01; else if(!MODE&&UP&&!DOWN) alarm1=alarm1+0x01; else if(MODE&&!UP&&DOWN) alarm2=alarm2+0x01; else if(M
25、ODE&&UP&&!DOWN) alarm2=alarm2-0x01;elsealarm1=alarm1;alarm2=alarm2; / 讀取溫度while(1); void TxReset(void)uint i;DQ = 0;/* 拉低約900us */i = 100;while (i>0)i-;DQ = 1;/ 產生上升沿i = 4;while (i>0)i-;/* 等待應答脈沖 */void RxWait(void)uint i;while(DQ);while(DQ);/ 檢測到應答脈沖i = 4;while (i>0)i-;/* 讀
26、取數據的一位,滿足讀時隙要求 */bit RdBit(void)uint i;bit b;DQ = 0;i+;DQ = 1;i+;i+;/ 延時15us以上,讀時隙下降沿后15us,DS18B20輸出數據才有效b = DQ;i = 8;while(i>0) i-;return (b);/* 讀取數據的一個字節 */uchar RdByte(void)uchar i,j,b;b = 0;for (i=1;i<=8;i+)j = RdBit();b = (j<<7)|(b>>1);return(b);/* 寫數據的一個字節,滿足寫1和寫0的時隙要求 */void
27、 WrByte(uchar b)uint i;uchar j;bit btmp;for(j=1;j<=8;j+)btmp = b&0x01;b = b>>1;/ 取下一位(由低位向高位)if (btmp)/* 寫1 */DQ = 0;i+;i+;/ 延時,使得15us以內拉高DQ = 1;i = 8;while(i>0) i-;/ 整個寫1時隙不低于60uselse DQ = 0;i = 8;while(i>0) i-;/ 保持低在60us到120us之間DQ = 1;i+;i+;/溫度轉化模塊void convert(void)TxReset();/ 產
28、生復位脈沖,初始化DS18B20RxWait();/ 等待DS18B20給出應答脈沖delay(1);/ 延時WrByte(0xcc);/ skip rom 命令WrByte(0x44);/ convert T 命令/讀取溫度值模塊void RdTemp(void)TxReset();/ 產生復位脈沖,初始化DS18B20RxWait();/ 等待DS18B20給出應答脈沖delay(1);/ 延時WrByte(0xcc);/ skip rom 命令WrByte(0xbe);/ read scratchpad 命令tplsb = RdByte();/ 溫度值低位字節(其中低4位為二進制的&qu
29、ot;小數"部分)tpmsb = RdByte();/ 高位值高位字節(其中高5位為符號位)tpmsb=tpmsb<<4; tpmsb+=(tplsb&0xF0)>>4;tplsb=(tplsb&0x08)?5:0;/LCD驅動子程序模塊 void DelayL () unsigned char i,j; i=0xF0; j=0xFF; while (i-) while (j-); void DelayS () unsigned char i; i=0x1F; while (i-); void WriteCommand (unsigned char c) DelayS(); P0=c; EN=0; RS=0; RW=0;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年項目管理備考方案試題及答案
- 項目管理性能評估試題及答案
- 舊墻面防水翻新施工方案
- 生物質成型燃料在發電領域的應用考核試卷
- 長輸管線沙漠施工方案
- 2024年項目管理資格檢測難點試題及答案
- 變革思維2025年特許金融分析師考試試題及答案
- 2023年中國能建葛洲壩集團抽水蓄能與新能源事業部公開招聘筆試參考題庫附帶答案詳解
- 項目管理領域的最佳實踐考證試題及答案
- 2025年注冊會計師備考階段的常見問題與應對策略試題及答案
- 福建省廈門市第一中學2022-2023學年八下期中考試數學試卷(解析版)
- SGT756變壓器技術說明書
- 充電樁采購安裝投標方案
- 國際標準《風險管理指南》(ISO31000)的中文版
- 五一勞動節熱愛勞動致敬勞動者主題班會
- 糖尿病酮癥酸中毒護理課件
- 計算機安全弱口令風險
- 燃氣過戶協議書
- 數學教育研究導引
- sbs改性瀝青加工工藝
- 生物的種群動態與物種演變
評論
0/150
提交評論