基于89C51單片機串行A/D驅(qū)動程序的設(shè)計
串行A/D轉(zhuǎn)換器轉(zhuǎn)換后的結(jié)果是以串行方式輸出,數(shù)字量以串行方式輸出可簡化系統(tǒng)的連線,縮小電路板的面積,節(jié)省系統(tǒng)的資源。下面以TLC2543為例,介紹串行A/D驅(qū)動程序的設(shè)計。
89C51單片機與TLC2543芯片的接口電路圖如下圖所示。TLC2543的3個控制輸入端CS(的反)、I/OCLOCK、DATAINPUT和一個數(shù)據(jù)輸出端DATAOUT分別與單片機的P1.4、Pl.l、P1.2和P1.3引腳相連,單片機采用的晶振頻率為12MHz。
電路設(shè)計時,我們將TLC2543有兩個基準電壓輸入REF+、REF-分別與電源(VCC)、GND相連,這樣連接可保證數(shù)字輸出的滿度和零點,但在高精度的測量要求中,如果VCC的質(zhì)量一般,應(yīng)專門設(shè)計高精度的電壓基準電路。由于TLC2543的轉(zhuǎn)換速度很快,因此這里的轉(zhuǎn)換結(jié)束標志接在單片機的Pl.0引腳,采用查詢方式。
TLC2543通過串行接口與單片機通信,接口程序按照TLC2543的工作時序要求編寫,根據(jù)圖9-2中硬件連接關(guān)系,編寫單片機89C51采樣外部AINO通道模擬量的程序。主要包括用于實現(xiàn)讀取TLC2543的A/D轉(zhuǎn)換值子程序,具體C51程序如下。
根據(jù)上面的硬件原理圖可以采用的延時(查詢)方式來實現(xiàn)A/D轉(zhuǎn)換的,也可以將EOC接反相器后再與外部中斷輸入端相連,在中斷服務(wù)程序中啟動下次轉(zhuǎn)換并讀取本次轉(zhuǎn)換數(shù)據(jù)。
LC2543輸入的是本次需要轉(zhuǎn)換的通道地址,而輸出的是上次轉(zhuǎn)換后的結(jié)果,因此,啟動轉(zhuǎn)換后的第一個輸出數(shù)據(jù)是隨機數(shù),必須丟棄。
在采集多路模擬量數(shù)據(jù)并且要求較高分辨率時是較好的一種可行方案。在高精度的場合,對于參考電壓我們還要設(shè)計專門的精密基準電源。