完整word版自动控制鱼缸电路图.docx

上传人:b****2 文档编号:17608712 上传时间:2023-07-27 格式:DOCX 页数:32 大小:413.91KB
下载 相关 举报
完整word版自动控制鱼缸电路图.docx_第1页
第1页 / 共32页
完整word版自动控制鱼缸电路图.docx_第2页
第2页 / 共32页
完整word版自动控制鱼缸电路图.docx_第3页
第3页 / 共32页
完整word版自动控制鱼缸电路图.docx_第4页
第4页 / 共32页
完整word版自动控制鱼缸电路图.docx_第5页
第5页 / 共32页
完整word版自动控制鱼缸电路图.docx_第6页
第6页 / 共32页
完整word版自动控制鱼缸电路图.docx_第7页
第7页 / 共32页
完整word版自动控制鱼缸电路图.docx_第8页
第8页 / 共32页
完整word版自动控制鱼缸电路图.docx_第9页
第9页 / 共32页
完整word版自动控制鱼缸电路图.docx_第10页
第10页 / 共32页
完整word版自动控制鱼缸电路图.docx_第11页
第11页 / 共32页
完整word版自动控制鱼缸电路图.docx_第12页
第12页 / 共32页
完整word版自动控制鱼缸电路图.docx_第13页
第13页 / 共32页
完整word版自动控制鱼缸电路图.docx_第14页
第14页 / 共32页
完整word版自动控制鱼缸电路图.docx_第15页
第15页 / 共32页
完整word版自动控制鱼缸电路图.docx_第16页
第16页 / 共32页
完整word版自动控制鱼缸电路图.docx_第17页
第17页 / 共32页
完整word版自动控制鱼缸电路图.docx_第18页
第18页 / 共32页
完整word版自动控制鱼缸电路图.docx_第19页
第19页 / 共32页
完整word版自动控制鱼缸电路图.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

完整word版自动控制鱼缸电路图.docx

《完整word版自动控制鱼缸电路图.docx》由会员分享,可在线阅读,更多相关《完整word版自动控制鱼缸电路图.docx(32页珍藏版)》请在冰点文库上搜索。

完整word版自动控制鱼缸电路图.docx

完整word版自动控制鱼缸电路图

附录

1。

电路图

2.程序代码

#include

#include”delay。

h”

#include”ds18b20.h"

#include”LCD1602。

h"

#include"ds1302.h”

sfrT2MOD=0xC9;

sbitHeat=P0^4;

sbitIN1=P0^3;

sbitIN2=P3^5;

sbitIN3=P3^6;

sbitIN4=P3^7;

sbitLED1=P3^2;

sbitLED2=P3^3;

//水温控制相关参量

inttempval=0;

floattmp_new=0;

floattmp_old=0;

uchartmp_set1=30;

uchartmp_set2=35;

floattmp_set=50;

floatCtrl_P=0。

8;

floatPWM=0;

floatcnt=0;

//喂食、光照、氧循环相关参量

uintFeedInterval=30;//喂食间隔时间

uintFeedTime=10;//喂食时间

uintOxygenInterval=30;

uintOxygenTime=10;

uintLightInterval=30;

uintLightTime=10;

uintFeedInterval_cnt;

uintFeedTime_cnt;

uintOxygenInterval_cnt;

uintOxygenTime_cnt;

uintLightInterval_cnt;

uintLightTime_cnt;

ucharTime_cnt=0;

//设定参数相关变量

ucharSetTimeFlg=0;

ucharSetTempFlg=0;

ucharSetFeedFlg=0;

ucharSetOxygenFlg=0;

ucharSetLightFlg=0;

ucharFeedFlg=0;

ucharOxygenFlg=0;

ucharLightFlg=0;

uchardata_zancun=0;

ucharTestNum=0;

voidInit_timer(void)

