1、void delay(uint x)/ uint a,b; for(a=x;a0;a-) for(b=10;bb-); void delay1(uint x)/延时程序 for(b=100;void write_com(uchar com)/液晶写指令操作 P0=com; rs=0; lcden=0; delay(10); lcden=1;void write_date(uchar date)/液晶写数据操作 P0=date; rs=1;void init()/液晶初始化 write_com(0x38); delay(1); write_com(0x0c); write_com(0x06);
2、write_com(0x01);void LCD_Display(uchar buff1,uchar buff2)/液晶显示程序 uchar aa; init();/液晶初始化 write_com(0x80+16);/写入第一行数据指令 for(aa=0;aa(TM*10) beep=0; else if(humi_value(HM*10) beep=0; else beep=1;void main() uint m=0; TM=25;/设定温度初始门限值:25C HM=50;/设定湿度初始门限值:50% YZ_Resh(); beep=1;/关闭蜂鸣器 LCD_Display(table3,
3、table4);/显示系统本系统信息 while(1) key_test();/监测按键状态,并根据对应按键改变温度湿度门限值,并显示 if (m100)/循环计时,3秒钟 m+; Delay_1ms(30); else/当m=100时即为3秒时间到,则进行温度湿度数据采集 m=0; ReadTempAndHumi();/采集温度湿度数据 TempAndHumi_Resh();/更新液晶显示缓存中的温度湿度数值/显示当前温度湿度实测值以及门限值 beep_control();/根据门限值以及实测值进行警报状态设置#include x-) for(y=124;yy-);static void D
4、elay_10us(void)/10微秒延时 uchar i; i-;static uchar ReadValue(void)/读一个字节数据的程序 uchar count,value=0,i; status=OK;/设定标志位正常状态 for(i=8;ii-) value=1;/高位在前进行接收数据 count=0; while(dht11=0&count+=NUMBER)/若大于最大数值则出错 status=ERROR;/设定错误标志 return 0;/函数执行过程发生错误就退出函数 Delay_10us();/进行30us的延时 if(dht11!=0)/再次检测是否为高电平 valu
5、e+;/进入本函数说明信号为1,则进行自加 while(dht11!=0&NUMBER) dht11=1; if(count=NUMBER) status=ERROR; return 0; return(value);/返回读取的结果extern uchar ReadTempAndHumi(void)/读取一次温度湿度数据,共5个字节 uchar i=0,check_value=0,count=0; EA=0; dht11=0;/拉低数据线20ms Delay_1ms(20); dht11=1;/释放数据线,以用于检测低电平应答信号 Delay_10us();/延时40us if(dht11!
6、=0)/检测应答信号,应答信号为低电平 EA=1;/无低电平。则报错 return ERROR; /有应答信号/等待应答信号结束=NUMBER)/若计数大于最大计数值 dht11=1; EA=1; return ERROR;/读数错误,退出函数 dht11=1; while(dht11! for(i=0;iSIZE;i+)/开始读取湿度值、温度值 value_arrayi=ReadValue();/调用读数据函数 if(status=ERROR) EA=1; return ERROR; if(i!=SIZE-1) check_value+=value_arrayi;/进行数据累加用于数据校验
7、if(check_value=value_arraySIZE-1)/若校验数据正确,则输出数据 /扩大温度湿度10倍数值 humi_value=value_array0*10; temp_value=value_array2*10; return OK;2 、dht11.c 执行文件3、/*定义DHT11温度湿度头文件*/#ifndef _DHT11_H_#define _DHT11_H_#define OK 1#define ERROR 0extern void Delay_1ms(unsigned int ms);extern unsigned char ReadTempAndHumi(void);#endif
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1