AVR學(xué)習(xí)筆記二十、基于模數(shù)轉(zhuǎn)換的AD鍵盤(pán)實(shí)驗(yàn)_第1頁(yè)
AVR學(xué)習(xí)筆記二十、基于模數(shù)轉(zhuǎn)換的AD鍵盤(pán)實(shí)驗(yàn)_第2頁(yè)
AVR學(xué)習(xí)筆記二十、基于模數(shù)轉(zhuǎn)換的AD鍵盤(pán)實(shí)驗(yàn)_第3頁(yè)
AVR學(xué)習(xí)筆記二十、基于模數(shù)轉(zhuǎn)換的AD鍵盤(pán)實(shí)驗(yàn)_第4頁(yè)
AVR學(xué)習(xí)筆記二十、基于模數(shù)轉(zhuǎn)換的AD鍵盤(pán)實(shí)驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、拌AVR學(xué)習(xí)靶筆記二十、按基于模數(shù)轉(zhuǎn)疤換的AD鍵絆盤(pán)實(shí)驗(yàn)版20暗.1 熬實(shí)例功能扳在前面的實(shí)板例中我們已扳經(jīng)學(xué)習(xí)了在扳單片機(jī)系統(tǒng)拔中檢測(cè)礙矩陣按鍵礙的接口電路皚和程序設(shè)計(jì)板。但是矩陣阿式鍵盤(pán)仍然吧要占用不少安I/O口資班源,4X4八鍵盤(pán)就占用鞍了8根I/芭O口線(xiàn),那案么有沒(méi)有更皚簡(jiǎn)單的辦法鞍,使用更少扮的I/O口壩資源檢測(cè)更擺多的按鍵呢扳?矮 半o。佰通過(guò)前面的案學(xué)習(xí),我們藹知道按鍵檢扮測(cè)實(shí)際上是笆檢測(cè)連接按笆鍵的端口的斑高低電平值礙,而我們?cè)诎G懊娴膶?shí)例般中只是簡(jiǎn)單懊的判斷連接熬按鍵的端口隘的電平是高八電平(+5疤V)還是低襖電平(0V敖)。那么是班否可以通過(guò)礙電平的微小罷變化來(lái)檢測(cè)邦按鍵是

2、否被搬按下呢?挨z。艾 在澳這個(gè)實(shí)驗(yàn)中俺,我們采用哀模數(shù)轉(zhuǎn)換(跋AD)的方伴法來(lái)實(shí)現(xiàn)1絆個(gè)I/O口昂識(shí)別16個(gè)藹按鍵的骯實(shí)驗(yàn),本實(shí)皚例氨分為三個(gè)功班能模塊,分佰別描述如下俺:埃P。案骯 斑單片機(jī)系統(tǒng)?。豪肁T矮mega1岸6單片機(jī)與懊AD霸鍵盤(pán)電路實(shí)盎現(xiàn)白1個(gè)I/O暗口的矮多按鍵識(shí)別般。罷5。骯礙 啊外圍電路:奧AD奧鍵盤(pán)電路半、唉串口電平轉(zhuǎn)拜換百電路背。盎瓣 絆軟件程序:暗編寫(xiě)軟件,笆實(shí)現(xiàn)傲AD板鍵盤(pán)識(shí)別1奧6個(gè)按鍵的按程序。背通過(guò)本實(shí)例挨的學(xué)習(xí),掌板握以下內(nèi)容翱:哀八 骯AD跋鍵盤(pán)柏的電路設(shè)計(jì)哎和埃程序?qū)崿F(xiàn)。阿 扳20笆.2 哀器件和原理罷 擺20阿.2.1案 啊A扳D鞍鍵盤(pán)的工作邦原理

3、擺我們知道A辦VR單片機(jī)澳自帶有內(nèi)部瓣模數(shù)轉(zhuǎn)換(澳AD)電路皚,那么我們愛(ài)就利用AV啊R的這一特伴性來(lái)實(shí)現(xiàn)利按用一個(gè)I/捌O口檢測(cè)1岸6個(gè)按鍵的阿實(shí)驗(yàn)般。爸b。骯圖1為一個(gè)壩A/D鍵盤(pán)辦的原理圖懊,昂從圖中可以懊看出,當(dāng)不頒同的按鍵被靶按下時(shí),A擺DC端點(diǎn)處安的電壓不同唉,通過(guò)判斷捌不同的電壓藹值就可以判頒斷出是那個(gè)按按鍵被按下阿。擺m。AVR單片皚機(jī)的A/D扒轉(zhuǎn)換位數(shù)為埃10位,實(shí)跋際應(yīng)用中我拌們只取高8哀位的值就可以分辨出1伴6個(gè)按鍵。八我們?cè)O(shè)定A襖D轉(zhuǎn)換的參凹考電壓為V安CC,這樣斑A/D鍵盤(pán)阿識(shí)別準(zhǔn)確度艾最高,并且熬能夠識(shí)別更氨多的按鍵。罷9。案 耙 把 圖隘1 靶A隘/D哎鍵盤(pán)電路岸

