单片机按键有几个方法

上传人:公**** 文档编号:511045637 上传时间:2023-05-24 格式:DOCX 页数:5 大小:16.48KB
返回 下载 相关 举报
单片机按键有几个方法_第1页
第1页 / 共5页
单片机按键有几个方法_第2页
第2页 / 共5页
单片机按键有几个方法_第3页
第3页 / 共5页
单片机按键有几个方法_第4页
第4页 / 共5页
单片机按键有几个方法_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《单片机按键有几个方法》由会员分享,可在线阅读,更多相关《单片机按键有几个方法(5页珍藏版)》请在金锄头文库上搜索。

1、单片机按键有几个方法 单片机按键连接方法总结单片机在多种领域利用相当广泛,而作为人机交流的按键设计也有很多个。不一样的设计方法,有着不一样的优缺点。而又因为单片机I/O资源有限,怎样用最少的I/O口扩展更多的按键是我所研究的问题。接下来我给大家展示几个自己以为比很好的按键扩展方案,大家能够在以后的单片机电路设计中灵活利用。1 、第一个是最为常见的,也就是一个I/O口对应一个按钮开关。这种方案是一对一的,一个I/O口对应一个按键。这里P00到P04,全部外接了一个上拉电阻,在没有开关按下的时候,是高电平,一旦有按键按下,就被拉成低电平。这种方案优点是电路简单可靠,程序设计也很简单。缺点是占用I/

2、O资源多。假如单片机资源够多,不紧缺,推荐使用这种方案。2 、第二种方案也比较常见,不过比第一个的资源利用率要高,硬件电路也不复杂。这是一个矩阵式键盘,用8个I/O控制了16个按钮开关,优点显而易见。当然这种电路的程序设计相对也还是很简单的。由P00到P03循环输出低电平,然后检测P04到P07的状态。比喻说这里P00到P03口输出1000,然后检测P04到P07,假如P04为1则说明按下的键为s1,假如P05为1则说明按下的是s2等等。为了电路的可靠,也能够和第一个方案一样加上上拉电阻。3 、第三种是我自己搞的一个方案,能够使用4个I/O控制8个按键,电路多了部分二极管,稍微复杂了一点。这个

3、电路的原理很简单,就是利用二极管的单向导电性。也是和上面的方案一样,程序需要采取轮训的方法。比喻说,先置P00到P03全部为低电平,然后把P00置为高电平,接着查询P02和P03的状态,假如P02为高则说明按下的是s5,若P03为高则说明按下的是s6,然后再让P00为低,P01为高,一样检测P02和P03的状态。接下来分别让P02和P03为高,其它为低,分别检测P00和P01的状态,然后再做判定。这种方案的程序其实也不难。4 这是我在一本书上看到的,感觉设计的很巧妙,一样它也用到了二极管,不过比我的上一个方案的I/O利用率更高,她用4个I/O口控制了12个按键。我相信你了解了以后也会惊奇的。首

4、先好好品味一下这个方案吧,想想怎么来识别按键呢!首先,我们让P00到P03全输出高电平。假如这个时候从P00到P03的任意一个端口检测到低电平,很轻易知道是按下了那个键,肯定是s13到s16的其中一个。假如没有检测到信号,就进行下一次的检测,让P01到P03为高电平,P00为低电平,然后检测P01到P03的状态。假如P01为低,则按下的是s1,;P02为低,则按下的是s2;P03为低,则按下的是s3。然后再让P00,P02,P03为高电平,P01为低电平。同理用上面的方法能够检测出按下的那个按键。5 、接下来这种方案则更为强大。不过需要用到一个A/D转换器。假如A/D转化器的分辨率为n位,理论

5、上是能够扩展2n个按键。这是一个接AD转化器的方案,有两种:第一个是并联式;第二种是串联式。在功效上也有些不一样。第一个的话各个电阻值各不相同,当按下不一样按键时,进入AD的模拟量是不一样的,经过AD转换,就能够得到按下的是哪个按键。方法一还能够同时识别多个按键,即能够设置组合键,只要电阻取得适宜。方法二各个电阻能够取一样的,方便计算,不过不能有组合按键。因为当按下上面的按键后,下面全部按键全部会被短路。 。前面说理论上能够扩展2n个按键,这只是理论,因为这里电阻的精度有限,因此实际是不可能的,两个模拟量之间要有足够大的差值,程序才可能正确的分辨。上面就是我介绍的五种按键扩展方案,后面几个比较

6、另类,不过也有她们的优点。以上电路我全部仿真过,能够实现。附方案4键盘扫描源代码:sbit line_1=;sbit line_2=;sbit line_3=;sbit line_4=char key=0;void key_scanline_1=line_2=line_3=line_4=1;if) if key=13;return; if key=14; return; if key=15;return; if key=16; return; line_2=line_3=line_4=1;line_1=0;if) delay;if key=1;return; if key=2;return;

7、if key=3;return; line_1=line_3=line_4=1;line_2=0;if) delay;if key=5;return; if key=6;return; line_1=line_2=line_4=1;line_3=0;if) delay;if key=9;return; line_4=0;line_1=line_2=line_3=1;if) delay;if key=10;return; if key=11;return; if key=12;return; line_3=0;line_1=line_2=line_4=1;if) delay;if key=7;return; if key=8;return; line_2=0;line_1=line_3=line_4=1;if) delay;if key=4;return; return;

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

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号