首页 > 分享 > 单片机——自动浇花系统

单片机——自动浇花系统

{

e=0;

rs=0;

rw=0;

P0=com;

delay_uint(3);

e=1;

delay_uint(25);

e=0;

}

/********************************************************************

名称 : write_data(uchar dat)

功能 : 1602写数据函数

输入 : 需要写入1602的数据

输出 : 无

***********************************************************************/

void write_data(uchar dat)

{

e=0;

rs=1;

rw=0;

P0=dat;

delay_uint(3);

e=1;

delay_uint(25);

e=0;

}

/********************************************************************

名称 : write_sfm2(uchar hang,uchar add,uchar date)

功能 : 显示2位十进制数,如果要让第一行,第五个字符开始显示"23" ,调用该函数如下

write_sfm1(1,5,23)

输入 : 行,列,需要输入1602的数据

输出 : 无

***********************************************************************/

void write_sfm2(uchar hang,uchar add,uint date)

{

if(hang==1)

write_com(0x80+add);

else

write_com(0x80+0x40+add);

write_data(0x30+date/10%10);

write_data(0x30+date%10);

}

/********************************************************************

名称 : write_string(uchar hang,uchar add,uchar *p)

功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下

write_string(1,5,“ab cd ef;”)

输入 : 行,列,需要输入1602的数据

输出 : 无

***********************************************************************/

void write_string(uchar hang,uchar add,uchar *p)

{

if(hang==1)

write_com(0x80+add);

else

write_com(0x80+0x40+add);

while(1)

{

if(*p == ‘’) break;

write_data(*p);

p++;

}

}

/********************************************************************

名称 : init_1602()

功能 : 初始化1602液晶

输入 : 无

输出 : 无

***********************************************************************/

void init_1602()

{

write_com(0x38);

write_com(0x38);

write_com(0x0c);

write_com(0x06);

delay_uint(1000);

write_string(1,0," shidu:00% ");

write_string(2,0," SH:00% SL:00% ");

write_sfm2(2,4,s_high); //显示湿度上限

write_sfm2(2,12,s_low); //显示湿度下限

}

/1ms延时函数******/

void delay_1ms(uint q)

{

uint i,j;

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

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

}

/读数模转换数据*********************************************/

//请先了解ADC0832模数转换的串行协议,再来读本函数,主要是对应时序图来理解,本函数是模拟0832的串行协议进行的

// 1 0 0 通道

// 1 1 1 通道

unsigned char ad0832read(bit SGL,bit ODD)

{

unsigned char i=0,value=0,value1=0;

SCL=0;

DO=1;

CS=0; //开始

SCL=1; //第一个上升沿

SCL=0;

DO=SGL;

SCL=1; //第二个上升沿

SCL=0;

DO=ODD;

SCL=1; //第三个上升沿

SCL=0; //第三个下降沿

DO=1;

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

{

SCL=0;

SCL=1; //开始从第四个下降沿接收数据

value<<=1;

if(DO)

value++;

}

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

{ //接收校验数据

value1>>=1;

if(DO)

value1+=0x80;

SCL=1;

SCL=0;

}

SCL=1;

if(value==value1) //与校验数据比较,正确就返回数据,否则返回0

return value;

return 0;

}

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

void time_init()

{

EA = 1; //开总中断

TMOD = 0X01; //定时器0、定时器1工作方式1

ET0 = 1; //开定时器0中断

TR0 = 1; //允许定时器0定时

}

/***独立按键程序/

uchar key_can; //按键值

void key() //独立按键程序

{

static uchar key_new;

key_can = 20; //按键值还原

P3 |= 0xf0;

if((P3 & 0xf0) != 0xf0) //按键按下

{

delay_1ms(1); //按键消抖动

if(((P3 & 0xf0) != 0xf0) && (key_new == 1))

{ //确认是按键按下

key_new = 0;

switch(P3 & 0xf0)

{

case 0xd0: key_can = 3; break; //得到k2键值

case 0xb0: key_can = 2; break; //得到k3键值

case 0x70: key_can = 1; break; //得到k4键值

}

}

}

else

key_new = 1;

}

/*按键处理显示函数/

void key_with()

{

if(key_can == 1) //设置键

{

menu_1 ++;

if(menu_1 >= 3)

{

menu_1 = 0;

init_1602() ; //初始化显示

}

}

if(menu_1 == 1) //设置湿度上限

{

if(key_can == 2)

{

s_high ++ ; //湿度上限值加1

if(s_high > 99)

s_high = 99;

}

if(key_can == 3)

{

s_high – ; //湿度上限值减1

if(s_high <= s_low)

s_high = s_low + 1 ;

}

write_sfm2(2,4,s_high); //显示湿度上限

write_sfm2(2,12,s_low); //显示湿度下限

write_com(0x80+0x40+4); //将光标移动到第2行第到3位

write_com(0x0f); //显示光标并且闪烁

}

if(menu_1 == 2) //设置湿度下限

{

if(key_can == 2)

{

s_low ++ ; //湿度下限值加1

if(s_low >= s_high)

s_low = s_high - 1;

}

if(key_can == 3)

{

s_low --; //湿度下限值减1

if(s_low <= 1)

s_low = 1;

}

write_sfm2(2,4,s_high); //显示湿度上限

write_sfm2(2,12,s_low); //显示湿度下限

write_com(0x80+0x40+12); //将光标移动到第2行第到3位

write_com(0x0f); //显示光标并且闪烁

}

}

/*报警函数/

void clock_h_l()

{

static uchar value,value1;

if(shidu <= s_low)

{

value ++;

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

存中…(img-BabY2Qum-1713203585555)]

[外链图片转存中…(img-opoW2QdW-1713203585555)]

[外链图片转存中…(img-UgIOAEau-1713203585556)]

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img

相关知识

基于单片机的自动浇花系统设计
自动浇花系统
基于单片机士壤湿度检测及自动浇花系统
基于51单片机土壤湿度检测及自动浇花系统
基于51单片机土壤湿度检测及自动浇花浇灌系统
毕业设计 基于51单片机自动智能浇花系统设计
基于单片机自动智能浇花浇水控制系统设计
基于51单片机的自动浇花灌溉系统设计
基于51单片机的智能浇花系统
51单片机——自动浇花系统(含全部代码)

网址: 单片机——自动浇花系统 https://m.huajiangbk.com/newsview403683.html

所属分类:花卉
上一篇: 干花装饰 家居新势力
下一篇: 智能单片机浇花系统设计与实现:自