ADC0804詳細控制程序仿真圖_第1頁
ADC0804詳細控制程序仿真圖_第2頁
ADC0804詳細控制程序仿真圖_第3頁
ADC0804詳細控制程序仿真圖_第4頁
ADC0804詳細控制程序仿真圖_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、仿真電路圖,經過測試,沒問題C4I WuFU2R10im伍cs RD 頹 CLK IN IN IK AGND DGND UREF ? CLK RVIN* VIN-ADC080413 / 14兩個圖是一體的。模擬電路:設計模擬電路的原因主要有以下兩點1 .由于外界信號的復雜性,使得傳感器直接輸出的電信號可能會存在一些 問題 如不穩(wěn)定),這些不穩(wěn)定信號如果直接送到 A/D芯片進行采樣,則最終結 果可能使得最后的顯示值來回亂跳,而無法確定待測的外界信號到底是多少。 因此,可能需要設計一套模擬電路對傳感器輸出的不穩(wěn)定電信號進行濾波等處 理,去除干擾,使得進入 A/D轉換芯片的電壓值為一個穩(wěn)定的信號。b

2、5E2RGbCAP2 .每一個A/D轉換芯片都有一個參考電壓,只有輸入的模擬電壓值在這個 參考電壓的范圍內才能進行正確的轉換,例如:本實驗將ADC0804芯片的參考電壓設置成0V5V,因此如果輸入白電壓值大于5V,則轉換出的結果永遠為0xFF,若輸入的電壓值小于 0V,則轉換出的結果永遠為 0,這樣便無法正確的還 原出被測信號的大小?;谏鲜鲈?,我們可能需要設計一套模擬電路,傳感 器的輸出電壓值進行一些變換 放大,縮?。?,使得送到 A/D轉換芯片的電壓值 在轉換芯片的參考電壓范圍內。plEanqFDPwA/D轉換芯片:即模擬/數字轉換芯片,它將輸入的模擬電壓信號轉換成單片機 等控制處理器能夠

3、識別的數字二進制形式。DXDiTa9E3d處理器芯片:處理器芯片有很多中 比如51單片機,ARME者是PC上的奔騰處 理器,AMD處理器)這些處理器雖然架構不一樣,但是有個共同的特點,就是 它們能夠運行程序,因此它們能通過程序對A/D芯片送入的二進制形式的電壓值進行處理,通過運算將其還原成待測的外界信號值,控制顯示部件如LCD八段數碼管)將這個值顯示出來。例如:假如ADC0804輸出的二進制值0x80,則根據A/D轉換公式可以推出ADC0804的輸入電壓大小為 (0x80/0x100*5V=2.5V。假設信號經過模擬電路縮小了8倍,則可以推出傳感器的輸出電壓為2.5V*8=20V,再根據傳感器

4、的轉換公式 一般手冊會給出)即可 得到輸入的外界信號的值。RTCrpUDGiT顯示:顯示的作用是將計算出的待測外界信號的值展示給測量人員,顯示的形 式有很多種,如LCD八段數碼管,上位機軟件等。5PCzVD7HxA通過上面的介紹,大家一定對這種基于A/D芯片的嵌入式設計模式有了一個大致的了解,其實現時中很多應用都是遵循了這種設計模式,比如常用的 數字萬用表,數字溫度測量儀,血糖測量儀等。jLBHrnAILg本實驗也遵循了這種設計模式,只不過它省略了傳感器和模擬電路部分, 首先通過滑動變阻器調節(jié)輸入到 ADC0804E片的電壓值ADC0804K片的參考電 壓調節(jié)成0V5V,而滑動變阻器產生的電壓

