楊歡 杜少華 袁國鋒 陳曉
摘要:A/D轉換器是一種能把輸入模擬電壓或電流變成與其成正比的數字量的電路芯片,它廣泛應用在單片機的前向輸入通道中。文章采用ADC0804單通道8位并行接口芯片作為A/D轉換器完成數據轉換,控制器使用美國ATMEL公司的增強型AT89C52單片機,對轉換完成后得到的數字量經過單片機P1口輸出到8個LED發(fā)光二極管上顯示。使用Keil C51編程軟件,編譯成功后,用Proteus仿真軟件設計電路原理圖,實現A/D轉換過程并顯示轉換結果。
關鍵詞:Proteus;單片機;A/D轉換;仿真
中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2019)30-0278-03
在單片測控系統(tǒng)中,對非電物理量如溫度、壓力、流量等的測量,需經傳感器先轉換成連續(xù)變化的模擬電信號(電壓或電流),然后再將模擬電信號轉換成數字量后才能在單片機中進行處理。實現模擬量轉換成數字量的器件稱為ADC(A/D轉換器)。單片機處理完畢的數字量,有時根據控制需求轉換為模擬信號輸出。數字量轉換成模擬量的器件稱為DAC(D/A轉換器)[1]。本文將介紹一種基于Proteus的A/D轉換仿真實現過程,A/D轉換器使用ADC0804單通道8位并行接口芯片完成數據轉換,控制器使用美國ATMEL公司的增強型AT89C52單片機,轉換結果經過單片機P1口送到8個LED發(fā)光二極管上顯示輸出。通過該仿真實驗可以清楚地了解A/D轉換的原理,直觀地看到A/D轉換的對比結果。
一、A/D轉換芯片ADC0804簡介
A/D轉換器(ADC)把模擬量轉換成數字量,單片機才能進行數據處理。隨著超大規(guī)模集成電路技術的飛速發(fā)展,大量結構不同、性能各異的A/D轉換芯片應運而生。對設計者來說,只需合理地選擇芯片即可?,F在部分單片機片內也集成了A/D轉換器,位數為8位、10位或12位,且轉換速度也很快,但是在片內A/D轉換器不能滿足需要的情況下,還是需要擴充。因此,外部擴展A/D轉換器的基本方法,還是應當掌握[1]。本文采用的是ADC0804作為A/D轉換芯片進行A/D轉換仿真實驗。ADC0804是單通道8并行接口芯片,是一種8位逐次比較式并行AD轉換器,采用CMOS工藝的20引腳芯片。其轉換時間為100μs,輸入電壓范圍為0—5V。芯片具有三態(tài)輸出數據鎖存器,可直接連接在單片機或微處理器的數據總線上[2]。
芯片的引腳如圖,各引腳功能如下:
CS:芯片選擇信號。當CS=0時,器件才能工作。
RD:外部讀取轉換結果的控制輸出信號。RD=1時輸出為高阻態(tài)不輸出轉換結果,RD=0時才輸出轉換結果。
WR:用來啟動轉換的控制輸入,WR=0時清除上一次轉換結果,WR=1時當前的輸入電壓進行轉換。
CLKIN,CLKR:外部時鐘輸入或接振蕩元件(R,C)頻率在100—1460KHz。
INTR:中斷請求信號輸出,轉換完成后輸出低電平。
VIN(+)、VIN(-):差動模擬電壓輸入。輸入端正電壓時,VIN(-)接地。
AGND、DGND:分別為模擬信號地和數字信號地。
VREF/2:接輔助參考電壓。注意參考電壓為此端連接電壓的2倍。D0-D7:8位轉換結果的數字輸出,此8個引腳為三態(tài)輸出。VCC:電源電壓。ADC0804是8位A/D轉換器,8位A/D轉換器的輸入電壓值與采樣值的關系如表1所示。
二、ADC0804的工作原理
CS是片選端,當CS=0時,器件才能工作。WR是控制芯片啟動的輸入端,WR=0時清除上一次轉換結果,WR=1時當前的輸入電壓進行轉換。INTR是轉換結束信號輸出端,輸出變低電平表示本次轉換已經完成,可作為中斷或查詢信號。RD為轉換結果輸出控制端,當它和CS同時為低電平時,輸出數據鎖存器DB0—DB7各口線上出現8位并行二進制編碼,這就是AD轉換結果[2]。ADC0804的啟動轉換時序圖如圖2所示,CS先為低電平,WR隨后置低,經過至少tw(WR)L時間后,WR拉高,隨后A/D轉換器被啟動,并且在經過一定(1—8個A/D時鐘周期+內部Tc)時間后,A/D轉換完成,轉換結果存入數據鎖存器,同時INTR自動變?yōu)榈碗娖?,通過單片機本次轉換已結束。ADC0804的讀取數據時序圖如圖3所示,當INTR變?yōu)榈碗娖胶?,將CS先置低,接著再將RD置低,在RD置低至少經過tACC時間后,數據輸出口上的數據達到穩(wěn)定狀態(tài),此時直接讀取數字輸出端口數據便可得到轉換后的數據信號,讀取數據后,馬上將RD拉高,然后將CS拉高。INTR是自動變化的,不必人為干涉。
三、硬件電路設計
Proteus軟件是英國Labcenter Electronics公司1989年推出的EDA工具軟件,是一個集模擬電路、數字電路、模/數混合電路以及多種微控制器為一體的系統(tǒng)設計與仿真平臺,為各種實際的單片機應用系統(tǒng)開發(fā)提供了功能強大的虛擬仿真工具,已有20多年的歷史。Proteus是一種完全用軟件手段對單片機應用系統(tǒng)進行仿真開發(fā),與用戶樣機在硬件上無任何聯(lián)系,只需在PC機上安裝仿真開發(fā)工具軟件Proteus,就可進行單片機應用系統(tǒng)的設計開發(fā)、虛擬仿真與調試[1]。本文使用的是Proteus 7.8 SP2版本。ADC0804與單片機AT89C52的連接電路圖如圖4所示。
AD轉換器接口為ADC0804,單片機為AT89C52,顯示輸出為8個LED發(fā)光二極管。ADC0804的DB0—DB7通過數據總線和單片機的P0.0/AD0—P0.7/AD7連接,ADC0804的CS、RD、WR依次和單片機的P3.5、P3.6和P3.7引腳連接,ADC0804的INTR和單片機的P3.2引腳連接。ADC0804的CLK IN和CLK R之間接一10kΩ電阻R1,CLK R端經一150pF電容C4接地,AGND和DGND接地,VREF/2接2.5V外接參考電壓在VIN+和VIN-之間接入0—+5V模擬輸入電壓,可通過調節(jié)電位器(微調電阻)RV1實現電壓信號的變化。電路中用到的器件名稱如圖5所示。
四、系統(tǒng)軟件設計
AT89C52單片機控制ADC0804工作可采用以下三種方式:延時等待、查詢和中斷。延時等待方式:ADC0804的轉換時間為100μs,當啟動A/D轉換后,采用軟件延時的方法等待一段時間,等待時間稍大于A/D轉換所需時間,以保證A/D轉換器有足夠的時間完成轉換,待延時結束,直接讀取轉換數據。查詢方式:當ADC0804的A/D轉換結束后,INTR信號將變低,這是個轉換結束標志信號。啟動A/D轉換后,CPU就不斷地查詢INTR引腳的狀態(tài),若INTR為高電平,表示A/D轉換正在進行,繼續(xù)查詢;若INTR為低電平,表示A/D轉換已經結束,可以讀取轉換結果。本例中,INTR信號和單片機P3.2/INT1連
接,查詢P3.2的電平變化即可[2]。
中斷方式:中斷和查詢方式類似,但查詢方式下,單片機需不斷地查詢,比較忙;中斷方式下,INTR*變?yōu)榈碗娖綍r,就會引起CPU的中斷,在中斷服務程序中就可讀取A/D轉換結果。
查詢方式程序如下:
五、Proteus仿真軟件的結果
通過調節(jié)原理圖上電位器RV1(微調電阻)的電阻值,使輸入信號依次為0V、1V、2V、3V、4V、5V,即可看到LED等點亮的結果依次為00H、33H、66H、99H、CCH、FFH,這和表1的8位A/D轉換器的輸入電壓值與采樣值的關系是完全一致的。例如當前通過調節(jié)RV1(60%),使得輸入電壓為3V,則仿真結果如圖7所示,LED發(fā)光二極管是共陽極,所以當引腳為低電平時燈亮起,因此亮起的燈為0,不亮的燈為1。因此LED D1—D8的顯示結果為二進制1001 1001B,轉換為十六進制為99H,與表1中的值一致。
六、其他A/D轉換器芯片
盡管A/D轉換器的種類很多,但目前廣泛應用在單片機應用系統(tǒng)中的主要有逐次比較型轉換器和雙積分型轉換器。逐次比較型A/D轉換器,在精度、速度和價格上都適中,是最常用的A/D轉換器。雙積分型A/D轉換器,具有精度高、抗干擾性好、價格低廉等優(yōu)點,與逐次比較型A/D轉換器相比,轉換速度較慢,近年來在單片機應用領域中已得到廣泛應用。本文中使用的ADC0804就屬于逐次比較型。ADC0804芯片是ADC0801—ADC0805系列型號的一種,他們之間的區(qū)別只是精度不同。精度較高的是ADC0801,非線性誤差為±(1/4)LSB。最差的是ADC0804和ADC0805的非線性誤差為±1LSB。ADC0802和ADC0803的非線性誤差為±(1/2)LSB居中。與ADC0804性能相近的芯片還有ADC0808系列多通道8位CMOS并行A/D轉換器。ADC0808系列芯片主要有8通道的ADC0808/ADC0809和16通道的ADC0816/ADC0817。
除了并行的A/D轉換器外,帶有同步SPI串行接口的A/D轉換器的使用也逐漸增多。串行接口的A/D轉換
器具有占用單片機的端口線少、使用方便、接口簡單等優(yōu)點,已經得到廣泛的應用。較為典型的串行A/D轉
換器為美國TI公司的TLC549、TLC1549以及TLC1543和TLC2543等。
使用Proteus軟件進行單片機系統(tǒng)仿真設計,是虛擬仿真技術和計算機多媒體技術相結合的綜合運用,有利于培養(yǎng)學生的電路設計能力及仿真軟件操作能力,成為單片機課程設計和大學生畢業(yè)設計中的重要實踐環(huán)節(jié)。在使用Proteus進行系統(tǒng)仿真開發(fā)成功之后再進行實際制作,能極大地提高單片機系統(tǒng)設計效率。
參考文獻:
[1]張毅剛,趙光權,劉旺.單片機原理及應用[M].第3版.北京:高等教育出版社,2016.
[2]杜樹春.51單片機很簡單—Proteus及匯編語言入門與實例[M].北京:化學工業(yè)出版社,2017.