基于单片机温湿度控制全文-规范文件-在线文档.pptx

基于单片机温湿度控制全文-规范文件-在线文档.pptx

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

;设计思路;温湿度采集传感器:DHT11;DHT11时序;温湿度显示:LCD1602;1602读写时序图;总电路图;程序如下:;voiddelayNOP()

{

_nop_();

_nop_();

_nop_();

_nop_();

}

voiddelay_us()//5us级延时程序

{

uchari;i--;

i--;

i--;

i--;

i--;

i--;

};voiddelay_ms(unsignedcharms)//毫秒级延时子程序

{

unsignedchari;while(ms--)

{

for(i=0;i150;i++)

{

_nop_();

_nop_();

_nop_();

_nop_();

}

}

}; //测试LCD忙碌状态lcd_busy()为1时,忙,等待。lcd_busy()为0时,闲,可写指令与数据。

bitlcd_busy()

{

bitresult;

LCD_RS=0;

LCD_RW=1;

LCD_EN=1;

delayNOP();

result=(bit)(P00x80);

LCD_EN=0;

return(result);

};//写入指令数据到LCD

voidlcd_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;

}; //写显示数据到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初始化设定

voidlcd_init()

{

delay_ms(15);

lcd_wcmd(0x38);

delay_ms(5);

lcd_wcmd(0x0c);

delay_ms(5);

lcd_wcmd(0x06);

delay_ms(5);

lcd_wcmd(0x01);

delay_ms(5);

};//设定LCD显示位置

voidlcd_dis_pos(unsignedcharpos)

{

lcd_wcmd(pos|0x80);//数据指针=80+地址变量

};//收发信号检测,数据读取

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

}

else

temp=0;

com_data=1;

com_data|=temp;

}

return(com_data);

};//读取温湿度子程序

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(TRHrespond++);

//数据接收状态

RH_temp=receive();RL_temp=receive();TH_temp=receive();TL_temp=receive();CK_temp=receive();;//显示字符;if(TH_data34)

{

jiare=1;Jiangwen=0;

}

文档评论(0)

138****4229 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档