5、范圍也為0V5V,因此沒有必要設計額外的模擬電路),然后通過 51單片機進行運算處理得到這個輸入電壓值, 最后再控制八段數碼管將這個電壓值顯示出來,實際上是實現了一個簡易的數字電壓測量表。 圖 2 是實驗框圖。xHAQX74J0X圖2:本實驗示意圖接下來我們首先介紹實現本實驗的電路設計,然后介紹軟件實現方法。2.2硬件設計本部分,我們首先介紹ADC0804芯片的一些相關知識,然后介紹基于 ADC0804和51單片機實現A/D轉換的電路設計。LDAYtRyKfE2.2.1 ADC0804芯片介紹 DB。(lsB|DB1日也RD 7 WR叵 CLKIN ITINTR 已 V|N M 叵 Vin %

6、)叵 AGND 匡 "REF?叵 DGND lO西DB?國DB3 J4|DB4 可口 B5 回DB613 DB 門 MSB)國 V+ OR VREF 19|CLK R圖3: ADC0804規(guī)格及引腳分配圖本實驗采用的A/D芯片為ADC0804,它是CMOS8位單通道逐次漸近型的模/數轉換器,其規(guī)格及引腳圖如圖3所示,根據手冊我 們可以得到各個引腳的大致功能如下:Zzz6ZB2Ltk/CS:芯片片選信號,低電平有效,即/CS=0,該芯片才能正常工作,在外接 多個ADC0804芯片時,該信號可以作為選擇地址使用,通過不同的地址信號使 能不同的ADC0804芯片,從而可以實現多個ADC通道

7、的分時復用。dvzfvkwMii/WR:啟動ADC0804進行ADC采樣,該信號低電平有效,即/WR信號由高電 平變成低電平時,觸發(fā)一次ADC轉換。rqyn14ZNXI/RD:低電平有效,即/RD=0時,可以通過數據端口 DB0DB7讀出本次的采 樣結果。UIN<+)和 UIN<-):模擬電壓輸入端,模擬電壓輸入接 UIN<+)端,UIN<-)端接地。雙邊輸入時UIN<+)、UIN<-)分別接模擬電壓信號的正端和負端。當輸入的模擬電壓信號存在零點漂移電壓”時,可在UIN<-)接一等值的零點補償電壓,變換時將自動從 UIN<+)中減去這一電壓。Em

8、xvxOtOcoVREF/2:參考電壓接入引腳,該引腳可外接電壓也可懸空,若外界電壓, 則ADC的參考電壓為該外界電壓的兩倍,如不外接,則Vref與Vcc共用電源電壓,此時ADC的參考電壓即為電源電壓Vcc的值。SixE2yXPq5CLKR和CLKIN :外接RC電路產生模數轉換器所需的時鐘信號,時鐘頻率CLK = 1/1.1RC, 一般要求頻率范圍 100KHz 1.28MHz。6ewMyirQFLAGND和DGND:分別接模擬地和數字地。/INT:中斷請求信號輸出弓|腳,該引腳低電平有效,當一次A/D轉換完成后,將弓I起/INT=0,實際應用時,該引腳應與微處理器的外部中斷輸入引腳相連 &

9、lt;如 51單片機的INT0,INT1腳),當產生/INT信號有效時,還需等待/RD=0才能正確 讀出A/D轉換結果,若ADC0804單獨使用,則可以將/INT引腳懸空。kavU42VRUsDB0DB7:輸出A/D轉換后的8位二進制結果2.2.2外圍電路設計圖4: ADC0804的外圍電路圖4為ADC0804外圍電路原理圖,其中,AVCC=5V,引腳VREF/2懸空,因此ADC轉換的參考電壓為AVCC的值,即5V。VIN-接地,而VIN+連接滑動變阻器VR1的輸出,因此VIN+的電壓輸入范圍為0V5V ,正好處于參考電壓范圍內。y6V3ALOS89弓I腳CS_1,WR_1和RD_1分另I連接

