AD键盘设计原理及方法.doc

上传人:11****ws 文档编号:2989794 上传时间:2019-05-16 格式:DOC 页数:5 大小:81KB
下载 相关 举报
AD键盘设计原理及方法.doc_第1页
第1页 / 共5页
AD键盘设计原理及方法.doc_第2页
第2页 / 共5页
AD键盘设计原理及方法.doc_第3页
第3页 / 共5页
AD键盘设计原理及方法.doc_第4页
第4页 / 共5页
AD键盘设计原理及方法.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、基于 MSP430 单片机的 A/D 键盘设计1.1 设计原理原理图如图 11 所示,PA0 为模拟电压输入口,初始化为悬浮状态。PC3PC0 初始化为输出低电平,分别接 4 个发光二极管,它输出的 16 种状态 11110000 分别表示按键 S15S0 被按下。当不同的按键被按下时,AD 转换的电压不同,通过 AD 转换值便可以判断出是哪个按键被按下。AD转换出来的结果共有 10 位,在程序中取其高 8 位作为有效位,便可以分辨出 16 个按键。按键、输入电压和 AD 转换值(高 8 位)的对应关系如表 1 所示。10KR13PC1RESETPA010KR15PC3S1S0XORESETS

2、5S9PC0VSS10KR610KR2PC2XI10KR1216MHzS34.7K20pS13ADC510VDDVSSPC110KR510KR8+5VS15510S14S2PA0PC05KR0S410KR1PC3VDD10MR17XO10KR1410KR410410KR90.1UFR1010K10KR710KR11VCC +5VR310KS10+5VSPMC65P2404A*28P91015162122232425262728201918171413121187654321PB7PB6PB1PB0PD2PD1PD0RESETXOXIVSSVDDPC0PC1PC2PC3PB2PB3PB4PB5P

3、A0PA1PA2PA3PA4PA5PA6PA7 XIPC2S8S7S12S1151020p5KR16S6510图 11 键盘显示原理图按键 转换电压(V) AD 转换值(理论)无 0 $00S0 0.156 $08S1 0.469 $18S2 0.781 $28S3 1.094 $38S4 1.406 $48S5 1.719 $58S6 2.031 $68S7 2.344 $78S8 2.656 $88S9 2.969 $98S10 3.281 $A8S11 3.594 $B8S12 3.906 $C8S13 4.219 $D8S14 4.531 $E8S15 4.844 $F8但是,在实际中

4、不可能得到很准确的 AD 转换值,这是由于存在以下几种误差: 对于同一个电压值,AD 多次转换的结果不可能完全相同。电阻的误差。电阻值由于制作以及温度的原因,误差较大,所以不可能得到很准确的分压。本例采用的电阻精度为5。其它干扰。在本例中,允许 AD 转换值的误差范围为:4。将该误差换算为:每个按键的输入电压的允许误差:(4 /256)*5.0v= 0.078v每个按键的分压电阻的允许误差:(4 /256)*16000 欧= 250 欧误差示意图如图 12 所示,若按键 S5 被按下,经过 AD 转换,若实际转换值在允许误差之内,即: (理论值 -4)实际转换值(高 8 位)(理论值+4),则

5、认为 S5 被按下,否则程序不响应。其它按键处理方法与此相同。在电阻的选用时,应该非常注意电阻的累计误差。例如在图 11 中,如果电阻 R0R9 均比实际值高出 25 欧,则累加到电阻 R10 时,电阻值的累计误差为 250 欧,则电阻值会超出允许范围,从而采到错误的电压值。如果选用精度为1电阻,则可以分辨出 32 个按键。图 12 AD 转换值的允许误差消抖方法:在按键闭合和打开的瞬间会产生许多尖脉冲,持续时间约几毫秒到几十毫秒。因而在程序中,当检测到按键被按下后,便开始读取键值,每隔 8ms 读一次键值,直到连续 4 次读取的键值完全相同,则认为抖动已经消除。消抖时间为8ms X 432m

6、s。1.2 软件设计主程序每隔 8ms 扫描一次键盘,并刷新一次显示。主程序流程如图 13 所示。图 13 主流程图1.3 结语利用 A/D 做键盘扫描,可以大大节省单片机的 IO 口资源。1.4参考电压(可以使用 430 输出的,但这样要占一个引脚,也可以用外接的参考源,比如 TL431 搭的,但这样比较耗电,至少有 1mA 左右。)接到一串等值的电阻上,比如由 10 个 1K 电阻(阻值仅供参考,实际上取值时应以总值为计算根据,并结合抗干扰和耗电问题得出,电阻总值越大越省电但越容易受到干扰,反之则越耗电但不容易受到干扰,另外这个电阻取值还与 AD 输入端上的下拉电阻值有关)串联起来,即可实

7、现 10 按键。在从参考到离地最近的每个结点上接一个微动按钮到 AD 的输入端上(这是必须占用的引脚),并在 AD 输入端上对地接一支下拉比如 47K 或 100K,然后启动 AD 采样,通过得到的电压值不同,只要判断它在哪段范围,则可以得到对应的按钮被按下的消息了。但注意要设定参考值,还有就是电阻误差造成 AD 取值的误差。所以最好是取一个区间,或是最好能有一个测试向导类的程序来帮助确定键值。那个电路图在网上看过,真是佩服,不知道是怎么想出来的.不过与低攻耗有些矛盾,那样做是不是必须轮寻采样.不说电流大,时间上就不合适.感觉键盘还是用中断的好.其实不是的,我说的这种是耗电最大的方案了,可以更

8、省电的,关键看代码了。要省电就需要以下两步:第一,不要用外部参考源,可以直接使用一个 IO 端口,从 430 得到参考源。第二,不需要定时轮询,而是使用 P1 和 P2 的中断功能。注意最低的一个电阻上端电位要达到变为高电平的条件,否则不能触发中断。接下来的完整流程就是:1、先设置 AD 输入端为 IO 输入模式,即 SEL=0、DIR=0,并且设置为上沿触发后使能中断。然后睡去。2、在 IO 的中断服务程序中转换该 P 口为 SEL=1,变为 AD 的输入端。3、启动参考源,并从端口输出到电阻串上。4、启动 AD 采样,得到采样值。5、重复采样 N 次,以确定一段时间内按键的变化情况,防止抖动干扰用。6、关闭采样,关闭参考源,恢复该端口为 SEL=0。7、分析数据,返回正确的按键值,并忽略错误的触发。8、转向相应键码对应的功能子程序。9、重新使能中断,结束中断服务程序。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。