{

RCAP2H=(65536—38400)/256;

RCAP2L=(65536—38400)%256;

TH2=RCAP2H;

TL2=RCAP2L;

T2CON=0;

T2MOD=0;

ET2=1;

TR2=1;

EA=1;

}

voidZhengzhuan(void)

uchari;

for(i=0;i〈128;i++)

IN1=0;IN2=1;IN3=1;IN4=1;

delay1ms

(1);

IN1=0;IN2=0;IN3=1;IN4=1;

delay1ms

(1);

IN1=1;IN2=0;IN3=1;IN4=1;

delay1ms

(1);

IN1=1;IN2=0;IN3=0;IN4=1;

delay1ms

(1);

IN1=1;IN2=1;IN3=0;IN4=1;

delay1ms

(1);

IN1=1;IN2=1;IN3=0;IN4=0;

delay1ms

(1);

IN1=1;IN2=1;IN3=1;IN4=0;

delay1ms

(1);

IN1=0;IN2=1;IN3=1;IN4=0;

delay1ms

(1);

}

voidFanzhuan(void)

{

uchari;

for(i=0;i<128;i++)

{

IN1=0;IN2=1;IN3=1;IN4=0;

delay1ms

(1);

IN1=1;IN2=1;IN3=1;IN4=0;

delay1ms

(1);

IN1=1;IN2=1;IN3=0;IN4=0;

delay1ms

(1);

IN1=1;IN2=1;IN3=0;IN4=1;

delay1ms

(1);

IN1=1;IN2=0;IN3=0;IN4=1;

delay1ms

(1);

IN1=1;IN2=0;IN3=1;IN4=1;

delay1ms

(1);

IN1=0;IN2=0;IN3=1;IN4=1;

delay1ms

(1);

IN1=0;IN2=1;IN3=1;IN4=1;

delay1ms

(1);

voidPageClear(void)

uchari;

write_com(0x80);

for(i=0;i<16;i++)

write_data(’');

write_com(0xc0);

for(i=0;i〈16;i++)

write_data('’);

}

voidKeyScan(void)

{

uchartemp;

P2=0xfe;

temp=P2;

temp=temp&0xf0;

if(temp!

=0xf0)

{

delay1ms(10);

temp=P2;

temp=temp&0xf0;

if(temp!

=0xf0)

switch(temp)

{

case0xe0:

{

//TestNum=0;

data_zancun=0;

PageClear();

SetLightFlg=0;

SetFeedFlg=0;

SetTempFlg=0;

SetOxygenFlg=0;

SetTimeFlg++;

if(SetTimeFlg==7)

SetTimeFlg=1;

}break;//时间

case0xd0:

{

TestNum=7;

data_zancun++;

if(data_zancun==3)

data_zancun=1;

}break;//数字键7

case0xb0:

{data_zancun++;

if(data_zancun==3)

data_zancun=1;TestNum=4;}break;//数字键4

case0x70:

{data_zancun++;

if(data_zancun==3)

data_zancun=1;TestNum=1;}break;//数字键1

}

while(temp!

=0xf0)

{

temp=P2;

temp=temp&0xf0;

}

}

P2=0xfd;

temp=P2;

temp=temp&0xf0;

if(temp!

=0xf0)

delay1ms(10);

temp=P2;

temp=temp&0xf0;

if(temp!

=0xf0)

{

switch(temp)

case0xe0:

{data_zancun++;

if(data_zancun==3)

data_zancun=1;TestNum=0;}break;//数字键0

case0xd0:

{data_zancun++;

if(data_zancun==3)

data_zancun=1;TestNum=8;}break;//数字键8

case0xb0:

{data_zancun++;

if(data_zancun==3)

data_zancun=1;TestNum=5;}break;//数字键5

case0x70:

{data_zancun++;

if(data_zancun==3)

data_zancun=1;TestNum=2;}break;//数字键2

}

while(temp!

=0xf0)

temp=P2;

temp=temp&0xf0;

}

}

}

P2=0xfb;

temp=P2;

temp=temp&0xf0;

if(temp!

=0xf0)

{

delay1ms(10);

temp=P2;

temp=temp&0xf0;

if(temp!

=0xf0)

switch(temp)

{

case0xe0:

{

//TestNum=8;

PageClear();

SetTempFlg=0;

SetLightFlg=0;

SetOxygenFlg=0;

SetFeedFlg=0;

if(SetTimeFlg!

=0)

{

ds1302set();

SetTimeFlg=0;

data_zancun=0;

}break;//确定键

case0xd0:

{data_zancun++;

if(data_zancun==3)

data_zancun=1;

TestNum=9;}break;//数字键9

case0xb0:

{data_zancun++;

if(data_zancun==3)

data_zancun=1;TestNum=6;}break;//数字键6

case0x70:

{data_zancun++;

if(data_zancun==3)

data_zancun=1;TestNum=3;}break;//数字键3

}

while(temp!

=0xf0)

{

temp=P2;

temp=temp&0xf0;

}

}

P2=0xf7;

temp=P2;

temp=temp&0xf0;

if(temp!

=0xf0)

{

delay1ms(10);

temp=P2;

temp=temp&0xf0;

if(temp!

=0xf0)

switch(temp)

{

case0xe0:

{

//TestNum=12;

data_zancun=0;

PageClear();

SetLightFlg=0;

SetFeedFlg=0;

SetTempFlg=0;

SetTimeFlg=0;

SetOxygenFlg++;

if(SetOxygenFlg==3)

SetOxygenFlg=1;}break;//氧气

case0xd0:

{//TestNum=13;

data_zancun=0;

PageClear();

SetFeedFlg=0;

SetTempFlg=0;

SetTimeFlg=0;

SetOxygenFlg=0;

SetLightFlg++;

if(SetLightFlg==3)

SetLightFlg=1;}break;//照明

case0xb0:

{//TestNum=14;

data_zancun=0;

PageClear();

SetLightFlg=0;

SetTempFlg=0;

SetTimeFlg=0;

SetOxygenFlg=0;

SetFeedFlg++;

if(SetFeedFlg==3)

SetFeedFlg=1;}break;//喂食

case0x70:

{

data_zancun=0;

PageClear();

SetLightFlg=0;

SetFeedFlg=0;

SetTimeFlg=0;

SetOxygenFlg=0;

SetTempFlg++;

if(SetTempFlg==3)

SetTempFlg=1;

}break;//温度

while(temp!

=0xf0)

temp=P2;

temp=temp&0xf0;

}

if(SetTimeFlg)

switch(SetTimeFlg)

{

case1:

{

if(data_zancun==1)

time_date[6]&=0x0f;

time_date[6]|=TestNum〈<4;

elseif(data_zancun==2)

{

time_date[6]&=0xf0;

time_date[6]|=TestNum;

}}break;

case2:

if(data_zancun==1)

time_date[4]&=0x0f;

time_date[4]|=TestNum〈<4;

elseif(data_zancun==2)

{

time_date[4]&=0xf0;

time_date[4]|=TestNum;

}}break;

case3:

if(data_zancun==1)

time_date[3]&=0x0f;

time_date[3]|=TestNum〈〈4;

elseif(data_zancun==2)

{

time_date[3]&=0xf0;

time_date[3]|=TestNum;

}}break;

case4:

if(data_zancun==1)

time_date[2]&=0x0f;

time_date[2]|=TestNum〈〈4;

elseif(data_zancun==2)

time_date[2]&=0xf0;

time_date[2]|=TestNum;

}}break;

