【《基于單片機(jī)的智能溫度檢測(cè)控制系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)》13000字】_第1頁(yè)
【《基于單片機(jī)的智能溫度檢測(cè)控制系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)》13000字】_第2頁(yè)
【《基于單片機(jī)的智能溫度檢測(cè)控制系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)》13000字】_第3頁(yè)
【《基于單片機(jī)的智能溫度檢測(cè)控制系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)》13000字】_第4頁(yè)
【《基于單片機(jī)的智能溫度檢測(cè)控制系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)》13000字】_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

-附件1總電路圖附件2源程序#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義#include<stdio.h>#include"lcd1602.h"#include"eeprom52.h" bitRead_Temp_Flag; //定義讀時(shí)間標(biāo)志sbitbeep=P1^3;//聲光報(bào)警接口sbitjian=P1^2;//聲光報(bào)警接口sbitjia=P1^1;//聲光報(bào)警接口sbitsz=P1^0;//聲光報(bào)警接口sbitdq=P2^4; //18b20IO口的定義ucharmenu_1;//菜單設(shè)計(jì)的變量uintt_high=500,t_low=100; //溫度上下限報(bào)警值uinttemp;voiddelay_1ms(uintq){ uinti,j; for(i=0;i<q;i++) for(j=0;j<120;j++);}/******************把數(shù)據(jù)保存到單片機(jī)內(nèi)部eepom中******************/voidwrite_eeprom(){ SectorErase(0x2000); byte_write(0x2000,t_high%256); byte_write(0x2001,t_high/256); byte_write(0x2002,t_low%256); byte_write(0x2003,t_low/256); byte_write(0x2055,a_a); }/******************把數(shù)據(jù)從單片機(jī)內(nèi)部eepom中讀出來*****************/voidread_eeprom(){ t_high=byte_read(0x2001); t_high<<=8; t_high|=byte_read(0x2000); t_low=byte_read(0x2003); t_low<<=8; t_low|=byte_read(0x2002); a_a=byte_read(0x2055);}/**************開機(jī)初始化保存的數(shù)據(jù)*****************/voidinit_eeprom(){ read_eeprom(); //先讀 if(a_a!=22) //新的單片機(jī)初始單片機(jī)內(nèi)問eeprom { t_high=250; t_low=200; a_a=22; write_eeprom(); //保存數(shù)據(jù) } }voiddelay_uint(uintq){ while(q--);}/***********************18b20初始化函數(shù)*****************************/voidinit_18b20(){ bitq; dq=1; //把總線拿高 delay_uint(1); //15us dq=0; //給復(fù)位脈沖 delay_uint(80); //750us dq=1; //把總線拿高等待 delay_uint(10); //110us q=dq; //讀取18b20初始化信號(hào) delay_uint(20); //200us dq=1; //把總線拿高釋放總線}/*************寫18b20內(nèi)的數(shù)據(jù)***************/voidwrite_18b20(uchardat){ uchari; for(i=0;i<8;i++) { //寫數(shù)據(jù)是低位開始 dq=0; //把總線拿低寫時(shí)間隙開始 dq=dat&0x01;//向18b20總線寫數(shù)據(jù)了 delay_uint(5); //60us dq=1; //釋放總線 dat>>=1; } }/*************讀取18b20內(nèi)的數(shù)據(jù)***************/ucharread_18b20(){ uchari,value; for(i=0;i<8;i++) { dq=0; //把總線拿低讀時(shí)間隙開始 value>>=1; //讀數(shù)據(jù)是低位開始 dq=1; //釋放總線 if(dq==1) //開始讀寫數(shù)據(jù) value|=0x80; delay_uint(5); //60us 讀一個(gè)時(shí)間隙最少要保持60us的時(shí)間 } returnvalue; //返回?cái)?shù)據(jù)}/*************讀取溫度的值讀出來的是小數(shù)***************/uintread_temp(){ uintvalue; ucharlow; //在讀取溫度的時(shí)候如果中斷的太頻繁了,就應(yīng)該把中斷給關(guān)了,否則會(huì)影響到18b20的時(shí)序 init_18b20(); //初始化18b20 EA=0; write_18b20(0xcc); //跳過64位ROM write_18b20(0x44); //啟動(dòng)一次溫度轉(zhuǎn)換命令 EA=1; delay_uint(50); //500us init_18b20(); //初始化18b20 EA=0; write_18b20(0xcc); //跳過64位ROM write_18b20(0xbe); //發(fā)出讀取暫存器命令 low=read_18b20(); //讀溫度低字節(jié) value=read_18b20();//讀溫度高字節(jié) EA=1; value<<=8; //把溫度的高位左移8位 value|=low; //把讀出的溫度低位放到value的低八位中 value*=0.625; //轉(zhuǎn)換到溫度值小數(shù) returnvalue; //返回讀出的溫度帶小數(shù)}/********************************************************************定時(shí)器初始化子程序*******************************************************************/voidInit_Timer0(void){ TMOD|=0x01; //使用模式1,16位定時(shí)器,使用"|"符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響 TH0=(65536-2000)/256; //賦值初值2ms TL0=(65536-2000)%256; EA=1; //總中斷打開 ET0=1; //定時(shí)器中斷打開 TR0=1; //定時(shí)器開關(guān)打開}/****************按鍵處理數(shù)函數(shù)***************/voidkey(){ if(sz==0) //設(shè)置鍵 { while(sz==0); menu_1++; if(menu_1==1){LCD_init();LCD_write_str(5,0,"HIGH");} if(menu_1==2){LCD_init();LCD_write_str(5,0,"LOW");} if(menu_1>=3) { LCD_init(); LCD_write_str(5,0,"WENDU"); menu_1=0; write_eeprom(); //保存數(shù)據(jù) } } if(menu_1==1) //設(shè)置高溫報(bào)警 { if(jia==0) { while(jia==0); t_high=t_high+10; if(t_high>990)t_high=990; } if(jian==0) { while(jian==0); t_high=t_high-10; if(t_high<10)t_high=10; } LCD_write_char(8,1,(t_high/100%10)+0x30); LCD_write_char(9,1,(t_high/10%10)+0x30); LCD_write_char(10,1,'.'); LCD_write_char(11,1,(t_high%10)+0x30); LCD_write_char(12,1,'C'); } if(menu_1==2) //設(shè)置低溫報(bào)警 { if(jia==0) { while(jia==0); t_low=t_low+10; if(t_low>990)t_low=990; } if(jian==0) { while(jian==0); t_low=t_low-10; if(t_low<10)t_low=10; } LCD_write_char(8,1,(t_low/100%10)+0x30); LCD_write_char(9,1,(t_low/10%10)+0x30); LCD_write_char(10,1,'.'); LCD_write_char(11,1,(t_low%10)+0x30); LCD_write_char(12,1,'C'); } }voidmain(void){ LCD_init();//初始化液晶 Init_Timer0(); temp=read_temp(); LCD_write_str(5,0,"WENDU"); LCD_write_char(12,1,'C');//寫入字符C init_eeprom(); delay_1ms(650); while(1)//主循環(huán) { key(); if(menu_1==0) { if(Read_Temp_Flag==1) { temp=read_temp(); LCD_write_char(8,1,(temp/100%10)+0x30); LCD_write_char(9,1,(temp/10%10)+0x30); LCD_write_char(10,1,'.'); LCD_write_char(11,1,(temp%10)+0x30); LCD_write_char(12,1,'C'); } if(temp<t_high&&temp>t_low) { beep=1; } else { beep=~beep; } } }}/********************************************************************定時(shí)器中斷子程序********

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論