4、 矮20芭.安2.2拔 跋 扳A壩/D鍵盤(pán)的爸缺陷辦在實(shí)際應(yīng)用擺中,我們是吧不可能得到阿準(zhǔn)確的A/俺D轉(zhuǎn)換值的百,這是因?yàn)榘洗嬖谝韵聨装畏N誤差:俺E。盎1)、對(duì)于頒同一點(diǎn)處的襖電壓值,A暗/D多次采百樣的結(jié)果不霸可能完全相安同。愛(ài)I。絆2)、電阻扳的誤差。電笆阻值由于電靶阻的精度和癌環(huán)境溫度的擺原因,誤差八較大,所以稗A/D鍵盤(pán)阿各個(gè)按鍵點(diǎn)唉的分壓不準(zhǔn)矮確拔。絆U。罷3)、為盡襖量減少誤差懊,可以采取按增加電阻精扮度、增加溫白度補(bǔ)償?shù)确桨し?,另外在拜軟件處理時(shí)襖候要注意消拌除按鍵抖動(dòng)捌等因素,還凹要對(duì)實(shí)際轉(zhuǎn)壩換值和標(biāo)準(zhǔn)辦值給出誤差八補(bǔ)償。柏P。背4)、如果奧按鍵按下,矮經(jīng)過(guò)A/D背轉(zhuǎn)換,若實(shí)挨

5、際轉(zhuǎn)換值在班允許誤差范氨圍之內(nèi)(需鞍要實(shí)際測(cè)量啊各點(diǎn)電壓,扮并計(jì)算各點(diǎn)岸電壓平均值俺),則認(rèn)為佰按鍵按下,奧否則程序不熬響應(yīng)。邦V。辦5)、實(shí)際辦試驗(yàn)過(guò)程中半,還要考慮伴電阻的累積唉誤差,選用柏精度越高的白電阻,可分捌辨的按鍵數(shù)目越多。伴G。八 鞍 矮 盎 稗20鞍.3 電路澳和連接芭 澳 本實(shí)驗(yàn)主啊要有兩部分拔電路模塊組敖成:唉串口電平轉(zhuǎn)案換電路班,叭A/D芭鍵盤(pán)電路拌。邦串口電平轉(zhuǎn)擺換邦電路在前面暗的實(shí)例中我邦們已經(jīng)做過(guò)百介紹,在此耙不再重復(fù)。壩這里我們重奧點(diǎn)介紹一下板A/D爸鍵盤(pán)電路艾。懊實(shí)際試驗(yàn)中辦我們將圖1罷中的ADC奧接點(diǎn)連接到擺單片機(jī)的P哀A1口,也癌就是A/D安轉(zhuǎn)換的AD艾1通

6、道。唉9。扮 氨 瓣 瓣 拜 埃 挨20岸.4 程扳序設(shè)計(jì)暗 稗1、程序功壩能案在本實(shí)例中把,我們利用拜串口按將癌A/D奧鍵盤(pán)中按下熬的按鍵的鍵笆碼值安發(fā)送到計(jì)算佰機(jī),通過(guò)串瓣口助手觀(guān)察拔實(shí)驗(yàn)結(jié)果笆。皚U。案 敖2、函數(shù)說(shuō)奧明柏 按本實(shí)例主要白有暗串口數(shù)據(jù)發(fā)安送白程序和瓣A/D背鍵盤(pán)識(shí)別礙程序,般串口數(shù)據(jù)發(fā)奧送壩程序我們前吧面例子中已辦經(jīng)介紹過(guò),安本實(shí)例的程柏序中不再詳懊細(xì)說(shuō)明。翱Z。般 澳 叭3、編程說(shuō)稗明霸 靶使用WIN熬AVR開(kāi)發(fā)唉環(huán)境,使用背的是外部扮12M敗的晶振,所芭以需要將m八akefi唉le文件中伴的時(shí)鐘頻率叭修改為半12M阿。另外在程礙序燒錄到單挨片機(jī)的時(shí)候唉,熔絲位也氨要選

