新聞中心

12位A/D轉(zhuǎn)換器TLC2543

作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò) 收藏
一、特性

(1)12位分辨率A/D轉(zhuǎn)換器

本文引用地址:http://butianyuan.cn/article/201611/316092.htm

(2)在工作溫度范圍內(nèi)10μs轉(zhuǎn)換時(shí)間;

(3)11個(gè)模擬輸入通道;

(4)3路內(nèi)置自測(cè)試方式;

(5)采樣率為66kbps;

(6)線(xiàn)性誤差1LSB(max)

(7)有轉(zhuǎn)換結(jié)束(EOC)輸出;

(8)具有單、雙極性輸出;

(9)可編程的MSB或LSB前導(dǎo);

(10)可編程的輸出數(shù)據(jù)長(zhǎng)度。

二、引腳圖

TLC2543的引腳排列如圖所示。其中:

AIN0~AIN10:模擬輸入端;

CS:片選端;

DIN:串行數(shù)據(jù)輸入端;

DOUT:A/D轉(zhuǎn)換結(jié)果的三態(tài)串行輸出端;

EOC:轉(zhuǎn)換結(jié)束端;

CLK:I/O時(shí)鐘;

REF:正基準(zhǔn)電壓端;

REF-:負(fù)基準(zhǔn)電壓端;

VCC:電源;

GND:地。

三、程序

本程序使用C51編程,每隔250ms采集一次數(shù)據(jù),并通過(guò)串口發(fā)送出去,程序如下:

#include

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitTCL2543_CLK=P3^2;

sbitTCL2543_ADIN=P3^3;

sbitTCL2543_DOUT=P3^4;

sbitTCL2543_CS=P3^5;

sbitEOC=P1^6;

//其中port為通道:通道0:port=0x01通道1:port=0x02通道2:port=0x04...

uintread2543(unsignedcharport)

{

unsignedinti;

uintad_value=0;

TCL2543_CLK=0;

TCL2543_CS=0;

EOC=1;

port<<=4;

for(i=0;i<12;i)

{

if(TCL2543_DOUT)ad_value|=0x01;

TCL2543_ADIN=(bit)(port&0x80);

TCL2543_CLK=1;

_nop_();

_nop_();

_nop_();

TCL2543_CLK=0;

_nop_();

_nop_();

_nop_();

port=port<<1;

ad_value=ad_value<<1;

}

TCL2543_CS=1;

ad_value=ad_value>>1;

returnad_value;

}

voidmain(void)

{

unsignedinti=0,a=0,result=0,j=0;

unsignedchartm_tm=5;

floattmp;

tm_tm=40;

SCON=0x50;//串口方式1,允許接收

TMOD=0x20;//定時(shí)器1定時(shí)方式2

TCON=0x40;//設(shè)定時(shí)器1開(kāi)始計(jì)數(shù)

TH1=0xFD;//11.0592MHz9600波特率

//TH1=0xF8;//30MHz,9600Bps=248=0xF8

TL1=0xE8;

TI=1;

TR1=1;//啟動(dòng)定時(shí)器

//使用定時(shí)器。30MHz晶振,0.4us周期,預(yù)置50000=20ms,計(jì)數(shù)50次=1秒

//使用定時(shí)器0。11.0592MHz晶振,1.0us周期,預(yù)置50000=50ms,計(jì)數(shù)20次=1秒

TH0=60;//(65536-50000)/256;

TL0=176;//(65536-50000)%256;

TMOD=0x200x01;//T1T0,工作方式1

TR0=1;//STARTT0

while(1)

{

if(TF0==1)

{

a;

if(a==tm_tm)//250ms

{

a=0;

result=read2543(1);

tmp=(result*60.0/4096.0);

printf("%d,%4.2fn",result,tmp);

}

TF0=0;

TH0=60;

TL0=176;

}

}

}


///////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////

#include

#defineuintunsignedint
#defineucharunsignedchar

//**************************修改硬件時(shí)要修改的部分********************************

sbitclock=P0^0;//輸入、輸出時(shí)鐘端
sbitinput=P0^1;//數(shù)據(jù)輸入端
sbitoutput=P0^2;//數(shù)據(jù)輸出端
sbitCS=P0^3;//片選端,負(fù)電平有效

voiddelay(ucharN)
{
while(N--);
}

uintread2543(ucharCON_WORD)//CON_WORD為選擇的通道,為0--10
{
uintad=0;
uchari;
CON_WORD<<=4;
clock=0;
CS=0;
for(i=0;i<12;i++)
{
if(output==1)//讀取DATAOUT
ad=ad|0x01;
if(CON_WORD&0x80)//讀取控制字到INPUT
input=1;
else
input=0;
clock=1;
delay(10);
clock=0;
delay(10);
CON_WORD<<=1;
ad<<=1;
}
CS=1;
ad>>=1;
return(ad);
}

voidinit_serial()//初始化串口
{
TMOD=0x20;//定時(shí)器T1使用工作方式2
TH1=250;//設(shè)置初值
TH0=250;
TR1=1;//開(kāi)始計(jì)時(shí)
PCON=0x80;//SMOD=1;
SCON=0x50;//工作方式1,波特率9600bit/s,允許接收
TI=1;
}

voidmain()
{
uintad=0;
floatfVoltage1;
ucharbuf[5],i;
init_serial();
IE=0;//屏蔽中斷
while(1)
{
ad=read2543(0);
fVoltage1=(float)ad/0x0fff*5;
buf[0]=(uchar)fVoltage1;
buf[0]=buf[0]+0x30;
buf[1]=.
buf[2]=(uchar)(fVoltage1*10)%10;
buf[2]=buf[2]+0x30;
buf[3]=(uchar)(fVoltage1*100-buf[0]*100)%10;
buf[3]=buf[3]+0x30;
buf[4]=(uchar)((fVoltage1*1000)-buf[0]*1000-buf[1]*100)%10;
buf[4]=buf[4]+0x30;
i=0;
while(i<5)
{
if(TI==1)
{
SBUF=buf[i];
TI=0;
i++;
}
}
}
}



關(guān)鍵詞: 12位AD轉(zhuǎn)換器TLC254

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