找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1330|回复: 3
打印 上一主题 下一主题
收起左侧

单片机DHT11接收数据异常,而且改变数据时LCD不会随之改变?

[复制链接]
跳转到指定楼层
楼主
第一次显示时基本没做什么改变


但是改变数据之后并没有反应

但是关闭重开又改变了


这是与温湿显示相关代码(还有其他的乱七八糟的代码太多太杂了,所以就单独把DHT11的拿了出来)
void LCD_DIer()//第二行固定符号
{
  LCD_Cursor(1);
        LCD_Charactor("T:");
}

void LCD_WEN()//温度示数显示
{               
        LCD_Data(shuzi[T_H]);
        LCD_Data(shuzi[T_L]);
        LCD_Data(0xdf);
        LCD_Data(0x43);
        LCD_Charactor(" H:");
//        LCD_Data(0x53);//固定S显示
//        LCD_Data(0x3a);
//        LCD_Data(0xa0);
}

void LED()//湿度警示灯
{
        if((S_L+S_H)>45&&(S_L+S_H)<60)
        GREEN=1;
        if((S_L+S_H)>60)
        YELLOW=1;
        if((S_L+S_H)<45)
        RED=1;
}

void LCD_SHI()//湿度示数显示
{
        LCD_Data(shuzi[S_H]);
        LCD_Data(shuzi[S_L]);
        LCD_Data(0x25);
}
void LCD_WENSHI()//温湿数据报警及警示灯
{
  if((S_L+T_H)>=50)//高温报警
        {
                GREEN=0;
                YELLOW=0;
                RED=1;
                delayms(200);
                RED=0;
                yy=1;
        }
        if((T_L+T_H)<50)
        yy=0;
        if(yy==0)
        LED();
}

void DHT11_start()//温湿传输信号判定(数据位移有问题)
{
        u8 i,Temp;//后续可能要加延时
        for(i=0;i<16;i++)
        {
                while(!LCD_T);
                delayus(30);
                Temp=0;
                if(LCD_T==1)
                        Temp=1;
                //while(LCD_T);
           sum<<=1;
                sum|=Temp;
  }
}

void LCD_Tem()//温湿开始电信号
{
        u8 i=0;
        LCD_T=1;
        LCD_T=0;
        Delay(200);
        LCD_T=1;
        delayus(80);
        while(LCD_T);
        while(!LCD_T);
        while(LCD_T);
        while(!LCD_T);
        DHT11_start();
        S=sum;
        DHT11_start();
        T=sum;
        DHT11_start();
        res=sum;
}
LCD_T就是DHT11与单片机连接的端口命名
这个是放在中断函数里的将个十位分开的代码
                if(T_H+T_L+S_H+S_L==res)
                {
                  T_H=(T/10)%10;
                  T_L=T%10;
                  S_H=(S/10)%10;
                  S_L=S%10;
                }

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:384109 发表于 2023-6-14 22:46 | 只看该作者
1602显示的是ASCII码,不是数字
回复

使用道具 举报

板凳
ID:1078664 发表于 2023-6-15 18:00 | 只看该作者
人中狼 发表于 2023-6-14 22:46
1602显示的是ASCII码,不是数字

显示我做了一个数组,把1602显示数字的的电信号按0-9写进去了
回复

使用道具 举报

地板
ID:1089749 发表于 2023-7-27 01:00 | 只看该作者
你好,请问解决了吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表