STM32F407霸天虎HAL库学习笔记——使用ADC采集MQ135的数据和DS18B20并通过OLED显示

12 篇文章 3 订阅
9 篇文章 2 订阅

STM32F407霸天虎HAL库学习笔记——使用ADC采集MQ135的数据和DS18B20并通过OLED显示

关于MQ135,DS18B20和OLED的使用,在之前的文章中都有写过(传送门):
MQ135DS18B20OLED

本次实验是将这几个传感器组在一起做一个场景模拟

一、软件准备

软件准备

二、硬件准备

STM32F407霸天虎
DAP高速下载器
USB转串口线

三、CubeMX配置

STM32F407霸天虎用的是STM32F407ZGT6
在这里插入图片描述
选择外部高速时钟
在这里插入图片描述
在这里插入图片描述
I2C的配置如下:
在这里插入图片描述
ADC配置如下:
在这里插入图片描述
tim的配置
在这里插入图片描述
DS18B20的引脚
在这里插入图片描述

时钟树选择168MHz,具体配置方法见上篇的时钟树配置在这里插入图片描述
而后根据自己的喜好编辑工程的名称,存放位置,IDE选择ARM-MDKV5
在这里插入图片描述
在这里插入图片描述

四、Keil

由于我们的Debug用的是DAP,如图下选择Debug和下载配置
在这里插入图片描述

MQ135.c

#include "MQ135.h"
#include "adc.h"
#include "oled.h"
#include <math.h>

/**
  * @brief    MQ135的初始化,启动ADC1
  * @param    none
  * @retval   none
*/
void MQ135_Init(void)
{
	HAL_ADC_Start(&hadc1);
  
  HAL_ADC_PollForConversion(&hadc1, 50);
	
}

/**
  * @brief    读取MQ135的ADc值
  * @param     
  * @retval   none
*/
void MQ135_ReadData(void)
{
	float vol;				//实际所得的电压值
	int val;					//输入转换的数字量	
	if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1),HAL_ADC_STATE_REG_EOC))
        {
          val = HAL_ADC_GetValue(&hadc1);
					
        }
				vol = (float)val*3.3 / 4096;
				OLED_ShowCHinese(0,2,5);	//空
				OLED_ShowCHinese(0+16,2,6);	//气
				OLED_ShowCHinese(0+16+16,2,7);	//质
				OLED_ShowCHinese(0+16+16+16,2,8);	//量
				OLED_Showfloat(80,2,vol ,1,3,16);
				HAL_Delay(100);


}




MQ135.h

#ifdef 	__MQ135_H__
#define	__MQ135_H__

#include "stm32f4xx_hal.h"


void MQ135_Init(void);
void MQ135_ReadData(void);

#endif

main函数


 /* USER CODE BEGIN 2 */
	OLED_Init();
	OLED_Clear();
	MQ135_Init();
	uint16_t temp;
	int      intT;
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		OLED_ShowCHinese(0,0,0);  //物
		OLED_ShowCHinese(16,0,1);	//联
		OLED_ShowCHinese(32,0,2);	//网
		OLED_ShowCHinese(48,0,3);	//小
		OLED_ShowCHinese(64,0,4);	//白
		temp = DS18B20_Read_Temperature();
		intT   = temp >> 4 ;          /*合成实际温度整数部分*/ 	
		OLED_ShowCHinese(0,4,9);	//温
		OLED_ShowCHinese(48,4,10);	//度
		OLED_ShowNum(80,4,intT,2,16);
		MQ135_ReadData();
		HAL_Delay(500);
  }
  /* USER CODE END 3 */

五、实验效果

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值