case5:

{

if(data_zancun==1)

time_date[1]&=0x0f;

time_date[1]|=TestNum〈<4;

}

elseif(data_zancun==2)

{

time_date[1]&=0xf0;

time_date[1]|=TestNum;

}}break;

case6:

{

if(data_zancun==1)

{

time_date[0]&=0x0f;

time_date[0]|=TestNum〈〈4;

}

elseif(data_zancun==2)

time_date[0]&=0xf0;

time_date[0]|=TestNum;

}}break;

}

elseif(SetTempFlg)

switch(SetTempFlg)

case1:

{

if(data_zancun==1)

tmp_set2=TestNum*10+tmp_set2%10;

}

elseif(data_zancun==2)

{

tmp_set2=TestNum+10*(tmp_set2/10);

}}break;

case2:

if(data_zancun==1)

{

tmp_set1=TestNum*10+tmp_set1%10;

elseif(data_zancun==2)

{

tmp_set1=TestNum+10*(tmp_set1/10);

}}break;

}

elseif(SetFeedFlg)

{

switch(SetFeedFlg)

case1:

{

if(data_zancun==1)

{

FeedInterval=TestNum*10+FeedInterval%10;

elseif(data_zancun==2)

{

FeedInterval=TestNum+10*(FeedInterval/10);

}}break;

case2:

if(data_zancun==1)

FeedTime=TestNum*10+FeedTime%10;

elseif(data_zancun==2)

{

FeedTime=TestNum+10*(FeedTime/10);

}}break;

}

