基于stm32单片机DHT11温湿度光敏光照检测OLED显示实物制作(源程序+原理图+PCB+元件清单)

资料编号:124

一:功能介绍

1、采用stm32单片机核心板+0.96寸OLED+DHT11温湿度传感器+光敏传感器,制作一个基于stm32单片机DHT11温湿度光敏光照检测OLED显示实物;

2、通过DHT11传感器采集当前的温湿度,并且显示到OLED显示屏上

3、通过光敏传感器采集当前光照强度,并且显示到OLED显示屏上

4、当光照强度低于一定值(阈值程序里面可以修改),LED指示灯熄灭(可以用来进行光控相关功能)

二:实物演示视频:

124-基于stm32单片机DHT11温湿度光敏光照检测OLED显示实物制作(源程序+原理图+PCB+元件清单)

三:设计软件介绍

本设计使用C语言编程设计,程序代码采用keil5编写,程序有中文注释,新手容易看懂,原理图和PCB采用AD(Altium Designer)绘制;资料包里有相关软件包,可自行下载安装。

四:程序打开方法

特别注意:下载资料包以后一定要先解压!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。

3fee40f2729c7a4026d81335a7a01d77.png

d84350651b8f3dc972d32ca1b6b09647.png

程序部分展示,有中文注释,新手容易看懂

static void DHT11_Mode_IPU(void)
{
     GPIO_InitTypeDef GPIO_InitStructure;


      /*选择要控制的macDHT11_Dout_GPIO_PORT引脚*/  
    GPIO_InitStructure.GPIO_Pin = macDHT11_Dout_GPIO_PIN;


     /*设置引脚模式为浮空输入模式*/ 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ; 


    /*调用库函数,初始化macDHT11_Dout_GPIO_PORT*/
    GPIO_Init(macDHT11_Dout_GPIO_PORT, &GPIO_InitStructure);   
  
}




/*
 * 函数名:DHT11_Mode_Out_PP
 * 描述  :使DHT11-DATA引脚变为推挽输出模式
 * 输入  :无
 * 输出  :无
 */
static void DHT11_Mode_Out_PP(void)
{
   GPIO_InitTypeDef GPIO_InitStructure;


     /*选择要控制的macDHT11_Dout_GPIO_PORT引脚*/                                 
    GPIO_InitStructure.GPIO_Pin = macDHT11_Dout_GPIO_PIN;  


  /*设置引脚模式为通用推挽输出*/
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   


  /*设置引脚速率为50MHz */   
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;


  /*调用库函数,初始化macDHT11_Dout_GPIO_PORT*/
    GPIO_Init(macDHT11_Dout_GPIO_PORT, &GPIO_InitStructure);      
  
}




/* 
 * 从DHT11读取一个字节,MSB先行
 */
static uint8_t DHT11_ReadByte ( void )
{
  uint8_t i, temp=0;
  


  for(i=0;i<8;i++)    
  {   
    /*每bit以50us低电平标置开始,轮询直到从机发出 的50us 低电平 结束*/  
    while(macDHT11_Dout_IN()==Bit_RESET);


    /*DHT11 以26~28us的高电平表示“0”,以70us高电平表示“1”,
     *通过检测 x us后的电平即可区别这两个状 ,x 即下面的延时 
     */
    delay_us(40); //延时x us 这个延时需要大于数据0持续的时间即可         


    if(macDHT11_Dout_IN()==Bit_SET)/* x us后仍为高电平表示数据“1” */
    {
      /* 等待数据1的高电平结束 */
      while(macDHT11_Dout_IN()==Bit_SET);


      temp|=(uint8_t)(0x01<<(7-i));  //把第7-i位置1,MSB先行 
    }
    else   // x us后为低电平表示数据“0”
    {         
      temp&=(uint8_t)~(0x01<<(7-i)); //把第7-i位置0,MSB先行
    }

  :原理图和PCB(使用AD(Altium Designer)绘制)

2c13e32cb89e255e05cc3abbc10af811.png

 03fb7fc0d76bbaa2eadbb9f97e990e69.png

:元器件清单和图片展示(可以放大图片查看具体实物)

ef0ba1ceba34c241f38c4855ecd370ab.png

:实物图展示

6cb5523815fb8e96e0e961ddf1d55e5b.jpeg

cfafaf1b5a175a5fb506bb418010d762.jpeg

392b3d55b3c483957250cf43558288d1.jpeg

八:资料清单展示(文件中包含的相关资料)

3afa2dbe9e77e72dd693946a72e7c4a5.png

资料分享链接(可点击)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值