MCS-51與串行D/A轉(zhuǎn)換器的接口設(shè)計
1. 概述
在微機控制的電氣設(shè)備中,常常需要把數(shù)字信號變成模擬信號,以驅(qū)動電氣設(shè)備的運行,在這個過程中,D/A轉(zhuǎn)換是一個十分重要的環(huán)節(jié),亦是微機控制系統(tǒng)重要的組成部分。一般的D/A轉(zhuǎn)化芯片都是并行接口,如8位系列0830/0831/0832、10位系列7520/7530/7533和 12位系列1208/1209/1210等均為并行接口,14位、16位系列也全部為并行接口。只有AD7543是12位串行D/A轉(zhuǎn)換芯片,它是美國模擬器件公司(Analog Devices)的產(chǎn)品,屬于特殊用途D/A轉(zhuǎn)換器,和并行接口芯片有很大不同,使用該芯片構(gòu)成的系統(tǒng)具有接線簡單、使用方便、控制靈活的特點,具有較好的應(yīng)用前景和開發(fā)價值。
2. AD7543內(nèi)部框圖和特性
AD7543為16引腳雙列直插式封裝,內(nèi)部框圖和引腳符號如圖1所示。
AD7543的邏輯電路由12位串行輸入并行輸出移位寄存器(A)和12位DAC輸入寄存器(B)以及12位DAC單元組成。在選通輸入信號的前沿或后沿(由用戶選擇)定時地把RSI引腳上的串行數(shù)據(jù)裝入寄存器A,一旦寄存器A裝滿,在加載脈沖的控制下,寄存器A的數(shù)據(jù)便裝入寄存器B。并進行D/A轉(zhuǎn)換。
AD7543的引腳功能見表1。出現(xiàn)在AD7543的SRI引腳上的串行數(shù)據(jù)在STB1、STB2和STB4的上升沿或STB3的下降沿作用下,定時的移到移位寄存器A中,寄存器A和B控制輸入端所要求的各種信號的邏輯關(guān)系如表2所列。
AD7543的主要特性如下:
● 分辨率為12位。
● 非線性為±1/2LSB。
● 接正或負選通進行串行加載。
●用非同步清除輸入使其初始化。
●低功耗、最大為40mW。
3. AD7543和8031單片機的接口設(shè)計
實現(xiàn)AD7543與單片機的連接有兩種方法,其一是基于字節(jié)操作,利用串行通訊接口實現(xiàn),其二是基于位操作,利用普通輸入輸出口線實現(xiàn),兩種實現(xiàn)方法對A/D轉(zhuǎn)化芯片的轉(zhuǎn)換速度、工作以及數(shù)據(jù)傳輸?shù)牟ㄌ芈实燃夹g(shù)指示的要求各不相同。以下具體說明這兩種實現(xiàn)的方法。
3.1 AD7543與單片機串行通訊接口的連接
圖2是8031的串行口和AD7543相連的接口電路,8031的串行口選用方式0(移位寄存器方式),其TXD端移位脈沖的負跳變將RXD輸出的位數(shù)據(jù)移入AD7543,利用P1.0產(chǎn)生加載脈沖,由于是低電平有效,從而將AD7543移位寄存器A中的內(nèi)容輸入到寄存器B中,并啟動D/A,單片機復(fù)位端接AD7543的消除CLR端,以實現(xiàn)系統(tǒng)的同步。
由于AD7543的12位數(shù)據(jù)是由高字節(jié)至低字節(jié)串行輸入的,而8031單片機串行口工作于方式0時,其數(shù)據(jù)是由低字節(jié)至高字節(jié)串行輸出的。因此,在數(shù)據(jù)輸出之前必須重新裝配,并改變發(fā)送順序,以適應(yīng)AD7543的時序要求。如表3所列,其中數(shù)據(jù)緩沖區(qū)DBH為高字節(jié)存儲單元,DBL為數(shù)據(jù)低8位存儲單元。
改變數(shù)據(jù)發(fā)送順序的程序如下:
OUTDA:MOV A,DBH ;取高位
SWAP ;高4位和低4位交換
MOV DBH,A
MOV A,DBL ;取低位
ANL A,#OFOH ;截取高4位
SWAP ;高4位和低4位交換
ORL A,DBH ;合成,(DBH)=D11 D10 D9 D8 D7 D6 D5 D4
LCALL ASMBB ;順序轉(zhuǎn)換
MOV DBH,A ;存結(jié)果(DBH)=D4 D5 D6 D7 D8 D9 D10 D11
MOV A,DBL ;取低位
ANL A,#OFH ??;截取低4位
SWAP ;交換,(A)=D3 D2 D1 D0 0 0 0 0
LCALL ASMBB ??;順序轉(zhuǎn)換
MOV DBL,A ;存結(jié)果(A)=0 0 0 0 D0 D1 D2 D3
MOV A, DBH
MOV SBUF,A??;發(fā)送高8位
JNB TI $ ;等待發(fā)送完成
CLR TI ?。话l(fā)送完畢,清標志
MOV A,DBL
MOV SBUF,A ;發(fā)送低4位
JNB TI $ ;等待
CLR TI ;發(fā)送完畢
CLR P1.0 ;A寄存器加載到B寄存器
NOP
SETB P1.0 ;恢復(fù)
REF
……
ASMBB: MOV R6,#00H
MOV R7,#08H
CLR C
ALO: RLC A
XCH A,R6
RRC A
XCH A,R6
DJNZ R7,AL0
XCH A,R6
RET
以上這種方式的單片機串行通訊口與AD7543的接口電路,其波特率固定為CPU時鐘頻率的1/12,如果CPU的頻率為6MHz,那么波特率為50kbps,位周期為20μs,顯然,這種連接方法只能用于高速系統(tǒng)。
3.2 AD7543與單片機普通輸入輸出口線的連接
AD7543可以用8031的P1口實現(xiàn)數(shù)據(jù)傳送。這種方法的波特率可調(diào),傳輸速度由程序控制。電路與圖2相同,僅把8031的數(shù)據(jù)輸出端由RXD引腳改為P1.1,將移位脈沖輸出端由TXD改為P1.2口線,P1.0仍為加載脈沖輸出。其程序如下:
FS: MOV R7,#04H
MOV A,DBH;數(shù)據(jù)高4位
SWAP
LOOP1: RLC A
MOV P1.0 ;輸出
LCALL PULSE ;移位脈沖輸出
DJNZ R7,LOOP1 ;4位未完繼續(xù)
MOV R7,#08H
MOV A,DBLH ;數(shù)據(jù)低8位
LOOP2: RLC A
MOV P1.0 C ;輸出
LCALL PULSE ;移位脈沖輸出
DJNZ R7,LOOP2 ;8位未完繼續(xù)
CLR P1.1 ;輸出加載脈沖
NOP
SETB P1.1
RET ;傳送完畢
PULSE: SETB P1.1 ;輸出高電平
MOV R3,#4
PULS1: DJNZ R3,PULS1
CLR P1.1;輸出低電平
MOV R3,#4
PULS2:DJNZ R3,PULS2
RET
其中FS為AD7543驅(qū)動程序,子程序PULSE為移位脈沖形成程序,改變R3的數(shù)值可以改變移位脈沖的頻率。從而改變串行通訊波特率。