例 將at89c51片內(nèi)ram30h、31h單元中的16位數(shù)據(jù)通過(guò)spi總線接口傳送到數(shù)模轉(zhuǎn)換器tlc 5615。
分析:tlc5615是3線串行總線接口10位電壓輸出數(shù)/模轉(zhuǎn)換器,它既可與單片機(jī)的 spi總線接口相連接,又可與單片機(jī)的microware總線(另外一種三線制總線)接口相連接。tlc5615內(nèi)部結(jié)構(gòu)如圖1所示。
tlc5615通過(guò)固定增益為2的運(yùn)放緩沖電阻網(wǎng)絡(luò),把10位數(shù)字?jǐn)?shù)據(jù)轉(zhuǎn)換為模擬電壓。在tlc5615芯片上電時(shí),內(nèi)部電路把d/a寄存器復(fù)位為0。其輸出具有與基準(zhǔn)輸入相同的極性,表達(dá)式為:vo=2×ref×code/1024
圖1 tlc5615內(nèi)部結(jié)構(gòu)
其中,code是通過(guò)串行總線接口輸入的待轉(zhuǎn)換的數(shù)據(jù);ref是基準(zhǔn)電壓。
tlc5615最大的串行時(shí)鐘速率不超過(guò)14mhz,10位dac的建立時(shí)間為12.5μs,通常更新速率限制至80khz以內(nèi)。tlc5615的16位移位寄存器在sclk的控制下從din引腳輸入數(shù)據(jù),高位在前,低位在后。16位移位寄存器中間的10位數(shù)據(jù)在上升沿的作用下輸入10位的d/a 寄存器供給d/a轉(zhuǎn)換。
at89c51與tlc5615通過(guò)串行總線接口傳送8位數(shù)據(jù)如圖2所示。因at89c51沒(méi)有spi接口,可用軟件的辦法來(lái)模擬spi的總線操作。p1.1模擬spi的數(shù)據(jù)輸出端(mosi),p1.2模擬spi的sck輸出端,p1.3模擬spi的從機(jī)選擇端(ss);tlc5615是數(shù)/模轉(zhuǎn)換器,不會(huì)向at89c51發(fā)送數(shù)據(jù),故不需要模擬spi的數(shù)據(jù)輸入端(miso)。
at89c51將片內(nèi)ram30h、3lh單元中的16位數(shù)據(jù)傳送到tlc5615的參考程序如下: