c语言自动浇花代码.docx

上传人:b****0 文档编号:9179424 上传时间:2023-05-17 格式:DOCX 页数:19 大小:17.90KB
下载 相关 举报
c语言自动浇花代码.docx_第1页
第1页 / 共19页
c语言自动浇花代码.docx_第2页
第2页 / 共19页
c语言自动浇花代码.docx_第3页
第3页 / 共19页
c语言自动浇花代码.docx_第4页
第4页 / 共19页
c语言自动浇花代码.docx_第5页
第5页 / 共19页
c语言自动浇花代码.docx_第6页
第6页 / 共19页
c语言自动浇花代码.docx_第7页
第7页 / 共19页
c语言自动浇花代码.docx_第8页
第8页 / 共19页
c语言自动浇花代码.docx_第9页
第9页 / 共19页
c语言自动浇花代码.docx_第10页
第10页 / 共19页
c语言自动浇花代码.docx_第11页
第11页 / 共19页
c语言自动浇花代码.docx_第12页
第12页 / 共19页
c语言自动浇花代码.docx_第13页
第13页 / 共19页
c语言自动浇花代码.docx_第14页
第14页 / 共19页
c语言自动浇花代码.docx_第15页
第15页 / 共19页
c语言自动浇花代码.docx_第16页
第16页 / 共19页
c语言自动浇花代码.docx_第17页
第17页 / 共19页
c语言自动浇花代码.docx_第18页
第18页 / 共19页
c语言自动浇花代码.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c语言自动浇花代码.docx

《c语言自动浇花代码.docx》由会员分享,可在线阅读,更多相关《c语言自动浇花代码.docx(19页珍藏版)》请在冰点文库上搜索。

c语言自动浇花代码.docx

c语言自动浇花代码

/***************************头文件***********************/

#include

/************************数据类型宏定义******************/

#defineucharunsignedchar

#defineuintunsignedint

#definelcdP0//液晶数据口

/***********************声明控制引脚*********************/

sbitrs=P3^0;//LCD1602控制端口

sbiten=P3^1;

sbitjh=P3^2;//继电器控制端

sbitk1=P1^0;//按键

sbitk2=P1^1;

sbitk3=P1^2;

sbitk4=P1^3;

sbitk5=P1^4;

/**************************数组定义********************/

ucharcodetable0[]="Modle:

Automatic";//用于LCD1602显示

ucharcodetable1[]="T1=12minT2=20s";

uchartable2[]="Automatic";

uchartable3[]="Manual";

uchartable4[]="00";

uchartable5[]="00";

uchartable6[]="";

/**********************s声明全局变量*******************/

uchar_50ms,t1=15,t2=30;//每50ms加一次的变量;间隔时间min;浇花时间s;

uints,T_s;//1s时间到;总定时时间

ucharflag=0,flag1=0,flag2=0,flag3=0;//时间切换标志。

自动/手动切换标志,时间间隔和浇花时间调节标志,浇花与不浇花标志

/*************************延时程序*********************/

voiddelay(uintcount)//1ms延时

