當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] ATMEGA16 ADC模數(shù)轉(zhuǎn)換示例程序1. 開發(fā)語(yǔ)言 本范例使用 WinAVR/GCC20050214 版本開發(fā) 2. 范例描述 本程序簡(jiǎn)單的示范了如何使用ATMEGA16的ADC模數(shù)轉(zhuǎn)換器 普通的單端輸入 差分輸入及校準(zhǔn) 基準(zhǔn)電壓的校準(zhǔn) 查

ATMEGA16 ADC模數(shù)轉(zhuǎn)換示例程序

1. 開發(fā)語(yǔ)言
本范例使用 WinAVR/GCC20050214 版本開發(fā)
2. 范例描述
本程序簡(jiǎn)單的示范了如何使用ATMEGA16的ADC模數(shù)轉(zhuǎn)換器

普通的單端輸入
差分輸入及校準(zhǔn)
基準(zhǔn)電壓的校準(zhǔn)
查詢方式
中斷方式
數(shù)據(jù)格式的變換
出于簡(jiǎn)化程序考慮,各種數(shù)據(jù)沒(méi)有對(duì)外輸出,學(xué)習(xí)時(shí)建議使用JTAGICE硬件仿真器
3.電路圖設(shè)計(jì) :
為簡(jiǎn)化線路設(shè)計(jì),使用了本網(wǎng)站的ATMEGA16功能小板。
在范例中 選用內(nèi)部2.56V電壓基準(zhǔn)作Vref ,差分通道 10倍放大
則 單端電壓測(cè)量范圍 02.56V, 分辨率2.5mV
差分電壓測(cè)量范圍 +/- 256mV 分辨率0.5mV
電流分辨率 = 50uA@10歐姆 電流采樣電阻
電流分辨率 =500uA@ 1歐姆 電流采樣電阻
程序中需要把實(shí)測(cè)的基準(zhǔn)電壓代入 常量Vref中,以獲得更準(zhǔn)確地結(jié)果
我手中的樣片實(shí)測(cè)為 2.556V@Vcc=5.0V
2.550V@Vcc=3.3V


*/
#include
#include
#include
#include
/*宏INTERRUPT的用法與SIGNAL類似,區(qū)別在于
SIGNAL執(zhí)行時(shí)全局中斷觸發(fā)位被清除、其他中斷被禁止
INTERRUPT執(zhí)行時(shí)全局中斷觸發(fā)位被置位、其他中斷可嵌套執(zhí)
另外avr-libc提供兩個(gè)API函數(shù)用于置位和清零全局中斷觸發(fā)位,它們是經(jīng)常用到的。
分別是:voidsei(void)和voidcli(void)由interrupt.h定義*/

