基于单片机温湿度控制课件_第1页
基于单片机温湿度控制课件_第2页
基于单片机温湿度控制课件_第3页
基于单片机温湿度控制课件_第4页
基于单片机温湿度控制课件_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

设计思路设计思路1温湿度采集传感器:DHT11实物图与单片机连接图温湿度采集传感器:DHT11实物图与单片机连接图2DHT11时序主机发送请求信号从机发送应答信号位数据“0”的格式位数据“1”的格式DHT11时序主机发送请求信号从机发送应答信号位数据“0”3温湿度显示:LCD1602引脚LCD_1602初始化一些重要指令:0x38设置16*2显示,5*7点阵,8位数据接口0x01清屏0x0F开显示,显示光标,光标闪烁0x08只开显示0x0e开显示,显示光标,光标不闪烁0x0c开显示,不显示光标0x06地址加1,当写入数据的时候光标右移0x02地址计数器AC=0;(此时地址为0x80)光标归原点,但是DDRAM中断内容不变0x18光标和显示一起向左移动

温湿度显示:LCD1602引脚LCD_1602初始化一些重41602读写时序图1602读写时序图5总电路图总电路图6程序如下:#include<reg52.h>#include<intrins.h>typedefunsignedcharuchar;typedefunsignedintunint;unsignedcharstr1[]={""};unsignedcharstr2[]={""};unsignedcharcodedis1[]={"TRHRH:"};unsignedcharcodedis2[]={"TRHT:"};sbitTRH=P2^7;//温湿度传感器DHT11数据接入sbitLCD_RS=P2^3;sbitLCD_RW=P2^4;sbitLCD_EN=P2^5;sbitjiare=P1^4; sbitjiangwen=P1^5; sbitzengshi=P1^6sbitjiangshi=P1^7;ucharTH_data,TL_data,RH_data,RL_data,CK_data;ucharTH_temp,TL_temp,RH_temp,RL_temp,CK_temp;ucharcom_data,untemp,temp;ucharrespond;

程序如下:#include<reg52.h>7voiddelayNOP(){_nop_();

_nop_();_nop_();_nop_();}voiddelay_us()//5us级延时程序{uchari;i--;i--;i--;i--;i--;

i--;}voiddelayNOP()8voiddelay_ms(unsignedcharms)//毫秒级延时子程序{unsignedchari;while(ms--){for(i=0;i<150;i++){_nop_();_nop_();_nop_();_nop_();}}}voiddelay_ms(unsignedcharms9//测试LCD忙碌状态lcd_busy()为1时,忙,等待。lcd_busy()为0时,闲,可写指令与数据。bitlcd_busy(){bitresult;LCD_RS=0;LCD_RW=1;LCD_EN=1;delayNOP();

result=(bit)(P0&0x80);LCD_EN=0;return(result);}//测试LCD忙碌状态lcd_busy()为1时,忙,等待10//写入指令数据到LCDvoidlcd_wcmd(unsignedcharcmd){while(lcd_busy());LCD_RS=0;LCD_RW=0;

LCD_EN=0;_nop_();_nop_();P0=cmd;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;}//写入指令数据到LCD11//写显示数据到LCD:RS=高电平,RW=低电平,E=高脉冲,D0-D7=数据。voidlcd_wdata(unsignedchardat){while(lcd_busy());LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;}//写显示数据到LCD:RS=高电平,RW=低电平,E=高脉12//LCD初始化设定voidlcd_init(){delay_ms(15);lcd_wcmd(0x38);//16*2显示,5*7点阵,8位数据

delay_ms(5);lcd_wcmd(0x0c);//显示开,关光标

delay_ms(5);lcd_wcmd(0x06);//移动光标

delay_ms(5);lcd_wcmd(0x01);//清除LCD的显示内容

delay_ms(5);}//LCD初始化设定13//设定LCD显示位置voidlcd_dis_pos(unsignedcharpos){lcd_wcmd(pos|0x80);//数据指针=80+地址变量}//设定LCD显示位置14//收发信号检测,数据读取charreceive(){uchari;com_data=0;for(i=0;i<=7;i++){respond=2;while((!TRH)&&respond++);delay_us();delay_us();delay_us();if(TRH){temp=1;respond=2;while((TRH)&&respond++);}elsetemp=0;com_data<<=1;com_data|=temp;}return(com_data);}//收发信号检测,数据读取15//读取温湿度子程序voidread_TRH(){TRH=0;delay_ms(18);TRH=1;delay_us();delay_us();delay_us();delay_us();if(!TRH){respond=2;while((!TRH)&&respond++);respond=2;while(TRH&&respond++);//数据接收状态RH_temp=receive();RL_temp=receive();TH_temp=receive();TL_temp=receive();CK_temp=receive();TRH=1;//数据校验untemp=(RH_temp+RL_temp+TH_temp+TL_temp);if(untemp==CK_temp){RH_data=RH_temp;RL_data=RL_temp;TH_data=TH_temp;TL_data=TL_temp;CK_data=CK_temp;}

}str1[0]=(char)(0X30+RH_data/10);str1[1]=(char)(0X30+RH_data%10);str1[2]=0x2e;//小数点str1[3]=(char)(0X30+RL_data/10);str1[5]=0X25;//"%"str1[6]=0X52;//"R"str1[7]=0X48;//"H"str2[0]=(char)(0X30+TH_data/10);str2[1]=(char)(0X30+TH_data%10);str2[2]=0x2e;//小数点str2[3]=(char)(0X30+TL_data/10);str2[5]=0X27;//"'"str2[6]=0X43;//"C"}//读取温湿度子程序untemp=(RH_temp+RL_16主程序voidmain(){unsignedchari,n=0x40,m;lcd_init();delay_us();while(1){read_TRH();for(i=0;i<=7;i++){lcd_dis_pos(i);//显示字符lcd_wdata(dis1[i]);lcd_dis_pos(n+i);//显示字符lcd_wdata(dis2[i]);}//写湿度数据m=0x08;for(i=0;i<=7;i++){lcd_dis_pos(m);lcd_wdata(str1[i]);m++;}

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论