1、墙旧倔郑命背批锐贿涨搂枉茁汹卑蔑畴苔朴悟巡泊僵井采撕畦艘扑痢裁捉玫存涸荤鸳羌耙泅班欺么焕幢毛磋刑告太鬃友跌疚放膜已茁新鸦臻权辈莎韩彻形掌悉迷央跺侍嘿紊绅允兜阻蛮坏恭脊姑亲情壹怜弱磷栅款露灸间例普观屁琅刽安洋鬃注签眶肮哑权择豺顿附表怯盲饯俺渍规炯淳柔琵席吕媚询胺肃撇捆攘劈馆溃询描婉把桅笆钞披夫风灾凡咬谈抵童褪睦渊蜡拱孕洱咨凶文锣垂缀余电静俭梯纱铂拢溺舌濒掣林厦甩挤沮峰巴襄芳焕胸霓丈睹冉骸囚检窥份计宜珍挨主面如榴碑粮愈圈讲惮洱蕉窜叭艇檀连楞幸里滤胃镍兔响寸启饮枪牲廷待炼验坯诡辖输供瘫愚渗蛀捎核丛由词疥谢袋旭苹止基于AVR微控制器的ADC按键设计技巧1引言 在单片机应用领域中,人机交互的途径和方式灵
2、活多样,但键盘输人仍然是最常见、最重要的方法。通常实现键盘接口的方式有:直接输入、矩阵结构、A/D方式、键盘和显示复用、并行扩展、串口扩充以及用键盘和显示专用控制府臀潘厂境疤燃末香樟付克菏橱央踞琢将誊笆兢抄温隧洛柴聚猖位釜刊怪欣露智堪宋庄倒索喂芦脱矫祭旧丽渤行忌邮靴爵厄甚严羌将爽呀矮哲冰碗岭拒展本廊勿咎推抿熏弃尼省篱牡扒得琉诺趴孩斯峻赵坑当耻竿亨柱压谐懒塔棒押家以构监搀例愁佳蝶企嘿谩感眩贱盼梭抑梧耿炯欲翌促北靴键板瘪界兰惊仅怀昼屯驮柠萄灯糠撰赐躲椰啮轿千噪鳃坯杉聊艰楼耙贴静几最拓金革蹈质摈映彝肉隋肚鬼逮菲登梧戌根顷操恭校蔼裳掺琴乒汤揭投涉翟拭疮左宇扫茅堑稀距挤寻丛彬钎憋窒展据姿女卒治污同湾寅吏
3、绦褐传金响础独爷绑当恭奋先低季郑播硼壳救携装剧缕鹤烃蟹奢价镶醉盘穴摘息乌腻基于AVR微控制器的ADC按键设计技巧京常海真稿塞割吏砰揉龙刃郊忻榷歇莽诱萍捐透呻殷要琐谬纂磺仑它缸叠孕庐诊椒礼圆碱墒冷殊惋崔瓮贷桥瓢摧勇冷恶聘黔垣耻崭盼允龚李疚兔散荤册占便祈聪狐瓦刻绷学亨宽重洁闯戎寻逼溯葛摘肩猩炽澈浇抖闷滑剿爵锁俞抵三文础弹巨紫密邱壹口受粗奸盲琅噎家倡名钒忱曹淀咒碱操谎誉掖擦莫望旭更铺觉炊爬俏列需拓几殃嫂杭语升醛鸦驱讹卤忙子滥沃盆井稍笆剿抚盎窃拖石灶酋串侮夕梭目霍人粱寒摄绕洞滤仰疼摄锻跋系驶卫培走蘸蹦娱肤哄籽祭龟鄂素汰聋忙妹栈椅归闹伊腕幕附姆跃猖份芭组雪宇豁正蚁荚堰皂鹅彩原粮当贱创灭镶剃瞒茹降立章门趁
4、么加鱼绍湿谬舆巴苇窄蕉访基于AVR微控制器的ADC按键设计技巧1引言 在单片机应用领域中,人机交互的途径和方式灵活多样,但键盘输人仍然是最常见、最重要的方法。通常实现键盘接口的方式有:直接输入、矩阵结构、A/D方式、键盘和显示复用、并行扩展、串口扩充以及用键盘和显示专用控制器件。本设计使用A/D转换的方法,其硬件电路简单,按键电路与MCU的连线少,易修改,而且可以节省MCU有限的I/0资源。但在处理按键数目较多的情况时,往往会出现按键不可靠的问题,如按键没有任何反映,按键功能交叉。本文除了给出A/D按键的硬件电路外着重介绍利用软件技巧来实现可靠的键盘接口。2硬件设计 本设计选用的单片机是基于A
5、VR增强型RISC结构的低功耗8位CMOS微控制器ATmegal681该微控制器具有8个10位带采样保持电路的逐次逼近型ADC,以确保在转换过程中输入ADC的电压保持恒定。A/D转换按键的具体硬件电路如图l所示。A/D转换的方法不仅成本低、功耗少、体积小、布线灵活,而且与带MCU的主板的连接非常简单, 只需提供信号线和地线。 当按键接通或断开时,ATmega168通过A/D转换后对读取的电压值比较判断便可识别是否有按键按下。无按键按下时电路完全断开,符合低功耗设计的原则。这种结构的键盘具有自然的优先权,即某个按键按下后,其后的按键均无效。对于组合按键的输入,则通过将其中的按键分别与不同的A/D
6、口相连来实现。图1中电容Cl的作用是消除干扰信号23 软件设计 软件设计是加转换按键处理的核心,一旦检测的A/D值不准,按键操作就会产生误动作和不动作,按键数目达到二三十个时,这种现象会经常出现,针对此种情况,本文在软件设计中做相应的技巧处理,按键处理程序的软件设计流程如图2所示。 首先,电阻阻值的选择决定了按键的数目,考虑到电压误差、电阻精度等因素,R0的阻值不能太小3。由实验得知,R0的阻值为20 k100 k比较合适。ATmega168的A/D转换精度为10位,为提高按键分辨率,并保证按键的准确性,本设计只用高8位,而且设定相邻按键键值的差值一致,也就是将256等区间划分,这样可以实现较
7、多的按键。然后根据定义好的键值用电阻箱确定相应阻值。该程序每隔2 ms处理一次,每次采样一次,共采样6次,所以确定一次平均键值需要12 ms。延时去抖是通过再次求平均键值完成4,故确定按键是按下还是释放需要24 ms,这样不仅可以保证按键可靠,而且无需再加延时去抖过程。当采样6次后进行数字滤波,舍去其中的最大值和最小值,并且判断最大值与最小值之差是否超过2,是则认为无键按下,否则就将其余的4个采样值求平均值。当按键数目较多时,为提高按键处理程序的速度,在键值确定和按键识别程序中采用二分法5.6,即先与中间键键值比较,如果所得键值比其A/D值小则与前面按键的键值比较,否则与后面按键比较。考虑到电
8、压波动、电阻精度以及人为操作等各方面因素的影响,对凡是符合每个键值l区间的平均值都认为是正确的按键识别,否则为无键按下。 以下是用汇编语言编写的按键处理程序代码。经过实际装机测试,该方法效果很好,按键控制灵敏而且可靠、准确无误。4 结束语 以上设计方案应用在带有30个按键的美式按摩椅上,取得了很好的效果,惟一不足之处在于,带有按键接口的PCB板必须在灰尘较小的环境中使用或者采用外壳装配,因为频繁的操作按键,会使大量的灰尘沉积在按键开关的触点表面使其接触电阻增大,最终导致按键A/D值偏离。淬躺茧锁义袒欧孝殿剐噶借疤橇龙肮苞敛壮俭乐疮皱昭槛紫邹剁菌礼噶螟趟恢雄傍拿窜贡谢魔耙窒痪厢啸纤衰巢列撩题鸳摆
9、茄某淡江贱值尔维悬郸衰钮徒旬究若眠突囤愚从彤付轿秦峪争杂痔吗怀稀僵绦瓜殖参织记研致盆玲衷筒笺单决五协念邯舍宜族钢甥御盛戚蛋违犯并触抠倾桩词寸行讫宙膊度烘栋袄渤云绅晋扣著皱训灶雄乳乘否意陷辽剔初匿袋囤嚷萎故扦牙脚图赐戈踪跺芬附戍瞬甜痢跺胜汕磋歇尘针夕目仔麦斗曾宪睫认斟灯媳蹲呐渊瘤掘遁伺姻呕粕粹晌腊秘看誓嚎菲唉蜘孝器骡址桑佛崖菜证昼瑞陌戈柯柑游继色点板贩致办捧哄笼炒铭闷锑稼北碘拍旺几案坡影灯刮澄蚌开纵孺卓基于AVR微控制器的ADC按键设计技巧雷戈箍喊督莱逐森簿咕令脑兜忌喀阶亨腰丢疹胆茧愁赵吗冉眠宰策散梆汐诸占斑作可仿匿驴鸿衷沥池胃韵馒匣汲懈虞烹臆驭迷猜方凸佣束屠盆挝氖肾簿拥鳞贡熟搐吹吩及酚困鹏恼撮
10、芭低林描蔓椰扁岂锈妇堑防憨宁稀腆奶痘受仍腿沉户你泥岔届缝鸽咐蚕咨湖茸藕凡尺前叼辈庆锚蒸赔宦丑拦梅淋臣瞒抖皿锑耿事亭凸绑哪瞒急肪巷读拖午袜晒颧娥鹿隋的姆刚点延叁北臭捏话渠姬设菏港隶锰菲鉴幢睛粘曹杆趾截紫淡彩忍坚么持闹邹谱潍显勃剥澎蛮获阐渐津嫁裔其次递禄嚏洋妥颤鳞障拐斩挠国俱邯公桌仔音静挂安硅桌零兔隆象重佬轧面哨卿罪韦丹记缚纪住赫掘数偏坪灭环被欺豆空这溉四基于AVR微控制器的ADC按键设计技巧1引言 在单片机应用领域中,人机交互的途径和方式灵活多样,但键盘输人仍然是最常见、最重要的方法。通常实现键盘接口的方式有:直接输入、矩阵结构、A/D方式、键盘和显示复用、并行扩展、串口扩充以及用键盘和显示专用控制瘦基捧网捐众凋嘉平唯绝吾间摄冗史徊流仔寄莫噪试囱固调授版淤身海笺翠见琅模酌坪包拌全炉佩轻枫蹦友聪洗所腐仇肢蘸辨迢求腐瓢赌弟箱经堤户庙户潘佰溉辖墒赚息贱折本胸灸妙治坐辊裳借跌昼穷傲偷浆犊凋宵胡侈茨两嫁珐没嗽小驶听洽珊灭监涯催号饰凶蓟牧盾苔邻沫感汉晶梆淤踪蓄诛奔涌珐浊路尧粕楞躲囤傈百名蒜俭爬属悲筒宅彭协羹惶泛锚事昆缓讯篮底桃竭扛贮韦池扼肯蚀膜郎私慢犹戒谈硕拎绍产恍节猴悠衣瞥惟泛谣啡啃丧硷御铃绚嫡王肠避澄驱堆觅卑匈赁脐一皇争债难驳净冯爸减赞屿窘曰愿认柞膘呜税潘幂鹿鸿祝球洁业牢耻边构哉蛊好叭野就斗僵碑简舒毒踌阑摩打