c语言编程TLC2543AD采集,AD转换器TLC2543编程
一、特性
(1)12位分辨率A/D轉換器;
(2)在工作溫度范圍內10μs轉換時間;
(3)11個模擬輸入通道;
(4)3路內置自測試方式;
(5)采樣率為66kbps;
(6)線性誤差+1LSB(max)
(7)有轉換結束(EOC)輸出;
(8)具有單、雙極性輸出;
(9)可編程的MSB或LSB前導;
(10)可編程的輸出數據長度。
二、引腳圖
TLC2543的引腳排列如圖所示。其中:
AIN0~AIN10:模擬輸入端;
CS:片選端;
DIN :串行數據輸入端;
DOUT:A/D轉換結果的三態串行輸出端;
EOC:轉換結束端;
CLK:I/O時鐘;
REF+:正基準電壓端;
REF-:負基準電壓端;
VCC:電源;
GND:地。
三、程序
本程序使用C51編程,每隔250ms采集一次數據,并通過串口發送出去,程序如下:
#i nclude
#i nclude
#i nclude
#define uchar unsigned char
#define uint unsigned int
sbit TCL2543_CLK ?=?P3^2;
sbit TCL2543_ADIN ?=?P3^3;
sbit TCL2543_DOUT?=?P3^4;
sbit TCL2543_CS??=?P3^5;
sbit EOC?=?P1^6;
// 其中 port 為通道:?通道0:port = 0x01?通道1:port = 0x02?通道2:port = 0x04 ...
uint read2543(unsigned char port)
{
unsigned int i;
uint ad_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;
return ad_value;
}
void main(void)
{
unsigned int i = 0, a=0, result=0, j=0;
unsigned char tm_tm = 5;
float tmp;
tm_tm = 40;
SCON = 0x50; //串口方式1,允許接收
TMOD = 0x20; //定時器1 定時方式2
TCON = 0x40; //設定時器1 開始計數
TH1 = 0xFD; //11.0592MHz 9600 波特率
// TH1=0xF8;?//30MHz, 9600Bps = 248 = 0xF8
TL1 = 0xE8;
TI = 1;
TR1 = 1; //啟動定時器
// 使用定時器。30MHz晶振,0.4us周期,預置50000 = 20ms,計數50次=1秒
// 使用定時器0。11.0592MHz晶振,1.0us周期,預置50000 = 50ms,計數20次=1秒
TH0 = 60;?// (65536-50000)/256;
TL0 = 176;?// (65536-50000)%256;
TMOD = 0x20 + 0x01;// T1+T0, 工作方式1
TR0 = 1;?// START T0
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.2f\n", result, tmp);
}
TF0=0;
TH0=60;
TL0=176;
}
}
}
總結
以上是生活随笔為你收集整理的c语言编程TLC2543AD采集,AD转换器TLC2543编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tiny core linux arm,
- 下一篇: 杭电c语言课程设计实验7,杭电1072