*/
void write_com(uint8 cmd) { } /**
* 写字符串到LCD */
void w_string(uint8 addr_start, uint8 *p) { } /**
* 初始化1602 */
void Init_LCD1602(void) {
write_com(0x38); // 16*2显示,5*7点阵,8位数据接口 write_com(0x0C); // 显示器开、光标开、光标允许闪烁
write_com(0x06); // 文字不动,光标自动右移 write_com(0x01); // 清屏 write_com(addr_start); while (*p != '\\0') { }
write_data(*p++); wait(); EN = 0; P0 = cmd; RS = 0; RW = 0; EN = 1; delay_us(1); EN = 0;
}
/************************************************** DHT
**************************************************/
/*--------------温湿度初始化(准备传送数据)----------*/ void delay_us(uint i) {
while(i--);
}
/*--------------------延时(ms级)------------------*/ void delay(uint z) { }
void dht_init() {
// delay(1000); //延时一会,避开不稳定区域 }
uchar read_byte() {
uchar n,byte=0,dat; for(n=0;n<8;n++) {
dht=0; //拉低延时500微秒,发送开始信号 delay_us(50);
dht=1; //释放总线,延时30微秒 delay_us(4);
while(!dht); //拉低等待
while(dht); //拉高等待,即将传送数据 uint i,j; for(i=z;i>0;i--)
for(j=110;j>0;j--);
while(!dht); }
return byte;
delay_us(4); //理论上28us<延时<70us,此处写2--6都可以 dat=0;
if(dht) dat=1; while(dht);
byte=(byte<<=1)|dat; //0
}
/*----------------------读40位数据---------------------*/ void read_hum_temp() { }
void zhuanhuan() {
uchar a;
a=hum_h+hum_l+temp_h+temp_l; if(a==check) {
P1=temp_l; hum=temp=0;
hum=((hum|hum_h)<<8)|hum_l; temp=((temp|temp_h)<<8)|temp_l;
//提取各位数字
dht_init();
hum_h=read_byte(); //读湿度 hum_l=read_byte();
temp_h=read_byte(); //读温度 temp_l=read_byte(); check=read_byte(); //读校验 while(!dht); //等待低电平结束 dht=1;
//最后拉高总线
//
bai=(temp/100)+0x30;
shi=(temp0/10)+0x30; ge=(temp)+0x30; bai1=(hum/100)+0x30;
}
}
shi1=(hum0/10)+0x30; ge1=(hum)+0x30;
else bai=shi=ge=bai1=shi1=ge1=0;
void interrupt_init() {
TMOD=0X11;
TH0=(65536-50000)/256; }
void warm_control()//判断控制报警 {
if((temp/10<10||temp/10>30)||(hum/10<20||hum/10>60) )//判断温湿度值是否符合要求 {
TR1=1; } else {
TR1=0; redled=1; }
/**********控制模块待加入*********** if(temp/10<10)
hot=0;
//加热器加热
greedled=0; TL0=(65536-50000)%6; ET0=1; TR0=1;
TH1=(65536-8000)/256; TL1=(65536-8000)%6; EA=1; ET1=1; TR1=0;
if(temp/10>30) fine=0;
//风扇降温
if(hum/10<20) pwq=0;
//喷雾器增湿
if(hum/10>60) ccq=0;
//除潮器除潮
****************************************/ }
void Display() {
write_com(0x8c); }
void main() {
Init_LCD1602(); interrupt_init(); write_data(bai); write_data(shi); write_data('.'); write_data(ge); write_data('C'); write_com(0x80+0x49); write_data(bai1); write_data(shi1); write_data('.'); write_data(ge1); write_data('%'); write_data('H');
// w_string(0x80,word1); // w_string(0xC0,word2);
write_com(0x80); for(num=0;num<16;num++) {
write_data(table[num]);