Microchip PIC系列8位单片机入门教程(六)ADC

2023-12-02 01:38

本文主要是介绍Microchip PIC系列8位单片机入门教程(六)ADC,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Microchip PIC系列8位单片机入门教程(六)ADC

第一节 知识点

  1. ADC
    (1)10 位模数转换器(A/D)模块:28 引脚器件的模数(Analog-to-Digital,A/D)转换器具有10 路输入,而40/44 引脚器件的模数转换器则具有13 路输入。A/D 模块能将一个模拟输入信号转换成相应的10 位数字信号。

    (2)此模块有五个寄存器:
    • A/D 转换结果高位寄存器(ADRESH)
    • A/D 转换结果低位寄存器(ADRESL)
    • A/D 转换控制寄存器0 (ADCON0):A/D 模块的工作方式由ADCON0
    寄存器控制。
    • A/D 转换控制寄存器1 (ADCON1):端口引脚的功能由
    ADCON1 寄存器配置。
    • A/D 转换控制寄存器2 (ADCON2):由ADCON2 寄存器配置A/D 时钟源,编程采集时间和对齐方式。

    (3)执行A/D 转换时应该遵循以下步骤:

  1. 配置A/D 模块:
    • 配置模拟引脚、参考电压和数字I/O (通过
    ADCON1 寄存器)
    • 选择A/D 输入通道(通过ADCON0 寄存器)
    • 选择A/D 采集时间(通过ADCON2 寄存器)
    • 选择A/D 转换时钟(通过ADCON2 寄存器)
    • 使能A/D 模块(通过ADCON0 寄存器)

  2. 需要时,配置A/D 中断:
    • 清零ADIF 位
    • 将ADIE 位置1
    • 将GIE 位置1

  3. 如果需要,等待所需的采集时间。

  4. 启动转换:
    • 将GO/DONE 位置1 (ADCON0 寄存器)

  5. 等待A/D 转换完成,通过以下两种方法之一判断
    转换是否完成:
    • 查询GO/DONE 位是否被清零

    • 等待A/D 中断

  6. 读取A/D 结果寄存器(ADRESH:ADRESL),需
    要时将ADIF 位清零。

  7. 如需再次进行A/D 转换,返回步骤1 或步骤2。
    将每位的A/D 转换时间定义为TAD,在下一次采
    集开始前至少需要等待2 个TAD。

    (4)A/D 采集要求
    为了使A/D 转换器达到规定精度,必须使充电保持电容(CHOLD)充满至输入通道的电平。图19-3 给出了模拟输入的电路模型。电源阻抗(RS)和内部采样开关阻抗(RSS)直接影响电容CHOLD 充电的时间。采样开关(RSS)阻抗值随器件电压(VDD)不同而改变。电源阻抗将影响模拟输入的偏移电压(由于引脚泄漏电流的原因)。模拟信号源的最大阻抗推荐值为2.5 kΩ。在选择(改变)了模拟输入通道之后,必须对通道进行采样才能启动转换,采样时间必须大于最小采集时间。

    (5) 采样时间计算:
    在这里插入图片描述
    在这里插入图片描述

  1. ADC的原理框图:
    在这里插入图片描述
  2. 与ADC相关的寄存器:
    在这里插入图片描述
    在这里插入图片描述
    我们设置VCFG1=0,采用BSS作为参考电压VREF-;
    设置VCFG0=0,采用VDD作为VREF+的参考电压。
    配置PCFG3:PCFG0 进行采集模拟量的端口配置。
    在这里插入图片描述
    配置ADFM,ADC转化结构的格式是左对齐还是右对齐,这是应为ADC转化结果是10位的需要两个8位寄存器存储。
    ACQT2:ACQT0: A/D 采集时间选择位;
    ADCS2:ADCS0: A/D 转换时钟选择位。
    在这里插入图片描述
  3. 比如我们在实际中要采集电压,典型的电路图如下:
    在这里插入图片描述

代码设计

我们新建两个文件:
(1) adc_sample.h

/* Microchip Technology Inc. and its subsidiaries.  You may use this software * and any derivatives exclusively with Microchip products. * File:   adc_sample.h* Author: Greg* Comments:* Revision history:  2018-06-21*/// This is a guard condition so that contents of this file are not included
// more than once.  
#ifndef _ADC_SAMPLE_H_
#define	_ADC_SAMPLE_H_#include <xc.h> // include processor files - each processor file is guarded.  #define Channel_0_ON 0b0000
#define Channel_1_ON 0b0001
#define Channel_2_ON 0b0010
#define Channel_3_ON 0b0011
#define Channel_4_ON 0b0100
#define Channel_5_ON 0b0101
#define Channel_6_ON 0b0110
#define Channel_7_ON 0b0111
#define ADC_Channel_select ADCON0bits.CHS
#define ADC_ENABLE ADCON0bits.ADON=1

这篇关于Microchip PIC系列8位单片机入门教程(六)ADC的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/443479

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering)

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering) Power Iteration Clustering (PIC) 是一种基于图的聚类算法,用于在大规模数据集上进行高效的社区检测。PIC 算法的核心思想是通过迭代图的幂运算来发现数据中的潜在簇。该算法适用于处理大规模图数据,特别是在社交网络分析、推荐系统和生物信息学等领域具有广泛应用。Spa

单片机毕业设计基于单片机的智能门禁系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订

STM32 ADC+DMA导致写FLASH失败

最近用STM32G070系列的ADC+DMA采样时,遇到了一些小坑记录一下; 一、ADC+DMA采样时进入死循环; 解决方法:ADC-dma死循环问题_stm32 adc dma死机-CSDN博客 将ADC的DMA中断调整为最高,且增大ADCHAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, ADC_Buffer_Size); 的ADC_Bu