PIC单片机入门_8位AD转换器

发布者:玉立风华最新更新时间:2018-07-30 来源: eefocus关键字:PIC单片机  8位AD转换器 手机看文章 扫描二维码
随时随地手机看文章

1.前言

PIC16F876的模数转换器 (A/D) 模块有多达 8 个模拟输入通道。如果选择8位A/D 转换器,那么芯片可以将能将一个模拟输入信号转换成相应的 8 位数字信号。采样保持输出是转换器的输入,A/D 转换器采用逐次逼近法产生转换结果。通过软件设置,模拟参考电压可以选择为器件的正向电源电压 (VDD) 或 VREF 引脚上的电平。 A/D 转换器具备可在休眠状态下工作的独特特性。

2.AD控制原理

与A/D 转换器相关连得有 3 个寄存器,它们分别是:
• A/D 结果寄存器 (ADRES)      
• A/D 控制寄存器 0 (ADCON0)  控制 A/D 模块的操作
• A/D 控制寄存器 1 (ADCON1)   端口的引脚功能进行配置I/O 引脚可被配置成模拟输入 ( 其中一个 I/O 也可作为模拟参考电压 ) 或数字 I/O 口。 
A/D 模块结构框图如图 所示:


2.1 AD控制寄存器0:控制A/D模块操作


bit [7:6] ADCS1:ADCS0:A/D 转换时钟选择位;00 = FOSC/2;01 = FOSC/8;10 = FOSC/32;11 = FRC ( 来自内部 A/D 的 RC 振荡器的时钟 )

bit [5:3] CHS2:CHS0:模拟通道选择位;000 = channel 0, (AN0);001 = channel 1, (AN1);010 = channel 2, (AN2);011 = channel 3, (AN3);100 = channel 4, (AN4);101 = channel 5, (AN5);110 = channel 6, (AN6);111 = channel 7, (AN7)。

注:PIC16F876A仅提供AN0~AN4模拟通道选择位。

bit 2 GO/DONE:A/D 转换状态位;当 ADON = 1 时,1 = A/D 转换正在进行;( 该位置 1 启动 A/D 转换。 A/D 转换结束后该位由硬件自动清零 );0 = 未进行 A/D 转换
bit 1 保留 : 总是保持该位为 0。
bit 0 ADON: A/D 模块开启位;1 = A/D 转换器模块工作;0 = A/D 转换器关闭,不消耗工作电流。

2.2 控制寄存器 1 (ADCON1):引脚功能配置


bit 7     ADFM: A/D转换结果格式选择位  1 = 右对齐  0 = 左对齐

bit6      ADCS2:A/D转换时钟选择位


bit 3:0 PCFG2:PCFG0:A/D 端口配置控制位;其端口配置效果图如下所示:


注 : 当 AN3 被选作 VREF 时, A/D 的参考电压为 AN3 引脚的电压。当 AN3 被选作模拟输入 (A) 时, A/D 的参考电压为器件的 VDD。

3.AD操作细则

当A/D转换完成之后,转换结果被载入ADRES寄存器,GO/DONE (ADCON0<2>)位被清零,且A/D中断标志位 ADIF 置 1。
当配置好 A/D 模块后,在启动转换前必须先选择A/D转换的通道。模拟输入通道的相应TRIS位
必须设置为输入。采集时间 ( acquisition time) 的确定我们要详细说明。在这一采集时间过去之后,A/D转换即可开始。

3.1 AD采集需要遵循的步骤 

