资源描述
*,*,按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層,*,ADC,類比轉數位實驗,瞭解類比轉數位的基本原理,寫程式對類比輸入進行採集和轉換,並將結果顯示在超級終端機,1,類比轉數位原理,經常遇到的物理參數,如電流、電壓、溫度、壓力、速度等電量或非電量都是模擬量,模擬量的大小是連續分佈的,且經常也是時間上的連續函數,類比轉換成數位信號需經過,取樣,量化,編碼三個基本過程(數位化過程),2,類比轉數位原理,取樣,按取樣定理對類比信號進行等時間間隔取樣,將得到的一系列時域上的樣值去代替,u=,f(t,),,即用,u0,、,u1,、,、,un,代替,u=,f(t,),這些樣值在時間上是離散的值,但在幅度上仍然是連續類比量,3,類比轉數位原理,量化,在幅值上再用離散值來表示。方法是用一個量化因數,Q,去度量;,u0,、,u1,、,,便得到整量化的數字量。,u0=2.4Q 2Q 010,u1=4.0Q 4Q 100,u2=5.2Q 5Q 101,u3=5.8Q 5Q 101,編碼,將整量化後的數位量進行編碼,以便讀入和識別;,編碼僅是對數位量的一種處理方法。,例如:,Q=0.5V/,格,設用三位元(二進編碼),4,S3C2410X,的,A/D,簡介,8,通路,10,位,A/D,轉換器,支援觸控螢幕介面,獨立,/,自動,X/Y,位置轉換模式,轉換器的主要特性:,解析度:,1LSB,微分線性度誤差:,1.5LSB,積分線形度誤差:,1LSB,最大轉化速率:,500KSPS,輸入電壓範圍:,03.3v,A/D,轉換器,至少工作在,2.5MHz Clock rate,下,所以轉換速率可以達到,500KSPS,5,S3C2410X A/D,轉換器和觸控螢幕介面,AIN7,接上拉電阻到,VDDA_ADC,觸控螢幕的,X,通道連接到,S3C2410,的,AIN7,Y,通道應該連接到,AIN5,6,ADC,應用電路,7,ADC,應用電路位置,J1-ADC,輸入介面,U2-ADC AIN1,溫度感測器,8,LM35D,溫度感測器,元件,輸出電壓與攝氏溫度成正比例的溫度傳感器,可直接讀出溫度值,使用時無需外圍元件,也無需調試和較正(標定),只要外接一個,1V,的表頭(如指針式或數字式的萬用表),特性,:,靈敏度為,10mV/,工作溫度範圍為,0-100,工作電壓為,4-30V,精度為,1,最大線性誤差為,0.5,靜態電流為,80uA,該器件如塑封三極管(,TO-92,),9,設置,A/D,取樣的時鐘頻率,主時鐘的頻率為,50MHZ,,,A/D,取樣預分頻值設為,49,而完成一次轉換至少需要,5,個,Clock,週期,則取樣頻率:,f,50M /,(,49+1,),/5,200 KHZ,轉換時間,=1/f=0.5us,程式實現該功能,rADCCON,=(rADCCON&0xC03F)|(0xC03F)&(0x316) /,設置預分頻值,10,A/D,控制暫存器,ADCCON,11,A/D,資料暫存器,ADCDAT0,12,啟動取樣步驟,允許,ADC,的時鐘輸出,rCLKCON,=,rCLKCON,| (115),將,ADCCON,暫存器的,BIT0,置,1,可以啟動轉換,當啟動轉換後,該位會被自動清除,同時啟動轉換時還需要指定轉換通道,下面程式啟動通道,0,的取樣轉換,rADCCON,=0x1|(0x03),13,獲取轉換結果,當,A/D,轉換結束後,可以讀取,ADCDAT,暫存器的內容,下面程式等待通道,0,的,A/D,轉換,實現的程式如下:,while(!(rADCCON, /,等待,直到,A/D,轉換結束,data=,rADCDAT,; /,獲得轉換後的資料,14,int,Read_Adc(unsigned,char,ch)A,/D,讀取通道函數,參數說明:,ch,:,決定那個通道被選擇,主要功能:指定某一通道(,ch,)進行轉換,並讀出轉換值,該函數的程式如下:,/*,Function name:,Read_Adc,Parameter :,ch,: ADC,的通道,範圍,07,Description :,讀取相應通道,ch,的類比轉數位的值,Return :,返回類比轉數位的值,Argument :,Autor,& date :,*/,int,ReadAdc(int,ch,),int,i;,static,int,prevCh,=-1;,rADCCON,= (114)|(preScaler6)|(ch3);/setup channel,if(prevCh,!=,ch,),rADCCON,= (114)|(preScaler6)|(ch3); /setup channel,for(i,=0;i,LOOP;i,+);/delay to set up the next channel,prevCh,=,ch,;,rADCCON,|=0x1; /start ADC,while(rADCCON,/check if,Enable_start,is low,while(!(rADCCON,/check if,EC(End,of Conversion) flag is high,return ( (int)rADCDAT0 ,15,ADC,測試程式,void,Test_Adc(void,),功能說明:初始化,ADC,相關暫存器,並讀,ADC,通道讀寫函數,主要程式如下:,/*,Function name:,TestADC,Parameter : void,Description :,讀通道,0,,並將讀取的值通過串列埠列印出來,Return : void,Argument :,按,ESC,鍵退出實驗測試,Autor,& date :,*/,void,Test_Adc(void,),int,a0=0; /Initialize variables,U32,rADCCON_save,=,rADCCON,;,preScaler,= ADC_FREQ;,printf(ADC,conv,. freq. = %,dHzn,preScaler,);,preScaler,=,GetMasterClock,()/ADC_FREQ -1; /PCLK:50.7MHz,printf(PCLK,/ADC_FREQ - 1 = %,dn,preScaler,);,while(,getkey,() != ESC_KEY ),a0=ReadAdc(0);,printf,( AIN0: %04dn, a0 );,Delay( 80 ) ;,rADCCON,=,rADCCON_save,;,printf(nrADCCON,= 0x%xn,rADCCON,);,16,主函數,Main,功能說明:主要實現對模擬通道,0,的轉換,通過調節接在通道,0,上的可調,電阻來改變模擬量的輸入,通過串列埠將獲得的資料回顯到串列埠。,主要程式如下:,/*,Function name: Main,Parameter : void,Description :,初始化系統,串列埠,並調用,ADC,實驗函數,Return : void,Argument :,Autor,& date :,*/,void,Main(void,),BoardInitStart,();/,系統初始化,,MMU,初始化,SystemClockInit,();/,系統時鐘初始化,MemCfgInit,();/,設置,NAND FLASH,的配置暫存器,PortInit,();/S3C2410X,的,GPIO,初始化,SerialSwitch(0);/,選擇串列埠,0,SerialChgBaud(115200);/,串列傳輸速率,115200,while( 1 ),printf(FS2410XP ADC,Test,please,Enter ESC to exitn);,Test_Adc,();/,調用,ADC,實驗函數,17,
展开阅读全文