家电维修网

 找回密码
 注册
家电维修网 网站首页 维修文章 查看内容

基于单片机的自动浇花系统的设计与制作

2019-4-5 10:15| 发布者: 南召修电视| 查看: 1013| 评论: 0

摘要: 生活中,人工浇灌花木要耗费大量时间,而且土壤湿度不好控制,有时候由于主人长时间外出,家里的花木会因无人浇水而枯死。为了解决上述问题,本文利用单片机,设计了自动和手动浇花系统(如图1所示)。图1 自动浇花 ...
参考程序


参考程序

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

config.h

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

#ifndef _CONFIG_H

#define _CONFIG_H 

/*通用头文件*/

#include<reg52.h>

#include<intrins.h>

#define ON 0   

#define OFF 1

#define OFFSET 2       //上下限偏差

/*数据类型定义*/

typedef unsigned char uchar ;//8位无符号数

typedef unsigned int uint ;//8位无符号数

/*IO引脚分配定义*/ 

sbit AK_KEY=P1^0;//背光控制

sbit UP_KEY=P1^1; //增加_启动

sbit DN_KEY=P1^2;//减小_停止

sbit MA_KEY=P1^3;//手动_自动

 

sbit ALARM_LED=P1^4;//故障指示

sbit PUMP_LED=P1^5;//抽水指示

sbit MANUAL_LED=P1^6;//手动指示

sbit AUTO_LED=P1^7;//自动指示

 

sbit PUMP=P2^2;//水泵控制

sbit BUZZER=P2^3;//蜂鸣器报警

 

#define LCD1602_DB P0 //1602液晶数据口

sbit LCD1602_RS=P2^7; //1602液晶数据_指令选择

sbit LCD1602_RW=P2^6; //1602液晶读写选择

sbit LCD1602_E=P2^5; //1602液晶使能信号

sbit LCD1602_AK=P2^4; //1602液晶背光信号

 

sbit I2C_SCL=P2^1;//AD转换器

sbit I2C_SDA=P2^0;

#endif

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

MAIN.H

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

#ifndef _MAIN_H

#define _MAIN_H 

 

enum eStaSystem //系统运行状态枚举

{

 E_AUTO,E_MANUAL,E_ALARM

}; //设置,自动,手动,故障报警

#ifndef _MAIN_C

extern enum eStaSystem staSystem;

#endif

 

void delayms(unsigned int t);//延时函数

void SysInit();//系统初始化

void SelfCheck();//系统自检

 

void AutoWork();//系统自动运行

void ShowLcd1602();//测量、状态显示

void Humidity();//土壤湿度检测

unsigned char GetADCValue(unsigned char chn); //AD转换

void ConfigTimer0(unsigned int ms); //T0 配置函数

#endif

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

main.c

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

#define _MAIN_C

#include"config.h"

#include "main.h"

#include "Keyboard.h"

#include "I2C.h"

#include "Lcd1602.h"

 

#define N 3 //AD采样次数

#define OFFSET 2//上限偏移量

 

enum eStaSystem staSystem=E_AUTO;//初始为自动状态 

unsigned char T0RH=0; //定时器T0载值

unsigned char T0RL=0;

unsigned char TestVal;//测量值

unsigned char cnt; //蜂鸣器报警15

//----------------------------------------------------------------------------------

void main ()

{   

       SysInit();

       SelfCheck();

       while(1)

       {                         

              KeyAction();

            AutoWork();   

       }

 

}

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

函数功能:系统初始化

入口参数:无

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

void SysInit()

{  

       AK_KEY=OFF;//按键IO口初始化

       UP_KEY=OFF;//

       DN_KEY=OFF;

       MA_KEY=OFF;

 


最新评论

  • 消毒柜惊魂夜:一个被忽视的家居安全隐患
  • 写一篇关于饮水机故障维修的文章
  • 家电坏了哪里找人维修
  • 卫星机顶盒有信号收不到台什么原因
  • 用户问的是微信收款提示音延迟的原因
  • 燃气热水器一直闪不加热,这是什么造成的?
  • 万家乐热水器不出热水是什么原因?万家乐电
  • 电热水器有哪些常见故障?电热水器故障维修
  • 热水器怎么安装?热水器详细安装教程分享
  • 电热水器通电不加热是什么原因?电热水器故

QQ|门户地图|网站地图|家电维修|手机版|家电维修技术论坛 ( 蜀ICP备14030498号-16 川公网安备51102502000162号 )

GMT+8, 2025-4-30 23:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部