A/D转换(TLC0831)的应用
TLC0832是8位逐次逼近电压型A/D转换器,支持单信道输入串口输出,极性设置固定,不需寻址。其内部有一采样数据比较器将输入的摸拟信号微分比较后转换为数字信号。摸拟电压的差分输入方式有利于抑制共摸信号和减少或消除转换的偏移误差。而且,电压基准输入可调,使得小范围摸拟电压信号转化时的分辨率更高。由标准移位寄存器或微处理器将时间变化的数字信号分配到串口输出,当IN-接地时为单端工作,此时IN+为输入,也可将信号差分后输入到N+与N-之间,此时器件处于双端工作状态。其主要特点如下:
(1) 8位分辨率;
(2) 单信道差分输入;
(3) 5V的电源提供0-5V可调基准电压;
(4) 输入输出可与TTL和MOS兼容;
(5) 总失调误差为1SB。
TLC0831时序图如下:

典型的应用电路如下图:

根据上图可以编写如下的C51应用程序:
#include
#include
typedef unsigned int uuint;
typedef unsigned char uchar;
sbit adcdo=P1^0; //定义TLC0831的数据线D0
sbit adccs=P1^2; //定义TLC0831的时能线CS
sbit adcclk=P1^1; //定义TLC0831的时钟线CLK
void delay(uchar x); //定义廷时函数
uchar readadc(void); //定义读数据函数
void adcck(void); //定义时钟函数
void delay1(uchar x)
{
uchar i;
for(i=0;i
{};
}
void adcck(void) //时钟函数
{
adcclk=1;delay1(2);
adcclk=0;delay1(2);
}
uchar readadc(void) //读出TLC0831转换数据函数
{
uchar i;
uchar ch;
adccs=0;adcck();ch=0;
for(;adcdo==1;)adcck();
for(i=0;i<8;i++)
{ adcck();
ch=(ch<<1)|adcdo;
}
adccs=1;
return(ch); //返回值,即转换后的数据
}
void main(void) //主函数
{
uchar a;
a=readadc();
ACC=a;
}
评论
程序编得非常好,可惜你的网站连到别的地方去了