TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。
TCL2543的内部结构图如下
TCL2543与89C51的连接如下图
程序如下
#include #define uint unsigned int #define uchar unsigned char //**************************修改硬件时要修改的部分******************************** sbit clock= P0^0;//输入、输出时钟端 sbit input= P0^1;//数据输入端 sbit output = P0^2;//数据输出端 sbit CS= P0^3;//片选端,负电平有效 uint read2543(uchar CON_WORD) //CON_WORD为选择的通道,为0--10 {uint ad=0; uchar i; CON_WORD<<=4; clock=0; CS=0; for(i=0;i<12;i++) {if(output==1)//读取DATAOUTad=ad|0x01;if(CON_WORD&0x80) //读取控制字到INPUTinput=1;elseinput=0;clock=1;delay(10);clock=0;delay(10);CON_WORD<<=1;ad<<=1; } CS=1; ad>>=1; return(ad); }
mangui zhang:
12路输入 很方便 楼主如果把时序图也贴出来
对找你的程序就更方便了
xianglin lai:
您好,我现在做的TLC2543AD转换,当转换一路时转换结果是正常的,但是当转换2路以上时出现的结果就不正确了,有的偏小(比如输入模拟量为5v,结果转换只有4.5v),有的偏大(比如输入为0,结果转换后有0.3v),但是这些通道单独工作时转换是没有问题的,请问这是怎么回事呢?改如何改善?