|
ADC(模/數(shù)轉(zhuǎn)換器ADC):顧名思義就是一個起轉(zhuǎn)換功能的器件了嘍。
一.首先了解一下對應(yīng)的管腳:
我先直接用大白話說說我自己的理解吧,就是AVR上設(shè)了相應(yīng)接口來接收外部輸進來的模擬信號量,但是MCU只會處理10010101這樣的數(shù)字量,所以需要ADC這樣一個東西進行中間的轉(zhuǎn)換(ATmega16內(nèi)部是集成了一個10位逐次比較的ADC電路),然后你需要轉(zhuǎn)換些什么就把需要轉(zhuǎn)換的東西接在內(nèi)個事先安排好的管腳上(PORTA上0~7都被安排了)
ADC1.jpg (117.68 KB, 下載次數(shù): 125)
下載附件
2019-6-13 21:31 上傳
(圖片的書上有一些詳細的說明)
二.實際使用
在實際學(xué)習(xí)使用中,我還沒用到那么多功能,只用了最基礎(chǔ)的8路單端輸入電壓采樣中的其中一路(單端電壓輸入以0V:GND為參考)
ADC2.jpg (39.31 KB, 下載次數(shù): 127)
下載附件
2019-6-13 21:38 上傳
ADC3.jpg (75.58 KB, 下載次數(shù): 140)
下載附件
2019-6-13 21:38 上傳
(如圖就是我使用的學(xué)校的板子的原理圖)
實驗?zāi)康模?br />
目的時使用PA7這一路的輸入(在按下不同按鈕是產(chǎn)生不同的電壓)通過ADC轉(zhuǎn)化,交給MCU進行處理,實現(xiàn)這部分按鍵的定位
如圖(KEY1:0 KEY2:(1/4)vcc KEY4:(2/5)vcc KEY3:(1/2)vcc KEY6:(4/7)vcc KEY5:(5/8)vcc ) VCC=3.3V
轉(zhuǎn)換數(shù)據(jù)處理:
ADC4.jpg (3.62 MB, 下載次數(shù): 118)
下載附件
2019-6-13 21:55 上傳
ADC5.jpg (3.56 MB, 下載次數(shù): 138)
下載附件
2019-6-13 21:58 上傳
(如圖,ADC多路復(fù)用器選擇寄存器ADMUX中的第5位ADLAR默認(rèn)狀態(tài)時為0,所以默認(rèn)就是右對齊嘍,這樣也好看一些,隨意吐槽一下,為什么還要設(shè)置左對齊這種東西,哈哈哈哈哈)
既然是10位,那么將二進制轉(zhuǎn)換為十進制的話,最大就是1024,如果只要定位按鍵的話可以不用得到具體的電壓值,直接獲得該電壓值下對應(yīng)的一個十位二進制數(shù)就好了。就好比((你按下按鍵產(chǎn)生的壓值/參考的總電壓)==(該電壓下轉(zhuǎn)換后的十位數(shù)/1024))。然后通過獲取的是十位數(shù)所在的區(qū)間就可以定位按鍵了(這里之所以說區(qū)間,是因為總會有些誤差的嘛)。
ADC7.JPG (37.84 KB, 下載次數(shù): 129)
下載附件
2019-6-13 22:13 上傳
ADC6.JPG (38.41 KB, 下載次數(shù): 118)
下載附件
2019-6-13 22:13 上傳
(如圖是ADC使用初始化代碼,和按鍵定位的代碼,誤差我選擇了20)
關(guān)于轉(zhuǎn)換結(jié)果:我有兩種寫法
① result=ADCL; result=ADCH*256+result; //轉(zhuǎn)換結(jié)果
② result=ADCL;
result=(ADCH<<8) | result; //轉(zhuǎn)換結(jié)果
(result是自己定義的一個過渡變量)
|
評分
-
查看全部評分
|