STM32单片机(七)ADC模拟数字转换器----第二节:ADC模数转换器练习1(AD单通道)

news/2024/11/30 2:25:21/

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。
☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋。
🌙专栏目标:实现从零基础入门51单片机和STM32单片机,力求在玩好单片机的同时,能够了解一些计算机的基本概念,了解电路及其元器件的基本理论等。

⭐️ 专栏主要内容: 主要学习STM32单片机的功能、各个模块、单片机的外设、驱动等,最终玩好单片机和单片机的外设,全程手敲代码,实现我们所要实现的功能。
🌴 专栏说明 :如果文章知识点有错误的地方,欢迎大家随时在文章下面评论,我会第一时间改正。让我们一起学习,一起进步。
💑专栏主页:http://t.csdn.cn/HCD8v

本学习过程参考:https://space.bilibili.com/383400717

STM3单片机安装软件、各种资料以及源码的路径:
链接:https://pan.baidu.com/s/1snD0uuTfMhchFqOMWvAiHA?pwd=asdf#list/path=%2F
提取码:asdf

链接里压缩包的解压密码:32

本大节主要学习ADC模拟数字转换器的相关知识,包含两小节:
第一小节主要学习ADC模拟数字转换器的理论基础知识,第二小节是对第一小节的内容写两个程序进行练习,分别是AD单通道和AD多通道;
最终附上所有的源代码;

本小节是对第一小节ADC模数转换器的内容写两个程序进行练习,分别是AD单通道和AD多通道;

文章目录

  • 一、本节目标
  • 二、练习一:AD单通道
    • 2.1 接线图
    • 2.2 源码

一、本节目标

目标:AD单通道
屏幕第一行显示的是AD转换后的原始数据,第二行是经过处理后实际的电压值;
在这里插入图片描述
当拧动电位器时:

  • 往左拧,AD值减小,电压值也减小;AD值最小是0,对应的电压就是0;
    在这里插入图片描述

  • 往右拧,AD值变大,对应的电压值也变大;STM32的ADC是12位的,所以AD结果最大值时4095,对应的电压是3.3V;
    在这里插入图片描述

二、练习一:AD单通道

2.1 接线图

在这里插入图片描述

  • 电位器左边引脚接负极,右边引脚接正极,中间引脚接PA0口;PA0-PB1这10个引脚都是ADC的通道,任选一个即可;

实物图如下所示:

在这里插入图片描述

2.2 源码

代码路径:

  • STM32入门教程资料\程序源码\STM32Project\7-1 AD单通道\User
  • STM32入门教程资料\程序源码\STM32Project\7-1 AD单通道\Hardware
#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "AD.h"uint16_t ADValue;
float Voltage;int main(void)
{OLED_Init();AD_Init();OLED_ShowString(1, 1, "ADValue:");OLED_ShowString(2, 1, "Volatge:0.00V");while (1){ADValue = AD_GetValue();Voltage = (float)ADValue / 4095 * 3.3;OLED_ShowNum(1, 9, ADValue, 4);OLED_ShowNum(2, 9, Voltage, 1);OLED_ShowNum(2, 11, (uint16_t)(Voltage * 100) % 100, 2);Delay_ms(100);}
}

AD.c:

#include "stm32f10x.h"                  // Device headervoid AD_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_ADCCLKConfig(RCC_PCLK2_Div6);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5);ADC_InitTypeDef ADC_InitStructure;ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;ADC_InitStructure.ADC_ScanConvMode = DISABLE;ADC_InitStructure.ADC_NbrOfChannel = 1;ADC_Init(ADC1, &ADC_InitStructure);ADC_Cmd(ADC1, ENABLE);ADC_ResetCalibration(ADC1);while (ADC_GetResetCalibrationStatus(ADC1) == SET);ADC_StartCalibration(ADC1);while (ADC_GetCalibrationStatus(ADC1) == SET);
}uint16_t AD_GetValue(void)
{ADC_SoftwareStartConvCmd(ADC1, ENABLE);while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);return ADC_GetConversionValue(ADC1);
}

http://www.ppmy.cn/news/568924.html

相关文章

0xc0150002错误

最近在项目中碰到了一个奇怪的问题,编译通过了,运行的时候碰到了这样的错误: LdrpWalkImportDescriptor( ) failed to probe xx.dll for its manifest ,错误代码0xc0150002 我用的是VC.net 2003的环境,运行的程序需要调用其他dll …

解决win10 安装.net3.5报错 失败代码0x800F0954

问题 安装.net 3.5报错,错误代码0x800F0954,报错截图如下图: 解决方法 1.打开注册表编辑器: winr输入regedit要以管理员身份运行; 2.找到路径: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Window…

错误代码0x80004005

错误代码0x80004005 在上网时突然发现自己登得上QQ,却无法打开浏览器怎么办? 更新注册表方式并不使用于所有电脑,对于一般用户而言,一步步排查的方式也很难完成修复,那么,有什么偷懒的办法呢?…

错误代码0x80004005解决方案

有很多朋友使用Win10系统,一些用户在想要访问共享设备的时候遇到了问题,提示网络错误,错误代码0X80004005,这种情况该怎么解决? 症状表现为通过网络共享那些设置完之后,还是无法访问其它电脑共享的文件夹或…

解决: 0x803f7001 在运行Microsoft Windows 非核心版本的计算机上,运行“ slui.exe 0x2a 0x803f7001 “以显示错误文本,激活win10步骤流程。

一. 解决 0x803F7001在运行Microsoft Windows非核心版本的计算机错误 首先,按下winR打开"运行",输入 regedit 后回车,打开注册表。   然后再注册表下输入地址HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProt…

0xc0000135应用程序无法正常启动解决办法

最近不少用户在安装了最新的Win11 KB5013943补丁后,运行某些程序的时候,电脑就出现了0xc0000135应用程序无法正常启动的错误提示,下面小编就带着大家一起看看怎么解决这个问题吧! 操作方法: 卸载 Windows 11 KB5013943…

win10的0x0000225及0x000007b修复方法

网上找了若干解决办法,WQNM,一堆叫兽,但是也可以借鉴其中的理论。我是这么解决的,网上说0x0000225是分区错误,但是我的系统是不能重新装的,必须使用win10自带的恢复才行。既然无法重装系统,分区…

OPC 0x00000005 问题

文章目录 拒绝访问错误 当你得到一个 “访问被拒绝。[0x00000005]” 错误,将以下修补程序应用于注册表: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System 创建或修改32位DWORD:LocalAccountToke…