PIC单片机ADC模块的设计

PIC16F877单片机的ADC内部结构如图1所示。40引脚封装芯片与28引脚封装芯片的区别主要在于模拟口的数量不同,28引脚封装芯片没有AN5~AN7模拟量输入通道,其他各部分的功能和组成关系相同。PIC16F877单片机的ADC内部结构图如图2所示。

图1 主程序及中断程序流程

图2 PIC16F877单片机的ADC内部结构图

PIC16F877单片机内部嵌入的ADC模块具有10位数字量精度,共有8个模拟通道,与ADO模块有关的寄存器共有11个,其专用的4个寄存器分别为:ADCCON0、ADCCON1、ADRESH及ADRESL。

源阻抗(RS)和内部采样开关(RSS)阻抗直接影响所要求的充电电容CHOLD的时间,采样开关(RSS)阻抗在单片机电压上的变化,源阻抗在模拟输入时影响偏移电压(由于引脚漏电流)。所推荐的最大模拟源阻抗是101kΩ,在模块输入通道被选择后转换可以开始之前采集必须通过。

A/D转换器时间每位定义为TAD,A/D转换器每10位转换要求12TAD,A/D转换器时钟源是可以通过软件设定的,TAD的4种可能选择是:

· 2TOSC;

· 8TOSC;

· 32TOSC;

· 内部RC振荡器。

对于正确的A/D转换,A/D转换时钟(TAD)必须被选择以保证1.6μs的最小TAD时间。

 

ADCON1、TRISA和TRISE寄存器控制A/D端口引脚的操作。这个作为模拟输入的端口引脚必须有它们的相应位TRIS置1(输入)。如果TRIS位清0(输出),数字输出电平(VOH或VOL)将被转换。A/D操作是独立于(CHS(2∶0))位和TRIS位的状态之外的。

在睡眠期间A/D模块可以工作,这种A/D时钟要求对RC置1,(ARCS(1:0)=11), 当选择RC时钟源时,A/D模块在开始转换之前等待一个指令周期。这种允许执行的睡眠指令,可以消除在转换中产生的所有数字开关噪声。

当转换完成时,GO/DONE位将被清0,和转换结果一块装入ADRES寄存器,如果A/D中断使能,单片机将从睡眠中唤醒,如果A/D中断不使能,尽管ADON位仍保持置1,A/D模块仍将被关闭。

如果A/D时钟源是另一种时针选择(不是RC),尽管ADIN位仍保持1,睡眠指令将导致目前的转换中断和A/D模块被关闭。关闭A/D,把A/D模块放到它的最低电流消耗状态。

 

单片机复位强制所有寄存器复位到它们的复位状态,强制关闭A/D转换模块和进行的转换。在ADRESH、ADRESL寄存器的值在上电复位时不变,ADRESH、ADRESL寄存器在上电复位之后将包含未知数据。

1. 设计思路

将RA2引脚作为模拟电压输入,模拟量为连接在RA2引脚上的微调电阻提供,借此可以提供一个连续变化的模拟电压。端口D连接8个LED作为数据输出显示,并设置一个报警值。

本程序中将报警值设为2.5V,经A/D转换后对应十六进制数值为0x200H,当A/D转换的值未达到警戒值(0x200H)时,点亮8个发光二极管的低4个,表明系统运行正常;当A/D转换的值达到或超过警戒值(0x200H)时,发出报警信号,点亮与D口相连的LED显示报警信息。

2. 电路设计

单片机与LED的接口原理如图3所示。

图3 PIC16F877与LED的接线

粽子糖果 发表于10-13 08:43 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

粽子糖果
粽子糖果(总统)
金币:41631个|学分:51991个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号