1. 開發語言
本范例使用 WinAVR/GCC 20050214 版本開發
2. 范例描述
本程序簡單的示范了如何使用ATmega16的ADC模數轉換器 普通的單端輸入 差分輸入及校準基準電壓的校準 查詢方式 中斷方式 數據格式的變換 出于簡化程序考慮,各種數據沒有對外輸出,學習時建議使用JTAG ICE硬件仿真器
3. 電路圖設計 :
為簡化線路設計,使用了本網站的ATmega16功能小板。
在范例中 選用內部2.56V電壓基準作Vref ,差分通道 10倍放大
則 單端電壓測量范圍 02.56V, 分辨率2.5mV
差分電壓測量范圍 +/- 256mV 分辨率0.5mV
電流分辨率 = 50uA@10歐姆 電流采樣電阻
電流分辨率 =500uA@ 1歐姆 電流采樣電阻
程序中需要把實測的基準電壓代入 常量Vref中,以獲得更準確地結果
我手中的樣片實測為 2.556V@Vcc=5.0V
2.550V@Vcc=3.3V
本電路僅供參考,沒有考慮抗干擾方面的要求
4. 代碼設計與說明 :
/***************************************************** ADC(模數轉換)使用范例 ******* ******* 策劃、整理與測試: 阿莫(armok) ***
**** 代碼設計: HJJourAVR ******* 編譯器:WINAVR20050214 ******* www.OurAVR.com 2005.8.31 ****************************************************/#include #include #include #include /*宏INTERRUPT 的用法與SIGNAL 類似,區別在于 SIGNAL 執行時全局中斷觸發位被清除、其他中斷被禁止 INTERRUPT 執行時全局中斷觸發位被置位、其他中斷可嵌套執另外avr-libc 提供兩個API 函數用于置位和清零全局中斷觸發位,它們是經常用到的。分別是:void sei(void) 和void cli(void) 由interrupt.h定義 */
//管腳定義
#define in_Single 0 //PA0(ADC0)
#define in_Diff_P 3 //PA3(ADC3)
#define in_Diff_N 2 //PA2(ADC2)
//常量定義
//單端通道,不放大
#define AD_SE_ADC0 0x00 //ADC0
#define AD_SE_ADC1 0x01 //ADC1
#define AD_SE_ADC2 0x02 //ADC2
#define AD_SE_ADC3 0x03 //ADC3
#define AD_SE_ADC4 0x04 //ADC4
#define AD_SE_ADC5 0x05 //ADC5
#define AD_SE_ADC6 0x06 //ADC6
#define AD_SE_ADC7 0x07 //ADC7
//差分通道ADC0作負端,10/200倍放大
#define AD_Diff0_0_10x 0x08 //ADC0+ ADC0-, 10倍放大,校準用
#define AD_Diff1_0_10x 0x09 //ADC1+ ADC0-, 10倍放大
#define AD_Diff0_0_200x 0x0A //ADC0+ ADC0-,200倍放大,校準用
#define AD_Diff1_0_200x 0x0B //ADC1+ ADC0-,200倍放大
//差分通道ADC2作負端,10/200倍放大
#define AD_Diff2_2_10x 0x0C //ADC2+ ADC2-, 10倍放大,校準用
#define AD_Diff3_2_10x 0x0D //ADC3+ ADC2-, 10倍放大
#define AD_Diff2_2_200x 0x0E //ADC2+ ADC2-,200倍放大,校準用
#define AD_Diff3_2_200x 0x0F //ADC3+ ADC2-,200倍放大
//差分通道ADC1作負端,不放大
#define AD_Diff0_1_1x 0x10 //ADC0+ ADC1-
#define AD_Diff1_1_1x 0x11 //ADC1+ ADC1-,校準用
#define AD_Diff2_1_1x 0x12 //ADC2+ ADC1-
#define AD_Diff3_1_1x 0x13 //ADC3+ ADC1-
#define AD_Diff4_1_1x 0x14 //ADC4+ ADC1-
#define AD_Diff5_1_1x 0x15 //ADC5+ ADC1-
#define AD_Diff6_1_1x 0x16 //ADC6+ ADC1-
#define AD_Diff7_1_1x 0x17 //ADC7+ ADC1-
//差分通道ADC2作負端,不放大
#define AD_Diff0_2_1x 0x18 //ADC0+ ADC2-
#define AD_Diff1_2_1x 0x19 //ADC1+ ADC2-
#define AD_Diff2_2_1x 0x1A //ADC2+ ADC2-,校準用
#define AD_Diff3_2_1x 0x1B //ADC3+ ADC2-
#define AD_Diff4_2_1x 0x1C //ADC4+ ADC2-
#define AD_Diff5_2_1x 0x1D //ADC5+ ADC2-
//單端通道,不放大
#define AD_SE_VBG 0x1E //VBG 內部能隙1.22V電壓基準,校準用
#define AD_SE_GND 0x1F //接地 校準用
//注:
//差分通道,如果使用1x或10x增益,可得到8位分辨率。如果使用200x增益,可得到7位分辨率。
//在PDIP封裝下的差分輸入通道器件未經測試。只保證器件在TQFP與MLF封裝下正常工作。
#define Vref 2556 //mV 實測的Vref引腳電壓@5.0V供電
//#define Vref 2550 //mV 實測的Vref引腳電壓@3.3V供電
//全局變量
unsigned int ADC_SingleEnded; //單端輸入的ADC值
int ADC_Diff; //差分輸入的ADC值
volatile unsigned int ADC_INT_SE; //中斷模式用的單端輸入ADC值,會在中斷服務程序中被修改,
//須加volatile限定
volatile unsigned char ADC_OK; //ADC狀態,會在中斷服務程序中被修改,須加volatile限定
unsigned int LED_Volt; //變換后的電壓mV
int LED_Curr; //變換
上一篇:基于AVR 8位微處理器的FSPLC微處理器SOC設計
下一篇:基于AVR MCU實現多功能導盲車系統的設計
推薦閱讀
史海拾趣
在市場競爭日益激烈的情況下,DMEL Inc意識到品牌建設的重要性。公司開始注重品牌形象的塑造和推廣,通過廣告宣傳、公益活動等方式,提升品牌的知名度和美譽度。同時,DMEL Inc還加強了與消費者的溝通和互動,了解消費者的需求和反饋,不斷改進產品和服務。這些努力使得DMEL Inc在消費者心中樹立了良好的品牌形象。
在技術創新的基礎上,DMEL Inc開始積極拓展市場。公司首先瞄準了歐美等發達國家市場,通過參加國際展會、建立海外銷售網絡等方式,成功打開了國際市場的大門。同時,DMEL Inc也關注國內市場的變化,不斷調整產品策略,滿足國內消費者的需求。隨著市場份額的逐步擴大,DMEL Inc的知名度也不斷提升。
為了進一步擴大市場份額,EBG RESISTORS LLC公司開始實施國際化戰略。他們積極參加國際電子展會,與全球各地的客戶建立聯系。同時,公司還積極尋求與國際知名企業的合作,共同開發新產品。在XXXX年,公司成功打入歐洲市場,并在隨后幾年內陸續進入亞洲和北美市場。
某新興顯示技術公司,專注于柔性顯示技術的研發。隨著市場對可折疊、可卷曲電子設備需求的增加,該公司投入巨資研發新一代柔性屏幕。經過數年的努力,他們成功開發出了具有超高柔韌性、清晰度和耐用性的顯示屏。這一技術的突破,不僅為智能手機、平板電腦等移動設備帶來了全新的形態設計,也為可穿戴設備、車載顯示等領域提供了更多可能性。
中國電信日前公布了2006年第一季度業績,券商普遍認為,該公司發布的第一季度營運數據與市場預期一致,稱其核心的固網業務增長顯著放緩,第一季度新增用戶較上年同期的845萬下降 40%,至509萬。對此,里昂維持 ...… 查看全部問答∨ |
|
以前一直在eeworld下載芯片資料,卻一直沒有發現有這樣的一個論壇,昨天才發現,呵呵以后要常來這里跟大家交流交流,同時給大家推薦一個我經常上的比較好的通信類網站:http://bbs.cnttr.com/viewthread.php?tid=110035呵呵,希望斑竹不要刪貼哦!… 查看全部問答∨ |
各位好: 為了防止論壇公告被垃圾貼淹沒,所以對論壇公告區的發帖權限有所限制,只有管理員和版主可以發帖。 煩請會員朋友點擊以下鏈接發帖:http://bbs.eeworld.com.cn/viewthread.php?tid=64547&extra=page%3D1&frombbs=1 EEWORLD近期會對 ...… 查看全部問答∨ |
1、引言 球磨機一般采用簡單的工頻控制,易造成物料的過度研磨,所需研磨周期較長,研磨效率較低,單位產品功耗較大,啟動電流大,對設備和電網的沖擊很大,機械設備的生產維護量也大,而且電的損耗量相當驚人,這必然會給生產廠家帶來很多不必要 ...… 查看全部問答∨ |
|
[急問] 當通話(on call)建立起來後,要如何再放聲音呢?? 請問一下各位高手~~ 小弟有一個疑問~~當通話(on call)建立起來後,要如何再放聲音呢?? 簡單說就是當在講話的時候~~再來一通電話~~ 那時候我們會聽到一個TONE音~~ 小弟就是想要知道如何才能實現~~ 拜託各位高手~~小弟有點急!!… 查看全部問答∨ |
|
我用CAsnysocket編程實現臺式計算機與wince之間的通信時,發現wince能將數據發送到臺式機,但臺式機無法將數據發送到Wince 。很郁悶,后來使用局域網查看程序卻發現我的CE沒有‘工作組’名。只能看到設備名和ip地址,會跟這個有關系嗎?… 查看全部問答∨ |
我的意思是實現一個能收聽真正無線電廣播的裝置(不是那種網絡收音機),可以借助少量的硬件,比如在串口接上簡單的自制天線、模數轉換裝置等,將無線電信號變為數字信號輸入計算機,然后通過軟件進行解調,最終還原成聲音。 有沒有類似的技術或 ...… 查看全部問答∨ |