基于单片机的温湿度检测控制系统设计(5)

2019-04-09 14:06

*/

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]);


基于单片机的温湿度检测控制系统设计(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:江苏省2014年“三支一扶”计划- 江苏人力资源和社会 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: