智能溫度控制器_第1頁
智能溫度控制器_第2頁
智能溫度控制器_第3頁
智能溫度控制器_第4頁
智能溫度控制器_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、智能溫度控制器系別:電子信息工程專業(yè):計算機(jī)控制技術(shù)班級:控制(一)班姓名:網(wǎng)學(xué)號:482011 年 11月29日數(shù)字溫控器課程設(shè)計任務(wù)書1.設(shè)計要求(1)基本范圍-50-110(2)精度誤差小于0.1(3)LED數(shù)碼直讀顯示2.擴(kuò)展功能(1)實(shí)現(xiàn)語音報數(shù)(2)可以任意設(shè)定溫度的上下限報警功能3.設(shè)計內(nèi)容 (1)畫出電路原理圖,正確使用邏輯關(guān)系;(2)確定元器件及元件參數(shù);(3)進(jìn)行電路模擬仿真;(4)SCH文件生成與打印輸出;4.編寫設(shè)計報告寫出設(shè)計的全過程,附上有關(guān)資料和圖紙,有心得體會。5.答辯在規(guī)定時間內(nèi),完成敘述并回答問題。(一)引言(二)關(guān)鍵字(三)設(shè)計的題目(四)課程設(shè)計的基本要

2、求(五)方案設(shè)計(六)系統(tǒng)設(shè)計方案及框圖(七)數(shù)據(jù)信號的采集和處理(八)系統(tǒng)硬件電路(九)系統(tǒng)軟件一、引言隨著科技的不斷發(fā)展,二十一世紀(jì)已經(jīng)進(jìn)入電子信息時代的軌道。為了能夠更好的適應(yīng)社會的發(fā)展和需要,學(xué)好電子方面的知識對于我們這些二十一世紀(jì)的大學(xué)生是尤為重要的,單片機(jī)更是如此。如此同時,設(shè)計新的電子產(chǎn)品對我們學(xué)校所學(xué)知識的一種掌握和鞏固。許多情況下需要測量溫度參數(shù)。通常測溫系統(tǒng)的主要器件是熱敏電阻,由于它體積小、重復(fù)性好、測量方法簡單,所以在測溫系統(tǒng)中廣泛應(yīng)用。但采用熱敏電阻的測溫系統(tǒng)需要A/D轉(zhuǎn)換,而且測量溫度不高。我們可以利用學(xué)習(xí)過的知識設(shè)計一個智能溫度控制器。二、關(guān)鍵字單片機(jī)Lmo16L

3、液晶顯示器、AT89C51系列芯片、ADC0808系列芯片。三、設(shè)計題目智能溫度控制器四、課程設(shè)計的基本要求1熟悉任務(wù),分析課程要求,熟悉溫度控制的原理,進(jìn)行方案設(shè)計;掌握系統(tǒng)設(shè)計要領(lǐng)。2完成溫度測控的設(shè)計。3相關(guān)知識:單片機(jī)原理、電子技術(shù)、數(shù)字(A/D)轉(zhuǎn)換電路。4完成硬件電路設(shè)計和裝調(diào),編寫程序?qū)崿F(xiàn)其他功能;撰寫課程設(shè)計報告。五、方案設(shè)計課程設(shè)計方法根據(jù)實(shí)驗(yàn)的要求設(shè)計出一套較為科學(xué)合理的實(shí)驗(yàn)方案,初步確定嫖和預(yù)期的結(jié)果,畫出一份較為完整實(shí)驗(yàn)原理電路圖,這也是實(shí)驗(yàn)前期的預(yù)備階段。這一階段的主要任務(wù)是準(zhǔn)備好實(shí)驗(yàn)所需求的元件功能資料,其包括:畫出方框圖,查閱有關(guān)芯片的功能及引腳圖;搞清楚各個元件

