日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ADC0809转换器

發布時間:2024/3/7 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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转换器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。