//管腳定義
#definein_Single0//PA0(ADC0)
#definein_Diff_P3//PA3(ADC3)
#definein_Diff_N2//PA2(ADC2)
//常量定義
//單端通道,不放大
#defineAD_SE_ADC00x00//ADC0
#defineAD_SE_ADC10x01//ADC1
#defineAD_SE_ADC20x02//ADC2
#defineAD_SE_ADC30x03//ADC3
#defineAD_SE_ADC40x04//ADC4
#defineAD_SE_ADC50x05//ADC5
#defineAD_SE_ADC60x06//ADC6
#defineAD_SE_ADC70x07//ADC7
//差分通道ADC0作負(fù)端,10/200倍放大
#defineAD_Diff0_0_10x0x08//ADC0+ADC0-,10倍放大,校準(zhǔn)用
#defineAD_Diff1_0_10x0x09//ADC1+ADC0-,10倍放大
#defineAD_Diff0_0_200x0x0A//ADC0+ADC0-,200倍放大,校準(zhǔn)用
#defineAD_Diff1_0_200x0x0B//ADC1+ADC0-,200倍放大
//差分通道ADC2作負(fù)端,10/200倍放大
#defineAD_Diff2_2_10x0x0C//ADC2+ADC2-,10倍放大,校準(zhǔn)用
#defineAD_Diff3_2_10x0x0D//ADC3+ADC2-,10倍放大
#defineAD_Diff2_2_200x0x0E//ADC2+ADC2-,200倍放大,校準(zhǔn)用
#defineAD_Diff3_2_200x0x0F//ADC3+ADC2-,200倍放大
//差分通道ADC1作負(fù)端,不放大
#defineAD_Diff0_1_1x0x10//ADC0+ADC1-
#defineAD_Diff1_1_1x0x11//ADC1+ADC1-,校準(zhǔn)用
#defineAD_Diff2_1_1x0x12//ADC2+ADC1-
#defineAD_Diff3_1_1x0x13//ADC3+ADC1-
#defineAD_Diff4_1_1x0x14//ADC4+ADC1-
#defineAD_Diff5_1_1x0x15//ADC5+ADC1-
#defineAD_Diff6_1_1x0x16//ADC6+ADC1-
#defineAD_Diff7_1_1x0x17//ADC7+ADC1-
//差分通道ADC2作負(fù)端,不放大
#defineAD_Diff0_2_1x0x18//ADC0+ADC2-
#defineAD_Diff1_2_1x0x19//ADC1+ADC2-
#defineAD_Diff2_2_1x0x1A//ADC2+ADC2-,校準(zhǔn)用
#defineAD_Diff3_2_1x0x1B//ADC3+ADC2-
#defineAD_Diff4_2_1x0x1C//ADC4+ADC2-
#defineAD_Diff5_2_1x0x1D//ADC5+ADC2-
//單端通道,不放大
#defineAD_SE_VBG0x1E//VBG內(nèi)部能隙1.22V電壓基準(zhǔn),校準(zhǔn)用
#defineAD_SE_GND0x1F//接地校準(zhǔn)用
//注:
//差分通道,如果使用1x或10x增益,可得到8位分辨率。如果使用200x增益,可得到7位分辨率。
//在PDIP封裝下的差分輸入通道器件未經(jīng)測(cè)試。只保證器件在TQFP與MLF封裝下正常工作。
#defineVref2483//mV實(shí)測(cè)的Vref引腳電壓@5.0V供電
//#defineVref2464//mV實(shí)測(cè)的Vref引腳電壓@3.3V供電
//全局變量
unsignedintADC_SingleEnded;//單端輸入的ADC值
intADC_Diff;//差分輸入的ADC值
volatileunsignedintADC_INT_SE;
//中斷模式用的單端輸入ADC值,會(huì)在中斷服務(wù)程序中被修改,須加volatile限定
volatileunsignedcharADC_OK;//ADC狀態(tài),會(huì)在中斷服務(wù)程序中被修改,須加volatile限定
unsignedintLED_Volt;//變換后的電壓mV
intLED_Curr;//變換后的電流100uA
//仿真時(shí)在watch窗口,監(jiān)控這些全局變量。
unsignedintread_adc(unsignedcharadc_input)//查詢方式讀取ADC單端通道
{
ADMUX=(0xc0|adc_input);//adc_input:?jiǎn)味送ǖ?x00~0x07,0x1E,0x1F
//0xc0:選擇內(nèi)部2.56V參考電壓
ADCSRA|=(1//while((ADCSRA&(1ADCSRA|=(1}
intread_adc_diff(unsignedcharadc_input)//查詢方式讀取ADC差分通道
{
unsignedintADC_FIX;
ADMUX=(0xc0|adc_input);//adc_input:差分通道0x08~0x1D
_delay_ms(1);//等待差分增益穩(wěn)定>125uS
ADCSRA|=(1ADCSRA|=(1ADCSRA|=(1ADCSRA|=(1//輸出結(jié)果用2的補(bǔ)碼形式表示
//可正可負(fù)+/-9bit-512~+511
//即M16差分通道的ADC+輸入端的電壓可以大于ADC-,也可以小于ADC-。
//Tiny26就不行,ADC+輸入端的電壓必須大于或等于ADC-,為+10bit
if(ADC_FIX>=0x0200)//負(fù)數(shù)要變換,正數(shù)不用
{
ADC_FIX|=0xFC00;//變換成16位無(wú)符號(hào)整數(shù)
}
return(int)ADC_FIX;
}
SIGNAL(SIG_ADC)//ADC中斷服務(wù)程序
{
//硬件自動(dòng)清除ADIF標(biāo)志位
ADC_INT_SE=ADC;//讀取結(jié)果
ADC_OK=1;
}

intmain(void)
{
longteMP32;
ADC_SingleEnded=0;
ADC_Diff=0;
ADC_INT_SE=0;
//上電默認(rèn)DDRx=0x00,PORTx=0x00輸入,無(wú)上拉電阻
PORTB=0xFF;//不用的管腳使能內(nèi)部上拉電阻。
PORTC=0xFF;
PORTD=0xFF;
PORTA=~((1<//作ADC輸入時(shí),不可使能內(nèi)部上拉電阻。
ADCSRA=(1<分頻125KHz@8MHzsystemcLOCk
sei();//使能全局中斷
while(1)
{
//實(shí)測(cè)的Vref引腳電壓=2556mV
ADC_SingleEnded=read_adc(AD_SE_ADC0);
//查詢方式讀取ADC0
temp32=(long)ADC_SingleEnded*Vref;
LED_Volt=(unsignedint)(temp32/1024);
ADC_Diff=read_adc_diff(AD_Diff3_2_10x);
ADC_Diff-=read_adc_diff(AD_Diff2_2_10x);//校準(zhǔn)OFFSET
temp32=(long)ADC_Diff*Vref;
LED_Curr=(unsignedint)(temp32/(512*10));//[單位為100uA]
//查詢方式讀取ADC3+,ADC2-10倍放大max+/-255.6mV
//10歐姆1mA=10mVmax+/-25.56mA
//分辨率約0.5mV=50uA,顯示取整為100uA單位
ADCSRA|=(1ADC_OK=0;//軟件標(biāo)志清零
ADCSRA|=(1ADCSRA&=~(1}
}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