蓝桥杯物联网 EX2-9.ADC实验

该实验旨在掌握STM32L071微控制器的ADC功能,通过配置ADC模块、串口和时钟,读取电位器RP2的电压值并显示在OLED屏幕上。当电压超过1.5V时,点亮或熄灭PC15引脚上的LED。实验中,RP1连接通道9(PB1),RP2连接通道8(PB0)。
摘要由CSDN通过智能技术生成

实验目的:掌握STM32L071 ADC的基本功能和编程方法。

实验现象:OLED显示屏显示当前电压转接值。Pot&LED模块插到传感器位置,转动电位器RP2,屏幕显示变化的电压值。

前言:AD转换模块原理图如下

由原理图可以看出,RP1对应的引脚为PB1即采用通道9,RP2对应的引脚为PB0即采用通道8

一、STM32CubeMX配置

1、配置ADC模块

2、配置串口模块

3、配置时钟模块

二、在keil5中添加需要的代码

1、导入赛点资源包中的代码

2、添加实验代码

void Task_BrdInit(void)
{
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);//OLED屏幕供电
    HAL_Delay(200);//延时200ms很重要,否则可能会无法显示
    OLED_Init();
    OLED_Clear();
    OLED_ShowString(0, 0, (unsigned char *)"                ", 16);
    OLED_ShowString(0, 2, (unsigned char *)"                ", 16);
    OLED_ShowString(0, 0, (unsigned char *)"ADC Test        ", 16);
}
void Task_Main(void)
{
    float ADC_Value = 0;
    char lcdLine_2nd_line[16];
    HAL_ADC_Start(&hadc);
    ADC_Value=HAL_ADC_GetValue(&hadc)*(3.3/4095);
    if (ADC_Value >= 1.5)
        {
            HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_RESET);
        }
    else
        {
            HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_SET);
        }
    sprintf(lcdLine_2nd_line, "RP2:%.2fV", ADC_Value);
    OLED_ShowString(0, 2, (unsigned char *)lcdLine_2nd_line, 16);
    }
}

三、实验现象

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

躺平的居同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值