4 應用實例 硬體原理圖見圖5。這是一個評估電路,可同時安裝三片數字溫度感測器:AD7414、AD7416、AD7814,軟體輪流顯示各器件所測得的環境溫度,並模擬OTI輸出,用LED指示。現作如下幾點說明: (1)各器件的地址不同,而SDA、DOUT引線可直接相連;AD7414、AD7416的OTI輸出線與(低電平有效),現作超限報警指示。 (2)因溫度的慣性係數較大,可採用簡便有效的移動平均法、中值法、低通濾波法等進行軟體濾波。在實際應用中,可邊採樣,邊計算其平均值,以其平均值作為溫度採樣值。採樣次數為8~16次即可。 (3)本系統採用LCM103液晶模塊作溫度顯示,X25045作上電複位及看門狗用。 (4)AD7414、AD7416、AD7814的溫度數據採樣參考程序如下: ;偽定義 | | | | | ADCH | EQU | 32H | ;採樣值高位元組 | | ADCL | EQU | 31H | ;採樣值低位元組 | | ADCNUM | EQU | 30H | ;採樣次數 | | ADCS | BIT | P1.5 | ;AD7814片選 | | ADSCLK | BIT | P1.1 | ;AD7814時鐘 | | ADDOUT | BIT | P1.7 | ;AD7814數據輸出 | | ADSCL | BIT | P1.1 | ;AD7416時鐘 | | ADSDA | BIT | P1.7 | ;AD7416數據I/O | | ······ | | | | ;程序初始化 | | | | | ······ | | | | ;AD7814的採樣參考程序 | | SAMPLE78: | MOV | ADCNUM, #8 ;採樣8次 | SE078: | CLR | ADCS ;選中AD7814 | | MOV | R7, #16 ;產生16個取數脈衝 | | MOV | ADCH, #0 ;A/D值高位元組 | | MOV | ADCL, #0 ;A/D值低位元組 | SE178: | CLR | ADSCLK | | NOP | | | NOP | | | JB | ADDOUT, SE178 | SE378: | CLR | ADSCLK | | NOP | | | NOP | | | MOV | C, ADDOUT | | MOV | A, ADCL | | RLC | A | | MOV | ADCL, A | | MOV | A, ADCH | | RLC | A | | MOV | ADCH, A | | SETB | ADSCLK | | NOP | | | NOP | | | DJNZ | R7, SE378 | | SETB | ADCS | | ······ | ;進行數據處理 | | DJNZ | ADCNUM, SE078 | | RET | | ;AD7416的採樣參考程序;AD7414、AD7415與AD7416相似,但地址不同。 | SAMPLE74: | MOV | ADCNUM, #8 ;連續採樣8次 | SE074: | MOV | R6, #9EH ;片選AD7416的地址寫操作 | | MOV | R5, #1 ;選中配置寄存器 | | MOV | R4, #18H ;給配置寄存器賦值 | | LCALL | WRCOM ;三位元組的寫操作 | | MOV | R6,#10011110B | | MOV | R5,#3 ;選中溫度上限寄存器 | | MOV | R4,#40H ;上限溫度=64 | | LCALL | WRCOM | | MOV | R6,#10011110B | | MOV | R5,#2 ;選中溫度下限寄存器 | | MOV | R4,#20H ;上限溫度=32 | | LCALL | WRCOM | | MOV | R6,#10011110B | | MOV | R5,#0 ;選中溫度寄存器 | | MOV | WREXE ;兩位元組的寫操作 | | MOV | DATA1,#10011111B ;片選AD7416,讀操作 | | LCALL | RDCOM | | ······ | ;數據處理 | | DJNZ | ADCNUM,SE074 ;採樣未完,返回 | WRCOM: | LCALL | BEGIN ;三位元組的寫操作 | | MOV | DATA1,R6 | | LCALL | OUTBYTE ;輸出位元組 | | MOV | DATA1,R5 | | LCALL | OUTBYTE | | MOV | DATA1,R4 | | LCALL | OUTBYTE | | LCALL | STOP | | RET | | WREXE: | LCALL | BEGIN ;兩位元組的寫操作 | | MOV | DATA1,R6 | | LCALL | OUTBYTE | | MOV | DATA1,R5 | | LCALL | OUTBYTE | | LCALL | STOP | | RET | | RDCOM: | LCALL | BEGIN ;讀操作 | | LCALL | OUTBYTE | | LCALL | INBYTE ;輸入位元組 | | MOV | ADCH,DATA1 | | LCALL | NACK ;MCU使ADSDA數據線變為低電平 | | LCALL | INBYTE | | MOV | ADCL,DATA1 | | LCALL | ACK ;MCU使ADSDA數據線變為高電平 | | LCALL | STOP | | RET | | OUTBYTE: | MOV | R7,#8 ;輸出位元組 | OE1: | MOV | A,DATA1 | | RLCA | | | MOV | ADSDA,C | | MOV | DATA1,A | | LCALL | CLOCK | | DJNZ | R7,OE1 | | LCALL | ACK ;AD7416產生應答 | | RET | | INBYTE: | SETB | ADSDA ;輸入位元組 | | MOV | R7,#8 | INE1: | LCALL | CLOCK | | MOV | A,DATA1 | | RLCA | | | MOV | DATA1,A | | DJNZ | R7,INE1 | | RET | | NACK: | CLR | ADSDA ;AD7416無應答 | | LCALL | CLOCK ;ADSDA數據線為0,一個時鐘脈衝之後,ADSDA為1 | | RET | | ACK: | SETB | ADSDA ;AD7416有應答 | | LCALL | CLOCK ;ADSDA為1,一個時鐘脈衝之後,ADSDA為0 | | RET | | STOP: | CLR | ADSDA ;產生停止信號 | | SETB | ADSCL | | NOP | | | NOP | | | NOP | | | NOP | | | SETB | ADSDA | | RET | | BEGIN: | SETB | ADSDA ;產生開始信號 | | SETB | ADSCL | | NOP | | | NOP | | | NOP | | | NOP | | | NOP | | | CLR | ADSDA | | NOP | | | NOP | | | NOP | | | NOP | | | CLR | ADSCL | | RET | | CLOCK: | NOP | ;產生時鐘脈衝 | | SETB | ADSCL | | NOP | | | NOP | | | NOP | | | NOP | | | MOV | C,ADSDA | | CLR | ADSCL | | RET | | 總之,採用數字溫度感測器,可使設計者完全打破傳統的設計模式:感測器-運放-A/D轉換,從而大大簡化了設計方案,提高了電路的可靠性,輕鬆地實現標度變換過程。 參 考 文 獻 1 AD7416具有二線介面的10位低功耗數字溫度感測器數據手冊. 武漢力源電子股份有限公司, 1999.8 2 AD7414 Data sheet. AD公司 3 AD7415 Data sheet. AD公司 4 AD7814 Data sheet. AD公司 |