单片机怎么检测6个按键?

作者&投稿:舌纪 (若有异议请与网页底部的电邮联系)
~

2个IO检测6个按键的方法

单片机IO口如果识别更多的按键,简单的方法就是通过控制按键按下,识别电流的流向。这说可能不是很理解,下面就来介绍下,如下图按键识别电路:

按键S1按下,电流是从R1流向GND的,S2按下是从R2流向GND,S3按下是从R1和R2共同流向GND。

S4按下是从IO1流向IO2,也可以从IO2流向IO1,S5按下是从IO1流向IO2,S6按下是从IO2流向IO1。按键按下和电流流向关系如下:

那么这6个按键单片机要怎么识别呢,下面就说下识别思路流程:

1. 先配置IO1和IO2都为1,然后读IO1和IO2,若读到IO1为0,那么S1按下,若读到IO2为0,那么S2按下,若读到IO1和IO2都为0,那么S3按下,若IO1和IO2都没读到0,那么进行下一步;

2. 配置IO1为0,IO2为1,读IO2,若读IO2为1,进入下一步,若IO2读为0,那么可以判断是S4或S6按下,然后再配置IO2为0,IO1为1,读IO1,若IO1读为0,那么就是S4按下,若IO1读为1就是S6按下了。

3. 配置IO2为0,IO1为1,读IO1,若IO1读为0,那么就是S5按下了。

将上面的电路图再精简下就是下面的图形了,是不是很有美感,下图还比上图省2个二极管哦。

欢迎评论交流,也欢迎大家关注我:单片机嵌入式爱好者。会有源源不断的干货分享,能真正快速帮大家解决实际工作中遇到的问题哦!




求:TDP-6A单冲压片机的详细参数及操作步骤(使用方法) 急急急!_百度知 ...
6.定期检查机器每月2次。七、单冲压片机使用注意事项 1.初次使用前应对照机器实物仔细阅读说明书,然后再使用。2.本机器只能按一定方向运转(见手轮或防护罩上的箭头所示),不可反转,以免损坏机件。压片调整时尤需注意,不要疏忽。3.皮带松紧调节:通过机电底板上的两个调节螺母进行调节。调好后注意锁紧。4.电动压片...

盘点扫描仪怎么用
所以扫描仪的dpi与打印机的dpi概念不同。用1440dpi的打印机输出1:l的图像,扫描时用100-150dpi左右的扫描即可。5、扫描仪在扫描时出现“硬盘空间不够或内存不足”的提示。首先,确认硬盘及内存是否够,若空间很大,请检查您设定的扫描分辨率是否太大造成文件数据量过大。6、扫描使噪音奇大。拆开机器盖子,找一些缝纫...

戴尔品牌机6代装系统出现硬件检测
Dell 电脑在没有硬件故障或系统出现不可修复的情况下是不会进入自检功能,需要手动在开机的时候连按F5键才能进入 所以如果你遇到这种问题,那么你该检查下你的电脑是否有哪部分出现故障 戴尔开机硬件自检 按FN键,开机 会出现DELL的硬件自检程序 或者 开机按F12键 出现选项选最后一个 就可以了 戴尔台式...

2013款帕萨特6碟CD怎么从1切换到6 ,按什么键换碟
1.打开后备箱,在左侧有一小门,打开小门,内置六碟机。2.拉出六碟机,将六张CD碟片分层插入,推进六碟机,关上小门,盖上后备箱盖。3.回到驾驶座,开启电源,在中控板处按下“CD”——碟片选择,即可播放。另外,部分六碟切换时要按下CD按››键在按数字键选择。

哪位帮我做下面几个单片机的题目
1.MCS-51是指单片机的系列号,8031、8051是指单片机的内核型号。2.MCS-51共有111条指令,可分为几种不同的寻址方式。如:MOV A,@Ri 属于寄存器间接寻址方式,MOV C, bit 属于直接寻址方式。3、片机位寻址区的单元地址是从20H单元到2FH单元,若某位地址是19H,它所在单元的地址应该是23H。...

中六卫星接收机的密码是什么
PANDA-610:家长码:0000\/系统码:9317。开机前用手指分别按住面板上第一个和第三个键,加电后约一分钟,松开,用系统恢复菜单恢复系统即可。同洲981(工程机)接收机的初始密码:依次输入上下左右 海克威6688,海克威5688盲扫密码:1270 创维的高级用户的开启密码:13572468 2300机密码和百胜双片机的一样:...

帕萨特1.8T领域的6碟机怎么用?
帕萨特1.8T领域的6碟机能够最多塞入六张CD碟片,只需要向CD读取区依次塞入即可,当达到六张CD时,就无法再塞入CD了,使用时只需要正常操作多媒体系统就能听到CD的音乐了,具体操作步骤:一、打开帕萨特1.8T领域的驾驶室这边的车门。二、踩下帕萨特1.8T领域的刹车脚踏板。三、按一下帕萨特1.8T领域...

