在设计制作时要注意如下3个问题: (1) 电源去耦
当使用TLC2543这种12位A/D器件时,每个模拟IC的电源端必须用一个0.1μF的陶瓷电容连接到地,用作去耦电容。在噪声影响较大的环境中,建议每个电源和陶瓷电容端并一个10μF的钽电容,这样能够减小噪声的影响。 (2) 接地
对模拟器件和数字器件,电源的地线回路必须分开,以防止数字部分的噪声电流通过模拟地回路引入,产生噪声电压,从而对模拟信号产生干扰。所有的地线回路都有一定的阻抗,因此地线要尽可能宽或用地线平面,以减小阻抗,连线应当尽可能短,如果使用开关电源,则开关电源要远离模拟器件。 (3) 电路板布线
使用TLC2543时一定要注意电路板的布线,电路板的布线要确保数字信号和模拟信号隔开,模拟线和数字线特别是时钟信号线不能互相平行,也不能在TLC2543芯片下面布数字信号线。 4.2 软件编程
单片机程序主要包括串行数据采集模块“DATA_AD”和串行数据传输模块“RS232”,调试所用到的显示子程序在此略去。 TLC2543的通道选择和方式数据为8位,其功能为:D7、D6、D5和D4用来选择要求转换的通道,D7D6D5D4=0000时选择0通道,D7D6D5D4=0001时选择1通道,依次类推;D3和D2用来选择输
出数据长度,本程序选择输出数据长度为12位,即D3D2=00或D3D2=10;D1,D0选择输入数据的导前位,D1D0=00选择高位导前。TLC2543在每次I/O周期读取的数据都是上次转换的结果,当前的转换结果在下一个I/O周期中被串行移出。第一次读数由于内部调整,读取的转换结果可能不准确,应丢弃。(这里只给出A/D程序) file://TLC2543/ A/D转换用程序用C51编写。 #define uchar unsigned char #define uint unsigned int
file://==========AD/采样模块============// sbit CLOCK =P1^1; sbit D_IN =P1^2; sbit D_OUT =P1^3; sbit _CS =P1^4;
uint read2543(uchar port) file://从/TLC2543读取采样值, file://形/参port是采样的通道号 {
uint data ad;uint data i; uchar data al=0,ah=0; CLOCK=0; _CS=0;
for(i=0;i<8;i++) file://前/8个CLOCK {
D_IN=(bit)(port&0x80); if(i<4) {
if (D_OUT) ah =0x01; ah<<=1; } else {
if(D_OUT) al =0x01; al<<=1; }
port<<=1; CLOCK=0;CLOCK=1; }
for (i=0;i<4;i++) file://填/充4个CLOCK {
if(D_OUT) al =0x01; al<<=1;
CLOCK=0;CLOCK=1; } _CS=1;
ad=(uint)ah;ad<<=8;ad =al; file://得/到AD值
return (ad); } 5 结束语
实际运行证明,用TLC2543芯片对数据进行采集预定的功能已经实现。同时用C51编写的程序以后有很好的移植性。