4、的功能,畫出實(shí)驗(yàn)草圖。將各種方案進(jìn)行可行性論證,然后確定實(shí)驗(yàn)方案。此次題目設(shè)計中的顯示方式:利用LCD液晶進(jìn)行相關(guān)數(shù)據(jù)的輸顯示。傳感器選擇:利用熱敏電阻經(jīng)過A/D轉(zhuǎn)換后進(jìn)行數(shù)據(jù)處理。六、系統(tǒng)設(shè)計方案及框圖系統(tǒng)設(shè)計采用AT89C51單片機(jī)控件,LCD液晶顯示當(dāng)前溫度和時間。ADC數(shù)字溫度傳感器負(fù)責(zé)把溫度變化轉(zhuǎn)換成控制器可以識別的數(shù)字量,然后通過芯片內(nèi)部的總線上傳給控制器??刂破鲗⒈碚鳟?dāng)前溫度值的數(shù)字量處理后通過直觀的LCD進(jìn)行溫度顯示,同時可以通過鍵盤控制進(jìn)行相應(yīng)的操作,如設(shè)溫度的上下限值等。AT89S51為核心、DS18B20為溫度傳感元件。只要在所設(shè)定的上下溫度界限內(nèi),就會在顯示設(shè)備中精確的

5、顯示出來,如果溫度超過了所設(shè)定的溫度上下限,就會自動發(fā)出報警信號。另外此溫度控制器操作簡單,靈敏度高,測溫范圍寬,一般能滿足日常測溫的需求??傮w設(shè)計方框圖如圖所示 顯示電路燈顯電路測溫電路(采集溫度復(fù)位清零開關(guān)控制輸入89C51單片機(jī)七、數(shù)據(jù)信號的采集和處理數(shù)據(jù)、溫度信號的采集和處理,各引腳的功能如下所示:LCD液晶顯示引腳功能表引腳符號功能說明1VSS一般接地2VDD接電源(+5V)3V0液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度)。4RSRS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇

6、指令寄存器。5R/WR/W為讀寫信號線,高電平(1)時進(jìn)行讀操作,低電平(0)時進(jìn)行寫操作。6ENE(或EN)端為使能(enable)端,下降沿使能。7D0D7數(shù)據(jù)線8VEE對比度的調(diào)節(jié)寄存器選擇控制表RSR/W操作說明00寫入指令寄存器(清除屏等)01都busy flag(DB7),以及讀取位址計數(shù)器(DB0DB6)值10寫入數(shù)據(jù)寄存器(顯示各字型等)11從數(shù)據(jù)寄存器讀取數(shù)據(jù)注:關(guān)于E=H脈沖開始時初始化E為0,然后置E為1,再清0.busy flag(DB7):在此位為被清除為0時,LCD將無法再處理其他的指令要求。 八、系統(tǒng)硬件電路1控制器內(nèi)部結(jié)構(gòu)本次采用51系列,具體型號為AT89C5

7、1,為8們微處理器CPU。擁有數(shù)據(jù)存儲器RAM和功能寄存器SFR和內(nèi)部程序存儲器ROM。如下圖:單片機(jī)的引腳圖及各引腳的功能。(ALE) :地址索存(PSEN非):程序存儲允許輸出端(EA非):程序存儲地址允許輸入端(RST):復(fù)位信號輸入端(XTAL1):接外部石英晶體和微調(diào)電容的一端。(XTAL2):接外部石英晶體和微調(diào)電容的另一端。P0P3是4個寄存器,也稱為4個端口,是80C51單片機(jī)與外界聯(lián)系的4個8位雙向并行I/O口。P0口:是一個8位的準(zhǔn)雙向I/O口。P1、P2口:是一個帶內(nèi)部上拉電阻的8位準(zhǔn)雙向I/O口。P3口:也是一個帶內(nèi)部上拉電阻的8位準(zhǔn)雙向I/O口。具有第二功能(WR/R

8、D不用時當(dāng)I/O口用,發(fā)送和接收端)2控制器具體電路整個系統(tǒng)的控制部分主要完成對溫度感應(yīng)模塊數(shù)據(jù)的讀取和處理。如圖所示,其中包含微控制器、LCD接口電路、端口上拉電阻、溫度傳感器模塊接口電路。引腳結(jié)構(gòu)ADC0808具有8路模擬量輸入通道IN0IN7,通過3位地址輸入端C、B、A(引腳23、24、25)進(jìn)行選擇。引腳22為地址鎖存控制端ALE,當(dāng)輸入為高電平時,C、B、A引腳輸入的地址鎖存與ADC0808內(nèi)部的鎖存器中,經(jīng)內(nèi)部譯碼電路譯碼選中相應(yīng)的模擬通道。引腳6為啟動轉(zhuǎn)換控制端START,當(dāng)輸入一個2 us寬的高電平脈沖時,就啟動ADC0808開始對輸入通道的模擬量進(jìn)行轉(zhuǎn)換。引腳7為A/D轉(zhuǎn)換

