热度 13
2012-2-6 19:02
4762 次阅读|
1 个评论
TLC1543美国TI司生产的多通道、低价格的模数转换器。采用串行通信接口,具有输入通道多、性价比高、易于和单片机接口的特点,可广泛应用于各种数据采集系统。 TLC1543为20脚DIP装的CMOS 10位开关电容逐次A/D逼近模数转换器,引脚排列如图1 所示。其中A0~A10(1~9 、11、12脚)为11 个模拟输入端,REF+(14脚,通常为VCC)和REF-(13脚,通常为地)为基准电压正负端,CS(15脚)为片选端,在CS端的一个下降沿变化将复位内部计数器并控制和使能ADDRESS、I/O CLOCK (18脚)和DATA OUT(16脚)。ADDRESS(17脚)为串行数据输入端,是一个1的串行地址用来选择下一个即将被转换的模拟输入或测试电压。DATA OUT 为A/D换结束3态串行输出端,它与微处理器或外围的串行口通信,可对数据长度和格式灵活编程。I/O CLOCK数据输入/输出提供同步时钟,系统时钟由片内产生。芯片内部有一个14通道多路选择器,可选择11个模拟输入通道或3个内部自测电压中的任意一个进行测试。片内设有采样-保持电路,在转换结束时,EOC(19脚)输出端变高表明转换完成。内部转换器具有高速(10µS转换时间),高精度(10分辨率,最大±1LSB不可调整误差)和低噪声的特点。 下面给出tlc1543的程序范例,用户很方便调用 sbit clk = P1^3; //输入输出时钟端 sbit address = P1^1; //串行地址输入端 sbit dataout = P1^0; //三态串行数据输出端 sbit cs = P1^2; uint read1543(uchar port) //从TLC1543读取采样值,形参port是采样的通道号 { uint ad; uint i; uchar al=0,ah=0; clk = 0; //将时钟信号置低 cs = 0; //片选低电平有效 port = 4; //通道号左移四位 for (i=0;i4;i++) //把通道号打入1543 { address = (bit)(port0x80); clk = 1; //上升沿一到,读走数据 delay(1); clk = 0; //将时钟置于下降沿,等待上升沿的到来 port = 1; //通道号左移一位 } cs = 1; delay(10); cs=0; //等待AD转换 delay(2); for (i=0;i2;i++) //取D9,D8 { dataout = 1; //可删除 clk = 1; ah = 1; if (dataout) ah |= 0x01; clk = 0; delay(10); } for (i=0;i8;i++) //取D7--D0 { dataout = 1; clk = 1; al = 1; if (dataout) al |= 0x01; clk = 0; delay(10); } cs = 1; ad = ah; ad = 8; ad += al; //得到AD值 return (ad); } 例如 K1=read1543(0x01)*52/1023*10; K1就是读取的值