1 引言 TLC2543是TI公司的12位串行模數轉換器,使用開關電容逐次逼近技術完成A/D轉換過程。由于是串行輸入結構,能夠節省51系列單片機I/O資源;且價格適中,分辨率較高,因此在儀器儀表中有較為廣泛的應用。 2 TLC2543的特點 (1)12位分辯率A/D轉換器; (2)在工作溫度范圍內10μs轉換時間; (3)11個模擬輸入通道; (4)3路內置自測試方式; (5)采樣率為66kbps; (6)線性誤差±1LSBmax; (7)有轉換結束輸出EOC; (8)具有單、雙極性輸出; (9)可編程的MSB或LSB前導; (10)可編程輸出數據長度。 3 TLC2543的引腳排列及說明 TLC2543有兩種封裝形式:DB、DW或N封裝以及FN封裝,這兩種封裝的引腳排列如圖1,引腳說明見表1。 圖1TLC2543的封裝 表1TLC2543引腳說明 4 接口時序 可以用四種傳輸方法使TLC2543得到全12位分辯率,每次轉換和數據傳遞可以使用12或16個時鐘周期。 一個片選()脈沖要插到每次轉換的開始處,或是在轉換時序的開始處變化一次后保持為低,直到時序結束。 圖2顯示每次轉換和數據傳遞使用16個時鐘周期和在每次傳遞周期之間插入的時序,圖3顯示每次轉換和數據傳遞使用16個時鐘周期,僅在每次轉換序列開始處插入一次時序。 圖216時鐘傳送時序圖(使用,MSB在前) 圖316時鐘傳送時序圖(不使用,MSB在前) 5TLC2543在智能儀器儀表中的應用 TLC2543是12位分辯率,與MAX186在功能上基本相同,但價格比MAX186低得多,因此TLC2543在便攜式數據記錄儀、醫用儀器、電力檢測儀表中具有廣泛的應用。下面主要講述TLC2543在電力監控顯示屏中的應用。 在電廠和變電站中,電網中的電壓和電流由于多種原因常常處于波動狀態,為了給工作人員提供有效數據,并在超值范圍內采取有效措施,監測電網中電壓和電流值是非常必要的。該系統主要是采用TLC2543作A/D轉換器,把電壓和電流值轉換成數字信號,GMS90C32作CPU,進行數字信號處理,PS7219作LED顯示驅動器,把監測的電壓和電流值顯示出來,本文主要介紹TLC2543在電力監控顯示屏中與單片機GMS90C32的接口部分,包括硬件和軟件兩部分。 5.1 硬件 GMS90C××和GMS97C××系列是LGS公司的51系列單片機,這類單片機都不帶SPI或相同的接口能力,為了和TLC2543模數轉換器接口,需要用軟件來模擬SPI的時序操作。圖4是TLC2543和GMS90C××或GMS97C××的接口簡圖,TLC2543的I/O時鐘、數據輸入、片選由并行雙向I/O口1的引腳P1.0、P1.1、P1.3提供。TLC2543的轉換結果數據通過口1的P1.2腳接收,通道選擇和方式數據通過口3輸入到微控制器。 圖4TLC2543和GMS90C32接口 在設計制作時要注意如下 三個問題: (1)電源去耦 當使用TLC2543這種12位A/D器件時,每個模擬IC的電源端必須用一個0.1μF的陶瓷電容連接到地,用作去耦電容。在噪聲影響較大的環境中,建議每個電源和陶瓷電容端并一個10μF的鉭電容,這樣能夠減小噪聲的影響。 (2)接地 對模擬器件和數字器件,電源的地線回路必須分開,以防止數字部分的噪聲電流通過模擬地回路引入,產生噪聲電壓,從而對模擬信號產生干擾。所有的地線回路都有一定的阻抗,因此地線要盡可能寬或用地線平面,以減小阻抗,連線應當盡可能短,如果使用開關電源,則開關電源要遠離模擬器件。 (3)電路板布線 使用TLC2543時一定要注意電路板的布線,電路板的布線要確保數字信號和模擬信號隔開,模擬線和數字線特別是時鐘信號線不能互相平行,也不能在TLC2543芯片下面布數字信號線。 5.2 軟件 包括主程序和兩個子程序“SET1”、“SET2”。主程序定義口1的I/O引腳方向:P1.2設置為輸入端,P1.0、P1.1和P1.3設置為輸出端。設定P1.3使TLC2543片選端為高,“SET1”被調用,這個子程序模擬SPI操作,在TLC2543和微控制器間交換數據。檢測最低位前導(LSBF)標志,即通道選擇/方式數據字節的位1,以決定轉換結果的哪個字節最先傳送,子程序“SET2”用于映射相應于所選擇的特定通道的MSBYTE和LSBYTE到偶數或奇數的RAM地址。 程序清單如下: ORG2000H BEGIN:MOVSP,#50H;設置堆棧指針 MOVP1,#04H;定義口1的輸入和輸出 CLRP1.0;清I/O時鐘 SETBP1.3;設置片選 為高 MOVA,#0FFH ACALLSET1;調SET1子程序 ACALLSET2;調SET2子程序 JMPBEGIN;轉到BEGIN SET1:MOVR4,P3;讀方式/通道數據 MOVA,R4 CLRP1.3;設置片選為低 JBACC.1,LSB;如果A的位1為1,則先傳送低字節 MSB:MOVR5,#08H;設置高4位計數器 LOP1:MOVC,P1.2;讀轉換結果 RLCA;A寄存器的內容左移 MOVP1.1,C;輸出方式/通道字節 SETBP1.0;設置I/O時鐘為高 CLRP1.0;設置I/O時鐘為低 DJNZR5,LOP1;不為0則返回LOP1 MOVR2,A;把高字節放到R2 MOVA,R4;把方式/通道控制字放到R2 JBACC.1,RETURN LSB:MOVR5,#08H;設置低字節計數器 LOP2:MOVC,P1.2;讀轉換數據到C RLCA;A的內容到C MOVP1.1,C;輸出方式/通道字節 SETBP1.0;設置時鐘為高 CLRP1.0;設置時鐘為低 DJNZR5,LOP2;R5不為0,則返回LOP2 MOVR3,A;把低字節反放到R3 MOVA,R4;把方式/通道控制字放到R3 JBACC.1,MSB;如果R4的位1為1,則傳送高字節 RETURN:RET SET2:MOVA,R4;讀方式/通道控制字 ANLA,#0F0H;保留通道控制字 SWAPA;A寄存器中的高4和低4位交換 MOVB,#02H MULA,B;A和B相乘 ADDA,#030H;A的內容再加30H MOVR1,A MOVA,R2 MOV@R1,A;把高字節的內容放到對應地址中 INCR1 MOVA,R3 MOV@R1,A;把低字節的內容放到對應地址中 RET END |