7、擇為外熬部佰12M柏晶振(板注意是晶振八,不是外部岸振蕩器澳,一定不要拜選擇錯(cuò)了,搬否則會(huì)導(dǎo)致叭單片機(jī)不能哀再燒寫(xiě)程序瓣)。班u。疤 板4、程序代版碼俺/*矮*耙*巴*背*扮*柏*澳*矮*斑*壩J。辦* 巴 拜AVR 疤A/D氨鍵盤(pán)范例耙 哎 頒 *辦e。氨* 辦MCU: 拌ATmeg熬a16 稗 瓣 拜 壩 襖 佰*瓣9。凹* 笆作者:挨 maw昂eili 百 伴 案 跋 扳 *版*扳G。挨* 愛(ài)編譯器:芭WINAV半R 挨 班 俺 襖*澳c。耙* 藹 稗 柏 叭 翱 拌 耙 瓣 骯*拌D。昂* 捌 阿唉2009.傲4.3 瓣 爸 *爸*扮*絆*傲*胺*跋*奧*吧*懊*頒*/案Z。笆#inc

8、l昂ude 伴 頒 奧#incl伴ude 埃#incl擺ude /伴/半中斷函數(shù)頭巴文件啊G。艾/芭常量聲明哀#defi襖ne BA把UD 96挨00 叭 搬 /芭波特率設(shè)置氨值版z。岸/拌全局變量聲佰明扮unsig傲ned i斑nt AD扳Data;藹 拌 靶/AD稗轉(zhuǎn)換獲得的半數(shù)據(jù)百3。扮/般函數(shù)聲明襖void 板Port_俺Init(靶void)笆; /吧/伴端口初始化笆配置拔m。笆void 唉Usart礙_Init芭(void百); /版/USAR百T板寄存器設(shè)置稗7。阿void 拜AD_In鞍it(vo爸id); 罷 /岸AD盎初始化癌void 艾Usart背_PutC俺har(u拔

9、nsign熬ed char cT佰XData爸); /氨/把字節(jié)發(fā)送函瓣數(shù)扮4。扮void 百Usart罷_PutS爸tring隘(unsi佰gned 唉char 唉*pcSt辦ring)扮; /挨 叭字符串發(fā)送叭數(shù)據(jù)扮P。壩unsig爸ned i壩nt AD叭_GetD艾ata(v昂oid);伴 /安/AD巴轉(zhuǎn)換函數(shù)巴A。阿void 捌GetKe扒y(voi案d); 盎 版 /埃/擺顯示按鍵值霸n。班int m耙ain(v稗oid) 般 霸 邦 辦敗unsig艾ned c辦har D白elay3暗s;澳板Port_邦I(lǐng)nit(巴);爸昂Usart敖_Init搬();按耙AD_Init();懊

10、佰Usart氨_PutS瓣tring礙(AD傲鍵盤(pán)測(cè)試程版序般);唉藹/Usa把rt_Pu班tStri擺ng(按敗你按下的按霸鍵序號(hào)為:鞍);柏p。隘拜sei()哀; 柏 半 /扒使能全局中疤斷捌 辦八while懊(1)愛(ài)伴拜ADDat唉a = A笆D_Get靶Data(氨);敗阿擺/把獲得的安AD瓣值敗挨擺 安 扒 凹 壩 安 伴 傲 敖 埃 搬 愛(ài)Q。襖耙翱if(AD八Data 叭 5) 氨 斑 /佰判斷是否有傲按鍵按下昂k。稗盎擺_dela扒y_ms(襖50); 扮 /佰/般按鍵消抖百拔八愛(ài)if(AD辦Data 扮 5)佰皚霸胺吧GetKe氨y(); 絆 /鞍/笆獲取按鍵值俺阿柏把_de

11、la安y_ms(拌200);俺阿for(D敗elay3八s = 0扮;Dela擺y3s 敖 10;D矮elay3背s+) 稗 /般/案延時(shí)熬3S笆s。案柏唉愛(ài)_dela扮y_ms(艾90);藹/藹端口狀態(tài)初愛(ài)始化設(shè)置函拔數(shù)叭void 艾Port_壩Init(鞍)熬疤PORTA骯 = 0X案00; 藹 岸 邦盎DDRA 按= 0 x0頒0; 翱/ADC擺通道設(shè)置為班輸入口,高百阻態(tài)版拔U。吧/USA唉RT罷寄存器配置八函數(shù)壩void 懊Usart凹_Init敗()隘氨UCSRA辦 = 0X半00;盎般盎UCSRC芭 |= (骯1UR凹SEL) 翱| (1 隘 UC胺SZ1) 罷| (1 罷 UC

12、澳SZ0);澳 /按異步,數(shù)據(jù)拜格式芭8版,背N敖,跋1擺Z。跋斑 背/UCS襖RC熬寄存器與氨UBRRH背寄存器共用白相同的熬I/O懊地址把,背寫(xiě)罷 UCSR柏C 瓣時(shí),敗 URSE壩L 拔應(yīng)設(shè)置為八 1靶。艾M。耙扒UBRRL阿 = (F案_CPU 哎/ BAU愛(ài)D / 1捌6 - 1板) % 2傲56; 氨 /皚波特率設(shè)置佰1。俺般UBRRH芭 = (F跋_CPU 唉/ BAU八D / 1藹6 - 1凹) / 2斑5哎6;藹挨熬o。胺斑UCSRB礙 |= (昂1 吧RXCIE傲) | (暗1 疤RXEN)扒 | (1伴 T邦XEN);愛(ài) /鞍/靶發(fā)送使能胺E。熬/壩字節(jié)發(fā)送函拜數(shù)板voi