9、的結(jié)束信號EOC。ADC0808為逐次比較型A/D轉(zhuǎn)換器,當(dāng)開始轉(zhuǎn)換時,EOC信號為低電平,經(jīng)過一定時間,轉(zhuǎn)換結(jié)束,轉(zhuǎn)換結(jié)束信號EOC輸出高電平,轉(zhuǎn)換結(jié)果存放與ADC0808內(nèi)部的輸出數(shù)據(jù)鎖存器中。引腳9為A/D轉(zhuǎn)換數(shù)據(jù)輸出允許控制端OE,當(dāng)OE為高電平時,存放與輸出數(shù)據(jù)存儲器中的數(shù)據(jù)通過ADC0808的數(shù)據(jù)線D0D7輸出。ADC0808的內(nèi)部邏輯結(jié)構(gòu)九、系統(tǒng)軟件1畫圖開始初始化調(diào)用A/D轉(zhuǎn)換子程序調(diào)用顯示子程序 圖2主程序流程圖*開始啟動一次轉(zhuǎn)換 EOC=1A/D轉(zhuǎn)換結(jié)束 否 取數(shù)據(jù)(OE=0)0809地址通道加一地址數(shù)小于8 否是開始圖3 A/D轉(zhuǎn)換子程序流程圖A/D轉(zhuǎn)換子程序用于對ADC

10、0808的輸入模擬電壓進(jìn)行A/D轉(zhuǎn)換,并將轉(zhuǎn)換的數(shù)值存為8個相應(yīng)的存儲單元中,如圖3所示2清單RSP1.2RWP1.1EP1.0(D0D7)P0口LEDP1.4KZP1.3ON0OFF1KEY0P1.6KEY1P1.7START、ALEP3.5EOCp3.3顯示開關(guān)及光標(biāo)設(shè)置: (初始化)0000 1DCB D顯示(1有效)、C光標(biāo)顯示(1有效)、B光標(biāo)閃爍(1有效)0000 01NS N=1(讀或?qū)懸粋€字符后地址指針加1 &光標(biāo)加1),N=0(讀或?qū)懸粋€字符后地址指針減1 &光標(biāo)減1),S=1 且 N=1 (當(dāng)寫一個字符后,整屏顯示左移)s=0 當(dāng)寫一個字符后,整屏顯示不移動

11、數(shù)據(jù)指針設(shè)置: 數(shù)據(jù)首地址為80H,所以數(shù)據(jù)地址為80H+地址碼(0-27H,40-67H)其他設(shè)置:01H(顯示清屏,數(shù)據(jù)指針=0,所有顯示=0);02H(顯示回車,數(shù)據(jù)指=0)。寫指令0cH 顯示開及光標(biāo)設(shè)置3.程序設(shè)計分析#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define ON 0#define OFF 1void delay_nms(int); /延時bit LCD_busy(); /LCD判斷void LCD_write_

