#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(); //处理函数
}
}