引言 在計算機(jī)的測控系統(tǒng)中,常要用到模擬輸出,數(shù)模轉(zhuǎn)換器(DAC)就是一種將數(shù)字信號轉(zhuǎn)換成模擬電信號的器件。DAC根據(jù)輸入數(shù)據(jù)的格式一般分為并行和串行兩種,并行的DAC通常有8位、10位、12位和16位等,并行芯片進(jìn)行D/A轉(zhuǎn)換時,輸出建立時間短,通常不超過10μs,但它們的引腳比較多,芯片體積大,與CPU連接時電路較復(fù)雜。有些應(yīng)用并不太計較D/A轉(zhuǎn)換的輸出建立時間,比如在數(shù)控機(jī)床中,主軸電機(jī)通常由交流變頻器來控制,交流變頻器接受數(shù)控系統(tǒng)輸出的模擬電壓,當(dāng)需要改變主軸轉(zhuǎn)速時,從數(shù)字量轉(zhuǎn)速的輸入到模擬量轉(zhuǎn)速的實(shí)現(xiàn),由于三相異步電機(jī)的啟動,中間通常有一個較長的時間(一般需要1~3s)。此時,在數(shù)控系統(tǒng)中,選用串行DAC來控制變頻器,即可滿足要求,雖然輸出建立時間比并行DAC稍長(通常也不超過100μs),但這樣的時間與電機(jī)的啟動時間比起來,完全可以忽略不計,且串行DAC與CPU連接時所用引線少、電路簡單,芯片體積小、價格低。 當(dāng)精度要求不是太高時,對于單路的DAC,可以選用美國MAXIM公司生產(chǎn)的8位串行D/A芯片MAX517。本文將主要介紹MAX517的特性及其與AT89S52單片機(jī)的通信。 MAX517的性能簡介 MAX517是8位電壓輸出型數(shù)模轉(zhuǎn)換器,它帶有簡單的雙線串行接口,允許多個設(shè)備之間進(jìn)行通信。MAX517使用簡單的雙線串行接口,只需要標(biāo)準(zhǔn)的微處理器提供2根總線與之相連,如圖1所示。微處理器的SCL輸出時鐘信號,SDA輸出數(shù)據(jù)。當(dāng)微處理器的SCL傳送時鐘脈沖時,對于MAX517來說,最高頻率不能超過400kHz,即波特率不超過400kbps。圖2是MAX517的一個完整的串行數(shù)據(jù)傳送時序。 首先,微處理器應(yīng)給MAX517一個地址字節(jié),MAX517收到之后,給處理器一個應(yīng)答信號;其次,處理器再給MAX517一個命令字節(jié),MAX517收到之后,又發(fā)一個應(yīng)答信號給處理器;最后,處理器將要轉(zhuǎn)換的數(shù)字量(輸出字節(jié))送給MAX517,MAX517收到之后,再一次向處理器發(fā)送一個應(yīng)答信號。至此,一個完整的串行數(shù)據(jù)傳送即告結(jié)束。 MAX517與AT89S52單片機(jī)的通信 對于AT89S52單片機(jī)來說,有兩種方式向MAX517傳送數(shù)據(jù),一種是串行傳送方式,另外一種是普通輸出方式。 ● 串行傳送方式 如圖4所示,將AT89S52的RXD、TXD引腳分別連接到MAX517的SDA和SCL引腳,把AT89S52的串行口設(shè)置成工作方式0。此時,AT89S52 CPU的串行口為同步移位寄存器方式,其波特率是固定的,為CPU晶振頻率fosc的 1/12,數(shù)據(jù)由RXD引腳出入,同步移位脈沖由TXD引腳送出,發(fā)送或接收的是8位數(shù)據(jù),低位在先,高位在后。當(dāng)一個8位的數(shù)據(jù)寫入CPU的串行口發(fā)送緩沖器SBUF時,串行口即將8位數(shù)據(jù)以 fosc/12的波特率從RXD引腳輸出(從低位到高位),發(fā)送完成時,置中斷標(biāo)志TI=1。采用上述傳送方式時,正好與MAX517的串行口特性相吻合。詳細(xì)的傳送程序清單如下。 ---CLR ES ;關(guān)串行口中斷 ---MOV SCON,#00H ;初始化,寫串行口控制字,取工作模式0 ---MOV A,#01011000B ;準(zhǔn)備MAX517的地址字節(jié) ---MOV SBUF,A ;向CPU的串口發(fā)送 ---JNB TI,$ ;送完8位否?若未送完,則踏步等待 ---CLR TI ;若送完,則清TI標(biāo)志 ---JB P3.0,$ ;查應(yīng)答信號 ---NOP ;地址已送完 ---MOV A,#00000000B ;準(zhǔn)備MAX517的命令字節(jié) ---MOV SBUF,A ;向CPU的串口發(fā)送 ---JNB TI,$ ;送完8位否?若未送完,則踏步等待 ---CLR TI ;若送完,則清TI標(biāo)志 ---JB P3.0,$ ;查應(yīng)答信號 ---NOP ;命令已送完 ---MOV A,#xxH ;準(zhǔn)備MAX517的輸出字節(jié) ---MOV SBUF,A ;向CPU的串口發(fā)送 ---JNB TI,$ ;送完8位否?若未送完,則踏步等待 ---CLR TI ;若送完,則清TI標(biāo)志 ---JB P3.0,$ ;查應(yīng)答信號 ---NOP ;輸出字節(jié)已送完 ---RET 值得注意的是,MAX517的+5V SCL在接收CPU送來的脈沖信號時,fmax=400kHz,而CPU的串口工作在方式0時,從TXD引腳輸出的脈沖頻率fTXD=fosc/12。這樣,就要求fTXD=fosc/12≤400kHz,即fosc≤4.8MHz,也就是說,CPU的晶振頻率不能超出4.8MHz。對于機(jī)床數(shù)控系統(tǒng)來說,選用MCS-51系列單片機(jī)作CPU時,若fosc≤4.8MHz,雖然照顧了MAX517的數(shù)據(jù)傳送,但會導(dǎo)致系統(tǒng)的處理速度大大降低。因此,采用CPU串口方式0進(jìn)行數(shù)據(jù)傳送的方案,要視具體場合,在高速場合,通常不可取,只能用在低速場合。另外,采用串行傳送時,CPU就不能再與其他系統(tǒng)進(jìn)行串行通信了。 ● 普通輸出方式 在普通輸出方式下,可以通過CPU的2根輸出線,或系統(tǒng)擴(kuò)展輸出芯片(如8255A)的2根輸出線與MAX517進(jìn)行通信。圖4中采用的是AT89S52的P1.1、P1.0兩引腳,分別與MAX517的SCL、SDA兩引腳相連接。CPU遵照MAX517的工作時序,通過其P1.1引腳在必要的時候主動地輸出單個的時鐘脈沖,作為時鐘信號,然后從P1.0引腳逐個地輸出地址字節(jié)、命令字節(jié)和輸出字節(jié)。在普通輸出方式下,串行數(shù)據(jù)傳送的軟件流程如圖5所示。在數(shù)據(jù)的傳送過程中,必須遵守以下的約定: (1)起始條件 傳送沒有開始的時候,CPU 先將P1.1置高,使得MAX517的SCL=1;然后CPU控制P1.0由高變低,使得MAX517的SDA產(chǎn)生負(fù)跳變,標(biāo)志著傳送的開始。 (2)中間過程 中間過程需要傳送地址字節(jié)、命令字節(jié)和輸出字節(jié)。根據(jù)MAX517的工作時序,當(dāng)且僅當(dāng)SCL=0(即P1.1=0)時,SDA才能產(chǎn)生跳變(P1.0由0變1,或由1變0);當(dāng)SCL=1(即P1.1=1)時,SDA狀態(tài)保持(即P1.0=0或1,保持不變)。 (3)終止條件 當(dāng)傳送快要結(jié)束的時候,CPU先將P1.1置高,使得MAX517的SCL=1;然后CPU控制P1.0由低變高,使得MAX517的SDA產(chǎn)生正跳變,標(biāo)志著傳送的結(jié)束。 在普通輸出方式下,不占用CPU的串行口,不影響本系統(tǒng)與其他系統(tǒng)的串行數(shù)據(jù)通信;并且普通輸出方式的傳送易于控制速度,不像串行傳送方式對CPU的晶振頻率有限制,因此推薦使用普通輸出方式。 結(jié)束語 在研制的機(jī)床數(shù)控系統(tǒng)中,選擇AT89S52單片機(jī)作為CPU,采用本文提出的普通輸出方式向MAX517傳送數(shù)據(jù),實(shí)現(xiàn)了對交流變頻器的控制。應(yīng)用實(shí)踐表明,采用MAX517進(jìn)行D/A轉(zhuǎn)換時,硬件連接簡單,軟件編程方便,器件成本低廉,系統(tǒng)運(yùn)行可靠。本文提出的單片機(jī)與MAX517的通信方式,對于MAX518和MAX519兩種DAC也具有一定的參考價值。 參考文獻(xiàn) 1 吳秀清等.微型計算機(jī)原理與接口技術(shù).中國科學(xué)技術(shù)大學(xué)出版社.2002 2 劉紅玲等.實(shí)用微機(jī)接口技術(shù).中國電力出版社.2003 3 MAXIM. NEW RELEASES DATA BOOK. Volume V. Printed USA.1996 4 李華.MCS-51系列單片機(jī)實(shí)用接口技術(shù).北京航空航天大學(xué)出版社.1993 5 王玉琳.CK-I型車床閉環(huán)控制系統(tǒng)的研究與應(yīng)用.合肥工業(yè)大學(xué).1991 |