DHT11温湿度传感器51单片机在LCD1602显示程序(2)

2018-11-21 15:01

delay1();

temp=0;//时间为26us-28us?表示接收的为数据'0'

if(io==1) temp=1; //如果26us-28us之后?还为高电平?则表示接收的数据为'1'

while(io);//等待数据信号高电平?'0'为26us-28us?'1'为70us?

data_byte<<=1;//接收的数据为高位在前?右移? data_byte|=temp; }

return data_byte; }

void receive()//接收数据// {

uchar T_H,T_L,R_H,R_L,check,num_check,i;

start();//开始信号//

io=1; //主机设为输入?判断从机?DHT11?响应信号

if(!io)//判断从机是否有低电平响应信号//

{ while(!io);//判断从机发出 80us 的低电平响应信号是否结束// while(io);//判断从机发出 80us 的高电平是否结束?如结束则主机进入数据接收状态 R_H=receive_byte();//湿度高位

R_L=receive_byte();//湿度低位 T_H=receive_byte();//温度高位

T_L=receive_byte();//温度低位 check=receive_byte();//校验位 io=0; //当最后一bit数据接完毕后?从机拉低电平50us// for(i=0;i<7;i++)//差不多50us的延时 delay1(); io=1;//总线由上拉电阻拉高?进入空闲状态 num_check=R_H+R_L+T_H+T_L; if(num_check==check)//判断读到的四个数据之和是否与校验位相同

{

RH=R_H;

RL=R_L;

TH=T_H;

TL=T_L;

check=num_check;

} } }

//*****************************************************************************

void main()//主函数模块// {

lcd_init();//初始化LCD

while(1) {

receive();//接收数据

display(0x00,'R');//LCD的第一行显示

display(0x01,':');

display(0x02,RH/10+0x30); //0x30表示?带字库的LCD1602中0x30的位置放有数字0?RH/10+0x30即表示湿度的十位数字在字库RH/10+0x30的位置处放着?

display(0x03,RH+0x30);

display(0X04,'%');

display(0x40,'T');//LCD的第二行显示

display(0x41,':');

display(0x42,TH/10+0x30);

display(0x43,TH+0x30);

display(0x44,0xdf);//以下两个是温度单位的处理

display(0x45,0x43); } }

另附效果图:


DHT11温湿度传感器51单片机在LCD1602显示程序(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小学德育导师工作总结

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: