找回密码
 立即注册

QQ登录

只需一步,快速开始

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

为啥DHT11在仿真里面可以监测温度显示在LCD上 实物里面不可以

[复制链接]
跳转到指定楼层
楼主
这是仿真是可以的   但是实物上是现实的两个0,想让大佬帮忙看看程序有没有问题。具体程序我上传在下面了



uint mq7;
uint mq135;
uchar wendu;
uchar shidu;

//                        aem
typedef unsigned char  U8;       /* defined for unsigned 8-bits integer variable    无符号8位整型变量  */
typedef signed   char  S8;       /* defined for signed 8-bits integer variable    有符号8位整型变量  */
typedef unsigned int   U16;      /* defined for unsigned 16-bits integer variable    无符号16位整型变量 */
typedef signed   int   S16;      /* defined for signed 16-bits integer variable    有符号16位整型变量 */
typedef unsigned long  U32;      /* defined for unsigned 32-bits integer variable    无符号32位整型变量 */
typedef signed   long  S32;      /* defined for signed 32-bits integer variable    有符号32位整型变量 */
typedef float          F32;      /* single precision floating point variable (32bits) 单精度浮点数(32位长度) */
typedef double         F64;      /* double precision floating point variable (64bits) 双精度浮点数(64位长度) */
//
#define uchar unsigned char
#define uint unsigned int
#define   Data_0_time    4
//----------------------------------------------//
//----------------IO口定义区--------------------//
//----------------------------------------------//
sbit  DQ= P1^7 ;
//----------------------------------------------//
//----------------定义区--------------------//
//----------------------------------------------//
U8  U8FLAG,k;
U8  U8count,U8temp;
U8  U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
U8  U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
U8  U8comdata;
U8  outdata[5];  //定义发送的字节数   
U8  indata[5];
U8  count, count_r=0;
U16 U16temp1,U16temp2;
void  COM(void);
void Delay2(U16 j)
  {      
   U8 i;
   for(;j>0;j--)
   {  
    for(i=0;i<27;i++);
   }
  }
        void  Delay_10us(void)
      {
        U8 i;
        i--;
        i--;
        i--;
        i--;  
        i--;
        i--;
        
       }

        void  COM(void)
      {
     
         U8 i;
         
       for(i=0;i<8;i++)   
     {
  
         U8FLAG=2;
     while((!DQ)&&U8FLAG++);
      Delay_10us();
      Delay_10us();
      Delay_10us();
      U8temp=0;
      if(DQ)U8temp=1;
      U8FLAG=2;
   while((DQ)&&U8FLAG++);
     //超时则跳出for循环   
      if(U8FLAG==1)break;
     //判断数据位是0还是1  
        
  // 如果高电平高过预定0高电平值则数据位为 1
      
     U8comdata<<=1;
        U8comdata|=U8temp;        //0
      }//rof
   
}
//--------------------------------
//-----湿度读取子程序 ------------
//--------------------------------
//----以下变量均为全局变量--------
//----温度高8位== U8T_data_H------
//----温度低8位== U8T_data_L------
//----湿度高8位== U8RH_data_H-----
//----湿度低8位== U8RH_data_L-----
//----校验 8位 == U8checkdata-----
//----调用相关子程序如下----------
//---- Delay();, Delay_10us();,COM();
//--------------------------------

void duqu(void)
{
   //主机拉低18ms
       DQ=0;
    Delay2(180);
    DQ=1;
  //总线由上拉电阻拉高 主机延时20us
    Delay_10us();
    Delay_10us();
   Delay_10us();
   Delay_10us();
  
  //主机设为输入 判断从机响应信号
    DQ=1;
  //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行   
    if(!DQ)   //T !   
    {
    U8FLAG=2;
  //判断从机是否发出 80us 的低电平响应信号是否结束  
    while((!DQ)&&U8FLAG++);
    U8FLAG=2;
  //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
    while((DQ)&&U8FLAG++);
  //数据接收状态   
    COM();
    U8RH_data_H_temp=U8comdata;
    COM();
    U8RH_data_L_temp=U8comdata;
    COM();
    U8T_data_H_temp=U8comdata;
    COM();
    U8T_data_L_temp=U8comdata;
    COM();
    U8checkdata_temp=U8comdata;
    DQ=1;
  //数据校验
  
    U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
    if(U8temp==U8checkdata_temp)
    {
       U8RH_data_H=U8RH_data_H_temp;
       U8RH_data_L=U8RH_data_L_temp;
       U8T_data_H=U8T_data_H_temp;
       U8T_data_L=U8T_data_L_temp;
       U8checkdata=U8checkdata_temp;
    }//fi
    }//fi
}



IMG_20200430_162423.jpg (3.96 MB, 下载次数: 18)

IMG_20200430_162423.jpg

51hei截图20200430161504.png (110.91 KB, 下载次数: 15)

51hei截图20200430161504.png

红外测距壁障小车.zip

3.03 KB, 下载次数: 7

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

使用道具 举报

沙发
ID:565401 发表于 2020-5-6 15:14 | 只看该作者
可能和单片机型号有关,我之前用的89C52的单片机的时候完全可以用,后来加点其他东西,改成15F单片机,改了改引脚,就测的全是0了
回复

使用道具 举报

板凳
ID:894722 发表于 2021-5-14 13:57 | 只看该作者
那仿真上能显示数字 实物里根本没有数据是怎么回事(0都不显示)   
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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