ADC0804工作原理及过程
ADC0804
前言:本文詳細說明了ADC0804工作原理及過程,還附有一個ADC0804在單片機中的典型應用,包含原理圖,源程序,程序注釋詳細清楚,這有助于更好地理解與應用ADC0804芯片。
本文引用了百度文庫一篇文章,原文鏈接:
https://wenku.baidu.com/view/823c5913964bcf84b9d57b78.html?wkts=1672974785358
文章目錄
- ADC0804
- A/D轉換概念
- 分辨率概念
- ADC0804引腳功能
- ADC0804工作過程
- ADC0804在單片機中的簡單應用舉例
- 上述Proteus仿真文件下載地址
- 參考文獻
A/D轉換概念
即模數轉換(Analog to DigitalConversion),輸入模擬量(比如電壓信號),輸出一個與模擬量相對應的數字量(常為二進制形式)。例如參考電壓VREF為5V,采用8位的模數轉換器時,當輸入電壓為0V時,輸出的數字量為0000 0000,當輸入的電壓為5V時,輸出的數字量為1111 1111。當輸入的電壓從從0V到5V變化時,輸出的數字量從0000 0000到1111 1111變化。這樣每個輸入電壓值對應一個輸出數字量,即實現了模數轉換。
分辨率概念
分辨率是指使輸出數字量變化1時的輸入模擬量,也就是使輸出數字量變化一個相鄰數碼所需輸入模擬量的變化值。
分辨率與A/D轉換器的位數有確定的關系,可以表示成FS / 2 n 。FS表示滿量程輸入值,n為A/D轉換器的位數。
例如,對于5V的滿量程,采用4位的ADC時,分辨率為5V/16=0.3125V (也就是說當輸入的電壓值每增0.3125V,輸出的數字量增加1);采用8位的ADC時,分辨率為5V/256=19.5mV(也就是說當輸入的電壓值每增加19.5mV,則輸出的數字量增加1);當采用12位的ADC時,分辨率則為5V/4096=1.22mV(也就是說當輸入的電壓值每增加1.22mV ,則輸出的數字量增加1)。顯然,位數越多,分辨率就越高。
ADC0804引腳功能
CS: 芯片片選信號,低電平有效。即=0時,該芯片才能正常工作,高電平時芯片不工作。在外接多個ADC0804芯片時,該信號可以作為選擇地址使用,通過不同的地址信號使能不同的ADC0804芯片,從而可以實現多個ADC通道的分時復用。
)
WR:啟動ADC0804進行ADC采樣,該信號低電平有效,即信號由低電平變成高電平時,觸發一次ADC轉換。
RD:低電平有效,即=0時,DAC0804把轉換完成的數據加載到DB口,可以通過數據端口DB0~DB7讀出本次的采樣結果。
VIN(+)和VIN(-):模擬電壓輸入端,單邊輸入時模擬電壓輸入接VIN(+)端,VIN(-)端接地。雙邊輸入時VIN(+)、VIN(-)分別接模擬電壓信號的正端和負端。當輸入的模擬電壓信號存在“零點漂移電壓”時,可在VIN(-)接一等值的零點補償電壓,變換時將自動從VIN(+)中減去這一電壓。
VREF/2:參考電壓接入引腳,該引腳可外接電壓也可懸空,若外接電壓,則ADC的參考電壓為該外界電壓的兩倍,如不外接,則VREF與Vcc共用電源電壓,此時ADC的參考電壓即為電源電壓Vcc的值。
CLKIN和CLKR:外接RC振蕩電路產生模數轉換器所需的時鐘信號,時鐘頻率CLK = 1/1.1RC,一般要求頻率范圍100KHz~1460KHz。
AGND和DGND:分別接模擬地和數字地。
INTR:轉換結束輸出信號,低電平有效,當一次A/D轉換完成后,將引起=0,實際應用時,該引腳應與微處理器的外部中斷輸入引腳相連(如51單片機的,中斷腳),當產生信號有效時,還需等待=0才能正確讀出A/D轉換結果,若ADC0804單獨使用,則可以將引腳懸空。
DB0~DB7:輸出A/D轉換后的8位二進制結果。
補充說明:ADC0804片內有時鐘電路,只要在外部“CLKIN(引腳4)”和“CLKR(引腳19)”兩端外接一對電阻電容即可產生A/D轉換所要求的時鐘,其振蕩頻率為fCLK≈1/1.1RC。其典型應用參數為:R=10KΩ,C=150PF,fCLK≈640KHz,轉換速度為100μs。若采用外部時鐘,則外部fCLK可從CLKIN端送入,此時不接R、C。允許的時鐘頻率范圍為100KHz~1460KHz。
ADC0804工作過程
時序:
ADC0804手冊給出的ADC轉換時序圖
ADC0804手冊給出的電器特性表
實現一次ADC轉換主要包含下面三個過程:
1.啟動轉換:由時序圖中的上部“FIGURE 10A”可知,在信號為低電平的情況下,將引腳先由高電平變成低電平,經過至少tW(WR)I 延時后,再將引腳拉成高電平,即啟動了一次AD轉換。
注:ADC0804使用手冊中給出了要正常啟動AD轉換的低電平保持時間tW(WR)I的最小值為100ns,即拉低后延時大于100ns即可以,具體做法可通過插入NOP指令或者調用delay()延時函數實現,不用太精確,只要估計插入的延時大于100ns即可。2.延時等待轉換結束:依然由時序圖中的上部“FIGURE 10A”可知,由拉低信號啟動AD采樣后,經過1到8個Tclk+INTERNAL Tc延時后,AD轉換結束,因此,啟動轉換后必須加入一個延時以等待AD采樣結束。
注:手冊中給出了內部轉換時間“INTERNAL Tc”的時間范圍為62~73個始終周期,因此延時等待時間應該至少為8+73=81個時鐘周期。比如,若R為150K, C為150pF,則時鐘頻率為Fclk=1/1.1RC=606KHz,因此時鐘周期約為Tclk=1/Fclk=1.65us。所以該步驟至少應延時81*Tclk=133.65us. 具體做法可通過插入NOP指令或者調用delay()延時函數實現,不用太精確,只要估計插入的延時大于133.65us即可。3.讀取轉換結果:由時序圖的下部“FIGURE 10B”可知,采樣轉換完畢后,在信號為低的前提下,將腳由高電平拉成低電平后,經過tACC的延時即可從DB腳讀出有效的采樣結果。
注:手冊中給出了tACC的典型值和最大值分別為135ns和200ns,因此將引腳拉低后,等待大于200ns后即可從DB讀出有效的轉換結果。具體做法可通過插入NOP指令或者調用delay()延時函數實現,不用太精確,只要估計插入的延時大于200ns即可。對采樣值進行運算變換,換算出實際的滑動變阻器輸入電壓值。
對于任何一個A/D采樣器而言,其轉換公式如下:
其中:
Vout: 輸入ADC的模擬電壓值。
Dsample:ADC轉換后的二進制值。本試驗的ADC0804為八位。
Dmax:ADC能夠表示的刻度總數。ADC0804為八位ADC,因此Dmax=28=256
Vref:ADC參考電壓值,本試驗ADC0804的Vref被設置為5V
因此,對于本試驗,轉換公式為
ADC0804在單片機中的簡單應用舉例
如下圖所示,本例ADC0804中的VCC=5V, VREF/2引腳懸空(懸空則相當于與VCC共接5V電源),因此ADC轉換的參考電壓為VCC的值,即5V。VIN-接地,而VIN+連接滑動變阻器RV1的輸出,因此VIN+的電壓輸入范圍為0V~5V,正好處于參考電壓范圍內。
引腳接地, 和分別連接單片機的P3^6和P3^7引腳,而DB0~DB7連接單片機的P1口.
P0口接數碼管的段選線,P2口低四位接數碼管的位選線。
程序主要實現以下功能:
(1)控制ADC0804芯片對VIN(+)引腳輸入的電壓值進行正確采樣,讀取采樣結果。
(2)對采樣值進行模數變換,將轉換后數字量后顯示在4段數碼管上。
C程序如下:
Proteus仿真運行結果如下:
上述Proteus仿真文件下載地址
鏈接:https://pan.baidu.com/s/1T8m7dvd1maeFnmOnoHGAKQ
提取碼:o42a
–來自百度網盤超級會員V4的分享
參考文獻
[1]彭偉.單片機C語言程序設計實訓100例.北京:電子工業出版社.2009
[2]賈振國,許琳.智能化儀器儀表原理及應用.北京:中國水利水電出版社.2011
總結
以上是生活随笔為你收集整理的ADC0804工作原理及过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超大文件调用讯飞语音听写解决方案
- 下一篇: r9m刷机包root,r9s 刷机包