diy 单片机 自动浇花_基于51单片机的自动浇花装置(很详细)

#include                          //WD代表与温度有关

#include                          //SD代表与湿度有关

#include                          //GZ代表与关照有关

#include                          //YJ代表与液晶有关

#define uint unsigned int          //   宏定义

#define uchar unsigned char

#define        SlaveAddress  0x46   //定义器件在IIC总线中的从地址

typedef unsigned char BYTE;

BYTE BUF[8];                          //光照接收数据缓存区

sbit lcdrs=P1^0;                  //数据或者命令选择端

sbit    RW=P1^1;                  //数据读写选择

sbit lcden=P1^2;                  //使能信hao

sbit  led1=P1^4;                //喜阳模式亮

sbit  led2=P1^5;                //喜阴模式亮

sbit   SCL=P2^5;            //IIC时钟引脚定义

sbit   SDA=P2^6;            //IIC数据引脚定义

sbit    DQ=P2^7;                  //DS18B20温度传感器的信号线

sbit zhuan=P3^0;                //继电器控制

sbit  beep=P3^1;                //蜂鸣器

sbit  key1=P3^2;                //按键1

sbit  key2=P3^3;                //按键2

sbit  led=P1^7;                        //湿度指示灯

uint data_GZ,data_SD,data_WD,SDH,SDL,GZ,WD,SD;                 //全局变量

uchar wanGZ,qianGZ,baiGZ,shiGZ,geGZ,shiSD,geSD,baiWD,shiWD,geWD;

uchar code num[]={"0123456879"};

uchar code type[]={"XIYINXIYANGWDSDGZ:%'C"};

//液晶,延时及判断模式的函数的声明

void write_com(uchar com);                   //液晶写命令

void write_data(uchar date);           //液晶写数据

void InitYJ();

void moshi();                                       //液晶初始化

void deal();                                           //判断温度。湿度,光照

void delay_us(uint);                           //延时一微妙

void delay_ms(uint);                           //延时一毫秒

//光照部分有关函数的声明

void BH1750_Start();                                                  //起始信号

void BH1750_Stop();                                                     //停止信号

void BH1750_SendACK(bit ack);                                  //应答ACK

bit BH1750_RecvACK();                                                  //读ACK

void BH1750_SendByte(BYTE dat);                                  //IIC单个字节写

BYTE BH1750_RecvByte();                                                  //IIC单个字节读

void Single_Write_BH1750(uchar REG_Address);//单个写入数据

void Multiple_read_BH1750(void)        ;                        //连续的读取内部寄存

uint getdata_GZ();                                                        //读取光照的数据

void show_GZ();                                                                //在液晶上显示光照

//湿度部分有关函数的声明

void initADC();                                                           //初始化AD转换

uint getdata_SD();                                                   //读取湿度的数据

void show_SD();                                                           //在液晶上显示湿度

//温度部分有关函数的声明

void Init_DS18B20();                                          //初始化DS18B20

uchar ReadOneChar();                                             //读一位数据

void WriteOneChar(uchar dat);                          //写入数据

void show_WD();                                                          //在液晶上显示温度

uint ReadTemp(void);                                          //读取温度数据

void main()                                                                   //主函数

{

InitYJ();                                                          //初始化液晶

while(1)

{

moshi();                                                          //模式选择

show_GZ();                                                  //光照显示

show_WD();                                                  //温度显示

show_SD();                                                  //湿度显示

deal();                                                           //处理函数

}

}

你可能感兴趣的:(diy,单片机,自动浇花)