{

uinti,j;

for(i=0;i

for(j=0;j<120;j++);

}

/*************************液晶驱动程序*************************/

voidw_cmd(ucharcom)//lcd1602写命令

{

rs=0;

lcd=com;

en=1;

delay(5);

en=0;

}

voidw_data(uchardat)//lcd1602读数据

{

rs=1;

lcd=dat;

en=1;

delay(5);

en=0;

}

voidw_str(uchar*s)//lcd1602写字符串

{

while(*s)w_data(*s++);

}

voidlcd_int()//lcd1602初始化

{

en=0;

w_cmd(0x38);

w_cmd(0x0c);

w_cmd(0x06);

w_cmd(0x01);

w_cmd(0x80+0x00);

w_str(table0);

w_cmd(0xc0+0x00);

w_str(table1);

}

/*******************定时器0初始化程序******************/

voidTimer0_Init(void)//其中没ET0是为以后控制暂停用的

{

TMOD=TMOD|0X01;//定时方式1

TH0=0X3C;//50ms

TL0=0XB0;

TR0=1;

ET0=1;

_50ms=0;

s=0;

}

/*******************定时器0中断程序********************/

voidTimer0(void)interrupt1

{

TR0=0;//停止计数

TH0=0X3C;//重装定时器值

TL0=0XB0;

TR0=1;

_50ms++;

if(_50ms==20)//1s到

{

_50ms=0;

s++;

//count++;

if(!

flag)//间隔时间内

{

if(s==T_s)//时间间隔到

{

s=0;

flag=1;

jh=0;//开始浇花

}

}

if(flag)//浇花时间内

{

if(s==t2)

{

s=0;

flag=0;

flag3=0;

jh=1;//停止浇花

}

}

}

}

/******************判断模式选择***********************/

voidjudge()

{

if(k1==0)//判断模式

{

delay(10);

if(k1==0)

{

while(!

k1);

flag1=~flag1;

}

}

}

/*****************调节时间****************************/

voidtiaojie()

{

table4[0]=t1/10+48;

table4[1]=t1%10+48;

table5[0]=t2/10+48;

table5[1]=t2%10+48;

w_cmd(0xc0+0x03);

w_str(table4);

w_cmd(0xc0+0x0c);

w_str(table5);//液晶显示

if(k2==0)//判别调节间隔时间还是浇花时间

{

delay(10);

if(k2==0)

{

while(!

k2);

flag2=~flag2;

}

}

if(flag2==0)//调节间隔时间

{

if(k3==0)

{

delay(10);

if(k3==0)

{

while(!

k3);

t1++;

if(t1>150)t1=150;

}

}

if(k4==0)

{

delay(10);

if(k4==0)

{

while(!

k4);

t1--;

if(t1<12)t1=12;

}

}

}

if(flag2)//调节浇花时间

{

if(k3==0)

{

delay(10);

if(k3==0)

{

while(!

k3);

t2++;

if(t2>120)t2=120;

}

}

if(k4==0)

{

delay(10);

if(k4==0)

{

while(!

k4);

t2--;

if(t2<20)t2=20;

}

}

}

}

/*******************主函数**********************************/

voidmain()

{

lcd_int();

Timer0_Init();

while

(1)

{

judge();//判断模式

if(!

flag1)//自动模式

{

w_cmd(0x80+0x07);

w_str(table2);//液晶显示

tiaojie();//调节时间

T_s=t1*60;//自动模式间隔时间,默认12分钟

EA=1;//开定时器

}

if(flag1)//手动模式

{

w_cmd(0x80+0x07);

w_str(table3);//液晶显示

if(k5==0)//判定是否按下浇水开关

{

delay(10);

/***************************头文件***********************/

#include

/************************数据类型宏定义******************/

#defineucharunsignedchar

#defineuintunsignedint

#definelcdP0//液晶数据口

/***********************声明控制引脚*********************/

sbitrs=P3^0;//LCD1602控制端口

sbiten=P3^1;

sbitjh=P3^2;//继电器控制端

sbitk1=P1^0;//按键

sbitk2=P1^1;

sbitk3=P1^2;

sbitk4=P1^3;

sbitk5=P1^4;

/**************************数组定义********************/

ucharcodetable0[]="Modle:

Automatic";//用于LCD1602显示

ucharcodetable1[]="T1=12minT2=20s";

uchartable2[]="Automatic";

uchartable3[]="Manual";

uchartable4[]="00";

uchartable5[]="00";

uchartable6[]="";

/**********************s声明全局变量*******************/

uchar_50ms,t1=15,t2=30;//每50ms加一次的变量;间隔时间min;浇花时间s;

uints,T_s;//1s时间到;总定时时间

ucharflag=0,flag1=0,flag2=0,flag3=0;//时间切换标志。

自动/手动切换标志,时间间隔和浇花时间调节标志,浇花与不浇花标志

/*************************延时程序*********************/

voiddelay(uintcount)//1ms延时

{

uinti,j;

for(i=0;i

for(j=0;j<120;j++);

}

/*************************液晶驱动程序*************************/

voidw_cmd(ucharcom)//lcd1602写命令

{

rs=0;

lcd=com;

en=1;

delay(5);

en=0;

}

voidw_data(uchardat)//lcd1602读数据

{

rs=1;

lcd=dat;

en=1;

delay(5);

en=0;

}

voidw_str(uchar*s)//lcd1602写字符串

{

while(*s)w_data(*s++);

}

voidlcd_int()//lcd1602初始化

{

en=0;

w_cmd(0x38);

w_cmd(0x0c);

w_cmd(0x06);

w_cmd(0x01);

w_cmd(0x80+0x00);

w_str(table0);

w_cmd(0xc0+0x00);

w_str(table1);

}

/*******************定时器0初始化程序******************/

voidTimer0_Init(void)//其中没ET0是为以后控制暂停用的

{

TMOD=TMOD|0X01;//定时方式1

TH0=0X3C;//50ms

TL0=0XB0;

TR0=1;

ET0=1;

_50ms=0;

s=0;

}

/*******************定时器0中断程序********************/

voidTimer0(void)interrupt1

{

TR0=0;//停止计数

TH0=0X3C;//重装定时器值

TL0=0XB0;

TR0=1;

_50ms++;

if(_50ms==20)//1s到

{

_50ms=0;

s++;

//count++;

if(!

flag)//间隔时间内

{

if(s==T_s)//时间间隔到

{

s=0;

flag=1;

jh=0;//开始浇花

}

}

if(flag)//浇花时间内

{

if(s==t2)

{

s=0;

flag=0;

flag3=0;

jh=1;//停止浇花

}

}

}

}

/******************判断模式选择***********************/

voidjudge()

{

if(k1==0)//判断模式

{

delay(10);

if(k1==0)

{

while(!

k1);

flag1=~flag1;

}

}

}

/*****************调节时间****************************/

voidtiaojie()

{

table4[0]=t1/10+48;

table4[1]=t1%10+48;

table5[0]=t2/10+48;

table5[1]=t2%10+48;

w_cmd(0xc0+0x03);

w_str(table4);

w_cmd(0xc0+0x0c);

w_str(table5);//液晶显示

if(k2==0)//判别调节间隔时间还是浇花时间

{

delay(10);

if(k2==0)

{

while(!

k2);

flag2=~flag2;

}

}

if(flag2==0)//调节间隔时间

{

if(k3==0)

{

delay(10);

if(k3==0)

{

while(!

k3);

t1++;

if(t1>150)t1=150;

}

}

if(k4==0)

{

delay(10);

if(k4==0)

{

while(!

k4);

t1--;

if(t1<12)t1=12;

}

}

}

if(flag2)//调节浇花时间

{

if(k3==0)

{

delay(10);

if(k3==0)

{

while(!

k3);

t2++;

if(t2>120)t2=120;

}

}

if(k4==0)

{

delay(10);

if(k4==0)

{

while(!

k4);

t2--;

if(t2<20)t2=20;

}

}

}

}

/*******************主函数**********************************/

voidmain()

{

lcd_int();

Timer0_Init();

while

(1)

{

judge();//判断模式

if(!

flag1)//自动模式

{

w_cmd(0x80+0x07);

w_str(table2);//液晶显示

tiaojie();//调节时间

T_s=t1*60;//自动模式间隔时间,默认12分钟

EA=1;//开定时器

}

if(flag1)//手动模式

{

w_cmd(0x80+0x07);

w_str(table3);//液晶显示

if(k5==0)//判定是否按下浇水开关

{

delay(10);

if(k5==0)

{

while(!

k5);

flag3=~flag3;

}

}

if(flag3==0)//不浇花

{

jh=1;

EA=0;//关定时器

}

if(flag3)//浇花

{

jh=0;//开继电器

//count=0;//浇花计时

EA=1;//开定时器

flag=1;//浇花标志

t2=50;//浇花不超过50s

}

}

}

}if(k5==0)

{

while(!

k5);

flag3=~flag3;

}

}

if(flag3==0)//不浇花

{

jh=1;

EA=0;//关定时器

}

if(flag3)//浇花

{

jh=0;//开继电器

//count=0;//浇花计时

EA=1;//开定时器

flag=1;//浇花标志

t2=50;//浇花不超过50s

}

}

}

}

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

当前位置:首页 > 小学教育 > 语文

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

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