1. 配置 A/D 模块:对模拟引脚 / 参考电压 / 数字 I/O (ADCON1) 进行配置;选择 A/D 输入通道 (ADCON0);选择 A/D 转换时钟 (ADCON0);打开 A/D 转换模块 (ADCON0)
2. 需要时,设置 A/D 中断: 将 ADIF 位清零;将 ADIE 位置 1;将 GIE 位置 1
3. 等待所需的采集时间
4. 启动 A/D 转换:将 GO/DONE 置 1 (ADCON0)
5. 等待 A/D 转换完成,通过以下两种方法之一可判断转换是否完成:轮询 GO/DONE 位是否被清零;或等待 A/D 转换的中断。
6. 读取 A/D 结果寄存器 (ADRES),需要时将 ADIF 位清零。
7. 要再次进行 A/D 转换,根据要求转入步骤 1 或步骤 2。每一位的 A/D 转换时间定义为 TAD。在下一次采集开始前至少需要等待 2TAD。

A/D 转换时序如下:


3.2 AD采集时间要求

TACQ = 放大器的建立时间 + 保持电容充电时间 +温度系数 = TAMP + TC + TCOFF

PIC为中档单片机提供了最小采集时间计算参考;由于这一部分我只是工程上的应用,没有进行芯片原理探究;只给出一个参考公式,其余的不做涉猎:

TACQ = TAMP + TC + TCOFF
TACQ = 5 µs + Tc + [(Temp - 25°C)(0.05 µs/°C)]
TC = -CHOLD (RIC + RSS + RS) ln(1/512)-51.2 pF (1 kΩ + 7 kΩ + 10 kΩ) ln(0.0020)-51.2 pF (18 kΩ) ln(0.0020)-0.921 µs (-6.2146) =5.724 µs
TACQ = 5 µs + 5.724 µs + [(50°C - 25°C)(0.05 µs/°C)]=10.724 µs + 1.25 µs=11.974 µs。

3.3 AD采集过程中时钟的选择

每一位的 A/D 转换时间被定义为 TAD。每完成一次 8 位 A/D 转换需要 9.5 TAD。 A/D 转换的时钟
源可用软件进行选择。 TAD 的 4 种选项为:2TOSC;8TOSC;32TOSC;内部 RC 振荡器
为了确保 A/D 转换正确,所有器件的 A/D 转换时钟 (TAD) 的选择必须满足最小 1.6 µs 的 TAD时
间。下表 显示了器件在不同工作频率下以及所选的不同A/D时钟源下得到的TAD结果。


阴影部分不在推荐工作范围内。1: RC 时钟源的典型 TAD 为 4 µs。2: 这些值违反了所需最小 TAD 时间。3: 要加快转换时间,建议选择另一时钟源。4: 器件工作频率高于 1 MHz 时,整个转换过程应在休眠模式下进行,否则 A/D 转换精度可能超出允许范围。

3.4 配置模拟输入端口

ADCON1 和相应的 TRIS 寄存器用来控制 A/D 端口引脚的运行。若希望端口引脚为模拟输入,则必须将其相应的 TRIS 位置 1( 输入 ) ;A/D 转换与 CHS2:CHS0 位及 TRIS 位的状态无关。

3.5 正式进行AD转换

下面一步一步介绍如何进行 A/D 转换。I/O 引脚被配置成模拟输入。模拟参考电压 (VREF) 为器件电压 VDD。使能 A/D 中断,A/D 转换时钟设为 FRC。该转换在 AN0 通道上进行。

注:由于所需采集时间的要求, 不应在打开 A/D 模块的同一指令中将 GO/DONE 位置 1(唤醒AD采集模块与开始进行AD采集必须分开)!!!

在转换期间将 GO/DONE 位清零将中止当前 A/D 转换。 ADRES 寄存器中的内容不会被部分完成的 A/D 转换样本所更新, ADRES 寄存器仍然保持上一次转换完成后的结果 ( 或上一次写入ADRES 寄存器中的值 )。 A/D 转换被中止后,在下一次采集开始前,需要等待 2TAD 时间。 等待 2TAD 之后,采集将在所选通道上自动开始。

实例:

BSF   STATUS, RP0 ;STATUS的PRO置1

CLRF  ADCON1      ;配置AD控制寄存器1,即进行端口配置

BSF   PIE1, ADIE  ;PIE1的中断寄存器ADIE使能位置1

BCF   STATUS, RP0 ;STATUE的PRO位清零

