版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第10章 A/D轉(zhuǎn)換單片機原理及應用系統(tǒng)設計自然界中的物理量大多是模擬信號,如溫度、壓力、位移、轉(zhuǎn)速等,單片機在采集模擬信號時,一般先根據(jù)實際的物理量借助相應的傳感器將其轉(zhuǎn)為電信號(電壓或電流)。然后再將電信號轉(zhuǎn)換為對應的數(shù)字量輸入到單片機進行信號處理,在這過程中,把實現(xiàn)模擬量轉(zhuǎn)換為數(shù)字量的器件稱為模數(shù)轉(zhuǎn)換器,也稱A/D轉(zhuǎn)換器。第10章 A/D轉(zhuǎn)換10.1 A/D轉(zhuǎn)換原理及性能指標一般的A/D轉(zhuǎn)換過程包括三個部分:采樣保持、量化和編碼。首先,對輸入的模擬電壓信號采樣即將模擬信號在時間上離散化,結(jié)束后進入保持時間。其次,在這段時間內(nèi)將采樣的電壓量轉(zhuǎn)化為數(shù)字量即在幅度上離散化。最后,將每個量化后的
2、樣值用一定的二進制碼來表示轉(zhuǎn)換結(jié)果。為確保轉(zhuǎn)換結(jié)果的精確度,A/D轉(zhuǎn)換器必須滿足一定的轉(zhuǎn)換精度和速度。轉(zhuǎn)換精度和轉(zhuǎn)換速度是衡量A/D轉(zhuǎn)換器的重要技術指標。此外還有分辨率、量程、量化誤差、線性度等。1. 分辨率分辨率表示A/D轉(zhuǎn)換器對微小輸入信號變化的敏感程度,通常用轉(zhuǎn)換后數(shù)字量的位數(shù)來表示。N位轉(zhuǎn)換器,其數(shù)字量變化范圍為02N-1。例如8位A/D轉(zhuǎn)換器,輸入5V滿量程電壓,則分辨率為5/28=19.5mV。3. 量化誤差量化誤差是A/D轉(zhuǎn)換器實際輸出的數(shù)字量與理論輸出數(shù)字量之間的差值。一般是由于A/D轉(zhuǎn)換器的分辨率有限引起的。量化誤差在1/2LSB(最低有效位)之間。2. 轉(zhuǎn)換精度轉(zhuǎn)換精度是指
3、與數(shù)字輸出量所對應的模擬輸入量的實際值與理論值之間的差值。A/D轉(zhuǎn)換電路中與每個數(shù)字量對應的模擬輸入量并非是一個單一的數(shù)值,而是一個范圍值 ,其中 的大小理論上取決于分辨率。定義 為數(shù)字量的最小有效位LSB。4.轉(zhuǎn)換時間轉(zhuǎn)換時間是A/D轉(zhuǎn)換器完成一次轉(zhuǎn)換所需的時間,單位為SPS(Sample Per Second)每秒采樣點數(shù),常稱為采樣頻率。一般轉(zhuǎn)換速率越快越好,常見的有高速(轉(zhuǎn)換時間1s),中速(轉(zhuǎn)換時間1ms)和低速(轉(zhuǎn)換時間1s)等。在實際應用中,應從系統(tǒng)數(shù)據(jù)總的位數(shù)、精度要求、輸入模擬信號的范圍及輸入信號極性等方面綜合考慮A/D轉(zhuǎn)換器的選用。10.2 IAP15W4K58S4單片機A
4、/D模塊的結(jié)構(gòu)IAP15W4K58S4單片機集成有8路10位高速電壓輸入型模擬轉(zhuǎn)換器(ADC),轉(zhuǎn)換方式為逐次逼近式,頻率可達300kHZ(30萬次/秒)。10.2.1 A/D轉(zhuǎn)換器的結(jié)構(gòu)IAP15W4K58S4單片機ADC(A/D轉(zhuǎn)換器)的結(jié)構(gòu)如下圖10-1所示。其輸入通道與P1端口復用,系統(tǒng)上電復位后,P1口默認為弱上拉I/O口,可通過設置P1ASF寄存器的相應位將對應引腳設置為ADC輸入通道。 圖10-1 IAP15W4K58S4單片機ADC轉(zhuǎn)換器結(jié)構(gòu)圖IAP15W4K58S4單片機的ADC由多路選擇開關、比較器、逐次比較寄存器、10位DAC、轉(zhuǎn)換結(jié)果寄存器(ADC_RES和ADC_RE
5、SL)以及ADC控制寄存器(ADC_CONTR)等構(gòu)成。IAP15W4K58S4單片機的ADC是逐次比較型ADC,由一個比較器和D/A轉(zhuǎn)換器構(gòu)成,通過逐次比較,從最高位(MSB)開始,順序地對每一輸入電壓與內(nèi)置D/A轉(zhuǎn)換器輸出進行比較,經(jīng)過多次比較,使轉(zhuǎn)換所得的數(shù)字量逐次逼近輸入模量對應值,轉(zhuǎn)換結(jié)束,將轉(zhuǎn)換結(jié)果保存到ADC轉(zhuǎn)換結(jié)果寄存器ADC_RES和ADC_RESL,同時,置位ADC控制寄存器ADC_CONTR中的A/D轉(zhuǎn)換結(jié)束標志位ADC_FLAG,以供程序查詢或發(fā)出中斷申請。8位逐次逼近A/D轉(zhuǎn)換器,若參考電壓為5V,檔輸入電壓為2.52V時,輸出的數(shù)字量是什么?分析:參考電壓為5V的8
6、位A/D轉(zhuǎn)換,其量化電平為10.2.2 A/D轉(zhuǎn)換器的相關寄存器IAP15W4K58S4單片機的ADC相關寄存器主要有:P1口模擬功能控制寄存器P1ASFADC控制寄存器ADC_CONTRA/D轉(zhuǎn)換結(jié)果寄存器ADC_RES、ADC_RESL10.2.2 A/D轉(zhuǎn)換器的相關寄存器1. P1口模擬功能控制寄存器P1ASF寄存器P1ASF控制P1口8個I/O的功能。P1ASF寄存器(地址為9DH,復位值為0000 0000B)各位定義如表10-1所示:P1nASF(n=07),P1.0P1.7為功能控制位:當P1nASF=0,對應引腳為基本I/O。當P1nASF=1,對應引腳為ADC的相應輸入通道。
7、P1ASF寄存器不能位尋址,可采用字節(jié)操作。實際程序中可采用控制位與1相或?qū)崿F(xiàn)置1的原理,如執(zhí)行語句P1ASF | 1=0X01,使P1.作為模擬輸入通道。2. ADC控制寄存器ADC_CONTRADC_CONTR寄存器主要用于設定ADC轉(zhuǎn)換輸入通道、轉(zhuǎn)換速度和啟動、轉(zhuǎn)換結(jié)束標志等。ADC_CONTR寄存器(地址為BCH,復位值為0000 0000B)的各位定義如表10-2所示:ADC_POWER:ADC 電源控制位。 ADC_POWER =0,關閉ADC 電源。 ADC_POWER =1,打開ADC電源。建議進入空閑模式和掉電模式前,將ADC電源關閉,可降低功耗。啟動A/D轉(zhuǎn)換前一定要確認A
8、/D電源已打開,A/D轉(zhuǎn)換結(jié)束后可關閉A/D電源,也可不關閉。初次打開內(nèi)部A/D轉(zhuǎn)換模擬電源,需適當延時,等內(nèi)部模擬電源穩(wěn)定后,再啟動A/D轉(zhuǎn)換。建議在轉(zhuǎn)換結(jié)束之前,不改變?nèi)魏蜪/O口的狀態(tài),這樣有利于高精度A/D 轉(zhuǎn)換。IAP15W4K58S4單片機的參考電壓源是輸入工作電壓Vcc,一般不用外接參考電壓源。若Vcc不穩(wěn)定,則在8路A/D轉(zhuǎn)換的任意一個通道外接一個穩(wěn)定的參考電壓源,來計算出此時的工作電壓Vcc,再計算出其他A/D轉(zhuǎn)換通道的電壓。ADC_FLAG: A/D轉(zhuǎn)換結(jié)束標志位。 ADC_FLAG=0,ADC轉(zhuǎn)換沒有結(jié)束。 ADC_FLAG=1,ADC轉(zhuǎn)換結(jié)束。不管A/D 轉(zhuǎn)換是工作于中
9、斷還是查詢方式,當A/D轉(zhuǎn)換結(jié)束后,必須通過軟件將ADC_FLAG清0。ADC_START: ADC轉(zhuǎn)換啟動控制位。 ADC_START=0,ADC轉(zhuǎn)換停止。 ADC_START=1,ADC轉(zhuǎn)換開始。3. ADC轉(zhuǎn)換結(jié)果調(diào)整寄存器位ADRJADC轉(zhuǎn)換結(jié)果調(diào)整寄存器位ADRJ位于寄存器CLK_DIV/PCON中,用于控制ADC轉(zhuǎn)換結(jié)果存放的位置。其各位定義如表10-5所示。ADRJ:ADC轉(zhuǎn)換結(jié)果存儲格式調(diào)整控制位ADRJ=0:ADC_RES存放高8位ADC結(jié)果, ADC_RESL存放低2位ADC結(jié)果。ADRJ=1:ADC_RES存放高2位ADC結(jié)果, ADC_RESL存放低8位ADC結(jié)果4.
10、A/D轉(zhuǎn)換結(jié)果寄存器ADC_RES、ADC_RESL 特殊功能寄存器ADC_RES和ADC_RESL寄存器用于保存A/D轉(zhuǎn) 換結(jié)果。 其存儲格式如下表10-6和9-7所示。A/D轉(zhuǎn)換結(jié)果計算公式如下: ADRJ=0,取10位結(jié)果(ADC_RES7:0,ADC_REL1:0) D =1024*Vin/VccADRJ=0,取8位結(jié)果(ADC_RES7:0,)=256*Vin/VccADRJ=1,取10位結(jié)果(ADC_RES1:0,ADC_REL7:0,)D =1024*Vin/Vcc 式中,Vin為模擬輸入通道輸入電壓,Vcc為單片機實際工作電壓,用單片機工作電壓作為模擬參考電壓。5. 與A/D轉(zhuǎn)
11、換中斷相關的寄存器(1)中斷允許寄存器IE中斷允許寄存器IE地址為A8H,可位尋址。格式如表10-8所示:EA:CPU的中斷總控制標志 EA=1,CPU 允許中斷, EA=0,CPU 屏蔽所有的中斷申請。 EADC: A/D轉(zhuǎn)換中斷允許位 EADC=1 ,允許A/D轉(zhuǎn)換中斷, EADC=0 ,禁止A/D轉(zhuǎn)換中斷。(2)中斷優(yōu)先級控制寄存器IP中斷優(yōu)先級控制寄存器地址為B8H,可位尋址。其格式如表10-9所示:PADC:A/D 轉(zhuǎn)換中斷優(yōu)先級控制位。 當PADC=0 時,A/D轉(zhuǎn)換中斷為最低優(yōu)先級中斷(優(yōu)先級0) 當PADC=1 時,A/D轉(zhuǎn)換中斷為最高優(yōu)先級中斷(優(yōu)先級1)10.3 IAP15
12、W4K58S4單片機A/D轉(zhuǎn)換的應用IAP15W4K58S4單片機A/D轉(zhuǎn)換的應用編程要點如下:(1)設置ADC_CONTR寄存器中的ADC_POWER=1,打開ADC電源。(2)延時大約1ms,等待ADC內(nèi)部電源穩(wěn)定。(3)設置P1ASF寄存器相關位,選擇P1口相應引腳為A/D轉(zhuǎn)換模擬輸入通道。(4)設置ADC_CONTR寄存器中的CHS2CHS0,選擇ADC輸入通道。(5)設置CLK_DIV寄存器中的ADRJ,選擇轉(zhuǎn)換結(jié)果存儲格式。(6)啟動ADC。(7)若采取查詢法,查詢ADC_FLAG位判斷轉(zhuǎn)換是否完成,完成則讀取轉(zhuǎn) 換結(jié)果。若采取中斷法,開ADC中斷,在中斷服務程序中讀取轉(zhuǎn)換結(jié) 果并
13、清除ADC_FLAG位?!纠?】 利用IAP15W4K58S4單片機中的ADC轉(zhuǎn)換器對輸入電壓進行測量并顯示在數(shù)碼管上。請編寫單片機程序。解:C語言源程序代碼如下:#include stc15w4k32s4.h /包含單片機頭文件#include tm1638.h /包含數(shù)碼管顯示頭文件#include /包含該文件可以使用_nop_()函數(shù)#define VCC 5000 /定義電源電壓#define ADC_POWER 0 x80 / ADC控制位定義,ADC電源控制位#define ADC_FLAG 0 x10 /ADC轉(zhuǎn)換完成標記#define ADC_START 0 x08 /ADC
14、開始轉(zhuǎn)換標記#define ADC_SPEEDLL 0 x00 /ADC轉(zhuǎn)換速率540時鐘#define ADC_SPEEDL 0 x20 /ADC轉(zhuǎn)換速率360時鐘#define ADC_SPEEDH 0 x40 /ADC轉(zhuǎn)換速率180時鐘#define ADC_SPEEDHH 0 x60 /ADC轉(zhuǎn)換速率90時鐘10.3 IAP15W4K58S4單片機A/D轉(zhuǎn)換的應用/* ADC通道定義 */#define ADC_CHANNEL0 0 x00 /轉(zhuǎn)換通道P1.0#define ADC_CHANNEL1 0 x01 /轉(zhuǎn)換通道P1.1#define ADC_CHANNEL2 0 x02 /
15、轉(zhuǎn)換通道P1.2#define ADC_CHANNEL3 0 x03 /轉(zhuǎn)換通道P1.3#define ADC_CHANNEL4 0 x04 /轉(zhuǎn)換通道P1.4#define ADC_CHANNEL5 0 x05 /轉(zhuǎn)換通道P1.5#define ADC_CHANNEL6 0 x06 /轉(zhuǎn)換通道P1.6#define ADC_CHANNEL7 0 x07 /轉(zhuǎn)換通道P1.7/* ADC端口模擬功能 */#define P1ASF_00 x01 /設置P1.0口為ADC端口#define P1ASF_10 x02 /設置P1.1口為ADC端口#define P1ASF_20 x04 /設置P1.
16、2口為ADC端口#define P1ASF_30 x08 /設置P1.3口為ADC端口#define P1ASF_40 x10 /設置P1.4口為ADC端口#define P1ASF_50 x20 /設置P1.5口為ADC端口#define P1ASF_60 x40 /設置P1.6口為ADC端口#define P1ASF_70 x80 /設置P1.7口為ADC端口/* 定義全局變量 */unsigned char ADCCnt=0; unsigned int ADCResult=0;unsigned long int ADCSum=0;/* 函數(shù)聲明 */void IO_Init(void);
17、 void ADC_Init(void);void ADC_Process(void);void Delay_ms(unsigned int ms);unsigned int ADC_GetResult(unsigned char ch);void main(void) /主函數(shù) IO_Init(); /端口初始化ADC_Init(); /ADC初始化 TM1638_Init(); /TM1638初始化 while(1) ADC_Process(); /ADC數(shù)據(jù)采集并且處理 Delay_ms(10); /適當延時,無需采集過快 void ADC_Process(void) / ADC數(shù)據(jù)處理
18、函數(shù) ADCSum+=ADC_GetResult(ADC_CHANNEL2); /從AD通道采集數(shù)據(jù), / 并且進行累加 ADCCnt+; /計數(shù)器加1 if(ADCCnt=32) /如果累加到32個數(shù)據(jù),則開始處理 ADCCnt=0; ADCSum=ADCSum5; /(ADCSum5)等價于(ADCSum/32), /對32個數(shù)據(jù)取平均 ADCSum=ADCSum*VCC/1024; /ADC=(Vin/Vref)*1024,根據(jù) /ADC計算公式進行轉(zhuǎn)換 ADCResult=(unsigned int)ADCSum; /保存轉(zhuǎn)換結(jié)果并進行類型轉(zhuǎn)換, /方便顯示 ADCSum=0; /清除
19、AD暫存變量 ToDisplayBuf(ADCResult); /顯示測量結(jié)果void Delay_ms(unsigned int ms) /延時函數(shù) unsigned int i; while( (ms-) != 0) for(i = 0; i 580; i+); void ADC_Init(void) / ADC初始化函數(shù)P1ASF |=P1ASF_2; /P1.2口做為AD轉(zhuǎn)換通道ADC_RES=0; /ADC數(shù)據(jù)寄存器清零ADC_CONTR=ADC_POWER | ADC_SPEEDLL; /打開AD轉(zhuǎn)換器 /電源,設置轉(zhuǎn)換速率Delay_ms(2); /延時2ms,等待ADC上電穩(wěn)定
20、/*獲取ADC轉(zhuǎn)換的結(jié)果*/unsigned int ADC_GetResult(unsigned char ch) unsigned int ADC_Value; ADC_CONTR =ADC_POWER | ADC_SPEEDLL| ch | ADC_START; /啟動ADC _nop_(); /延時 _nop_(); _nop_(); _nop_(); while (!(ADC_CONTR & ADC_FLAG); /等待AD轉(zhuǎn)換完成 ADC_CONTR &= ADC_FLAG; /清除轉(zhuǎn)換完成標記 ADC_Value=ADC_RES; /讀取ADC高八位 ADC_Value=(ADC
21、_Value2)|ADC_RESL; /讀取ADC低兩位且數(shù)據(jù) /合并 return ADC_Value; /返回數(shù)據(jù) /*單片機IO端口模式初始化函數(shù)*/ void IO_Init(void) P2M1 &=( (15) | (16) | (17); /初始化P2.5,P2.6,P2.7口 /為準雙向口P2M0 &=( (15) | (16) | (17); P1M1 |=( 12); /初始化P12為輸入P1M0 &=( 12); P1M1 &=( (10) | (14) ); P1M0 &=( (10) | (14) ); 【例2】利用IAP15W4K58S4單片機中的ADC內(nèi)部基準對單
22、片機的工作電壓進行測量并顯示在數(shù)碼管上。解:C語言源程序代碼如下: #define MAIN_Fosc 22118400L /定義主時鐘 #include STC15Fxxxx.H #define DIS_DOT 0 x20 #define DIS_BLACK 0 x10 #define DIS_ 0 x11 #define P1n_pure_input(bitn) P1M1 |= (bitn), P1M0 &= (bitn) #define LED_TYPE 0 x00 /定義LED類型, 0 x00-共陰, 0 xff-共陽 #define Timer0_Reload (65536UL -
23、(MAIN_Fosc / 1000)/Timer 0 中斷頻率, 1000次/秒/*本地常量聲明*/標準字庫0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、black、/- 、H、J、K、L、N、o、P、U、t、G、Q、r、M、y、0. 、1.、 2. 、/3. 、4. 、5.、 6. 、7.、8. 、9.、 -1u8 code t_display = 0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F,0 x77,0 x7C,0 x39,0 x5E,0 x79,0 x71,0 x00,0 x40,0 x76,
24、0 x1E,0 x70,0 x38,0 x37,0 x5C,0 x73,0 x3E,0 x78,0 x3d,0 x67,0 x50,0 x37,0 x6e,0 xBF,0 x86,0 xDB,0 xCF,0 xE6,0 xED,0 xFD,0 x87,0 xFF,0 xEF,0 x46;u8 code T_COM = 0 x01,0 x02,0 x04,0 x08,0 x10,0 x20,0 x40,0 x80;/位碼/*IO口定義*/sbit P_HC595_SER = P40;/pin 14SER數(shù)據(jù)輸入 P_HC595_RCLK = P54; /pin 12RCLk存儲時鐘P_HC595
25、_SRCLK = P43; /pin 11SRCLK轉(zhuǎn)移數(shù)據(jù)塊/*本地變量聲明*/u8 LED88; /顯示緩沖u8 display_index; /顯示位索引bit B_1ms; /1ms標志u8 msecond;u16 Get_ADC10bitResult(u8 channel); /選擇通道07/*主函數(shù)*/void main(void) u8 i; u16 j; P0M1 = 0; P0M0 = 0; /設置為準雙向口 P1M1 = 0; P1M0 = 0; /設置為準雙向口 P2M1 = 0; P2M0 = 0; /設置為準雙向口 P3M1 = 0; P3M0 = 0; /設置為準雙向口 P4M1 = 0; P4M0 = 0; /設置為準雙向口 P5M1 = 0; P5M0 = 0; /設置為準雙向口 P6M1 = 0; P6M0 = 0; /設置為準雙向口 P7M1 = 0; P7M0 = 0; /設置為準雙向口/*主函數(shù)*/ display_index = 0; P1ASF = 0; /對內(nèi)部基準做ADC ADC_CONTR = 0 xE0; /90T, ADC上電 AUXR = 0 x80; /Timer0 工作在1T, 16 位定時器自動重載 TH0 = (u8)(Timer0_Reload / 256); TL0 =
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- epc工程合同范本
- 物資合同崗位職責
- 文旅開發(fā)合同協(xié)議書
- 2025年度物業(yè)費及社區(qū)文化活動策劃合同
- 2025年度私人飛機駕駛員勞務合同
- 二零二五年度解除租賃合同中的違約責任協(xié)議
- 2025年度二零二五年度新能源產(chǎn)業(yè)解除合同協(xié)議
- 2025年度汽車行業(yè)風險管理貸款合同
- 2025年度留學生就業(yè)政策支持與職業(yè)規(guī)劃輔導合同
- 2025年度水泥產(chǎn)品質(zhì)量檢測及認證服務合同
- 綠色簡潔商務匯總報告PPT模板課件
- 下肢皮牽引護理PPT課件(19頁PPT)
- 臺資企業(yè)A股上市相關資料
- 電 梯 工 程 預 算 書
- 參會嘉賓簽到表
- 形式發(fā)票格式2 INVOICE
- 2.48低危胸痛患者后繼治療評估流程圖
- 人力資源管理之績效考核 一、什么是績效 所謂績效簡單的講就是對
- 山東省醫(yī)院目錄
- 云南地方本科高校部分基礎研究
- 廢品管理流程圖
評論
0/150
提交評論