1.芯片简介
ADC0832是一种 8 位分辨率、250KHZ转换频率、双通道 A/D 转换芯片。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在 0~5V 之间。芯片转换时间仅为 32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。
主要特点如下
-
8 位分辨率,双通道 A/D 转换;
-
输入输出电平与 TTL/CMOS 相兼容;
-
5V 电源供电时输入电压在 0~5V 之间;
-
功耗仅为 15mW,工作频率为 250KHZ,转换时间为 32μS;
2.ADC0832引脚定义
-
CS:片选使能,低电平芯片使能
-
CH0:模拟输入通道0,或作为IN+/-使用;
-
CH1:模拟输入通道1,或作为IN+/-使用;
-
GND:芯片参考零电位(地);
-
DI :数据信号输入,选择通道控制;
-
DO :数据信号输出,转换数据输出;
-
CLK:芯片时钟输入;
-
Vcc/REF:芯片电源;
3.ADC0832控制时序
ADC0832控制时序如图,ADC0832驱动程序是基于以下时序图来编程;
4.ADC0832驱动程序
/****************************************************************************
函数功能:AD转换子程序
入口参数:CH
出口参数:dat
****************************************************************************/
unsigned char A_D(unsigned char CH)
{
unsigned char i,test,adval;
unsigned char dat = 0; //AD值
adval = 0x00;
test = 0x00;
Clk = 0; //初始化
DATI = 1;
_nop_();
CS = 0;
_nop_();
Clk = 1;
_nop_();
if ( CH == 0x00 ) //通道选择
{
Clk = 0;
DATI = 1; //通道0的第一位
_nop_();
Clk = 1;
_nop_();
Clk = 0;
DATI = 0; //通道0的第二位
_nop_();
Clk = 1;
_nop_();
}
else
{
Clk = 0;
DATI = 1; //通道1的第一位
_nop_();
Clk = 1;
_nop_();
Clk = 0;
DATI = 1; //通道1的第二位
_nop_();
Clk = 1;
_nop_();
}
Clk = 0;
DATI = 1;
for( i = 0;i < 8;i++ ) //读取前8位的值
{
_nop_();
adval <<= 1;
Clk = 1;
_nop_();
Clk = 0;
if (DATO)
adval |= 0x01;
else
adval |= 0x00;
}
for (i = 0; i < 8; i++) //读取后8位的值
{
test >>= 1;
if (DATO)
test |= 0x80;
else
test |= 0x00;
_nop_();
Clk = 1;
_nop_();
Clk = 0;
}
if (adval == test) //比较前8位与后8位的值,如果不相同舍去。若一直出现显示为零,请将该行去掉
dat = test;
nop_();
CS = 1; //释放ADC0832
DATO = 1;
Clk = 1;
return dat;
}
如需资料可在该账号下载频道下载,或关注公众号-单片机实例设计,发送“ADC0832”获取。