12、cmdata(uchar); /LCD寫命令void LCD_write_wodata(uchar); /LCD寫數(shù)據(jù)void LCD_Init(); /LCD初始化void chartoasc2(uchar ss); /字節(jié)(無符號字符)型數(shù)據(jù)轉(zhuǎn)ASC2嗎void uinttoasc2(uint ss); /無符號整型數(shù)據(jù)轉(zhuǎn)ASC2嗎void timeadd(void); /時間進(jìn)位程序uchar ad(uchar td); /AD轉(zhuǎn)化程序float bdbhv(uchar ad_dat); /標(biāo)度變換:轉(zhuǎn)電壓float bdbht(uchar ad_dat); /標(biāo)度變換:轉(zhuǎn)溫度void

13、tkz(); /溫度測控uchar rkey(); /鍵掃描,返回鍵號void gnkey(); /鍵處理void timedir(); /時間顯示void addir(); /AD數(shù)據(jù)顯示void vindir(); /電壓顯示void tdir(); /溫度顯示void thdir(); /溫度上限設(shè)定值顯示/端口設(shè)置sbit LCD_RS=P12; /LCD數(shù)據(jù)/命令sbit LCD_RW=P11; /LCD讀/寫sbit LCD_EA=P10; /LCD使能sbit LCD_BF=P07; /LCD忙sbit AD_ST=P35; /AD啟動sbit AD_OE=P34; /AD讀sb

14、it AD_EOC=P33; /AD轉(zhuǎn)換結(jié)束sbit LED=P14; /指示燈sbit KZ=P13; /溫度測控端sbit KEY0=P16; /鍵sbit KEY1=P17; uchar b1,b2,b3,b4; /中間變量uchar sec,min,hour;uchar AD_DAT; /AD轉(zhuǎn)換結(jié)果uint TH,TL; /溫度上下限int n; /時間系數(shù)uchar dis1="   WELCOME TO   "uchar dis2=" wo de cheng xu "uchar dis3="

15、   WELCOME TO   "uchar dis4="zz tao xiao shou"/延時函數(shù)void delay_nms(int mS) uchar i;while(ms-)for(i=0;i<250;i+)_nop_();_nop_();_nop_();_nop_();/檢查LCD是否忙bit LCD_busy()       bit flag;   LCD_RS=0;   /寫命令   LCD_R

16、W=1;   /讀選擇端   LCD_EA=1;   /開使能   if(LCD_BF=1)  /數(shù)據(jù)滿    flag=1;    /標(biāo)志位置1   else    flag=0;   LCD_EA=0;   /關(guān)使能   return flag;      /寫命令void LCD_w

