基于單片機(jī)的魚缸溫度自動(dòng)控制系統(tǒng)設(shè)計(jì)_第1頁
基于單片機(jī)的魚缸溫度自動(dòng)控制系統(tǒng)設(shè)計(jì)_第2頁
基于單片機(jī)的魚缸溫度自動(dòng)控制系統(tǒng)設(shè)計(jì)_第3頁
基于單片機(jī)的魚缸溫度自動(dòng)控制系統(tǒng)設(shè)計(jì)_第4頁
基于單片機(jī)的魚缸溫度自動(dòng)控制系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

附錄一仿真圖附錄二電路原理圖附錄三主程序清單//程序頭函數(shù)#include<reg52.h>//顯示函數(shù)#include<display.h>#include<intrins.h>#include<1302.h>#include<eeprom52.h>//宏定義#defineuintunsignedint#defineucharunsignedcharvoidjiemian_2();voidjiemian_1();intshi,fen,miao;uintwendu;//測(cè)量的溫度值intup,down,q_shi,q_fen,z_shi,z_fen,k_1;//分別是溫度上限溫度下限起始時(shí)間終止時(shí)間//管腳聲明sbitjdq=P1^0; //繼電器sbitFeng=P2^6;//蜂鳴器//按鍵sbitKey1=P1^4; //設(shè)置sbitKey2=P1^5; //加sbitKey3=P1^6; //減sbitKey4=P1^7; //確定sbitDQ=P2^2; //定義DS18B20總線I/Obitflag_jdq=0;/******************把數(shù)據(jù)保存到單片機(jī)內(nèi)部eeprom中******************/voidwrite_eeprom(){ SectorErase(0x2000); byte_write(0x2061,up); byte_write(0x2062,down); byte_write(0x2063,q_shi); byte_write(0x2064,q_fen); byte_write(0x2065,z_shi); byte_write(0x2066,z_fen); byte_write(0x2060,a_a); }/******************把數(shù)據(jù)從單片機(jī)內(nèi)部eeprom中讀出來*****************/voidread_eeprom(){ up=byte_read(0x2061); down=byte_read(0x2062); q_shi=byte_read(0x2063); q_fen=byte_read(0x2064); z_shi=byte_read(0x2065); z_fen=byte_read(0x2066); a_a=byte_read(0x2060);}/**************開機(jī)自檢eeprom初始化*****************/voidinit_eeprom(){ read_eeprom(); //先讀 if(a_a!=1) //新的單片機(jī)初始單片機(jī)內(nèi)問eeprom { up=39; down=35; q_shi=8; q_fen=0; z_shi=17; z_fen=0; a_a=1; write_eeprom(); //保存數(shù)據(jù) } }voiddelay(uintz){ uinti,j; for(i=0;i<z;i++) for(j=0;j<121;j++);}/*****延時(shí)子程序*****/voidDelay_DS18B20(intnum){while(num--);}/*****初始化DS18B20*****/voidInit_DS18B20(void){unsignedcharx=0;DQ=1;//DQ復(fù)位Delay_DS18B20(8);//稍做延時(shí)DQ=0;//單片機(jī)將DQ拉低Delay_DS18B20(80);//精確延時(shí),大于480usDQ=1;//拉高總線Delay_DS18B20(14);x=DQ;//稍做延時(shí)后,如果x=0則初始化成功,x=1則初始化失敗Delay_DS18B20(20);}/*****讀一個(gè)字節(jié)*****/unsignedcharReadOneChar(void){unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){DQ=0;//給脈沖信號(hào)dat>>=1;DQ=1;//給脈沖信號(hào)if(DQ)dat|=0x80;Delay_DS18B20(4);}return(dat);}/*****寫一個(gè)字節(jié)*****/voidWriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;Delay_DS18B20(5);DQ=1;dat>>=1;}}/*****讀取溫度*****/unsignedintReadTemperature(void){unsignedchara=0;unsignedcharb=0;unsignedintt=0;floattt=0;Init_DS18B20();WriteOneChar(0xCC);//跳過讀序號(hào)列號(hào)的操作WriteOneChar(0x44);//啟動(dòng)溫度轉(zhuǎn)換Init_DS18B20();WriteOneChar(0xCC);//跳過讀序號(hào)列號(hào)的操作WriteOneChar(0xBE);//讀取溫度寄存器a=ReadOneChar();//讀低8位b=ReadOneChar();//讀高8位t=b;t<<=8;t=t|a;tt=t*0.0625;t=tt*10+0.5;//放大10倍輸出并四舍五入return(t);}voidkey(){ //模式選擇 if(Key1==0) { delay(5); if(Key1==0) { Feng=0; delay(100); Feng=1; k_1++; if(k_1==4) k_1=5; if(k_1==1) { write_com(0x87); write_com(0x0f); } elseif(k_1==2) write_com(0x8a); elseif(k_1==3) write_com(0x8d); elseif(k_1==4) write_com(0xcf); elseif(k_1==5) { jiemian_2(); write_com(0x84); } elseif(k_1==6) write_com(0x8e); elseif(k_1==7) write_com(0xc3); elseif(k_1==8) write_com(0xc6); elseif(k_1==9) write_com(0xcc); elseif(k_1==10) write_com(0xcf); elseif(k_1>10) { ds1302write(0x8e,0x00); ds1302write(0x80,miao); ds1302write(0x82,fen); ds1302write(0x84,shi); ds1302write(0x8e,0x80); jiemian_1(); write_com(0x87); k_1=1; } while(Key1==0); } } if(Key2==0&&k_1!=0) { delay(5); if(Key2==0&&k_1!=0) { Feng=0; delay(100); Feng=1; if(k_1==1) { shi=shi/16*10+shi%16; shi++; if(shi==24) shi=0; write_com(0x86); write_data(shi/10+0x30); write_data(shi%10+0x30); write_com(0x87); shi=shi/10*16+shi%10; } if(k_1==2) { fen=fen/16*10+fen%16; fen++; if(fen==60) fen=0; write_com(0x89); write_data(fen/10+0x30); write_data(fen%10+0x30); write_com(0x8a); fen=fen/10*16+fen%10; } if(k_1==3) { miao=miao/16*10+miao%16; miao++; if(miao==60) miao=0; write_com(0x8c); write_data(miao/10+0x30); write_data(miao%10+0x30); write_com(0x8d); miao=miao/10*16+miao%10; } if(k_1==5&&up<99) { up++; write_com(0x83); write_data(up/10+0x30); write_data(up%10+0x30); write_com(0x84); } if(k_1==6&&up-1>down) { down++; write_com(0x8d); write_data(down/10+0x30); write_data(down%10+0x30); write_com(0x8e); } if(k_1==7) { q_shi++; if(q_shi>23) q_shi=0; write_com(0xc2); write_data(q_shi/10+0x30); write_data(q_shi%10+0x30); write_com(0xc3); } if(k_1==8) { q_fen++; if(q_fen>59) q_fen=0; write_com(0xc5); write_data(q_fen/10+0x30); write_data(q_fen%10+0x30); write_com(0xc6); } if(k_1==9) { z_shi++; if(z_shi>23) z_shi=0; write_com(0xcb); write_data(z_shi/10+0x30); write_data(z_shi%10+0x30); write_com(0xcc); } if(k_1==10) { z_fen++; if(z_fen>59) z_fen=0; write_com(0xce); write_data(z_fen/10+0x30); write_data(z_fen%10+0x30); write_com(0xcf); } while(Key2==0); } } if(Key3==0&&k_1!=0) { delay(5); if(Key3==0&&k_1!=0) { Feng=0; delay(100); Feng=1; if(k_1==1) { shi=shi/16*10+shi%16; shi--; if(shi<0) shi=23; write_com(0x86); write_data(shi/10+0x30); write_data(shi%10+0x30); write_com(0x87); shi=shi/10*16+shi%10; } if(k_1==2) { fen=fen/16*10+fen%16; fen--; if(fen<0) fen=59; write_com(0x89); write_data(fen/10+0x30); write_data(fen%10+0x30); write_com(0x8a); fen=fen/10*16+fen%10; } if(k_1==3) { miao=miao/16*10+miao%16; miao--; if(miao<0) miao=59; write_com(0x8c); write_data(miao/10+0x30); write_data(miao%10+0x30); write_com(0x8d); miao=miao/10*16+miao%10; } if(k_1==5&&up-1>down) { up--; write_com(0x83); write_data(up/10+0x30); write_data(up%10+0x30); write_com(0x84); } if(k_1==6&&down>0) { down--; write_com(0x8d); write_data(down/10+0x30); write_data(down%10+0x30); write_com(0x8e); } if(k_1==7) { q_shi--; if(q_shi<0) q_shi=23; write_com(0xc2); write_data(q_shi/10+0x30); write_data(q_shi%10+0x30); write_com(0xc3); } if(k_1==8) { q_fen--; if(q_fen<0) q_fen=59; write_com(0xc5); write_data(q_fen/10+0x30); write_data(q_fen%10+0x30); write_com(0xc6); } if(k_1==9) { z_shi--; if(z_shi<0) z_shi=23; write_com(0xcb); write_data(z_shi/10+0x30); write_data(z_shi%10+0x30); write_com(0xcc); } if(k_1==10) { z_fen--; if(z_fen<0) z_fen=59; write_com(0xce); write_data(z_fen/10+0x30); write_data(z_fen%10+0x30); write_com(0xcf); } while(Key3==0); } } if(Key4==0) { delay(5); if(Key4==0) { Feng=0; delay(100); Feng=1; write_com(0x0c); k_1=0; ds1302write(0x8e,0x00); ds1302write(0x80,miao); ds1302write(0x82,fen); ds1302write(0x84,shi); ds1302write(0x8e,0x80); jiemian_1(); write_eeprom(); while(Key4==0); } }}voidjiemian_1(){uchari;write_com(0xc0); write_data('T'); write_data('e'); write_data('m'); write_data('p'); write_data('e'); write_data('r'); write_data('a');write_data('t');write_data('u');write_data('r');write_data('e'); write_data(':'); //溫度顯示 i++; if(i>=10) { i=0; wendu=ReadTemperature(); } write_data('0'+wendu/100); write_data('0'+wendu/10%10); write_data(0xdf); write_data(0x43); fen=ds1302read(0x83); shi=ds1302read(0x85); miao=ds1302read(0x81); write_com(0x80); write_data('T'); write_data('i'); write_data('m'); write_data('e'); write_data(''); write_data(''); write_data(shi/16+0x30); write_data(shi%16+0x30); write_data('-'); write_data(fen/16+0x30); write_data(fen%16+0x30); write_data('-'); write_data(miao/16+0x30); write_data(miao%16+0x30); write_data(''); write_data('');}voidjiemian_2(){write_com(0x80);write_data('U');write_data('p');write_data(':');write_data(up/10+0x30);write_data(up%10+0x30);write_data('');write_data('');write_data('');write_data('D');write_data('o');write_data('w');write_data('n');write_data(':');write_data(down/10+0x30);write_data(down%10+0x30);write_com(0xc0);write_data('Q');write_data(':');write_data(q_shi/10+0x30);write_data(q_shi%10+0x30);write_data('-');write_data(q_fen/10+0x30);write_data(q_fen%10+0x30);write_data('');write_data('');write_da

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論