ADC0809转换器
外部特性
ADC0809是8通道、片內帶三態輸出鎖存器的A/D轉換器,具有8位分辨率,轉換時間100μs,內有28個引腳,如圖所示:
管腳定義:
- ADDA、ADDB、 ADDC:8選1通道地址輸入端。選擇轉換的輸入通道。比如CBA=011,則選中IN3引腳的輸入電壓進行A/D轉換。
- ALE:通道地址鎖存選通端。輸入上跳沿有效,它有效時,C、B、A的通道地址值才能進入通道地址鎖存器。
- START:啟動A/D轉換控制引腳。由高電平下跳為低電平時有效,可將START 與ALE連接在一起使用,安排一個CPU寫端口地址,正脈沖上升沿通道地址(碼)被寫入通道地址鎖存器,下降沿啟動A/D轉換。
- EOC:ADC轉換狀態輸出信號引腳。未啟動轉換時,EOC為高電平;啟動轉換后,EOC為低電平;一旦轉換完畢,E0C變為高電平。此信號可供CPU查詢或向CPU發中斷。
- D7-D0:8位數字量輸出引腳。 D7為MSB,D0為LSB。
- OE(ENABLE):數字量輸出允許控制端。輸入正脈沖有效,它有效時,數據輸出三態門被打開,轉換好的數字量各位被送到D7—D0引腳上;它無效時,D7—D0浮空(高阻隔離) 。OE端必須設置一個CPU讀數據的端口地址。
內部結構
工作時序
數據輸出即D7—D0,流程若是看圖片看不懂可以看后面的應用舉例里面的分析。
ADC0809應用
- 用EOC引腳:查詢是否為高電平進行轉換數據的讀取
- 用EOC引腳:申請中斷,利用中斷程序讀取轉換數據
- 不直接用EOC引腳:延時讀取轉換的數據,延時至少100us
ADC0809查詢轉換方法:
步驟:通道選擇 → 啟動A/D轉換 → 讀取EOC狀態 → 判斷轉換是否完成?
→ 讀取數據
ADC0809中斷轉換方法:
- 通道選擇
- 主程序要對8259A初始化,設置中斷向量,開中斷,第1次啟動A/D的工作要在主程序里做
- 中斷服務程序里要完成從ADC0809中采集數據、存數據,并啟動下一次A/D轉換。
注:查詢和中斷方式都是這個圖
應用舉例:
如圖所示為ADC 0809芯片通過通用接口芯片8255A與CPU(8086)的接口電路,ADC 0809的輸出數據通過8255A的PA口給CPU,而地址譯碼輸入信號ADDA,ADDB和ADDC以及地址鎖存信號ALE由8255A的PB口的PB3~PB0提供,A/D轉換的狀態信息EOC則由PC4輸入,輸出允許信號OE由PC0輸出。
分析流程:
這個案例中0809芯片是通過8255芯片與8086CPU相連,實現與CPU之間的輸入輸出(一般來講,同時與CPU合作的芯片有很多,各個芯片之間是這樣的合作關系)。 0809 的第一件事是設置地址信號,然后將地址信號鎖存,賦予一個開始脈沖,這時候就開始轉換了。轉換的時間是一個自動的過程,不可控,因此要查詢EOC這個轉換結束信號來確認轉換是否結束,結束了再設置OE信號把轉換完的數據讀給CPU。
連接引腳:
- 0809的啟動START——8255的PB4
- 0809的地址選通ALE——PB3(ALE是通道地址鎖存選通端也叫地址選通)
- EOC——PC4
- OE——PC0
編程分析過程:
(1)因為這個過程需要8255的配合,所以準備工作需要對8255初始化:
MOV DX,86H MOV AL,98H OUT DX,AL說明:
首先根據0809的工作流程的需要,可以確定與之相連的8255的各個引腳是作為輸入還是輸出(8255工作在方式0,那么8255初始化的控制字可以確定。其中8255的端口地址分別是80H 82H 84H 86H,每個寄存器分配了兩個字節的空間):8255的A口是輸入,B口是輸出,C口低4位是輸出,高四位是輸入。即1001 1000(98H)。
(2)轉化的IN3的通道工作。下一個動作就是要選通這個地址并將其鎖存,這個需要CPU向B接口寫數據(高四位沒有使用,默認設置為0):
MOV AL,0BH ;(ALE=1,CBA=011,向B口寫數據) OUT 82H,AL ;B口地址為82H(3)開啟轉換脈沖了,打開START信號:
MOV AL,1BH OUT 82H,AL(4)還要有這樣一個動作,就是START是開完就關上了,脈沖信號不是一直保持高電平:
MOV AL,0BH OUT 82H,AL(5)檢查EOC引腳,判斷是否轉換結束,對應8255的PC4引腳,因此要讀入C口的值,并測試PC4位的值是否是1,如果是1就說明轉換結束了,否則繼續等待:
AGAIN: IN AL, 84H ;循環的程序段,如果跳出了這個循環意味著測試到PC4是1AND AL, 10HJZ AGAIN(6)向OE寫高電平,然后讀出A口的數據:
MOV AL, 01H OUT 84H, AL IN AL, 80H完整代碼:
START: MOV AL, 98H ;8255A控制字OUT 86H, AL ;寫入8255A控制端口地址MOV AL, 0BH ;選IN3輸入端和地址鎖存信號OUT 82H, AL ;選IN3通道地址寫入8255A的B口地址MOV AL, 1BH ;START PB4=1OUT 82H, AL ;啟動A/D轉換MOV AL, 0BH ;OUT 82H, AL ;START ← PB4=0 AGAIN: IN AL, 84H ;讀C口狀態AND AL, 10H ;檢測EOC狀態JZ AGAIN ;如未轉換完,再測試;轉換完則繼續MOV AL,01H OUT 84H,AL ;PC0=1,OE高電平IN AL,80H ;從8255A的A口地址讀轉換結果HLT ;暫停總結
以上是生活随笔為你收集整理的ADC0809转换器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TensorRT报Cuda initia
- 下一篇: 威尔逊云室的一些知识