|
#include <reg52.h>
// #include <math.h>
#include <intrins.h>
#include <stdio.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
#define Data_0_time 4
typedef unsigned char U8; /* defined for unsigned 8-bits integer variable ???8????? */
typedef signed char S8; /* defined for signed 8-bits integer variable ???8????? */
typedef unsigned int U16; /* defined for unsigned 16-bits integer variable ???16????? */
typedef signed int S16; /* defined for signed 16-bits integer variable ???16????? */
typedef unsigned long U32; /* defined for unsigned 32-bits integer variable ???32????? */
typedef signed long S32; /* defined for signed 32-bits integer variable ???32????? */
typedef float F32; /* single precision floating point variable (32bits) ??????(32???) */
typedef double F64; /* double precision floating point variable (64bits) ??????(64???) */
#define SlaveAddress 0x46
typedef unsigned char BYTE;
typedef unsigned short WORD;
BYTE BUF[8]; //???????
int dis_data; //??
void delay_nms(unsigned int k);
//void InitLcd();
void Init_BH1750(void);
void WriteDataLCM(uchar dataW);
void WriteCommandLCM(uchar CMD,uchar Attribc);
void DisplayOneChar(uchar X,uchar Y,uchar DData);
void conversion(uint temp_data);
void Single_Write_BH1750(uchar REG_Address); //??????
uchar Single_Read_BH1750(uchar REG_Address); //???????????
void Multiple_Read_BH1750(); //????????????
//------------------------------------
void Delay5us();
void Delay5ms();
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?????
sbit RS = P2^6;
sbit RW = P2^5;
sbit EN = P2^7;
sbit LED1=P2^0;
sbit LED2=P2^1;
sbit LED3=P2^2;
sbit LED4=P2^3;
sbit LED5=P2^4;
sbit Data=P3^6; //?????
uchar rec_dat[9];
sbit KEY=P3^1;
sbit KEY1=P3^2;
sbit SCL=P1^0; //IIC??????
sbit SDA=P1^1; //IIC??????
sbit MOTO1=P1^3;
sbit MOTO2=P1^2;
int t=0;
int t2=0;
sbit DEEP=P1^0;
uchar code table1[] = {"hello,world!"};
uchar code table2[] = {"0123456789"};
U8 U8FLAG,k;
U8 U8count,U8temp;
U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
U8 U8comdata;
U8 outdata[5]; //????????
U8 indata[5];
U8 count, count_r=0;
U8 str[5]={"RS232"};
U16 U16temp1,U16temp2;
unsigned char stat2=0;
unsigned char stat3=0;
unsigned char stat4=0;
unsigned char stat5=0;
unsigned char stat6=0;
unsigned char stat7=0;
unsigned char ttt1;
unsigned char ttt2;
void delay(uint time);
void init_1602(void);
void writecmd(uint cmd);
void writedata(uchar dat);
void display(uchar len,uchar* table);
void delay(uint time)
{
unsigned char a,b,i;
for(i=time;i!=0;i--)
{
for(b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
void delay3(unsigned int t)
{
while(t--);
}
//void datapros()
//{
// unsigned char i;
// i++;
// delay3(10);
// if(i==50)
// {
// i=0;
// light = Read_AD_Data(0xA4); // AIN2 ????
// if(light>50)
// {
// LED2=0;
// }
// else
// {
// LED2=1;
// }
// }
//}
void Delay1ms() //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
void shi()
{
t++;
delay(50);
if(t>60)
{
t=0;
}
}
void shi2()
{
t2++;
delay(50);
if(t2>16)
{
t2=17;
}
}
void writecmd(uint cmd)
{
RS = 0;
RW = 0;
P0 = cmd;
EN = 1;
delay(1);
EN = 0;
/*
P1 = (cmd & 0x0f) << 4;
EN = 1;
delay(1);
EN = 0;*/
}
void writedata(uchar dat)
{
RS = 1;
RW = 0;
P0 = dat;
EN = 1;
delay(1);
EN = 0;
/*
P1 = (dat & 0x0f) << 4;
EN = 1;
delay(1);
EN = 0;*/
}
//void display(uchar len,uchar* table)
// {
// uchar i;
// for(i=0;i<len;i++)
// {
// writedata(table);
// }
// delay(5);
//}
void init_1602(void){
delay(15);
//¡wwritecmd(0x33);
// writecmd(0x32);
writecmd(0x38); //mode set
writecmd(0x0c); //display set
writecmd(0x06); //display mode
writecmd(0x01); //clear display
}
void show_char(unsigned char line,unsigned char colu,unsigned char date)//dan zi fu
{
if(line==1)
{
writecmd(0x80|(colu-1));
}
else
{
writecmd(0x80|(colu-1)+0x40);
}
writedata(date);
}
void show_chuang(unsigned char line,unsigned char colu,unsigned char chuan[])//zi fu chuan
{
unsigned char i;
if(line==1)
{
writecmd(0x80|(colu-1));
}
else
{
writecmd(0x80|(colu-1)+0x40);
}
for(i=0;chuan!=0;i++)
{
writedata(chuan);
}
}
int pow(int x,int y)
{
unsigned char i;
int result=1;
for(i=0;i<y;i++)
{
result*=x;
}
return result;
}
void show_number(unsigned char line,unsigned char colu,unsigned int num,unsigned char length)
{
unsigned char i;
if(line==1)
{
writecmd(0x80|(colu-1));
}
else
{
writecmd(0x80|(colu-1)+0x40);
}
for(i=length;i>0;i--)
{
writedata(0x30+num/pow(10,i-1)%10);
}
}
void show_fu(unsigned char line,unsigned char colu,int num,char length)//fu hao
{
unsigned char i;
unsigned int num1;
if(line==1)
{
writecmd(0x80|(colu-1));
}
else
{
writecmd(0x80|(colu-1)+0x40);
}
if(num>=0)
{
writedata('+');
num1=num;
}
else
{
writedata('-');
num1=-num;
}
for(i=length;i>0;i--)
{
writedata(0x30+num1/pow(10,i-1)%10);
}
}
void show_hex(unsigned char line,unsigned char colu,unsigned int num,unsigned char length);
void DHT11_delay_us(uchar n)
{
while(--n);
}
void DHT11_delay_ms(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void DHT11_start()
{
Data=1;
DHT11_delay_us(2);
Data=0;
DHT11_delay_ms(20); //??18ms??
Data=1;
DHT11_delay_us(30);
}
uchar DHT11_rec_byte() //??????
{
uchar i,dat=0;
for(i=0;i<8;i++) //????????8???
{
while(!Data);
DHT11_delay_us(8); //??60us,?????????1,???0
dat<<=1; //???????8???,???0?????
if(Data==1) //???1?,?dat?1?????1
dat+=1;
while(Data); //???????
}
return dat;
}
void DHT11_receive() //??40????
{
uchar R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;
DHT11_start();
if(Data==0)
{
while(Data==0); //????
DHT11_delay_us(40); //?????80us
R_H=DHT11_rec_byte(); //???????
R_L=DHT11_rec_byte(); //???????
T_H=DHT11_rec_byte(); //???????
T_L=DHT11_rec_byte(); //???????
revise=DHT11_rec_byte(); //?????
DHT11_delay_us(25); //??
if((R_H+R_L+T_H+T_L)==revise) //??
{
RH=R_H;
RL=R_L;
TH=T_H;
TL=T_L;
}
/*????,????*/
rec_dat[0]=(RH/10);
rec_dat[1]=(RH%10);
rec_dat[2]='R';
rec_dat[3]='H';
rec_dat[4]=' ';
rec_dat[5]=' ';
rec_dat[6]=(TH/10);
rec_dat[7]=(TH%10);
rec_dat[8]='C';
ttt1=RH;
ttt2=TH;
}
}
void anjian()
{
float temp;
if(KEY==0)
{
delay3(10);
if(KEY==0)
{
LED2=1;
show_chuang(1,11,"daily");
while(KEY==0)
{
shi2();
if(t2<=15)
{
LED1=1;
show_chuang(1,1,"welcome to use");
writecmd(0x18);
delay(50);
}
if(t2==16)
{
LED1=0;
Single_Write_BH1750(0x01); // power on
Single_Write_BH1750(0x10); // H- resolution mode
delay_nms(180); //??180ms
Multiple_Read_BH1750(); //??????,???BUF?
dis_data=BUF[0];
dis_data=(dis_data<<8)+BUF[1];//????
temp=(float)dis_data/1.2;
init_1602();
DHT11_delay_ms(1500); //DHT11??????1S????????????????????
DHT11_receive();
writecmd(0x80);
delay(5);
}
if(t2>16)
{
LED1=0;
Single_Write_BH1750(0x01); // power on
Single_Write_BH1750(0x10); // H- resolution mode
delay_nms(180); //??180ms
Multiple_Read_BH1750(); //??????,???BUF?
dis_data=BUF[0];
dis_data=(dis_data<<8)+BUF[1];//????
temp=(float)dis_data/1.2;
DHT11_delay_ms(1500); //DHT11??????1S????????????????????
DHT11_receive();
writecmd(0x80);
show_chuang(1,1,"hum");
show_number(2,1,rec_dat[0],1);
show_number(2,2,rec_dat[1],1);
// show_char(2,3,'.');
// show_number(2,4,U8RH_data_L,2);
show_char(2,3,'%');
show_chuang(1,5,"temp");
show_number(2,5,rec_dat[6],1);
show_number(2,6,rec_dat[7],1);
// show_char(2,10,'.');
// show_number(2,11,U8T_data_L,2);
show_char(2,7,0xdf);
show_char(2,8,'C');
show_number(2,10,temp,5);
show_char(2,16,'l');
}
}
LED2=0;
show_chuang(1,11,"night");
shi2();
if(t2<=15)
{
LED1=1;
show_chuang(1,1,"welcome to use");
writecmd(0x18);
delay(50);
}
if(t2==16)
{
LED1=0;
Single_Write_BH1750(0x01); // power on
Single_Write_BH1750(0x10); // H- resolution mode
delay_nms(180); //??180ms
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|