使用单片机开发板进行AD电压数模转换。STC89C52和XPT2046 芯片。
模拟量:自然界连续变化的物理量。所谓连续,包含两个方面的含义;一方面从时间上来说,它是随时间连续变化的;另一方面从数值上来说,它的数值也是连续变化的。这种连续变化的物理量通常称为模拟量。
数字量:计算机中处理的是不连续变化的量,离散性的数字量。
1、分辨率
ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。用二进制表示,数值为1/2^n,**即八位分辨率为1/255,12位分辨率为1/4095。**举个例子,如果你的电压最大为5V,分辨率为8位,分辨率为255,那么你ad采样的数值显示为255,此时就是5V的满电压。如果是200,那么实际电压就是5/255*200V。
2、量化误差
ADC把模拟量变为数字量,用数字量近似表示模拟量,这个过程称为量化。量化误差是ADC的有限位数对模拟量进行量化而引起的误差。
3、偏移误差
偏移误差是指输入信号为零时,输出信号不为零的值,所以有时又称为零值误差。
4、满刻度误差
满刻度误差又称为增益误差。ADC的满刻度误差是指满刻度输出数码所对应的实际输入电压与理想输入电压之差。
5、线性度
线性度有时又称为非线性度,它是指转换器实际的转换特性与理想直线的最大偏差。
6、绝对精度
在一个转换器中,任何数码所对应的实际模拟量输入与理论模拟输入之差的最大值,称为绝对精度。
7、转换速率
ADC的转换速率是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次A/D转换所需的时间(包括稳定时间),则是转换速率的倒数。
XPT2046 是一个内含 12 位分辨率 125KHz 转换速率逐步逼近型 A/D 转换器。XPT2046 支持从 1.5V 到 5.25V 的低电压 I/O 接口。
工作电压范围为 1.5V~5.25V
支持 1.5V~5.25V 的数字 I/O 口
内建 2.5V 参考电压源
电源电压测量(0V~6V)
内建结温测量功能
触摸压力测量
采用 3 线制 SPI 通信接口
具有自动省电功能
数据手册中有说明,在使用ADC功能的时候配置为单端模式或差分模式;模式配置说明图如下:
通过观察开发板上面的ad模块我们可以知道,我们如果测量通道AIN2和3需要用到AUX引脚所以配置选择单端模式。
控制字节的描述
通过上图和开发板AD模块原理图可以得到,我们如果使用12位分辨率单端模式测量AIN1(可调电阻),那么我们输入DIN端就要控制字命令寄存器值为0x94(1001 1000)或0xB4(1011 1000)。同理如果要检测转换热敏电阻模拟信号,控制字命令寄存器值为0XD4;要检测转换光敏电阻模拟信号,控制字命令寄存器值为0XA4;测转换AIN3通道上模拟信号,控制字命令寄存器值为0XE4.
XPT2046时序图
void SPI_Write(uchar dat) {
uchar i; CLK = 0; for(i=0; i<8; i++) {
DIN = dat >> 7; //放置最高位 dat <<= 1; CLK = 0; //上升沿放置数据 CLK = 1; } }
uint SPI_Read(void) {
uint i, dat=0; CLK = 0; for(i=0; i<12; i++) //接收12位数据 {
dat <<= 1; CLK = 1