两线式键盘(AD按键)电路的设计与实现
2014-12-09 15:04
197 查看
在做单片机项目开发时,经常需要用到键盘,而键盘绝大多时候使用的是单按键或矩阵键盘。矩阵键盘有许多优点,我在这就不多说了,但有一点就是按键稍微多几个就比较浪费口线了,尤其是需要将键盘引出时,那线多而长很是一个不爽。下面我就说说两线式的多按键电路的设计与实现,键盘只需两根导线就搞定,前提是你的单片机系统要有多余的一根AD口线。说到这里有人会问了,我的系统没有用到模拟采集,为了弄这个键盘再加一个AD芯片吧,这不是因小失大吗?我要说的是现在带有AD功能的单片机相当的多,而且价格比没带的也贵不了多少。当然你选了不带AD的就另当别论了。
我在做一个项目的按键时遇到几个情况:1.产品外设较多,单片机I/O口除键盘就只剩下一个I/O了,再没有多余的了;2.现场情况所限,键盘与主机板要有一段距离;3.键盘需要9个按键。根据以上的情况采用两线键盘最为合适。电路如图所示。
图中 省略了部分按键,可以根据实际需要配置按键。此时就可以通过AD扫描读取,可以根据AD值判断有无按键按下或是那个按键按下。根据上图电阻值(为方便举例,全部取值为1K,可以自行取其它阻值,电压平均分配就最好)可以算出:无按键按下,AD值为VCC;S1按下,AD值为0;S2按下,AD值为1/2VCC;同理,S3=2/3VCC;S4=3/4VCC;S5=4/5VCC;根据AD采集值比较最接近那个键值,则就是该按键。
使用此方方法需注意几点:1.按键不可太多,这与AD分辨率有关系,否则将会检测不准。以8位分辨率来说,共256点,每个按键的点为25点以上最好。即256/25=10,最多10个按键。具体可以自行实验。
2.按键选用接触性较好的按键。按键差的使用时间一长,容易产生接触电阻,按键多容易误检测。
我在做一个项目的按键时遇到几个情况:1.产品外设较多,单片机I/O口除键盘就只剩下一个I/O了,再没有多余的了;2.现场情况所限,键盘与主机板要有一段距离;3.键盘需要9个按键。根据以上的情况采用两线键盘最为合适。电路如图所示。
图中 省略了部分按键,可以根据实际需要配置按键。此时就可以通过AD扫描读取,可以根据AD值判断有无按键按下或是那个按键按下。根据上图电阻值(为方便举例,全部取值为1K,可以自行取其它阻值,电压平均分配就最好)可以算出:无按键按下,AD值为VCC;S1按下,AD值为0;S2按下,AD值为1/2VCC;同理,S3=2/3VCC;S4=3/4VCC;S5=4/5VCC;根据AD采集值比较最接近那个键值,则就是该按键。
使用此方方法需注意几点:1.按键不可太多,这与AD分辨率有关系,否则将会检测不准。以8位分辨率来说,共256点,每个按键的点为25点以上最好。即256/25=10,最多10个按键。具体可以自行实验。
2.按键选用接触性较好的按键。按键差的使用时间一长,容易产生接触电阻,按键多容易误检测。
相关文章推荐
- GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)(示例代码下载)
- Asp.net 2.0 GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)(示例代码下载)
- S3C44B0X按键键盘的uClinux驱动程序设计
- Windows CE下AD驱动设计与实现
- GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)
- [转帖]AD采集方式处理键盘(按键)
- 键盘监控的实现Ⅲ——按键消息的修改(映射)
- 数字信号抗干扰电路的设计及实现方法
- Asp.net 2.0 GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)(示例代码下载)
- gtk 实现键盘按键的读取
- Asp.net 2.0 GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)(示例代码下载)
- GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)
- Asp.net 2.0 GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)(示例代码下载)
- S3C44B0X按键键盘的uClinux驱动程序设计
- Asp.net 2.0 GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)(示例代码下载)
- 开发键盘过滤驱动实现模拟按键过程中遇到的问题___续
- Asp.net 2.0 GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)(示例代码下载)
- 驱动中实现模拟键盘按键
- 驱动中实现模拟键盘按键
- 记录键盘按键记录程序实现