资源描述:
《c51温湿度传感器dht11驱动lcd1602显示程序硬件通过含电路图和实际测试效果》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、DHT11.c文件#include#include//themainonlyneedstocallgetDHT11(),thenthetemperatureandhuminitywasgetedinF16T,F16RHasfloatsbitbit11=P2^0;unsignedcharU8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;floatF16T,F16RH;//用于最终读取的温湿度数据//read8bitsonic
2、echarCOM(void){chari,U8temp,U8comdata;for(i=0;i<8;i++){while(!bit11);//表示读取的高电位延时大于20多us则读取的是1否则读取的是0Delay_us(35);//通过U8FLAG可判断bit11显示数据的脉长U8temp=0;if(bit11)U8temp=1;while(bit11);U8comdata<<=1;U8comdata
3、=U8temp;//0}//rofreturnU8comdata;}//------------------------------
4、--//-----温湿度读取子程序------------//--------------------------------//----以下变量均为全局变量--------//----温度高8位==U8T_data_H------//----温度低8位==U8T_data_L------//----湿度高8位==U8RH_data_H-----//----湿度低8位==U8RH_data_L-----//----校验8位==U8checkdata-----//----调用相关子程序如下----------//----Delay()
5、;,Delay_10us();,COM();//--------------------------------voidgetDHT11(void){//主机拉低18msGO1:bit11=0;Delay_ms(20);bit11=1;//总线由上拉电阻拉高主机延时20usDelay_us(60);//主机设为输入判断从机响应信号//bit11=1;//判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行if(!bit11)//T!{while(!bit11);//waitDHTgotohighwhile(bit11);//数
6、据接收状态U8RH_data_H=COM();U8RH_data_L=COM();U8T_data_H=COM();U8T_data_L=COM();U8checkdata=COM();bit11=1;//数据校验if((U8T_data_H+U8T_data_L+U8RH_data_H+U8RH_data_L)!=U8checkdata)//ifcheckwrong,readagaingotoGO1;}//fiF16T=U8T_data_H+(float)U8T_data_L/256;//changeintegertofloatF
7、16RH=U8RH_data_H+(float)U8RH_data_L/256;}LCD1602文件#include#include#include#include#include#defineLCD_DATAP0//LCD1602datatransferdefine#defineuintunsignedint#defineucharunsignedchar/*只由主函数调用的有Init_Lcd()LCD_write_str
8、(ucharX,ucharY,uchar*s)LCD_value(unsignedcharx,unsignedchary,floatf)*/sbitLCD_RS=P2^5;//1602controldefinesbitRW=P2^6;sbitLCD_E=P2^7;/***************************************************************************#defineLCD_SCREEN_ON0x0C//显示开#defineLCD_SCREEN_OFF0x08//显示关#d
9、efineLCD_CURSOR_ON0x0A//显示光标#defineLCD_CURSOR_OFF0x0c//无光标#defineLCD_C_FLASH_ON0x0f//有光标,光标闪动#defineLCD_C_FLASH_OFF0x