#include<stc12.h> //WD代表與溫度有關
#include<math.h> //SD代表與濕度有關
#include<stdio.h> //GZ代表與關照有關
#include<intrins.h> //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(); //處理函數
}
} |