[!--tag.name--]

教你如何來看單片機外設A/D轉換器ADC0804時序圖

標簽:ADC0804   

《教你如何來看單片機外設A/D轉換器ADC0804時序圖》這篇文章中存在錯誤,具體如下:

*錯誤描述:
*聯系郵箱:

  如圖,為單片機AD轉換器的一種:

ADC0804單片集成A/D轉換器。它采用CMOS工藝20引腳集成芯片,分辯率為8位,轉換時間為100µs,輸入電壓范圍為0~5V。芯片內具有三態輸出數據鎖存器,可直接接在數據總線上。

1.jpg 

各引腳名稱及作用如下:

VIN(+),VIN(-)——兩模擬信號輸入端,用以接收單極性、雙極性和差模輸入信號。

DB7~DB0——具有三態特性數字信號輸出口。

AGND——模擬信號地。

DGND——數字信號地。

CLK——時鐘信號輸入端。

CLKR——內部時鐘發生器的外接電阻端,與CLK端配合可由芯片自身產生時鐘脈沖,其頻率為1/(1.1RC)。

CS#---片選信號輸入端,低電平有效,一旦CS#有效,表明A/D轉換器被選中,可啟動工作。

WR#---寫信號輸入,低電平啟動A/D轉換。

RD#---讀信號輸入,低電平輸出端有效。

INTR#---A/D轉換結束信號,低電平有效表示本次轉換已完成。

VREF/2---參考電平輸入,決定量化單位。

VCC---芯片電源5V輸入。

打開ADC0804的數據手冊,我們可以看到以下典型的電路接法:

2.png

我們可以用仿真軟件畫出來:

3.png

接下來,我們分析一下上圖的工作原理:

①ADC0804的片選端CS連接U2鎖存哭的Q7輸出端,我們可通過控制鎖存器來控制CS,這樣接的原因是TX-1C實驗板擴展的外圍太多,沒有多余的I/O口獨立控制ADC0804的CS端,所以選擇U2。

② VIN(+)接電位器的中間滑動端,VIN(-)接地,因為這兩端可以輸入差分電壓,即它可測量VIN(+)與VIN(-)之間的電壓,當VIN(-)接地時,VIN(+)端的電壓即為ADC0804的模擬輸入電壓。VIN(+)與電位器之間串聯一個10kΩ電阻,目的是限制流入VIN(+)端的電流,防止電流過大而燒壞A/D芯片,當用短路帽短接插針ADIN后,電位器的中間滑動端便通過電阻R12與VIN(+)連接,此時調節電位器的旋鈕,其中間滑動端的電壓便在0~VCC變化,進而ADC0804的數字輸出端也在0x00~0xFF變化。

③ CLKR,CLR,GND之間用電阻和電容組成RC振蕩電路,用來給ADC0804提供工作所需的脈沖,其脈沖的頻率為1/(1.1RC),按芯片手冊上說明,R取10kΩ,C取150pF,TX-1C實驗板上為了減少元件種類和焊接方便,C選用的是104磁片電容。大家在設計自己的電路時,可選擇150pF電容,否則會影響A/D的轉換速率。

④ VREF/2端用兩個1kΩ的電阻分壓得到VCC/2電壓,即2.5V,將該電壓作為A/D芯片工作時內部的參考電壓。

⑤WR#、 RD#分別接單片機的P3.6和P3.7引腳,數字輸出端接單片機的P1口。

⑥ 將AGND和DGND同時連接到實驗板的GND上。我們在設計產品時,若用到A/D和D/A,一般這些芯片都提供獨立的模擬地(AGND)和數字地(DGND)引腳,為了達到精度高,穩定性好的目的,最好將所有器件的模擬地和數字地分別連接,最后將模擬地與數字地僅在一點連接。

⑦ INTR#引腳未連接,TX-1C實驗板上讀取A/D數據未用中斷法,因此可不接該引腳。數字芯片在操作時首先要分析它的操作時序圖,圖4.4.6是ADC0804的啟動轉換時序圖。

ADC0804轉換時序圖:

分析圖4.4.6可知,CS先為低電平,WR#隨后置低,經過至少tW(WR#)L時間后,WR#拉高,隨后A/D轉換器被啟動,并且在經過(1~8個A/D時鐘周期+內部TC)時間后,模/數完成轉換,轉換結果存入數據鎖存器,同時INTR自動變為低電平,通知單片機本次轉換已結束。關于幾個時間的大小在芯片手冊中都有說明。

我在寫單片機程序啟動A/D轉換時就要遵循上面的時序,由于TX-1C實驗板未用中斷讀取A/D數據,因此我們在啟動A/D轉換后,稍等一會兒時間,然后直接讀取A/D的數字輸出口即可。讀取結束啟動一次A/D轉換,如此循環下去。力4.4.7是ADC0804讀取數據時序圖。

4.png

分析上圖可知,CS先為低電平,WR#隨后置低,經過至少tW(WR#)L時間后,WR#拉高,隨后A/D轉換器被啟動,并且在經過(1~8個A/D時鐘周期+內部TC)時間后,模/數完成轉換,轉換結果存入數據鎖存器,同時INTR自動變為低電平,通知單片機本次轉換已結束。關于幾個時間的大小在芯片手冊中都有說明。

我在寫單片機程序啟動A/D轉換時就要遵循上面的時序,由于TX-1C實驗板未用中斷讀取A/D數據,因此我們在啟動A/D轉換后,稍等一會兒時間,然后直接讀取A/D的數字輸出口即可。讀取結束啟動一次A/D轉換,如此循環下去。力下圖是ADC0804讀取數據時序圖。

5.png

分析上圖可知,當INTR#變為低電平后,將CS#先置低,在RD#置低至少經過tACC時間后,數字輸出口上的數據達到穩定狀態,此時直接讀取數字輸出端口數據便可得的數字信號,讀走數據后,馬上將RD#拉高,然后再將CS#拉高,INTR#是自動變化的,當RD#置低tR1時間后,INTR#自動拉高,我們不必人為去干涉。

圖4.4.6和圖4.4.7是ADC0804啟動轉換和讀取數據的時序圖,這是啟動一次和讀取一次數據的時序圖,當我們要連續轉換并且連續讀取數據時,有沒有必要每次都把CS#置低再位高,因為CS#是片選信號,置低表示該芯片可被操作或處于能夠正常工作狀態,所以在寫程序時,只要一開始將CS#置低,以后當要啟動轉換和讀取數據時只需操作WR#和RD#即可。

广西福彩21选5走势图