17、rite_cmdata(uchar cmdata)    while(LCD_busy();   /等待空閑   LCD_RS=0;      /寫命令   LCD_RW=0;      /寫選擇端   LCD_EA=1;      /開使能   P0=cmdata;   LCD_EA=0

18、;      /關(guān)使能 /寫數(shù)據(jù)void LCD_write_wodata(uchar wodata)    while(LCD_busy();   /等待空閑   LCD_RS=1;      /寫數(shù)據(jù)   LCD_RW=0;      /寫選擇   LCD_EA=1;  P0=wodata; 

19、 LCD_EA=0;    /LCD初始化void LCD_Init()     LCD_write_cmdata(0x3c); /顯示設(shè)置   delay_nms(1);    /延時   LCD_write_cmdata(0x0e); /顯示開關(guān)與光標(biāo)設(shè)置     delay_nms(1);   LCD_write_cmdata(0x06);   del

20、ay_nms(1);      Void chartoasc2(uchar ss) b1=ss/100;b2=(ss-b1*100)/10;b3=(ss-b1*100-b2*10);b1=b1+0x30;b2=b2+0x30;b3=b3+0x30;Void chartoasc2(uchar ss) b1=ss/1000;b2=(ss-b1*1000)/100;b3=(ss-b1*1000-b2*100)/10;b4=(ss-b1*1000-b2*100-b3*10);b1=b1+0x30;b2=b2+0x30;b3=b3+0x30;b4=b4+0x30;

21、void timeadd() sec+;if(sec>=60) sec=0; min+; if(min>=60) min=0; hour+; if(hour>=24) hour=0; void timedir()LCD_write_cmdata(0xc0);chartoasc2(hour);LCD_write_wodata(b2);delay_nms(1);LCD_write_wodata(b3);delay_nms(1);LCD_write_wodata(:);delay_nms(1);chartoasc2(min);LCD_write_wodata(b2);delay_n

22、ms(1);LCD_write_wodata(b3);delay_nms(1);LCD_write_wodata(:);delay_nms(1);chartoasc2(sec);LCD_write_wodata(b2);delay_nms(1);LCD_write_wodata(b3);delay_nms(1);uchar ad(uchar td) uchar AD_DAT; / P3=td; AD_EOC=1; AD_ST=1; _nop_() ; _nop_() ; _nop_() ; AD_ST=0;while(AD_EOC=0);AD_OE=1;_NOP_() ;_NOP_() ;AD

23、_DAT=P2;AD_OE=0;return(AD_DAT); void addir() LCD_write_cmdata(0x80); chartoasc2(AD_DAT);LCD_write_wodata(b1);delay_nms(1)LCD_write_wodata(b2);delay_nms(1);LCD_write_wodata(b3);delay_nms(1); float bdbhv(uchar ad_dat) float vin; vin=(float) ad_dat; vin=vin/51;return(vin);float bdbht(uchar ad_dat) floa

24、t vin; vin=(float) ad_dat; vin=vin/2.55;return(vin);void vindir() float f1;f1=bdbhv(AD_DAT)*100;LCD_write_cmdata(0x84); uinttoasc2(f1);LCD_write_wodata(b2);delay_nms(1);LCD_write_wodata(b2);delay_nms(1);LCD_write_wodata(.);delay_nms(1);LCD_write_wodata(b3);delay_nms(1);LCD_write_wodata(b4);delay_nms

25、(1);LCD_write_wodata(v);delay_nms(1);void tdir()float f1;f1=bdbht(AD_DAT)*10;LCD_write_cmdata(0x8a); uinttoasc2(f1);LCD_write_wodata(b1);delay_nms(1);LCD_write_wodata(b2);delay_nms(1);LCD_write_wodata(b3);delay_nms(1);LCD_write_wodata(.);delay_nms(1);LCD_write_wodata(b4);delay_nms(1);LCD_write_wodat

26、a(c);delay_nms(1); void tkz() if(bdbht(AD_DAT)>= TH) KZ=OFF;LED=ON; else KZ=OFF;LED=OFF;Uchar rkey()uchar k; k=0; if(KEY0=0) k=1; else if(KEY1=0) k=2; return(k);void gnkey() switch(rkey() case 0:break; case 1:TH+; if(TH>100) TH=100; break; case 2:TH-; if(TH<0) TH=0; break; default:break; vo

27、id thdir() LCD_write_cmdata(0xcd); chartoasc2(TH); LCD_write_wodata(b1);delay_nms(1);LCD_write_wodata(b2);delay_nms(1);LCD_write_wodata(b3);delay_nms(1); void scom() float f1; f1=bdbht(AD_DAT)*10; uinttoasc2(f1); SBUF=b1; while(TI=0); TI=0; SBUF=b2; while(TI=0); TI=0; SBUF=b3; while(TI=0); TI=0; SBUF=.; while(TI=0); TI=0; SBUF=b4; while(TI=0); TI=0; SBUF= ; while(TI=0); TI=0; void t0_int() interrupt 1 TF0=0; TH0=60; TLO=176; timeadd(); / n+; / if(n>=20) n=0; timeadd(); timedir(); /主函數(shù) void main() uchar m; uchar ss; LCD_Init(); TMOD=0X21; TH0=60; TL0=176; T

溫馨提示

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

評論

0/150

提交評論