MOVLW 0xC1        ;RC时钟, A/D被开启,选择了通道0

MOVWF ADCON0      ;配置AD控制寄存器0,C1=1100 0001 唤醒了AD 却不能让他工作!

BCF   PIR1, ADIF  ;A/D中断标志位清零

BSF   INTCON, PEIE;开启外围中断使能,置1

BSF   INTCON, GIE ;开启全局中断使能,置1

 

BSF ADCON0, GO ;在此处才正式开启 A/D 装换功能

: ; The ADIF bit will be set and the GO/DONE

: ; bit is cleared upon completion of the

: ; 

AD工作流程图具体如下所示:

4.讨论一下复位对AD采样的影响

器件复位迫使所有寄存器进入复位状态,同时迫使 A/D 模块关闭并中止任何正在进行的转换。上电复位时, ADRES 寄存器中的值保持不变。上电复位后 ADRES 寄存器中的值不确定。

5.同学问的一个小问题

早晨,同学问我,我代码中重复出现BSF,BCF,是不是数据和程序的差别?

NO!NO!NO!先看英文  BSF = Bit Set; BCF:Bit Clear  

BSF  f,b     给f 的第b位置1
BCF  f,b     给f 的第b位清0



关键字:PIC单片机  8位AD转换器 引用地址:PIC单片机入门_8位AD转换器

上一篇:PIC单片机入门_同步/异步通信技术基础
下一篇:PIC单片机入门_输入输出端口详解

推荐阅读最新更新时间:2024-03-16 16:10