10、單片機的P3_5,P3_6及P3_7腳,而DB0 DB7連接單片機的P2腳.M2ub6vSTnP下面介紹一些電路設計方面的知識初學者看到這里可能會有這樣的疑問,就是“圖 4的外圍電路為什么是這樣 設計? CLKRg唧為什么要外接一個電阻 R36和一個電容C15?引腳CLKIN為什么 要外接一個電容 C15? 。 0YujCfmUCw其實這里并沒有任何神秘的地方,我們仔細看看ADC0804的手冊就知道答案了,手冊(本實驗所屬的文件夾中包含了這個pdf文件的第12頁有一段內容為“Testing the A/D Conveter”,該段介紹了一個簡易的芯片測試方法,其中的“FIGURE 1g就給出了

11、進行這個簡易實驗的原理圖,以及計算公式。如 圖5所 示 eUts8ZQVRdv - fMSVOUT -(76(5.12)V.10kQ住咿聲一r-QoADC0802-ADC0804藥To 5.120V 左_ 10" _12H /7777 TANTALUM(8)(8) 77777 DGNDFIGURE 18, BASIC TESTER FOR THE A/D圖5: ADC0804手冊給出的參考電路圖大家仔細看看,圖5給出中的手冊中的參考電路圖是不是和圖4的原理圖如出一轍?的確,我們就是參考了手冊的推薦電路從而確定了ADC0804的外圍電路的設計。手冊中甚至連 RC電路的電容和電阻的取值都

12、給出來了,照搬就是 了!真的是沒有任彳神秘之處! sQsAEJkW5T下面介紹一下datasheet對電路設計以及軟件編寫的重要作用。根據我們多年的設計經驗,當我們的電路中需要用到某一塊芯片的時候,往往首先去下載它的手冊,也就是 datasheet ,有很多專門提供 datasheet下 載的網站,推薦一個我們常用的網址: 。進入該頁面后輸入我們所要查詢的芯片名稱如這里的 ADC0804即可得到該芯片的datasheet 。 GMsIasNXkA芯片的datasheet會介紹你所需要的芯片信息,從典型外圍電路的搭建,到芯片的封裝,電氣特性以及軟件編程模型。一般來說,直接 copy手冊中給出 的

13、推薦外圍電路即可。當然,若是閱讀完手冊后還是無法確定外圍電路的搭建,則可以直接聯系生產這塊芯片的公司的技術服務部門這里可以聯系AD公司),他們肯定給你提供一套完整詳盡的電路解決方案的包括外圍電路的設計以及甚至是軟件的示例代碼)。這也就是現在比較流行的單芯片解決方案的含 義所在,芯片提供商提供一塊芯片后往往會提供一套基于該芯片的完整解決方 案,該解決方案包括基于這塊芯片的電路設計,軟件設計。產品制造廠商只要根據這個解決方案做及少的改動,即可以設計出滿足自身需要的產品來!TIrRGchYzg2.2軟件設計下面我們介紹軟件的編寫。本實驗的軟件需要實現一下幾個步驟1. 控制ADC08045片進行正確采

