标题:
单片机自动灌溉系统程序 蓝桥杯国赛题
[打印本页]
作者:
愤怒的蜗牛
时间:
2017-9-18 20:22
标题:
单片机自动灌溉系统程序 蓝桥杯国赛题
/*
首页面为 自动灌溉 按下S6 可调节湿度阀值 按下 S5可加 S4为减 再按下s6返回
按下S7后 为手动灌溉 在按下S7可返回首页面
在手动页面下 按下S6可控制蜂鸣器的开关 按下S5对继电器开关 按下S4关闭继电器
*/
#include "all.h"
sbit bee=P0^6;
sbit jdq=P0^4;
uchar ws=50; //温度标识位
uchar sign;
uint shidu,door;
void beep1();
void beep2();
void jidianqi1();
void jidianqi2();
void wetset();
void Delay10ms();
void Delay200ms();
void timer0init();
void wetset()
{
if(s5==0)
{
Delay200ms(); ws=ws+1;
if(ws>99) ws=0;
}
else if(s4==0)
{
Delay200ms();ws=ws-1;
if(ws<0) ws=99;
}
}
void jidianqi1()
{
P2=(P2&0x1f)|0xa0;
jdq=0;
}
void jidianqi2()
{
P2=(P2&0x1f)|0xa0;
jdq=1;
}
void beep1()
{
P2=(P2&0x1f)|0xa0;
bee=0;
}
void beep2()
{
P2=(P2&0x1f)|0xa0;
bee=1;
}
void main()
{
beep1();jidianqi1();
ds1302init();
pcf8591init();
while(1)
{
if(s7==0)
{
Delay200ms();
while(1)
{
P2=(P2&0x1f)|0x80;
P0=0xfe;P2&=0x1f; //点亮L1
timeshidu();
timeshidudis(); //时间湿度显示
if(shidu<ws)
{
jidianqi2();
}
else
jidianqi1();
if(s6==0)
{
Delay200ms();
while(1)
{
uint i;
for(i=0;i<25;i++)
{
wenduzhi1();wendusetdis(); //调节温度报警值
wetset();
if(s6==0&&i==10)
{
at24c02write(0x10,ws); //保存温度报警值
ws=at24c02read(0x10);
goto C;
}
}
if(s6==0)
{
Delay200ms();break;
}
for(i=0;i<25;i++)
{
wenduzhi2();wendusetdis();
wetset();
if(s6==0&&i==10)
{
at24c02write(0x10,ws);
ws=at24c02read(0x10);
goto C;
}
} //数码管闪烁显示
C:if(s6==0)
{
Delay200ms();break;
}
}
}
if(s7==0)
{
Delay200ms();
while(1)
{
timer0init(); //打开定时器 判断S6按下次数
P2=(P2&0x1f)|0x80;
P0=0xfd;P2=P2&0x1f; //点亮L2
timeshidu();
timeshidudis(); //时间湿度显示
if(s5==0)
{
Delay10ms();
jidianqi2(); //开继电器 灌溉
if(shidu<ws) //判断湿度
{
beep2(); //报警
}
else beep1(); //关闭蜂鸣器
}
if(s4==0)
{
Delay10ms();
beep1();
jidianqi1(); //停止灌溉
}
TR0=0;
if(s7==0)
{
Delay200ms();break;
}
}
}
}
}
}
}
void timer0init()
{
TMOD=0x01;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
ET0=1;
TR0=1;
EA=1;
if(s6==0)
{
Delay200ms();
door=1;beep2();
if(s6==0)
{
Delay200ms();
door=2;beep1();
}
}
}
void timer0() interrupt 1
{
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
}
void Delay10ms() //@11.0592MHz
{
unsigned char i, j;
i = 108;
j = 145;
do
{
while (--j);
} while (--i);
}
void Delay200ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 9;
j = 104;
k = 139;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
复制代码
作者:
15732601758
时间:
2019-5-7 15:15
原理图是什么
作者:
504161491
时间:
2019-11-4 20:15
666666666666
基于单片机的温室自动灌溉系统设计_肖丽.pdf
2019-11-4 20:15 上传
点击文件名下载附件
下载积分: 黑币 -5
2 MB, 下载次数: 64, 下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1