13、d 挨Usart靶_PutC礙har(u板nsign霸ed char cT扳XData矮)邦5。唉while癌( !(U盎CSRA 拌& (1 背 UD扮RE) 拔); /隘/翱只有數(shù)據(jù)寄壩存器為空時(shí)礙才能發(fā)送數(shù)吧據(jù)暗L。盎辦UDR =胺 cTXD奧ata;柏叭 安 懊 斑 /頒發(fā)送數(shù)據(jù)送拔USART耙 I/O佰數(shù)據(jù)寄存器耙壩UDR藹A。版/翱接收中斷函啊數(shù)版ISR(U暗S敗ART_R案XC_ve耙ct )稗襖unsig氨ned c背har R辦ev;半唉Rev =捌 UDR;阿 扒 邦 /懊/按從啊USART扮 I/O敗數(shù)據(jù)寄存器艾板UDR挨中讀出數(shù)據(jù)敗1。按絆Usart扮_PutC霸har

14、(R半ev); 胺 /拜將接收到的白數(shù)據(jù)發(fā)送艾g。啊void 澳Usart敖_PutS霸tring斑(unsi拜gned 翱char 翱*pcSt斑ring)翱B。爸巴while壩 (*pc愛(ài)Strin柏g)扳靶襖Usart傲_PutC跋har(*皚pcStr辦ing+傲); 安暗Usart擺_PutC昂har(0爸x0D);扒壩Usart吧_PutC絆har(0稗x耙0A皚); /板/矮結(jié)尾發(fā)送回芭車(chē)換行半r。藹/AD盎轉(zhuǎn)換初始化霸函數(shù)翱void 芭AD_In跋it()百絆ADMUX斑 |= (板1 疤REFS0骯) | (巴1 MUX0)扮 | (1皚 A矮DLAR)笆; 拜s。伴擺班阿哀

15、/ADC般參考電壓為扮AVcc背,懊ADC奧結(jié)果左對(duì)齊笆,選擇通道埃ADC1哎N。班ADCSRA |= 稗(1 疤 ADEN巴) | (拔1 捌ADPS2挨) | (矮1 矮ADPS1氨); 巴/案使能敖AD阿轉(zhuǎn)換,岸ADC哀時(shí)鐘半64把分頻骯g。澳/AD跋轉(zhuǎn)換函數(shù)跋unsig靶ned i柏nt AD伴_(kāi)GetD藹ata()跋捌ADCSR熬A |= 絆(1 白 ADSC邦); 熬 /盎開(kāi)始吧AD白轉(zhuǎn)換疤l。疤岸while昂(!(AD笆CSRA 翱& (1 案 AD翱IF)般; 叭/奧等待轉(zhuǎn)換完把成拜g。百扮ADCSR敗A |= 斑(1 22八6) &暗 (ADD艾ata 18邦6) &隘 (A

16、DD白ata 15巴7) &氨 (ADD藹ata 13傲5) &癌 (ADD懊ata 11捌7) &八 (ADD百ata 10翱1) &背 (ADD柏ata 90哀) & 骯(ADDa扒ta 78敖) & 傲(ADDa霸ta 69瓣) & 靶(ADDa稗ta 60巴) & 柏(ADDa頒ta 52擺) & 柏(ADDa矮ta 44埃) & 捌(ADDa埃ta 37辦) & 百(ADDa愛(ài)ta 28傲) & 皚(ADDa按ta 19唉) & 阿(ADDa背ta 9)暗 & (挨ADDat骯a 1氨7)把d。翱暗澳板Usart_PutS拌tring凹(背你按下的按盎鍵序號(hào)為:半);愛(ài)鞍懊骯Usart巴_PutC叭har(0礙x46);昂哀隘

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論