PIC单片机实现音乐播放
源程序: 以下程序要用二个定时器资源,凡是有二个定时器的PIC单片机均可实现,该范例需要的MCU是MICROCHIP PIC16C62 INCLUDE "D:PICP16XX.EQU" ;该文件在MICROCHIP光盘中可找到 ;************************************************** #define BeepOut RC,4 ;************************************************** W_TEMP EQU 0X20 ;(0XA0) STATUS_TEMP EQU 0X21 BeepCnt equ 30h TmrBak e
[单片机]
pic单片机程序设计的基本方法解析
pic单片机在学习和工作中均扮演着重要角色,在往期文章中,小编曾对pic单片机汇编指令加以介绍,以帮助大家更好掌握pic单片机。而在本文中,将介绍pic单片机程序设计内容,以助大家写出更为优美的pic单片机程序,主要内容如下。 1、PIC单片机程序的基本格式 先介绍二条伪指令: EQU ——标号赋值伪指令 ORG ——地址定义伪指令 PIC16C5X单片机在RESET后指令计算器PC被置为全“1”,所以PIC16C5X几种型号芯片的复位地址为: PIC16C54/55:1FFH PIC16C56:3FFH PIC16C57/58:7FFH 一般来说,PIC单片机的源程序并没有要求统一的格式,大家可以根据自己的风格来编写。但这里
[单片机]
<font color='red'>pic单片机</font>程序设计的基本方法解析
PIC单片机键盘系统的设计方案解析
(1)单片机系统键盘原理 行列式键盘的接法比独立式键盘的接法复杂,编程实现上也会比较复杂。但是,在占用相同的I/O端口的情况下,行列式键盘的接法会比独立式接法允许的按键数量多,其原理图如图1所示。 图1 4×4行列式键盘的原理图 实际的工程中,可能会使用PIC16C5X这种通用的可编程的键盘、显示接口器件,使用PIC16C5X单片器件就能够完成键盘输入和显示控制两种功能。 行列式键盘的工作方式是先用列线发送扫描字,然后读取行线的状态,查看是否有按键按下。键盘部分提供一种扫描的工作方式,可以和具有64个按键的矩阵键盘相连接,能对键盘不断扫描、自动消抖、自动识别按下的键,并给出编码,能对双键或n个键同时按下的情况实行保护。
[单片机]
<font color='red'>PIC单片机</font>键盘系统的设计方案解析
PIC单片机外部振荡电路设计
晶振设计是单片机应用设计的重要环节之一,因此很有必要了解晶振电路的特点,组成以及如何选用相关电子元件。 PIC单片机有四种振荡方式可供选择,振荡方式经配置寄存器CONFIG的F0SC1,F0SC0位加以选择,并在EPROM编程时写入。 晶体振荡器/陶瓷振荡器: XT、LP、HS三种方式中,需一晶体或陶瓷谐振器连接到单片机的OSC1/CLKIN和OSC2/CLKOUT引脚上,以建立振荡,如图1所示。电阻RS常用来防止晶振被过分驱动。在晶体振荡下,电阻RF≈10MΩ。对于32KHZ以上的晶体振荡器,当VDD 4.5V时,建议C1=C2≈30PF。(C1:相位调节电容;C2:增益调节电容。) 表1:振荡器类型选择F0SC1F0S
[单片机]
<font color='red'>PIC单片机</font>外部振荡电路设计
PIC单片机的抗干扰能力强还是AVR单片机的强
简介:单片机的抗干扰性能历来为大家所重视,现在市面上的单片机就我所接触过的,就有十家左右了,韩国的三星和现代;日本的三菱,日立,东芝,富士通,NEC;台湾的EMC,松汉,麦肯特,合泰;美国的摩托罗拉,国半的cop8系列,microchip系列,TI的msp430系列,AVR系列,51系列,欧洲意法半导体的ST系列。。。。。。 这些单片机的抗干扰性能大多数鄙人亲自测试过,所用机器是上海三基出的两种高频脉冲干扰仪,一种是欧洲采用的标准,一种是日本采用的标准;日本的标准歉咂德龀辶⒊觯龀蹇矶却?0ns到250ns可调,欧洲采用的标准是脉冲间歇(间歇时间和发出时间可调)发出,脉宽也是从50ns到250ns可调;我们国家采用的是欧洲
[单片机]
什么是PIC单片机又有何应用
PIC单片机(Peripheral Interface Controller)是一种用来开发的去控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。 PIC 单片机是一个小的计算机 PIC单片机有计算功能和记忆内存像CPU并由软件控制允行。然而,处理能力—存储器容量却很有限,这取决于PIC的类型。但是它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。 时钟频率与扫描程序的时间和执行程序指令的时间有关系。但不能仅以时钟频率来判断程序处理能力,它还随处理装置的体系结构改变(1*)。如果是同样的体系结构,
[单片机]
什么是<font color='red'>PIC单片机</font>又有何应用
PIC单片机之AD转换
AD转换 我们先看看R1和R2,R2是个可调电阻 如果我们将R2变大 RA0这个管脚上的电压就越大。R2变小 RA0这个管脚上的电压就越小。那单片机是怎么知道电压变化的。这就需要AD转换。就是将模拟量转换成数字量。 PIC单片机如何表示电压 PIC用十位二进制位的数来表示电压,也就是数值0~1023来表示电压。那比如现在这个数值是400那这代表多少的电压?这就要根据参考电压来确定了。 比如我们设置正参考电压为3.3V ,当输入的电压为0时,数值就为0。当输入的电压为3.3V时,数值就是1023. 那如果输入的电压是1.2V代表多少电压。 首先,先算出一个数值代表多少的电压 3.3V除以1023 约等于 0.
[单片机]
<font color='red'>PIC单片机</font>之AD转换
PIC单片机按键控制PWM输出LED灯亮度C语言程序
#include pic.h //调用头文件,可以去PICC软件下去查找PIC16F87XA单片机的头文件 __CONFIG(0x3b31); //定义配置字,晶振类型:XT,启动开门狗,禁止低电压编程 //************************************************************************ #define HC138_A RE2 //定义U6、U7、U8的A为RE2端口 #define HC138_B RE1 //定义U6、U7、U8的B为RE1端口 #define HC138_C RE0 //定义U6、U7、U8的C为RE0端口 //***************
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved