标题: 为啥DHT11在仿真里面可以监测温度显示在LCD上 实物里面不可以 [打印本页]

作者: molimoliyu    时间: 2020-4-30 16:25
标题: 为啥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


作者: 伤心的鲸鱼    时间: 2020-5-6 15:14
可能和单片机型号有关,我之前用的89C52的单片机的时候完全可以用,后来加点其他东西,改成15F单片机,改了改引脚,就测的全是0了
作者: 2413299692    时间: 2021-5-14 13:57
那仿真上能显示数字 实物里根本没有数据是怎么回事(0都不显示)   




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1