elseif(SetLightFlg)

switch(SetLightFlg)

{

case1:

{

if(data_zancun==1)

LightInterval=TestNum*10+LightInterval%10;

elseif(data_zancun==2)

{

LightInterval=TestNum+10*(LightInterval/10);

}}break;

case2:

if(data_zancun==1)

{

LightTime=TestNum*10+LightTime%10;

}

elseif(data_zancun==2)

LightTime=TestNum+10*(LightTime/10);

}}break;

}

elseif(SetOxygenFlg)

switch(SetOxygenFlg)

{

case1:

{

if(data_zancun==1)

OxygenInterval=TestNum*10+OxygenInterval%10;

}

elseif(data_zancun==2)

OxygenInterval=TestNum+10*(OxygenInterval/10);

}}break;

case2:

if(data_zancun==1)

{

OxygenTime=TestNum*10+OxygenTime%10;

elseif(data_zancun==2)

{

OxygenTime=TestNum+10*(OxygenTime/10);

}}break;

}

voidMainPage(void)//主界面

uchari;

tmp_set=(float)(tmp_set1+tmp_set2)/2。

0;

tmp_set+=1。

0;

TR0=0;

tempval=0;

ds1302get();//读取当前时间

TR2=0;

for(i=0;i<5;i++)

sendChangeCmd();

tempval+=getTmpValue()/5。

0;

TR2=1;

tmp_new=(float)tempval/100。

0;

if(tmp_new—tmp_old>0.1)

Ctrl_P=0.5;

elseCtrl_P=0.65;

if(tmp_set—tmp_new〉=3)

{

PWM=1;

elseif(tmp_set>tmp_new)

PWM=Ctrl_P*(tmp_set—tmp_new)/3.0;

elsePWM=0;

tmp_old=tmp_new;

TR0=1;

write_com(0x8b);

write_data(tempval/1000+’0');

write_data(tempval%1000/100+'0’);

write_data('。

’);

write_data(tempval%100/10+'0');

write_data(tempval%10+’0');

write_com(0xc0);

write_data('0’+((time_date[2]&0xf0)〉〉4));//显示时

write_data(’0’+(time_date[2]&0x0f));

write_data(':

’);

write_data(’0’+((time_date[1]&0xf0)>>4));//显示分

write_data('0’+(time_date[1]&0x0f));

write_data(':

’);

write_data('0’+((time_date[0]>>4)&0x0f));//显示秒

write_data(’0’+((time_date[0]&0x0f)));

write_data(’’);

if(LightFlg)

write_string("ON");

else

write_string(”OFF”);

write_data(’');

if(OxygenFlg)

write_string("ON”);

else

write_string("OFF”);

write_com(0x80);

write_data(0x32);

write_data(0x30);

write_data('0'+((time_date[6]>>4)&0x0f));

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2