标题: DHT11+stm2f103c8t6小例程 [打印本页]

作者: 创新性实验    时间: 2018-11-5 11:05
标题: DHT11+stm2f103c8t6小例程
stm32关于DHT11与12864的例程

单片机源程序如下:
  1. #include "dht11.h"
  2. #include "delay.h"

  3. //////////////////////////////////////////////////////////////////////////////////         
  4. //DHT11数字温湿度传感器驱动代码          
  5. //VERS:1.0
  6. //DATE:2014/03/09                                                  
  7. //////////////////////////////////////////////////////////////////////////////////
  8.       
  9. //复位DHT11
  10. void DHT11_Rst(void)          
  11. {                 
  12.         DHT11_IO_OUT();         //SET OUTPUT
  13.     DHT11_DQ_OUT=0;         //拉低DQ
  14.     delay_ms(20);            //拉低至少18ms
  15.     DHT11_DQ_OUT=1;         //DQ=1
  16.         delay_us(30);             //主机拉高20~40us
  17. }
  18. //等待DHT11的回应
  19. //返回1:未检测到DHT11的存在
  20. //返回0:存在
  21. u8 DHT11_Check(void)           
  22. {   
  23.         u8 retry=0;
  24.         DHT11_IO_IN();//SET INPUT         
  25.     while (DHT11_DQ_IN&&retry<100)//DHT11会拉低40~80us
  26.         {
  27.                 retry++;
  28.                 delay_us(1);
  29.         };         
  30.         if(retry>=100)return 1;
  31.         else retry=0;
  32.     while (!DHT11_DQ_IN&&retry<100)//DHT11拉低后会再次拉高40~80us
  33.         {
  34.                 retry++;
  35.                 delay_us(1);
  36.         };
  37.         if(retry>=100)return 1;            
  38.         return 0;
  39. }
  40. //从DHT11读取一个位
  41. //返回值:1/0
  42. u8 DHT11_Read_Bit(void)                          
  43. {
  44.         u8 retry=0;
  45.         while(DHT11_DQ_IN&&retry<100)//等待变为低电平
  46.         {
  47.                 retry++;
  48.                 delay_us(1);
  49.         }
  50.         retry=0;
  51.         while(!DHT11_DQ_IN&&retry<100)//等待变高电平
  52.         {
  53.                 retry++;
  54.                 delay_us(1);
  55.         }
  56.         delay_us(40);//等待40us
  57.         if(DHT11_DQ_IN)return 1;
  58.         else return 0;                  
  59. }
  60. //从DHT11读取一个字节
  61. //返回值:读到的数据
  62. u8 DHT11_Read_Byte(void)   
  63. {        
  64.     u8 i,dat;
  65.     dat=0;
  66.         for (i=0;i<8;i++)
  67.         {
  68.                    dat<<=1;
  69.             dat|=DHT11_Read_Bit();
  70.     }                                                    
  71.     return dat;
  72. }
  73. //从DHT11读取一次数据
  74. //temp:温度值(范围:0~50°)
  75. //humi:湿度值(范围:20%~90%)
  76. //返回值:0,正常;1,读取失败
  77. u8 DHT11_Read_Data(u8 *temp,u8 *humi)   
  78. {        
  79.         u8 buf[5];
  80.         u8 i;
  81.         DHT11_Rst();
  82.         if(DHT11_Check()==0)
  83.         {
  84.                 for(i=0;i<5;i++)//读取40位数据
  85.                 {
  86.                         buf[i]=DHT11_Read_Byte();
  87.                 }
  88.                 if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
  89.                 {
  90.                         *humi=buf[0];
  91.                         *temp=buf[2];
  92.                 }
  93.         }else return 1;
  94.         return 0;            
  95. }
  96. //初始化DHT11的IO口 DQ 同时检测DHT11的存在
  97. //返回1:不存在
  98. //返回0:存在             
  99. u8 DHT11_Init(void)
  100. {         
  101.         GPIO_InitTypeDef  GPIO_InitStructure;
  102.        
  103.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);         //使能PG端口时钟
  104.        
  105.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;                                 //PG11端口配置
  106.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
  107.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  108.         GPIO_Init(GPIOG, &GPIO_InitStructure);                                 //初始化IO口
  109.         GPIO_SetBits(GPIOG,GPIO_Pin_11);                                                 //PG11 输出高
  110.                             
  111.         DHT11_Rst();  //复位DHT11
  112.         return DHT11_Check();//等待DHT11的回应
  113. }
复制代码

所有资料51hei提供下载:
STM32 DH11 12864.rar (275.24 KB, 下载次数: 45)



作者: 工学院陈伟霆    时间: 2018-11-5 21:31
请问你运行过吗,把正点原子的程序改一下就发出来,这是在骗下载吗
作者: 成信二狗    时间: 2019-6-18 15:47
过分了兄弟
作者: 郭大侠0-0    时间: 2019-10-10 23:38
太过分了什么东西




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