当前位置: 首页 > 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.xdnf.cn/news/1153387.html

相关文章:

  • 论文略读: RASA: RANK-SHARING LOW-RANK ADAPTATION
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘sqlalchemy’问题
  • Linux内核设计与实现 - 第6章 内核数据结构
  • NX二次开发常用函数坐标转化UF_MTX4_csys_to_csys和UF_MTX4_vec3_multipl
  • 轻松学习C++:基本语法解析
  • 多线程 示例
  • leetcode_121 买卖股票的最佳时期
  • AWS Partner: Accreditation (Technical)
  • 轻松上手:从零开始启动第一个 Solana 测试节点
  • 综合实验--eNSP实验
  • TypeScript 泛型详解:从基础到实战应用
  • Linux中添加重定向(Redirection)功能到minishell
  • python网络爬虫之selenium库(二)
  • 【Web APIs】JavaScript 自定义属性操作 ② ( H5 自定义属性 )
  • 图片放大镜案例
  • Patch-wise Structural:一种引入局部统计特性的时序预测损失函数
  • CS231n-2017 Lecture3线性分类器、最优化笔记
  • QT窗口(7)-QColorDiag
  • [spring6: AspectJAdvisorFactory AspectJProxyFactory]-源码解析
  • Linux C 信号操作
  • “外卖大战”正在改变国内“大零售”
  • 图解系统-小林coding笔记
  • 骑行邂逅LV巨轮,VELO维乐Angel Rise坐垫与时尚超适配
  • YOLOv11改进 | RFAConv重塑空间注意力助力性能提升
  • 开关电源和线性电源Multisim电路仿真实验汇总——硬件工程师笔记
  • 使用UV管理FastAPI项目
  • HOT100——动态规划篇Leetcode221. 最大正方形
  • 模型自信度提升:增强输出技巧
  • 纸板制造糊机操作
  • Datawhale AI数据分析 作业