AD模数转换_PIC16F877A

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

从打开A/D通道或选择新的A/D通道到A/D转换器的内部保持电容充电至与输入的模拟电压相同的时间就是A/D采集时间,通常为20us左右,然后才能启动A/D转换。

在执行程序连续交替进行两路模拟输入信号的A/D转换时,GO位被置1后启动一次A/D 转换,只要等待一个T AD的时间,之后就可以修改CHS2:CHS0选择另外的输入信号通道而不会影响当前A/D转换的结果。

10位的A/D转换时间共需要12个T AD,T AD为一位的转换时间,对于887A来说,T AD最小为1.6us。

A/D转换过程如下:

1、有关的I/O口设置为输入(TRISA或TRISE)

2、对模拟引脚/基准电压/数字I/O进行设置,选择A/D结果格式(ADCON1)

3、选择A/D通道,选择A/D时钟,A/D模块使能

4、延时约20us,使得输入电压对保持电容充电达到稳定

5、开始A/D转换(ADGO=1)

6、A/D转换结束,ADGO自动清零,软件对PIR1的ADIF清零

7、读A/D转换结果(ADRESH、ADRESL)

如下程序:

//A/D转换,对指定通道k进行A/D转换,结果以16位整数返回

//只进行AD通道等设置,ADCON1不在此设置

unsigned int_AD_SUB( char k)

{

char i;

unsigned int x;

ADCON0=0b 0100 0001; // T AD=8Tosc

ADCON0 |=(k<<3); // 设置A/D转换通道,打开通道

for (i=1;i<5;i++) NOP( ); // 打开AD通道后延时20us左右

ADGO=1; // 开始A/D转换

while(ADGO= =1); // 等待A/D转换结束

ADIF=0; // 清A/D转换结束标志

x=0;

x=ADRESH<<8;

x|=ADRESL;

return( x);

}

PIC16F877A对模拟输入电压和参考电压的要求:(10/12位的AD转换)

一个完整的A/D转换可以按如下步骤实现:

1、设定ADCON1和TRISx寄存器,配置引脚的工作模式

2、若需要中断响应,则要设定相关的中断控制寄存器

3、设置ADCON0寄存器,选择A/D转换的时钟,选择模拟信号的输入通道,打开A/D模

块,注意此时GO/DONE位不要置1

4、等待足够长的采样延时

5、将ADCON0中的GO/DONE控制位置1,启动一次A/D转换过程

6、查询A/D转换结束标志:GO/DONE位在A/D转换结束时会自动清0,ADIF标志位在

A/D转换结束后会自动置1,这两个位都可以作为软件查询A/D转换是否结束的标志,使用ADIF标志时记得要用软件将其清除

7、若使用中断来响应A/D转换的结束,则6将不再适用,A/D转换结束时ADIF的置位将

使单片机进入中断服务程序,在处理中断时记得将ADIF标志位清0

8、A/D转换结束,直接从ADRES寄存器中读取8位转换结果,存入其缓冲单元或直接进

行运算处理

9、修改ADCON0寄存器的CHS2:CHS0,选择其他通道输入的模拟信号进行A/D转换,

程序重复4—9的循环

输入电压信号:

为了防止电压输入而造成芯片损坏或出现硬件死锁的问题,一般要在输入信号电路中串接一个限流电阻后在接到单片机引脚上。

如下图所示:(A/D输入引脚的限流保护)

输入电压信号的内阻:

通常输入信号都有一定的内阻,分析时,可以将输入信号等效为有一定内阻Ri的电压源V,如图所示:(IL为输入漏电流)

根据相关数据手册参数表得知:

PIC单片机A/D输入信号引脚的输入漏电流IL最大为±500nA,它也同时推荐了被测输入信号源内阻最大不要超过10kΩ。基于这两个参数,可知损耗在信号源内阻上的电压最不能超过5mV(A/D基准电压为2.5V时的1/2个LSB)这样才能保证A/D转换结果的正确。

常见的用热敏电阻测温电路。如图下所示:

让电源电压VDD通过热敏电阻Rx和参考电阻Rf串联电路进行分压,得到分压点电压Vx 后直接送入单片机的引脚进行A/D转换。

电路分析得:

只要保证Rf不超过10kΩ,无论Rx时多大。上图中的源内阻Ri也就不会超过10kΩ,满足了A/D模块对输入信号源内阻的要求。

输入信号的抗混叠滤波:

根据奈奎斯特采样定理:当以频率f对输入信号进行采样时,能够正确还原的信号最高频率为f/2。

当信号含有频率超过f/2时,对信号进行时域离散抽样后会造成的其频域混叠。要消除这种

混叠现象出现的唯一方法:只有在信号输入到A/D模块前,先对其进行抗混叠滤波(实际为低通滤波),保证输入的信号最高频率分量不超过f/2。

常见的用热敏电阻测温电路中实现低通滤波的方法:(简单RC低通滤波)

注意:简单的RC滤波电路会增加信号源的内阻

抗混叠滤波是所有A/D转换电路必须具备的一个组成部分。

AD转换时钟的选择:

A/D转换时钟可以是单片机的主振荡器的振荡频率,此时可选主振荡频率的2、8或32分频。也可以使用A/D模块内部自带的独立RC振荡器,其一个振荡周期典型值一般是4us左右。整个离散变化的范围在2~6us之间(RC振荡有离散性)。

假设芯片主振荡频率为8MHz,A/D转换时钟选自此主振荡频率,则理论上必须对其进行至

(1/8=0.125us,1.6/0.125=12.8,0.125×32=4us)少12.8分频才能得到周期为1.6us的时钟信号。

这时只有一种选择ADSC1:ADSC0=10,选择32分频得到T AD为4us。

T AD必须大于1.6us,但也不是越大越好。

从采样开关断开到获取8位的转换结果,需要9个T AD周期,一般不要超过50us。

如图:

相关文档
最新文档