单片机片内比较器外加一只电阻和一只电容可方便地构成A/D转换器,其工作原理如下图所示。CPU为AT89C2051。当P1.5为高电平时,幅值接近VCC的电压通过电阻R对电容C充电,当C上的电压充至与P1.1脚的被测电压相等时,CPU内部的P3,6由低变高。从P1.5变高到P3.6变高的时间与被测电压的关系为V∞Vcc(1-e-1/RC)。其中Vc为被测电压,Vcc为工作电压(通常为5v),t为充电时间。
由此构成的A/D转换器有以下缺点:
1.精度和线性度较低。受电源电压、逻辑电平的高低、程序执行时间、RC时间常数等的影响,精度、分辨率、线性度通常低于6—7位。
2.A/D转换时间较长。充放电时间通常为10ms左右,且充电时间的延长不能换来A/D精度、线性度和分辨率的提高。
3.由于充电曲线为非线性指数函数,需用浮点计算。为简化软件没计,常采嗣查表法。表格中的数据与RC时间常数、程序执行时间相关,当RC的值发生变化时,与表中数据的对应关系受到影响,较难补偿。
4.A/D转换的休止期较长,几乎和A/D转换时间相同。
5.数字逻辑电平的高低影响电容的充放电,直接影响A/D转换的精度。当用作比较粗糙的A/D时,此法不失为一个经济的方案。