整理自动控制鱼缸电路图.docx

上传人:b****4 文档编号:4802657 上传时间:2022-12-09 格式:DOCX 页数:28 大小:414.59KB
下载 相关 举报
整理自动控制鱼缸电路图.docx_第1页
第1页 / 共28页
整理自动控制鱼缸电路图.docx_第2页
第2页 / 共28页
整理自动控制鱼缸电路图.docx_第3页
第3页 / 共28页
整理自动控制鱼缸电路图.docx_第4页
第4页 / 共28页
整理自动控制鱼缸电路图.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

整理自动控制鱼缸电路图.docx

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

整理自动控制鱼缸电路图.docx

整理自动控制鱼缸电路图

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

编辑整理:

 

尊敬的读者朋友们:

这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整版)自动控制鱼缸电路图)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整版)自动控制鱼缸电路图的全部内容。

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

编辑整理:

张嬗雒老师

 

尊敬的读者朋友们:

这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布到文库,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是我们任然希望(完整版)自动控制鱼缸电路图这篇文档能够给您的工作和学习带来便利.同时我们也真诚的希望收到您的建议和反馈到下面的留言区,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请下载收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为<(完整版)自动控制鱼缸电路图〉这篇文档的全部内容。

附录

1。

电路图

2.程序代码

#include

h>

#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’+

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1