版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、拌AVR学习靶笔记二十、按基于模数转疤换的AD键绊盘实验版20暗.1 熬实例功能扳在前面的实板例中我们已扳经学习了在扳单片机系统拔中检测碍矩阵按键碍的接口电路皑和程序设计板。但是矩阵阿式键盘仍然吧要占用不少安I/O口资班源,4X4八键盘就占用鞍了8根I/芭O口线,那案么有没有更皑简单的办法鞍,使用更少扮的I/O口坝资源检测更摆多的按键呢扳?矮 半o。佰通过前面的案学习,我们蔼知道按键检扮测实际上是笆检测连接按笆键的端口的斑高低电平值碍,而我们在埃前面的实例般中只是简单懊的判断连接熬按键的端口隘的电平是高八电平(+5疤V)还是低袄电平(0V敖)。那么是班否可以通过碍电平的微小罢变化来检测邦按键是
2、否被搬按下呢?挨z。艾 在澳这个实验中俺,我们采用哀模数转换(跋AD)的方伴法来实现1绊个I/O口昂识别16个蔼按键的肮实验,本实皑例氨分为三个功班能模块,分佰别描述如下俺:埃P。案肮 斑单片机系统啊:利用AT矮mega1岸6单片机与懊AD霸键盘电路实盎现白1个I/O暗口的矮多按键识别般。罢5。肮碍 啊外围电路:奥AD奥键盘电路半、唉串口电平转拜换百电路背。盎瓣 绊软件程序:暗编写软件,笆实现傲AD板键盘识别1奥6个按键的按程序。背通过本实例挨的学习,掌板握以下内容翱:哀八 肮AD跋键盘柏的电路设计哎和埃程序实现。阿 扳20笆.2 哀器件和原理罢 摆20阿.2.1案 啊A扳D鞍键盘的工作邦原理
3、摆我们知道A办VR单片机澳自带有内部瓣模数转换(澳AD)电路皑,那么我们爱就利用AV啊R的这一特伴性来实现利按用一个I/捌O口检测1岸6个按键的阿实验般。爸b。肮图1为一个坝A/D键盘办的原理图懊,昂从图中可以懊看出,当不颁同的按键被靶按下时,A摆DC端点处安的电压不同唉,通过判断捌不同的电压蔼值就可以判颁断出是那个按按键被按下阿。摆m。AVR单片皑机的A/D扒转换位数为埃10位,实跋际应用中我拌们只取高8哀位的值就可以分辨出1伴6个按键。八我们设定A袄D转换的参凹考电压为V安CC,这样斑A/D键盘阿识别准确度艾最高,并且熬能够识别更氨多的按键。罢9。案 耙 把 图隘1 靶A隘/D哎键盘电路岸
4、 矮20芭.安2.2拔 跋 扳A坝/D键盘的爸缺陷办在实际应用摆中,我们是吧不可能得到阿准确的A/俺D转换值的百,这是因为跋存在以下几拔种误差:俺E。盎1)、对于颁同一点处的袄电压值,A暗/D多次采百样的结果不霸可能完全相安同。爱I。绊2)、电阻扳的误差。电笆阻值由于电靶阻的精度和癌环境温度的摆原因,误差八较大,所以稗A/D键盘阿各个按键点唉的分压不准矮确拔。绊U。罢3)、为尽袄量减少误差懊,可以采取按增加电阻精扮度、增加温白度补偿等方挨法,另外在拜软件处理时袄候要注意消拌除按键抖动捌等因素,还凹要对实际转坝换值和标准办值给出误差八补偿。柏P。背4)、如果奥按键按下,矮经过A/D背转换,若实挨
5、际转换值在班允许误差范氨围之内(需鞍要实际测量啊各点电压,扮并计算各点岸电压平均值俺),则认为佰按键按下,奥否则程序不熬响应。邦V。办5)、实际办试验过程中半,还要考虑伴电阻的累积唉误差,选用柏精度越高的白电阻,可分捌辨的按键数目越多。伴G。八 鞍 矮 盎 稗20鞍.3 电路澳和连接芭 澳 本实验主啊要有两部分拔电路模块组敖成:唉串口电平转案换电路班,叭A/D芭键盘电路拌。邦串口电平转摆换邦电路在前面暗的实例中我邦们已经做过百介绍,在此耙不再重复。坝这里我们重奥点介绍一下板A/D爸键盘电路艾。懊实际试验中办我们将图1罢中的ADC奥接点连接到摆单片机的P哀A1口,也癌就是A/D安转换的AD艾1通
6、道。唉9。扮 氨 瓣 瓣 拜 埃 挨20岸.4 程扳序设计暗 稗1、程序功坝能案在本实例中把,我们利用拜串口按将癌A/D奥键盘中按下熬的按键的键笆码值安发送到计算佰机,通过串瓣口助手观察拔实验结果笆。皑U。案 敖2、函数说奥明柏 按本实例主要白有暗串口数据发安送白程序和瓣A/D背键盘识别碍程序,般串口数据发奥送坝程序我们前吧面例子中已办经介绍过,安本实例的程柏序中不再详懊细说明。翱Z。般 澳 叭3、编程说稗明霸 靶使用WIN熬AVR开发唉环境,使用背的是外部扮12M败的晶振,所芭以需要将m八akefi唉le文件中伴的时钟频率叭修改为半12M阿。另外在程碍序烧录到单挨片机的时候唉,熔丝位也氨要选
7、择为外熬部佰12M柏晶振(板注意是晶振八,不是外部岸振荡器澳,一定不要拜选择错了,搬否则会导致叭单片机不能哀再烧写程序瓣)。班u。疤 板4、程序代版码俺/*矮*耙*巴*背*扮*柏*澳*矮*斑*坝J。办* 巴 拜AVR 疤A/D氨键盘范例耙 哎 颁 *办e。氨* 办MCU: 拌ATmeg熬a16 稗 瓣 拜 坝 袄 佰*瓣9。凹* 笆作者:挨 maw昂eili 百 伴 案 跋 扳 *版*扳G。挨* 爱编译器:芭WINAV半R 挨 班 俺 袄*澳c。耙* 蔼 稗 柏 叭 翱 拌 耙 瓣 肮*拌D。昂* 捌 阿唉2009.傲4.3 瓣 爸 *爸*扮*绊*傲*胺*跋*奥*吧*懊*颁*/案Z。笆#inc
8、l昂ude 伴 颁 奥#incl伴ude 埃#incl摆ude /伴/半中断函数头巴文件啊G。艾/芭常量声明哀#defi袄ne BA把UD 96挨00 叭 搬 /芭波特率设置氨值版z。岸/拌全局变量声佰明扮unsig傲ned i斑nt AD扳Data;蔼 拌 靶/AD稗转换获得的半数据百3。扮/般函数声明袄void 板Port_俺Init(靶void)笆; /吧/伴端口初始化笆配置拔m。笆void 唉Usart碍_Init芭(void百); /版/USAR百T板寄存器设置稗7。阿void 拜AD_In鞍it(vo爸id); 罢 /岸AD盎初始化癌void 艾Usart背_PutC俺har(u拔
9、nsign熬ed char cT佰XData爸); /氨/把字节发送函瓣数扮4。扮void 百Usart罢_PutS爸tring隘(unsi佰gned 唉char 唉*pcSt办ring)扮; /挨 叭字符串发送叭数据扮P。坝unsig爸ned i坝nt AD叭_GetD艾ata(v昂oid);伴 /安/AD巴转换函数巴A。阿void 捌GetKe扒y(voi案d); 盎 版 /埃/摆显示按键值霸n。班int m耙ain(v稗oid) 般 霸 邦 办败unsig艾ned c办har D白elay3暗s;澳板Port_邦Init(巴);爸昂Usart敖_Init搬();按耙AD_Init();懊
10、佰Usart氨_PutS瓣tring碍(AD傲键盘测试程版序般);唉蔼/Usa把rt_Pu班tStri摆ng(按败你按下的按霸键序号为:鞍);柏p。隘拜sei()哀; 柏 半 /扒使能全局中疤断捌 办八while懊(1)爱伴拜ADDat唉a = A笆D_Get靶Data(氨);败阿摆/把获得的安AD瓣值败挨摆 安 扒 凹 坝 安 伴 傲 敖 埃 搬 爱Q。袄耙翱if(AD八Data 叭 5) 氨 斑 /佰判断是否有傲按键按下昂k。稗盎摆_dela扒y_ms(袄50); 扮 /佰/般按键消抖百拔八爱if(AD办Data 扮 5)佰皑霸胺吧GetKe氨y(); 绊 /鞍/笆获取按键值俺阿柏把_de
11、la安y_ms(拌200);俺阿for(D败elay3八s = 0扮;Dela摆y3s 敖 10;D矮elay3背s+) 稗 /般/案延时熬3S笆s。案柏唉爱_dela扮y_ms(艾90);蔼/蔼端口状态初爱始化设置函拔数叭void 艾Port_坝Init(鞍)熬疤PORTA肮 = 0X案00; 蔼 岸 邦盎DDRA 按= 0 x0颁0; 翱/ADC摆通道设置为班输入口,高百阻态版拔U。吧/USA唉RT罢寄存器配置八函数坝void 懊Usart凹_Init败()隘氨UCSRA办 = 0X半00;盎般盎UCSRC芭 |= (肮1UR凹SEL) 翱| (1 隘 UC胺SZ1) 罢| (1 罢 UC
12、澳SZ0);澳 /按异步,数据拜格式芭8版,背N敖,跋1摆Z。跋斑 背/UCS袄RC熬寄存器与氨UBRRH背寄存器共用白相同的熬I/O懊地址把,背写罢 UCSR柏C 瓣时,败 URSE坝L 拔应设置为八 1靶。艾M。耙扒UBRRL阿 = (F案_CPU 哎/ BAU爱D / 1捌6 - 1板) % 2傲56; 氨 /皑波特率设置佰1。俺般UBRRH芭 = (F跋_CPU 唉/ BAU八D / 1蔼6 - 1凹) / 2斑5哎6;蔼挨熬o。胺斑UCSRB碍 |= (昂1 吧RXCIE傲) | (暗1 疤RXEN)扒 | (1伴 T邦XEN);爱 /鞍/靶发送使能胺E。熬/坝字节发送函拜数板voi
13、d 挨Usart靶_PutC碍har(u板nsign霸ed char cT扳XData矮)邦5。唉while癌( !(U盎CSRA 拌& (1 背 UD扮RE) 拔); /隘/翱只有数据寄坝存器为空时碍才能发送数吧据暗L。盎办UDR =胺 cTXD奥ata;柏叭 安 懊 斑 /颁发送数据送拔USART耙 I/O佰数据寄存器耙坝UDR蔼A。版/翱接收中断函啊数版ISR(U暗S败ART_R案XC_ve耙ct )稗袄unsig氨ned c背har R办ev;半唉Rev =捌 UDR;阿 扒 邦 /懊/按从啊USART扮 I/O败数据寄存器艾板UDR挨中读出数据败1。按绊Usart扮_PutC霸har
14、(R半ev); 胺 /拜将接收到的白数据发送艾g。啊void 澳Usart敖_PutS霸tring斑(unsi拜gned 翱char 翱*pcSt斑ring)翱B。爸巴while坝 (*pc爱Strin柏g)扳靶袄Usart傲_PutC跋har(*皑pcStr办ing+傲); 安暗Usart摆_PutC昂har(0爸x0D);扒坝Usart吧_PutC绊har(0稗x耙0A皑); /板/矮结尾发送回芭车换行半r。蔼/AD盎转换初始化霸函数翱void 芭AD_In跋it()百绊ADMUX斑 |= (板1 疤REFS0肮) | (巴1 MUX0)扮 | (1皑 A矮DLAR)笆; 拜s。伴摆班阿哀
15、/ADC般参考电压为扮AVcc背,懊ADC奥结果左对齐笆,选择通道埃ADC1哎N。班ADCSRA |= 稗(1 疤 ADEN巴) | (拔1 捌ADPS2挨) | (矮1 矮ADPS1氨); 巴/案使能敖AD阿转换,岸ADC哀时钟半64把分频肮g。澳/AD跋转换函数跋unsig靶ned i柏nt AD伴_GetD蔼ata()跋捌ADCSR熬A |= 绊(1 白 ADSC邦); 熬 /盎开始吧AD白转换疤l。疤岸while昂(!(AD笆CSRA 翱& (1 案 AD翱IF)般; 叭/奥等待转换完把成拜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爱ta 28傲) & 皑(ADDa按ta 19唉) & 阿(ADDa背ta 9)暗 & (挨ADDat肮a 1氨7)把d。翱暗澳板Usart_PutS拌tring凹(背你按下的按盎键序号为:半);爱鞍懊肮Usart巴_PutC叭har(0碍x46);昂哀隘
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代家庭教育中的创新实践与思考
- 教育资源整合创意工作坊的独特方法
- 商业项目中的农业休闲旅游投资策略分析
- 2025年贵州盛华职业学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 现代办公环境下的冰雪文化传播与价值开发
- 青少年心理健康教育的现状与挑战
- 综合实践活动在农村学校的长远规划与发展
- 语文课堂中的德育渗透技巧与案例
- 2025年潮汕职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 跨界融合创新思维在商业领域的实践
- 2025财年美国国防预算概览-美国国防部(英)
- 2024年江西省南昌市中考一模数学试题(含答案)
- 48贵州省贵阳市2023-2024学年五年级上学期期末数学试卷
- 《采暖空调节能技术》课件
- CONSORT2010流程图(FlowDiagram)【模板】文档
- 游戏综合YY频道设计模板
- arcgis软件操作解析课件
- 中兴ZCTP 5GC高级工程师认证考试题库汇总(含答案)
- 大学生创新创业教程PPT全套完整教学课件
- 小学科学项目化作业的设计与实施研究
- 2020年中考生物试卷及答案
评论
0/150
提交评论