基于单片机的温室大棚自动控制系统
{ }
void write_data(uchar date) //lcd写数据函数 { }
void init() //初始化函数 {
s1=1; tempset1=25; hunset1=50; inteset1=15; lcdrw=0;
30
lcdrs=0; lcdrw=0; lcden=0; P0=com; delay(10); //延时
lcden=1; //下三行表示E高脉冲到来就开始转换 delay(10); lcden=0;
lcdrs=1; lcdrs=1; lcdrw=0; lcden=0; P0=date; delay(10); lcden=1; delay(10); lcden=0;
基于单片机的温室大棚自动控制系统
}
void print(uchar a,uchar *str) //输出字符 { }
void print1(uchar a,uchar t) //输出18b20数据到1602 { }
void print2(uchar a1,uchar t1) //输出设置温度数据到1602 {
uchar sshi,sge; sshi=t1/10; sge=t1; write_com(0x80+a1); write_data(sshi+0x30);
31
lcden=0; write_com(0x38); delay(10); write_com(0x0f); delay(10); write_com(0x06); delay(10); write_com(0x01); delay(10);
write_com(a);
while(*str!='\\0') {write_data(*str++);} *str=0;
write_com(a); write_data(t);
基于单片机的温室大棚自动控制系统
}
//////////////////////////////////////////////////////////// write_data(sge+0x30);
void keyscan() //键盘扫描函数 { rd=0; if(s1==0) { delay(5); if(s1==0) { s1num++; while(!s1);
if(s1num==1) {
write_com(0x01); print(0x80,tempset); print1(0x8e,0x43); print1(0x80+11,0x2e); print1(0x80+12,0+0x30); print1(0x80+13,0+0x30); write_com(0x80+9); write_com(0x0f);
delay(20);
} if(s1num==2) {
write_com(0x01); print(0x80,hunset);
print1(0x8b,0x30);
32
基于单片机的温室大棚自动控制系统
print1(0x8d,0x25); print1(0x8e,0x20); write_com(0x80+11); write_com(0x80+11);
}
if(s1num==3) {
write_com(0x01); print(0x80,inteset); print1(0x8b,0x30); print1(0x80+12,0+0x30); print1(0x80+13,0+0x30);
print1(0x8d,0x4d); print1(0x8e,0x56); write_com(0x80+11);
}
if(s1num==5) { s1num=0; write_com(0x01);
s4num=1;
}
}
}
if(s1num!=0) { if(s1num==1) {
if(s2==0)
33
基于单片机的温室大棚自动控制系统
}
}
}
{
delay(5); if(s2==0) {
while(!s2); if(s1num==1) {
tempset1++; write_com(0x80+10); print2(9,tempset1); if(tempset1==40) tempset1=15;
if(s3==0)
{
delay(5); if(s3==0) {
while(!s3); if(s1num==1) { }
34
tempset1--; write_com(0x80+11); print2(9,tempset1); if(tempset1==15) tempset1=40;