当前位置: 首页 > news >正文

day11 ADC

1.1ADC的概述

ADC:模数转换----模拟量转换成数字量

模拟量:是指一段连续的值

数字量:是指一段离散的值

ADC会将检测到的一段连续的数值,转换为一些离散的数字量,在STM32中,ADC主要转换的对象就是IO接收到的电压。

1.2ADC外设的概述

12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。

12位:ADC的分辨率(描述的数的准确性)

逐次逼近型ADC

若想要计算一个物品的重量,已知当前最大的砝码重量为100g 后面依次为 50g 20g 10g 5g 1g

从重量最多的砝码依次与物品比对,若比物品轻则增加砝码,否则更换砝码

ADC:若选择8bit分辨率

数据的左对齐与右对齐:数据寄存器有16位,而分辨率最高12位,则保存数据时可以选择保存在数据寄存器的右侧或左侧(高位或低位)

1.3ADC框图

由框图可知,转换某个数据源的模拟量数据其步骤大致为

  1. 选择转换通道
  2. 为ADC提供转换频率
  3. 配置ADC的相关参数(转换周期、转换间隔、模式选择等)
  4. 产生一次开始转换信号
  5. 等待EOC置位
  6. 从数据寄存器中读取数据

2 DHT11使用

2.1温湿度模块的特点

查看DHT11数据手册:知DHT11使用单线制串行接口,4针排针引脚,供电电压3-5.5v

2.2温湿度模块的原理

通信协议
◦ 启动信号:主机拉低总线至少 18ms,随后释放并等待传感器响应(拉低 40–80μs)。
◦ 数据传输:每次传输 40 位数据(湿度整数(8位)/小数(8位) + 温度整数(8位)/小数(8位) + 校验和(8位)),高位先发MSB。
数据格式示例
◦ 湿度:45.0%RH → 字节4(整数) + 字节3(小数)
◦ 温度:28.0℃ → 字节2(整数) + 字节1(小数)
◦ 校验和:湿度 + 温度(校验最后 8 位)。

2.3初始化配置步骤

初始化配置输入  /  输出模式

因为使用单总线模式,所以既要输入也要输出;在开始信号和结束信号处需要信号输出。

①通信开始

void DHT_Start(void)
{
//设置输出模式
DHT11OUT_Init();
GPIO_SetBits(GPIOG,GPIO_Pin_9);//若电平是低电平,无法产生下降沿,所以先拉高
//把总线拉低,延时20ms等待
GPIO_ResetBits(GPIOG,GPIO_Pin_9);
Delay_ms(20);

//总线拉高
GPIO_SetBits(GPIOG,GPIO_Pin_9);
Delay_us(30);    
}

②通信过程

检测是否响应:

③读取1bit数据

④读取一个字节数据

如果先与后左移的话,即先将数据接收过来再将整体位左移一位。如果这样的话最后一次循环中接收到的数据会被移动到前一位。先左移后接收的话,初始值为0,左移也是0并不影响。

⑤获取DHT11的温湿度数据

通信结束,这个不管

⑥主函数循环

int main()
{
uint8_t  DHT_DataBuf[5] = {0};

//1.硬件初始化
USART1_Init(9600); //如果USART1的波特率和USART3不一致,就可能会出现丢包 
USART3_Init(9600);
SysTick_Init();

    
//2.进入死循环
while(1)
{
DHT_GetData(DHT_DataBuf);//获取到温湿度数据
printf("Temp = %d ,Humi = %d \n",DHT_DataBuf[2],DHT_DataBuf[0]);
Delay_ms(500);
Delay_ms(500);
Delay_ms(500);
}
}

出现问题:

2.4通信信号

http://www.lryc.cn/news/593820.html

相关文章:

  • 深入解析Linux文件重定向原理与dup2系统调用
  • MyBatis之缓存机制详解
  • 立创EDA中双层PCB叠层分析
  • 如何快速学习一门新技术
  • Java SE 讨论String类
  • QML 动画效果详解
  • Temperature 是在LLM中的每一层发挥作用,还是最后一层? LLM中的 Temperature 参数 是怎么计算的
  • 车载通信架构 --- DoIP协议通信
  • 2025年睿抗机器人开发者大赛CAIP-编程技能赛(省赛)-RoboCom 世界机器人开发者大赛-本科组
  • 2021 RoboCom 世界机器人开发者大赛-本科组(初赛)解题报告 | 珂学家
  • Lock4j 使用说明
  • 使用Python进行文件拷贝的方法
  • 地图定位与导航
  • Claude Code 最新详细安装教程
  • 研华PCI-1285/1285E 系列------(一概述)
  • 模型自信度提升:增强输出技巧
  • 国产电科金仓数据库金仓KES V9 2025:AI时代的数据库融合标杆
  • docker|Linux|以centos基础镜像为基础制作nmap专用镜像(镜像瘦身计划)
  • 基于大模型打造故障预警服务器巡检机器人
  • CSS面试题及详细答案140道之(81-100)
  • 如何解决AttributeError: ‘NoneType‘ object has no attribute问题
  • 13.5 Meta LLaMA 2核心技术拆解:4T数据训练+30%显存优化,70B模型准确率82.6%
  • 文献阅读:全球农田的植被总初级生产力(GPP)、蒸散发(ET)和水分利用率(WUE)的变化研究
  • 数据分析综合应用 30分钟精通计划
  • 重学Framework Input模块:如何实现按键一键启动Activity-学员作业
  • 纸板制造糊机操作
  • C++STL系列之vector
  • 尚庭公寓-----day2 业务功能实现
  • 计算机视觉:AI 的 “眼睛” 如何看懂世界?
  • 万字解析LVS集群