智能化多路串行數(shù)據(jù)采集/傳輸模塊的設(shè)計
引言
隨著電子技術(shù)的不斷發(fā)展,目前對各種物理量的檢測和控制都可得以實(shí)現(xiàn)。微機(jī)檢測控制系統(tǒng)不僅運(yùn)用到航天航空、機(jī)器人技術(shù)、紡織機(jī)械、食品加工等工業(yè)過程控制,而且已經(jīng)成為日常各種家用電器當(dāng)中的主要組成部分。其中,A/D(模擬數(shù)字轉(zhuǎn)換)設(shè)備起著十分重要的作用。這樣,一個系統(tǒng)中就會需要更多的A/D設(shè)備。一般是用擴(kuò)展一塊或多塊A/D采集卡的方法去實(shí)現(xiàn)。當(dāng)模擬量較少或是溫度、壓力等緩變信號場合,采用總線型A/D卡并不是最合適、最經(jīng)濟(jì)的方案。這里介紹一種以AT89C2051單片機(jī)為核心,采用TLC2543L12位串行A/D轉(zhuǎn)換器構(gòu)成的采樣模塊,該模塊的采樣數(shù)據(jù)由單片機(jī)串口經(jīng)電平轉(zhuǎn)換后送到上位機(jī)(PC機(jī))的串口COM1或COM2,形成一種串行數(shù)據(jù)采集串行數(shù)據(jù)傳輸?shù)姆绞健?/p>
主要元件功能介紹
AT89C2051單片機(jī)
AT89C2051是ATMEL公司推出的一種性能價格比極高的8位單片機(jī),其指令系統(tǒng)與MCS-51系列完全兼容。引腳排列如圖1所示。
TLC2543L串行A/D轉(zhuǎn)換器
TLC2543L采用SPI串行接口總線,SPI串行接口總線由Motorola公司提出,它是一種三線同步接口,分別為同步信號、輸入信號和輸出信號。另外芯片還有一根片選線,單片機(jī)通過片選線選通TLC2543L。其中,CLK為同步時鐘脈沖,CS為片選線,DIN為單片機(jī)的數(shù)據(jù)輸出和TLC2543L的數(shù)據(jù)輸入線,DOUT為單片機(jī)的數(shù)據(jù)輸入線和TLC2543L的數(shù)據(jù)輸出線。圖2為TLC2543L時序圖。TLC2543L是全雙工的,即數(shù)據(jù)的發(fā)送和接收可同時進(jìn)行。如果只是對TLC2543L寫數(shù)據(jù),單片機(jī)可以丟棄同時讀入的數(shù)據(jù);反之,如果只讀數(shù)據(jù),可以在命令字節(jié)后,寫入任意數(shù)據(jù)。數(shù)據(jù)傳送以字節(jié)為單位,并采用高位在前的格式。
模塊采用TI公司的TLC2543L12位串行A/D轉(zhuǎn)換器,使用開關(guān)電容逐次逼近法完成A/D轉(zhuǎn)換過程。串行輸入結(jié)構(gòu),能夠大大節(jié)省51系列單片機(jī)I/O資源,且價格適中。其特點(diǎn)有:
(1)11個模擬輸入通道;
(2)轉(zhuǎn)換時間10s;
(3)12位分辨率A/D轉(zhuǎn)換器;
(4)3路內(nèi)置自測試方式;
(5)采樣率為66kbps;
(6)線性誤差+1LSB(max)
(7)有轉(zhuǎn)換結(jié)束(EOC)輸出;
(8)具有單、雙極性輸出;
(9)可編程的MSB或LSB前導(dǎo);
(10)可編程的輸出數(shù)據(jù)長度。TLC2543L的引腳排列如圖3所示。圖3中AIN0~AIN10為模擬輸入端;為片選端;DIN為串行數(shù)據(jù)輸入端;DOUT為A/D轉(zhuǎn)換結(jié)果的三態(tài)串行輸出端;EOC為轉(zhuǎn)換結(jié)束端;CLK為I/O時鐘;REF+為正基準(zhǔn)電壓端;REF-為負(fù)基準(zhǔn)電壓端;VCC為電源;GND為地。
電平轉(zhuǎn)換器MAX232C
MAX232C為RS-232收發(fā)器,簡單易用,單+5V電源供電,僅需外接幾個電容即可完成從TTL電平到RS-232電平的轉(zhuǎn)換,引腳排列如圖4所示。
硬件設(shè)計
硬件電路如圖5所示。
單片機(jī)AT89C2051是整個系統(tǒng)的核心,TLC2543L對輸入的模擬信號進(jìn)行采集,轉(zhuǎn)換結(jié)果由單片機(jī)通過P3.5(9腳)接收,AD芯片的通道選擇和方式數(shù)據(jù)通過P3.4(8腳)輸入到其內(nèi)部的一個8位地址和控制寄存器,單片機(jī)采集的數(shù)據(jù)通過串口(3、2腳)經(jīng)MAX232C轉(zhuǎn)換成RS232電平向上位機(jī)傳輸。
單片機(jī)軟件設(shè)計
單片機(jī)程序主要包括串行數(shù)據(jù)采集/傳輸模塊的系統(tǒng)信息、通道數(shù)、采集周期和通訊協(xié)議定義,以及數(shù)據(jù)采集和傳輸?shù)臉?biāo)準(zhǔn)子程序。
TLC2543L的通道選擇和方式數(shù)據(jù)為8位,其功能為:D7、D6、D5和D4用來選擇要求轉(zhuǎn)換的通道,D7D6D5D4=0000時選擇0通道,D7D6D5D4=0001時選擇1通道,依次類推;D3和D2用來選擇輸出數(shù)據(jù)長度,本程序選擇輸出數(shù)據(jù)長度為12位,即D3D2=00或D3D2=10;D1,D0選擇輸入數(shù)據(jù)的導(dǎo)前位,D1D0=00選擇高位導(dǎo)前。
TLC2543L在每次I/O周期讀取的數(shù)據(jù)都是上次轉(zhuǎn)換的結(jié)果,當(dāng)前的轉(zhuǎn)換結(jié)果在下一個I/O周期中被串行移出。第一次讀數(shù)由于內(nèi)部調(diào)整,讀取的轉(zhuǎn)換結(jié)果可能不準(zhǔn)確,應(yīng)丟棄。
數(shù)據(jù)采集程序如下:
sbitDATAIN=P1^1;
sbitCLOCK=P1^0;
sbitDATAOUT=P1^2;
sbitCS=P1^3;
bitdatain_a_bit0()
{bitm=0;
DATAOUT=1;
m=DATAOUT;
DATAIN=0;
Nop();
CLOCK=1;
Nop();
CLOCK=0;
Return(m);
}
bitdatain_a_bit1()
{bitm=0;
DATAOUT=1;
m=DATAOUT;
DATAIN=1;
Nop();
CLOCK=1;
Nop();
CLOCK=0;
Return(m);
}
單片機(jī)通過編程產(chǎn)生串行時鐘,并按時序發(fā)送與接收數(shù)據(jù)位,完成通道方式/通道數(shù)據(jù)的寫入和轉(zhuǎn)換結(jié)果的讀出,程序如下:
unsignedintTlc2543L(unsignedcharch)
{unsignedchari,chch=0;
unsignedintxdataxxx=0;
unsignedintxdatay=0;
CS=0;
Chch=ch<<4;
Y=chch;
Y<<=8;
I=0;
While(I<12)
{if((y&0x8000)==0)
{if(datain_a_bit0()==0)xxx&=0xfffe;
elsexxx|=0x0001;
if(I!=11)xxx<<=1;
}
else
{if(datain_a_bit1()==0)xxx&=0xfffe;
elsexxx|=0x0001;
if(I!=11)xxx<<=1;
}
y<<=1;
I+=1;
}
CS=1;
Return(xxx);
}
串行數(shù)據(jù)傳輸模塊包括串行口初始化子程序和數(shù)據(jù)傳輸子程序,各子程序分別如下。其中數(shù)據(jù)傳輸采用查詢方式,也可以方便地改為中斷方式。[!--empirenews.page--]
Voidrs232init()
{TMOD=0x20;
TH1=0xfd;
TR1=1;
SCON=0x50;
}
voidreceandtran()
{unsignedcharda;
while(!RI)
RI=0;
Da=SBUF;
SBUF==da;
While(!TI);
TI=0;
}
上位機(jī)接收數(shù)據(jù)所用C語言程序包括初始化子程序和接收子程序。各子程序分別如下:
voidcominit(void)
{
outportb(0x3fb,0x80);
outportb(0x3f8,0x18);/與單片機(jī)波特率一致為9600bps*/
outportb(0x3f9,0x00);
outportb(0x3fb,0x03);/8位數(shù)據(jù)位,1位停止位,無奇偶校驗(yàn)*/
outportb(0x3fc,0x03);/*Modem控制寄存器設(shè)置,使DTR和RTS輸出有效*/
outportb(0x3f9,0x00);/*設(shè)置中斷允許寄存器,禁止一切中斷*/
}
voiddata_rece(void)/*查詢方式接收數(shù)據(jù)子程序*/
{
while(!kbhit())
{
while(!(inportb(0x3fd)&0x01));/*若接收寄存器為空,則等待*/
printf("%x",inportb(0x3f8));/*讀取結(jié)果并顯示*/
}
getch();
}
智能化串行采集/傳輸模塊在PCR儀中的應(yīng)用
在PCR儀的電路設(shè)計中,因需要檢測的信號很多,包括熱蓋的溫度檢測,散熱器的溫度檢測,腔體內(nèi)部的溫度檢測,氣流的溫度檢測,光信號的檢測等等,為了簡化電路,節(jié)約成本,減小體積,在選擇A/D轉(zhuǎn)換電路時選用了SPI總線的TLC2543,該芯片有多達(dá)11路的模擬信號輸入端,完全滿足PCR儀電路設(shè)計的需要,一個芯片既能完成檢測多個信號的功能,又能節(jié)約單片機(jī)的資源,圖6是其硬件原理圖。
結(jié)論
本文所述的智能化串行數(shù)據(jù)模塊,可直接用于任何微機(jī)控制和檢測系統(tǒng)中以取代原來的模數(shù)轉(zhuǎn)換設(shè)計。經(jīng)過實(shí)踐檢驗(yàn),該模塊功耗低、采樣精度高、可靠性好、接口簡便,有很高的實(shí)用價值。該智能模塊的軟件和硬件成功應(yīng)用于生命科學(xué)儀器“熱循環(huán)儀”的設(shè)計和實(shí)踐中,使用方便,簡單可行,節(jié)約成本,能夠滿足大多數(shù)數(shù)據(jù)采樣的應(yīng)用場合。