⑴ 谁有芯片TLC549介绍(中文的谢谢!
8位串行模数转换器TLC548、TLC549的应用
1. 概述
TLC548,TLC549是美国德州仪器公司生产的8位串行A/D转换器芯片,可与通用微处理器、控制器通过CLK、CS、DATA OUT三条口线进行串行接口。具有4MHz片内系统时钟和软、硬件控制电路,转换时间最长17μs,TLC548允许的最高转换速率为45 500次/s,TLC549为40 000次/s。总失调误差最大为±0.5LSB,典型功耗值为6mW。采用差分参考电压高阻输入,抗干扰,可按比例量程校准转换范围,VREF-接地,VREF+-VREF-≥1V,可用于较小信号的采样。
2. 芯片简介
2.1 TLC548、TLC549的内部框图和管脚名称
TLC548、TLC549的内部框图和引脚名称如图1所示。
2.2 极限参数
TLC548/549的极限参数如下:
●电源电压:6.5V;
●输入电压范围:0.3V~VCC+0.3V;
●输出电压范围:0.3V~VCC+0.3V;
●峰值输入电流(任一输入端):±10mA;
●总峰值输入电流(所有输入端):±30mA;
●工作温度:TLC548C、TLC549C:0℃~70℃
TLC548I、TLC549I:-40℃~85℃
TLC548M、TLC549M:-55℃~125℃
3. 工作原理
TLC548、TLC549均有片内系统时钟,该时钟与I/O CLOCK是独立工作的,无须特殊的速度或相位匹配。其工作时序如图2所示。
当CS为高时,数据输出(DATA OUT)端处于高阻状态,此时I/O CLOCK不起作用。这种CS控制作用允许在同时使用多片TLC548、TLC549时,共用I/O CLOCK,以减少多路(片)A/D并用时的I/O控制端口。
一组通常的控制时序为:
(1)将CS置低。内部电路在测得CS下降沿后,再等待两个内部时钟上升沿和一个下降沿后,然后确认这一变化,最后自动将前一次转换结果的最高位(D7)位输出到DATA OUT端上。
(2) 前四个I/O CLOCK周期的下降沿依次移出第2、3、4和第5个位(D6、D5、D4、D3),片上采样保持电路在第4个I/O CLOCK下降沿开始采样模拟输入。
(3)接下来的3个I/O CLOCK周期的下降沿移出第6、7、8(D2、D1、D0)个转换位,
(4)最后,片上采样保持电路在第8个I/O CLOCK周期的下降沿将移出第6、7、8(D2、D1、D0)个转换位。保持功能将持续4个内部时钟周期,然后开始进行32个内部时钟周期的A/D转换。第8个I/O CLOCK后,CS必须为高,或I/O CLOCK保持低电平,这种状态需要维持36个内部系统时钟周期以等待保持和转换工作的完成。如果CS为低时I/O CLOCK上出现一个有效干扰脉冲,则微处理器/控制器将与器件的I/O时序失去同步;若CS为高时出现一次有效低电平,则将使引脚重新初始化,从而脱离原转换过程。
在36个内部系统时钟周期结束之前,实施步骤(1)-(4),可重新启动一次新的A/D转换,与此同时,正在进行的转换终止,此时的输出是前一次的转换结果而不是正在进行的转换结果。
若要在特定的时刻采样模拟信号,应使第8个I/O CLOCK时钟的下降沿与该时刻对应,因为芯片虽在第4个I/O CLOCK时钟下降沿开始采样,却在第8个I/O CLOCK的下降沿开始保存。
4. 应用接口及采样程序
TLC548、TLC549可方便地与具有串行外围接口(SPI)的单片机或微处理器配合使用,也可与51系列通用单片机连接使用。与51系列单片机的接口如图3所示。其采样程序框图如图4所示,实际应用程序清单如下:
初始化:
SETB P1.2 ;置CS为1。
CLR P1.0 ;置I/O CLOCK为零。
MOV R0,#00H ;移位计数为零。
A/D过程:
A/DP: CLR P1.2
NOP ;等待1.4μs,NOP数根据晶振情况选择
NXT: SETB P1.0
MOV C, P1.1
RLC A
CLR P1.0
INC R0
CJNE R0,#8,NXT
MOV R0,#00
SETB P1.2
MOV DTSVRM,A ;DTSVRM:DATA SAVE RAM.
RET
TLC548/549片型小,采样速度快,功耗低,价格便宜,控制简单。适用于低功耗的袖珍仪器上的单路A/D或多路并联采样。
⑵ 单片机AD(TLC549)转换for(i=0;i<8;i )if(AD_DAT)value |= (0x80)>>i 怎么理解!
value 丨=0x80》i
即 value=value丨(0x80》i)
"或"操作可以将相应位置1(其余位不变)
AD模块串行输出,每个脉冲输出一位二进制数,高位在前
Value的各位原来均为0
例如第一次输出时i=0
如果 ADDAT是1,0x80最高位是1(二进制为1000 0000),右移0位仍然是0x80,Value与它"或"运算后最高位变为1(其它位不变),如果ADDAT是0就不用管它,Value的最高位仍然保特为0
第二次输出时 i=1
如果ADDAT是1,0x80右移1位变成二进制0100 0000,Value与它"或"运算后,次高位被置1,同样如果ADDAT是0还不用管它,value的次高位也保持为0
依次第3个脉冲至第8个脉冲,ADDAT端口上输出的8位二进制数就保存在Value这个变量中了
如果AD输出低位在前的话,可以这样写
value丨=0x01巜i
普通IO引脚模拟串口进行数据的接收和发送都是这个原理
⑶ 我stc89c52rc单片机板子上的ad芯片是tlc549,怎样用它写模数转换程序尽量简洁明了~
//////////***你自己看看吧******引脚改改就能用*********/////
#include <AT89X51.H>
#define uint unsigned int
#define uchar unsigned char
uint Volt;
sbit CS=P3^4;//////////////TLC549引脚
sbit CLK=P3^2;
sbit DO=P3^3;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳
uchar code table1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
void delay(uint time)
{
int x,y;
for(x=time;x>0;x--)
for(y=time;y>0;y--);
}
void shortdelay(uint time)
{
uint i;
for(i<0;i<time;i++);
}
uchar TLC549_ADC(void)
{
uchar i, tmp;
CS=1;
CLK=0;
CS=0;
shortdelay(2);
for(i=0;i<8;i++)
{
tmp<<=1;
//tmp|=DO;
tmp=tmp|DO;
CLK=1;
shortdelay(2);
CLK=0;
}
CS=1;
shortdelay(17);
return (tmp);
}
void Data_Conversion(void)
{
uchar AD_Data;
AD_Data=TLC549_ADC();
Volt=5.0/255*AD_Data*100 ;
}
void display()
{
uint m;
for(m=0;m<80;m++)
{
P2=0xc1;
P1=0x08;
delay(5);
P1=0x00;
P2=table[Volt%10];
P1=0x04;
delay(5);
P1=0x00;
P2=table[Volt/10%10];
P1=0x02;
delay(5);
P1=0x00;
P2=table1[Volt/100];
P1=0x01;
delay(5);
P1=0x00;
}
}
void main()
{
while(1)
{
display();
delay(20);
Data_Conversion();
}
}
⑷ TLC1549模数转换的问题,不知道是芯片的原因还是程序的原因,用51单片机驱动,请求高手帮忙解决……
关于TLC1549的问题解决了吗,我想问几个问题,谢谢
⑸ 谁有会单片机的汇编TLC549程序,只需采集数据的部分(不需要数据处理的),但确实能用的,谢谢,跪求!!!
DAT0 BIT P1.0
CLK0 BIT P1.1
CS BIT P1.2
;----------------------------------------------------------------------------
TLC549_ADC: ;串行显示处理程序,结果存在A中
CLR A
CLR CLK0
CLR CS
MOV R6,#8
ADLOOP:
SETB CLK0
NOP
NOP
MOV C,DAT0
RLC A
CLR CLK0
NOP
DJNZ R6,ADLOOP
SETB CS
SETB CLK0
RET
⑹ TLC549芯片的CLK引脚怎么用算是输入还是输出
这个芯片是模拟量转数字量用的。
clk是输入,接一个<1.1MHz的时钟
授人以鱼不如授人以渔。给你个芯片资料教教你怎么看。http://www.21icsearch.com/download.asp?id=846966
你看第三页最上边的时序图。你先把clk放到低电平,然后给cs高电平,等17*36微秒时间让芯片测量模拟量。然后cs放到低电平数字量第8位就输出到data out端了,你把这个量读出来以后就可以给clk一个上升沿和一个下降沿,然后读第7位,以此类推直到8位都读完。每次给clk上升沿的时候data out会开始变成下一位。
⑺ 为什么51单片机用tlc549做的AD转换只有5v才有显示,其它都为0,呢
应该是程序那里错了吧!看是不是加了IF(...==5)的判断,或者是程序的方法不对,把程序贴上来看看!