找回密码
 立即注册

QQ登录

只需一步,快速开始

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

DHT11+stm2f103c8t6小例程

[复制链接]
跳转到指定楼层
楼主
ID:420936 发表于 2018-11-5 11:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:326261 发表于 2018-11-5 21:31 | 只看该作者
请问你运行过吗,把正点原子的程序改一下就发出来,这是在骗下载吗
回复

使用道具 举报

板凳
ID:282575 发表于 2019-6-18 15:47 | 只看该作者
过分了兄弟
回复

使用道具 举报

地板
ID:559487 发表于 2019-10-10 23:38 | 只看该作者
太过分了什么东西
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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