资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,设计思路,设计思路,1,温湿度采集传感器:,DHT11,实物图,与单片机连接图,温湿度采集传感器:DHT11实物图与单片机连接图,2,DHT11时序,主机发送,请求,信号,从机,发送,应答,信号,位数据“0”的格式,位数据“1”的格式,DHT11时序主机发送请求信号从机发送应答信号 位数据“0”,3,温湿度显示:LCD1602,引脚,LCD_1602 初始化,一些重要,指令:,0 x38 设置16*2显示,5*7点阵,8位数据接口,0 x01 清屏,0 x0F 开显示,显示光标,光标闪烁,0 x08 只开显示,0 x0e 开显示,显示光标,光标不闪烁,0 x0c 开显示,不显示光标,0 x06 地址加1,当写入数据的时候光标右移,0 x02 地址计数器AC=0;(此时地址为0 x80)光标归原点,但是DDRAM中断内容不变,0 x18 光标和显示一起向左移动,温湿度显示:LCD1602引脚LCD_1602 初始化一些重,4,1602读写时序图,1602读写时序图,5,总电路图,总电路图,6,程序如下:,#include,#include,typedef unsigned char uchar;,typedef unsigned int unint;,unsigned char str1=;,unsigned char str2=;,unsigned char code dis1=TRH RH:;,unsigned char code dis2=TRH T:;,sbit TRH=P27;/温湿度传感器DHT11数据接入,sbit LCD_RS=P23;,sbit LCD_RW=P24;,sbit LCD_EN=P25;,sbit jiare=P14;,sbit jiangwen=P15;,sbit zengshi=P16,sbit jiangshi=P17;,uchar TH_data,TL_data,RH_data,RL_data,CK_data;,uchar TH_temp,TL_temp,RH_temp,RL_temp,CK_temp;,uchar com_data,untemp,temp;,uchar respond;,程序如下:#include,7,void delayNOP(),_nop_();,_nop_();,_nop_();,_nop_();,void delay_us()/5us级延时程序,uchar i;,i-;,i-;,i-;,i-;,i-;,i-;,void delayNOP(),8,void delay_ms(unsigned char ms)/,毫秒级延时子程序,unsigned char i;,while(ms-),for(i=0;i 150;i+),_nop_();,_nop_();,_nop_();,_nop_();,void delay_ms(unsigned char ms,9,/测试LCD忙碌状态lcd_busy()为1时,忙,等待。lcd_busy()为0时,闲,可写指令与数据。,bit lcd_busy(),bit result;,LCD_RS=0;,LCD_RW=1;,LCD_EN=1;,delayNOP();,result=(bit)(P0,LCD_EN=0;,return(result);,/测试LCD忙碌状态lcd_busy()为1时,忙,等待,10,/写入指令数据到LCD,void lcd_wcmd(unsigned char cmd),while(lcd_busy();,LCD_RS=0;,LCD_RW=0;,LCD_EN=0;,_nop_();,_nop_();,P0=cmd;,delayNOP();,LCD_EN=1;,delayNOP();,LCD_EN=0;,/写入指令数据到LCD,11,/写显示数据到LCD,:,RS=高电平,RW=低电平,E=高脉冲,D0-D7=数据。,void lcd_wdata(unsigned char dat),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,初始化设定,void lcd_init(),delay_ms(15);,lcd_wcmd(0 x38);/16*2,显示,,5*7,点阵,,8,位数据,delay_ms(5);,lcd_wcmd(0 x0c);/,显示开,关光标,delay_ms(5);,lcd_wcmd(0 x06);/,移动光标,delay_ms(5);,lcd_wcmd(0 x01);/,清除,LCD,的显示内容,delay_ms(5);,/LCD初始化设定,13,/,设定,LCD,显示位置,void lcd_dis_pos(unsigned char pos),lcd_wcmd(pos|0 x80);/,数据指针,=80+,地址变量,/设定LCD显示位置,14,/,收发信号检测,数据读取,char receive(),uchar i;,com_data=0;,for(i=0;i=7;i+),respond=2;,while(!TRH),delay_us();,delay_us();,delay_us();,if(TRH),temp=1;,respond=2;,while(TRH),else,temp=0;,com_data=1;,com_data|=temp;,return(com_data);,/收发信号检测,数据读取,15,/读取温湿度子程序,void read_TRH(),TRH=0;,delay_ms(18);,TRH=1;,delay_us();,delay_us();,delay_us();,delay_us();,if(!TRH),respond=2;,while(!TRH),respond=2;,while(TRH /数据接收状态,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;,str10=(char)(0X30+RH_data/10);,str11=(char)(0X30+RH_data%10);,str12=0 x2e;/小数点,str13=(char)(0X30+RL_data/10);,str15=0X25;/%,str16=0X52;/R,str17=0X48;/H,str20=(char)(0X30+TH_data/10);,str21=(char)(0X30+TH_data%10);,str22=0 x2e;/小数点,str23=(char)(0X30+TL_data/10);,str25=0X27;/,str26=0X43;/C,/读取温湿度子程序 untemp=(RH_temp+RL_,16,主程序,v,oid main(),unsigned char i,n=0 x40,m;,lcd_init();,delay_us();,while(1),read_TRH();,for(i=0;i=7;i+),lcd_dis_pos(i);/显示字符,lcd_wdata(dis1i);,lcd_dis_pos(n+i);/显示字符,lcd_wdata(dis2i);,/写湿度数据,m=0 x08;,for(i=0;i=7;i+),lcd_dis_pos(m);,lcd_wdata(str1i);,m+;,/写温度数据,m=0 x48;,for(i=0;i=7;i+),lcd_dis_pos(m);,lcd_wdata(str2i);,m+;,主程序,17,
点击显示更多内容>>

最新DOC

最新PPT

最新RAR

收藏 下载该资源
网站客服QQ:3392350380
装配图网版权所有
苏ICP备12009002号-6