如何识别翻新机
面说了怎么多,但是在大家选购的时候还要注意几点:1、试机:卖家往往会同意你试机,而一般都会给你一张费卡让你来拨打免费之类的电话,此时记住不要用他们的卡,用你自己的卡来给你的朋友播放电话试试通话质量,一定要多试,而且要试久点,检查机器各个方面有无问题,一旦你离开柜台,再去换机器就很麻烦。2、试机的...

卫星接收器搜台问题
PANDA-610:家长码:0000\/系统码:9317。开机前用手指分别按住面板上第一个和第三个键,加电后约一分钟,松开,用系统恢复菜单恢复系统即可。同洲981(工程机)接收机的初始密码:依次输入上下左右 海克威6688,海克威5688盲扫密码:1270 创维的高级用户的开启密码:13572468 2300机密码和百胜双片机的一样:...

制药设备的制药设备的分类
(6)药品包装机械;(7)药物检测设备;(8)其他制药机械及设备(制药辅助设备)1、制药设备按生产形式可分为哪两种? 制药设备分为两种形式:1、单机生产※ 由操作者衔接和运送物料,生产规模可大可小,比较灵活,但生产效率低。(压片机、高效包衣机)2、联动生产线生产规模较大,效率高,但对操作及原料的要求高,一处出现...

方山县13997785366: 单片机如何检测多个按键按下情况? -
费咐致康: 用查询的办法 或 中断+查询的办法如果有键按下(中断) 则依次查询所有按键 或直接每几十或几百ms判断所有按键的状态这样就一个都不漏掉了

方山县13997785366: 请教各位大神一个问题,电路图如下,单片机3个IO口检6个按键,还能检到S1和S6同时按下状态,IO内部上拉. -
费咐致康: 实际上就是通过电流方向来检测的,为什么这么说,请看下文 用3个IO口扫描识别16个按键的方法 话不多说,先看原理图,如下:从图中可以看出,使用了12个二极管和16个按键,此方法识别按键过程如下:1. 先将3个IO口都配置成1,相当于...

方山县13997785366: 单片机多个独立按键的检测 -
费咐致康: 把各个按键的状态,分别读入,都存到一个变量的不同位.

方山县13997785366: C51单片机按键扫描 -
费咐致康: 1.设置一个状态变量,如flag,定义flag=0为开状态,flag=1为关状态.2.因为是按键(不是开关),所以实际上单片机读取的应该是脉冲形式的输入.设按键接单片机P01引脚,故可采用以下程序实现按键扫...

方山县13997785366: 单片机怎样在执行一段程序的同时检测按键按下? -
费咐致康: while(key) num++;假设有按键的时候 num加加 根据按下的次数确定当前应该显示哪个花样 然后检测完之后用switch-case根据num执行某个花样的流水灯 所有的都加在一个while(1) 的死循环里面 while(1) { char num=0; while(key)这个是你定义的按键端口 num++; switch(num) { case 0:花样1; case 1:花样2; } } 我觉得这样写就行了 原理一样吧 先检测 在执行 因为程序每次只能执行一个地方

方山县13997785366: 单片机如何识别不同的按键按动? -
费咐致康: 消抖有两种常见的1. 硬件消抖,利用RS触发器可以进行消抖.2. 软件消抖,利用程序,做延迟判断,进行消抖.比如:if(key1==0) { delay(255); /* ————这个就是起消抖作用,第一判断了出现低电平,但是万一是按键抖动呢?所以我们延迟一下,再次判断是不是,如果两次都是,那么就说明按键真的是按下去,然后进入按键程序,这种消抖的时间需要你去把握,时间太短,消抖效果就不好,太长,按键可能出现反应迟钝的情况*/ if(key2==0) {/*这里面写按键按下的程序*/ } }

方山县13997785366: 单片机怎么接6个独立键盘 -
费咐致康: 6个IO口接上分别接6个按键的一端,6个按钮的另一端连在一起接地不就完了吗?你确定是独立键盘吧,是的话就这么做就OK了

方山县13997785366: 若51单片机的P1.0口接了一个独立按键,编写程序完成按键检测程序要求每按下一次P1. -
费咐致康: sbit button P1^0; if(button == 0) //一旦检测到键值 { Delay(); //延时20ms,有效滤除按键的抖动 if(button == 0) //再次确定键值是否有效 { //Do somethinghere! } }

方山县13997785366: 单片机矩形键盘怎么检测? -
费咐致康: 扫描行或扫描列: 如: ............... void delay(unsigned int a) {unsigned int i,j;for(i=0;i<a;i++)for(j=0;j<120;j++); } uchar kbscan(void) {unsigned char sccode,recode;P1=0x0f; //发0扫描,列线输入if ((P2 & 0x0f) != 0x0f) //有键按下{delay(20)...

方山县13997785366: c51单片机编程中,怎么检测按键? -
费咐致康: while (K1!=0)//K1没有被按下执行循环 { d1=0;d2=1;delay(); d1=1;d2=0;delay(); }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网