14、樣,讀取采樣結果。2. 對采樣值進行運算變換,換算出實際的滑動變阻器輸入電壓值。3. 將該電壓值通過八段數碼管顯示出來,從而實現一個簡易的數字電壓測量表功能。其中第三個步驟涉及到八段數碼管顯示相關知識,其內容在本套學習板的實驗中有詳細的介紹。下面我們主要介紹實現前兩個步驟的方法。步驟一:控制ADCffi行正確采樣,讀取正確的采樣值。前面我們已經提到了芯片的 datasheet對于硬件設計以及軟件編程的重要 性。同樣,要使得 ADC0804正常工作,我們依然首先需要仔細的閱讀其使用手 冊。7EqZcWLZNX仔細閱讀手冊后,我們發(fā)現了在手冊的第7頁給出了一個時序圖 (TimingDiagrams

15、,如圖 6 所示 lzq7IGf02ETiming DiagramsACTUAL INTERNALSTATUS OF THE CONVERTERnmrFIGURE 104 START CONVERSIONIRTR-RESETFIGURE 10B. OUTPUT ENABLE AND RESET TTFR圖6: ADC0804手冊給出的ADC轉換時序圖圖6給出的其實就是使 ADC0804正確工作的軟件編程模型。由圖可見,實現一次ADC專換主要包含下面三個步驟:zvpgeqJIhk1 .啟動轉換:由圖6中的上部“ FIGURE 10A可知,在/CS信號為低電平的情 況下,將/WR引腳先由高電平變成

16、低電平,經過至少 tw(wR延時后,再將/WR引 腳拉成高電平,即啟動了一次 AD轉換。NrpoJac3v1注:手冊中給出了要正常啟動 AD轉換/WR的低電平保持時間tw(wRi的最小值為 100門$,見手冊第4頁的Electrical Specification, 如圖7紅圈所示)即/WR 拉低后延時大于100ns即可以,具體做法可通過插入NOP指令或者調用delay(延時函數實現,不用太精確,只要估計插入的延時大于100ns即可。1nowfTG4KI2 .延時等待轉換結束:依然由圖6中的上部“ FIGURE 10A可知,由拉低 /WR信號啟動AD采樣后,經過1至I 8個Tclk+INTER

17、NAL Tc延時后,AD轉換結 束,因此,啟動轉換后必須加入一個延時以等待 AD采樣結束。fjnFLDa5Zo注:手冊中給出了內部轉換時間“ INTERNAL Tc的時間范圍為6273個始終周期 見手冊第4頁的Electrical Specification, 如圖7蘭圈所示),因 此延時等待時間應該至少為8+73=81個時鐘周期。本實驗時鐘頻率約為Fclk=1/1.1R 36。5=606KHz其中 Re約為150K,G5約為150pF,因此時鐘周期約為Tclk=1/Fclk=1.65us 。所以該步驟至少應延時81*Tclk=133.65us.具體做法可 通過插入NOP指令或者調用delay

18、(延時函數實現,不用太精確,只要估計插 入的延時大于133.65US即可。tfnNhnE6e53 .讀取轉換結果:由圖6的下部“ FIGURE 10B可知,采樣轉換完畢后, 再/CS信號為低的前提下,將/RD腳由高電平拉成低電平后,經過 tAcc的延時即 可從DB腳讀出有效的采樣結果。HbmVN777sL注:手冊中給出了 tACC的典型值和最大值分別為135ns和200ns見手冊第4頁的Electrical Specification, 如圖7綠圈所示),因此將/RD引腳拉低 后,等待大于200ns后即可從DB讀出有效的轉換結果。具體做法可通過插入 NOP旨令或者調用delay(延時函數實現,

19、不用太精確,只要估計插入的延時大 于 200ns 即可。V7l4jRB8HsElectrical Specifications (Notes '.7- (Continued)PARAMETERTEST CONDITIONSMINTYPmaxUNITSCONVERTER SPECIFICATIONSV- = S'/,to 125 anc 上,=40kHz, UnlewOthec'ise SpeccedTotal Uradjusted Error ADCO0O2VrepT2 = 2500V-±1LSBADCO9O3Vpef/2 Atijusted 切 Correc

20、t Ful Scale±1LSB'keM: Input Re& stanceInpdt Res stance at Pin 91.D13-卬Anauog Input Voltage- Range(Note 2)GND-D.D5-(V+J+D.05DC CcmrmomModE R哥ecfionOver AjRa og Input Voltage Range-士%土為LSBPower Supply Xnmitiv守V* - $V ±10% 64r All cwfid InputVoltas Rane*再LSBAC TIMING SPECIFk心T1ONS V+

21、= 5剪 and 1 = 25r Unless Onwrwise SpecifiedClock Frequency JdKV-+ = 6V (Note 3)100644)12B0kHzV+ = 5YJIOT640son一二七 lock fericKii per Con ven on62-73CiCKM/ConvConi白隼。i Rate In Free-Running; Made. CRTRTR-tied to WR witti CS = TJ fCLK=S4O(Hz-8868Corm/sWkitti ofWR Input (Start PJse,而 : :CS = QV fNote 5)10

22、D-nsAcceuTime (Delay from Faiibnq ofto Output Data ValdXUccCL- 100pF (Use Bus Driver IC tvLarger CL"135200H3JThree-State CofTtrul (Delay frcm Rraing Edge cfRC to H|-Z St貳ei tin. tonCl = 10pFRl=1QK(See Ttiree-State Test CircuteJ-12525DnsDelay tmn Falling Edge ofWHloReset of INTR. bjvi, tpi-3W4S0

23、ns圖7: ADC0804手冊給出的電器特性表步驟二:對采樣值進行運算變換,換算出實際的滑動變阻器輸入電壓值。 對于任何一個A/D采樣器而言,其轉換公式如下:其中:皿 輸入ADC的模擬電壓值。后I : ADC轉換后的二進制值。本實驗的 ADC0804為八位。E : ADC能夠表示的刻度總數。ADC0804為八位ADC,因此叵I : ADC參考電壓值,本實驗 ADC0804的叵被設置為5V因此,對于本實驗,轉換公式為步驟三:將該電壓值通過八段數碼管顯示出來,從而實現一個簡易的數字 電壓測量表功能。涉及到八段數碼管顯示相關知識,其內容在本套學習板的“”實驗中有詳 細的介紹。綜上所述,我們給出了完成

24、單次采樣的詳細流程圖,如 圖8所示圖8: ADC0804完成單次采樣的軟件控制流程圖 卜面給出程序的主程序代碼/ / *富*率*求*址*率求*邛*/*/*in3m 函數main。while (TRUE) _AdcStart () ;/啟動一次仙C08CI4采樣delay ms (100): 拉時i0(hi%等待來梯結束AdcReadO :完成一次采樣后從ADC*04的DB引腳讀取梟樣值DisplayO : 將采樣結臬在八段數碼管顯示出來詳細的代碼見本實驗文件夾中的源程序部分,代碼中有非常詳細的注釋。/831CPA59W9名稱:單片機控制ADC0804模數轉換實現電壓測量(05V>作者流星

25、科技 /芯片:AT89S52晶振:12M/編譯器:偉福6000日期:2007-08-23/mZkklkzaaP/控制口 定義 /#include<reg52.h>#include <intrins.h> #define uchar unsigned char#define uint unsigned int int ad data。#define sbit sbitad0_7Cs=P1A0。rd=P1A1。P3sbitsbitwr=P1A2。intr=P1A3 。/AD數據口芯片選擇信號,控制芯片的啟動和結果讀取,低電平有效AVktR43bpw讀數據控制,低電平有效/A

26、D轉換起動控制,上升沿有效/AD轉換結束輸出低電平uchar Ied10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90。ORjBnOwcEd/5ms延時子程序/void delay(uint ms>uint x,y。for(x=ms。 x>0。 x->for(y=255 。 y>0。 y->。啟動 AD 轉換子程序 /2MiJTy0dTTvoid start_ad(> cs=0。/允許進行A/D轉換wr=0。_nop_(>。 wr=1。/WR由低變高時,AD開始轉換while(intr> 。查

27、詢轉換結束產生INTR信號(低電平有效>cs=1 。/停止 AD 轉換/讀 A/D 數據子程序/void read_ad(>cs=0 。/允許讀rd=0 。/讀取轉換數據結果數據結果delay(1> 。ad_data=ad0_7。把數據存到 ad_data中rd=1 。 cs=1。/停止 A/D 讀取/數據處理與顯示子程序/說明:當輸入電壓為5V時,A/D輸出為FFH,即輸入電壓=AD數據*(5/255>=AD數據/(255/5>=AD數據 /51 gIiSPiue7A/用四位數碼管進行顯示,數碼管的AH接于P3口,公共端從最低位是P2.0,最高位是P2.3uEh0UlYfmhvoid data_shout(>/ 觀察 0-5v 的變化 uint a=20,one,two,three,four 。four=ad_data/51 。/ 第四位數碼管(最高位 >three=ad_data%51*10/51 。/第三位數碼管two=ad_data%51*10%51*10/51 。/第二

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論