1 引言 實驗和工程實際中我們要進行大量的數據處理。運用單片機采集系統能很好的解決這些問題。基本的采集系統一般由MCU,A/D,PC構成, MCU 是整個系統的核心,A/D是數據的源頭,PC是數據的歸宿地。A/D轉換器的選擇直接關系到采集精度是否理想。現在TLC2543這款A/D轉換器運用很廣泛。TLC2543是TI公司的12位串行模數轉換器,使用開關電容逐次 逼近技術完成A/D轉換過程。由于是串行輸入結構,能夠節省51系列單片機I/O資源;且價格適中,分辨率較高。 2 TLC2543的引腳排列及說明 (1) TLC2543的封裝形式 TLC2543的封裝形式:DB、DW或N封裝以及FN封裝,這兩種封裝的引腳的排列及說明見圖1。 (2) TLC2543的簡要工作過程 TLC2543的工作過程分為兩個周期:I/O周期和轉換周期。 a) I/O周期 I/O周期由外部提供的I/O CLOCK定義,延續8、12或16個時鐘周期,決定于選定的輸出數據長度。器件進入I/O周期后同時進行兩種操作。 l在I/O CLOCK的前8個脈沖的上升沿,以MSB前導方式從DATA INPUT端輸入8位數據流到輸入寄存器。其中前4位為模擬通道地址,控制14通道模擬多路器從11個模擬輸入和三個內部測電壓中選通一路送到采樣保持電路,該電路從第4個I/O CLOCK脈沖的下降沿開始對所選信號進行采樣,直到最后一個I/O CLOCK脈沖的下降沿。I/O周期的時鐘脈沖個數與輸出數據長度(位數)同時由輸入數據的D3、D2位選擇為8、12或16。當工作于12或16位時,在前8個時鐘脈沖之后,DATA INPUT無效。 l在DATA OUT端串行輸出8、12或16位數據。當CS保持為低時,第一個數據出現在EOC的上升沿。若轉換由CS控制,則第一個輸出數據發生在CS的下降沿。這個數據串是前一次轉換的結果,在第一個輸出數據位之后的每個后續位均由后續的I/O時鐘下降沿輸出。 b) 轉換周期 在I/O周期的最后一個I/O CLOCK下降沿之后,EOC變低,采樣值保持不變,轉換周期開始,片內轉換器對采樣值進行逐次逼近式A/D轉換,其工作由與I/O CLOCK同步的內部時鐘控制。轉換完成后EOC變高,轉換結果鎖存在輸出數據寄存器中,待下一個I/O周期輸出。I/O周期和轉換周期交替進行,從而可減小外部的數字噪聲對轉換精度的影響。 3 接口時序 可以用四種傳輸方法使TLC2543得到全12位分辯率,每次轉換和數據傳遞可以使用12或16個時鐘周期。 一個片選()脈沖要插到每次轉換的開始處,或是在轉換時序的開始處變化一次后保持為低,直到時序結束。 圖2顯示每次轉換和數據傳遞使用16個時鐘周期和在每次傳遞周期之間插入的時序,圖3顯示每次轉換和數據傳遞使用16個時鐘周期,僅在每次轉換序列開始處插入一次時序。 4 硬、軟件設計 4.1 硬件設計 MAX3232為RS-232收發器,簡單易用,單+5V電源供電,僅需外接幾個電容即可完成從TTL電平到RS-232電平的轉換;AT89C52 為51系列的芯片,使用方便可靠。引腳排列如圖4、圖5所示。 硬件電路原理圖如下圖6所示: 在設計制作時要注意如下3個問題: (1) 電源去耦 當使用TLC2543這種12位A/D器件時,每個模擬IC的電源端必須用一個0.1μF的陶瓷電容連接到地,用作去耦電容。在噪聲影響較大的環境中,建議每個電源和陶瓷電容端并一個10μF的鉭電容,這樣能夠減小噪聲的影響。 (2) 接地 對模擬器件和數字器件,電源的地線回路必須分開,以防止數字部分的噪聲電流通過模擬地回路引入,產生噪聲電壓,從而對模擬信號產生干擾。所有的地線回路都有一定的阻抗,因此地線要盡可能寬或用地線平面,以減小阻抗,連線應當盡可能短,如果使用開關電源,則開關電源要遠離模擬器件。 (3) 電路板布線 使用TLC2543時一定要注意電路板的布線,電路板的布線要確保數字信號和模擬信號隔開,模擬線和數字線特別是時鐘信號線不能互相平行,也不能在TLC2543芯片下面布數字信號線。 4.2 軟件編程 單片機程序主要包括串行數據采集模塊“DATA_AD”和串行數據傳輸模塊“RS232”,調試所用到的顯示子程序在此略去。 TLC2543的通道選擇和方式數據為8位,其功能為:D7、D6、D5和D4用來選擇要求轉換的通道,D7D6D5D4=0000時選擇0通道,D7D6D5D4=0001時選擇1通道,依次類推;D3和D2用來選擇輸出數據長度,本程序選擇輸出數據長度為12位,即D3D2=00或D3D2=10;D1,D0選擇輸入數據的導前位,D1D0=00選擇高位導前。TLC2543在每次I/O周期讀取的數據都是上次轉換的結果,當前的轉換結果在下一個I/O周期中被串行移出。第一次讀數由于內部調整,讀取的轉換結果可能不準確,應丟棄。(這里只給出A/D程序) file://TLC2543/ A/D轉換用程序用C51編寫。 #define uchar unsigned char #define uintunsigned int file://==========AD/采樣模塊============// sbit CLOCK =P1^1; sbit D_IN=P1^2; sbit D_OUT =P1^3; sbit _CS=P1^4; uint read2543(uchar port) file://從/TLC2543讀取采樣值, file://形/參port是采樣的通道號 { uint data ad;uint data i; uchar data al=0,ah=0; CLOCK=0; _CS=0; for(i=0;i5結束語 實際運行證明,用TLC2543芯片對數據進行采集預定的功能已經實現。同時用C51編寫的程序以后有很好的移植性。 |