………………………………………………………………………lllIliUm
PIC单片机c语言程序设计(14)
十五、Pie单片机的A11)转换
在电子技术中,传感器是一种很重要的器件,传感器的种类也有多种,如温度传感器、光敏传感器、压力传感器……,其特点是能把非电量,如温度、光度、压力等转换成相关的电量(电流或电压)。这些电量都是模拟量,可用Pic单片机的A/D转换。将上述的模拟量转换成数字量。再将数字量进行各种处理。如LED、LCD显示。
Picl
6F87X系列单片机,具有A/D转换
的功能。Picl6F876/873芯片为28引脚,有5个模拟输入端的10位A/D转换(5通道);Picl6F877为40引脚,有8个模拟输入端的10位A/D转换(8通道)。Picl6F876/873芯片的模拟输入端为AN0一AN3,其引脚是②~⑤脚和
⑦脚AN4,几乎占用了Picl6F876/873所有的
A
13。由于Pic单片机的端13具有复用功能,所
以上述的模拟输入口不会影响I/O端口的通用特性。
上述芯片的A/D转换,都已模块化,具有10位(二进制的)分辨率,所以完全可以满足大多数测量精度的要求,此外,还可利用Pic单片机睡眠状态下进行A/D转换(利用内部自带的RC振荡作时钟)。因在睡眠模式下,部分数字电路的开关噪声已停止,所以可获得更高的A/D转换精度。
Pic单片机的A/D转换功能的操作,远比本连载1~13中介绍的各种功能的C程序要复杂些。学会编写AID转换的C程序,也是进一步学习Pic单片机C程序设计的重要内容之一。因为在编辑AID转换的C程序时。会用到芯片内部多个专用寄存器(控制模块),学会相关模块的使用方法,可为编辑其它复杂功能的C程序建立良
54
2010VOL.11
万方数据
好的思维方法。
1.Picl6F87X的AID转换必备知识
(1)A/D转换控制寄存器ADCONl。ADCONl是8位的可读写的寄存器,如图59所示,其功能是A/D转换时,选择芯片引脚输入信号的类型(模拟量A或数字量D),以及A/D转换结果存放的格式(见下文)。
ADCONl的第6、5、4位,在A/D转换中未派上用场,读作“0”。ADCONl的第3、2、1、0位(Bit3、Bit2、Bitl和Bit0),是管理Picl6F87X引脚功能(A或D)的选择(可参看相关书藉的A/D转换引脚功能选择表,因该表占用版面多。这里略去),例如在下文C程序中,设
ADCONl=0x8a时,选择Picl6F873A的AN0(RA0)、ANl(RAl)RA4(AN4)、RA5(AN5)为模拟量输入、(AN6、AN7为数字量输入)。AN3、AN2参考电压设置端(十、一)。
(2)AID转换结果寄存器ADRESH、
ADRESL。因Picl6F87X的A/D转换值是10位的二进制数(代码)。而A/D转换的结果是存放在指定的结果寄存器中,因结果寄存器是8位的,所以AID转换结果的10位数。利用ADRESH存放AID的高字节;利用ADRESL存放A/D的低字节。存放方法是利用前述的ADCONl(图59)的第7位(bit)ADFM进行选择,当令ADFM=1时。AID转换结果的低8位存放在ADREL中;高两位存放在ADRESH中;当令ADFM=0时。AID转换结果的低两位存放在ADRESL中.余下的高8位存放在ADRESH中,
bit
bit0
图59