单片机什么是用键值的方式解决按键扫描问题,简单解说下 单解说下

作者&投稿:地农 (若有异议请与网页底部的电邮联系)
单片机什么是用键值的方式解决按键扫描问题,简单解说下 单解说下~

左边的图,每个按键对应于一个IO口,按下按键时相应的IO口被拉到低电平,其IO寄存器位回读为“0”。因此根据回读到的哪个寄存器位为0就能知道哪个键被按下。这种方式适用于规模较小的键盘。
右边的图是常见的行列扫描接法。当单个行扫描管脚拉低后,回读列扫描管脚的状态,即可知道该行有哪几个按键被按下。逐一拉低各个行扫描管脚并回读列管脚状态,即可获得整个矩阵键盘的按键状态。这种方式适用于规模较大的键盘,有效节省珍贵的IO口。

1扫描的是同一个键
2扫描方法有误,后面的没有覆盖前面的

键值,顾名思义就是按键的数值;是在矩阵键盘扫描中用到的。简单来说其实现过程就是先对行赋值,然后读取端口状态,得到一个数值;然后再给列赋值,读取端口数值;行与列数值的交点,即为当前所按上的按键。C语言代码如下:

void keyscan ()

{
uchar tem,temp;
P3=0xfe;
temp=P3;
tem=temp&0xf0;
if (tem!=0xf0) //没有键按下时它的值是不变的,即仍为0XF0,而有键接下时要变
{
delay(5); //延时消抖
temp=P3;
tem=temp&0xf0;
if (tem!=0xf0) //确认有键按下
{
temp=P3;
tem=temp&0xf0; //这里也可以不要这一步,但下面的case里的值也要变
switch (tem)
{
case 0xe0: num=0; break;
case 0xd0: num=1; break;
case 0xb0: num=2; break;
case 0x70: num=3; break;
default : ; break ;

}
while(tem!=0xf0) //等待松手
{
temp=P3;
tem=temp&0xf0;

}
}

}
P3=0xfd;
temp=P3;
tem=temp&0xf0;
if (tem!=0xf0)
{
delay(5);
temp=P3;
tem=temp&0xf0;
if (tem!=0xf0)
{
temp=P3;
tem=temp&0xf0;
switch (tem)
{
case 0xe0: num=4; break;
case 0xd0: num=5; break;
case 0xb0: num=6; break;
case 0x70: num=7; break;
default : ; break ;

}
while(tem!=0xf0)
{
temp=P3;
tem=temp&0xf0;

}
}

}
P3=0xfb;
temp=P3;
tem=temp&0xf0;
if (tem!=0xf0)
{
delay(5);
temp=P3;
tem=temp&0xf0;
if (tem!=0xf0)
{
temp=P3;
tem=temp&0xf0;
switch (tem)
{
case 0xe0: num=8; break;
case 0xd0: num=9; break;
case 0xb0: num=10; break;
case 0x70: num=11; break;
default : ; break ;

}
while(tem!=0xf0)
{
temp=P3;
tem=temp&0xf0;

}
}

}
P3=0xf7;
temp=P3;
tem=temp&0xf0;
if (tem!=0xf0)
{
delay(5);
temp=P3;
tem=temp&0xf0;
if (tem!=0xf0)
{
temp=P3;
tem=temp&0xf0;
switch (tem)
{
case 0xe0: num=12; break;
case 0xd0: num=13; break;
case 0xb0: num=14; break;
case 0x70: num=15; break;
default : ; break ;

}
while(tem!=0xf0)
{
temp=P3;
tem=temp&0xf0;

}
}

}


单片机什么是用键值的方式解决按键扫描问题,简单解说下 单解说下_百度...
左边的图,每个按键对应于一个IO口,按下按键时相应的IO口被拉到低电平,其IO寄存器位回读为“0”。因此根据回读到的哪个寄存器位为0就能知道哪个键被按下。这种方式适用于规模较小的键盘。右边的图是常见的行列扫描接法。当单个行扫描管脚拉低后,回读列扫描管脚的状态,即可知道该行有哪几个按键...

不知道为什么?次次重装系统全盘格式化后,开机都要检测磁盘。是不是...
在注册表中找到以下分支:“Hkey_local_machine\\System\\CurrentControlSet\\Control\\Session Manager”在注册表右侧的窗口中找到“BootExecute:REG_MULTI_SZ”键值就是windows关于磁盘扫描的,双击“BootExecute:REG_MULTI_SZ”将其改为:“autocheck autochk *”即可恢复成正常的状态。3、使用第三方软件 硬盘是...

高分请教几个XP服务的用途
补充: 如上所说的,一般家庭用计算机用不太到,除非你启用的 Message Queuing 依存: Remote Procedure Call (RPC) 和 Security Accounts Manager 建议: 已停用 Indexing Service (索引服务)微软: 本机和远程计算机的索引内容和档案属性; 透过弹性的查询语言提供快速档案存取。补充: 简单的说可以让你...

用COREcenter超频后,电脑重启打开COREcenter会死机
选择“运行”,键入“REGEDIT”,进入注册表编辑器,通过选单下的“查找”功能,找到并删除与驱动程序前缀字符串相关的所有“主键”和“键值”,重新启动。 【内存容量不够】 内存容量越大越好,应不小于硬盘容量的0.5~1%,如出现这方面的问题,就应该换上容量尽可能大的内存条。 【劣质零部件】 少数不法商人在给顾客...

为啥电影网的电影我看不了,提示:OxOe880068指令应用的OxOe880068内存...
(这是个临时文件,可能某些软件也在使用临时文件夹,所以产生干扰)3。把那些什么桌面工具,内存整理工具通通关掉(你至少有2个类似的工具在运行)”处理方法:运行regedit进入注册表, 在HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ShellExecuteHooks 下,应该只有一个正常的键值"{AEB6717E-7E19-11d0...

我的电脑密码忘记了,然后用自带的一键恢复然后所以的分区都不见了,_百...
启动注册表编辑器,找到“HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\Ratings”子键,找到一个名叫"KEY"的键值项,它就是用户设置IE分级审查口令(数据已经加密),用户只需删除该键值就可以取消分级审查口令,然后重新设置IE分级审查密码即可。 3. 破解OE密码 在OE程序中有三种密码:邮箱密码、...

经常出现这"0x025d324a"指令引用的“0xfffffff8"内存。该能存不能为...
(这是个临时文件,可能某些软件也在使用临时文件夹,所以产生干扰) 3。把那些什么桌面工具,内存整理工具通通关掉(你至少有2个类似的工具在运行)” 处理方法: 运行regedit进入注册表, 在HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ShellExecuteHooks 下,应该只有一个正常的键值"{AEB6717E-7E19...

虚拟光驱如何使用?祥一点
Alcohol 120% v1.9.5 Build 3105(已经不用注册了) 这是地址: http:\/\/www.crsky.com\/soft\/878.html 光盘刻录软件的完整解决方案,能完整的仿真原始光盘片,让你能不必将光盘映像文件刻录出来便可以使用虚拟光驱执行虚拟光盘且其效能比实际光驱更加强大;另外,Alcohol 120% 可支持多种映像档案格式,你可以利用其它软件...

windows任务管理器各个功能是干什么用的
Svchost.exe 组是用下面的注册表值来识别。 HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Svchost 每个在这个键下的值代表一个独立的Svchost组,并且当你正在看活动的进程时,它显示作为一个单独的 例子。每个键值都是REG_MULTI_SZ类型的值而且包括运行在Svchost组内的服务。每个Svchost组都包含一...

电脑总是隔一段时间就会出现延缓写入失败提示,那位可以给解决一下...
如果出现这种情况的话,请把该键值改为0。 怎么解决呢! 那是因为你档案所储存的位置容量太低,将档案另存到一个空间足够的位置。同时你可能中了recycler蠕虫病毒,它会大量占用磁碟空间,开启WINRAR,如果看到有两个回收站图示就说明中了此毒,先用自己的防毒软体杀一下,如果不行的话尝试用以下方法清除。 1:首先开启...

奉新县13892762863: 单片机什么是用键值的方式解决按键扫描问题,简单解说下 单解说下
路亲丹桃: 左边的图,每个按键对应于一个IO口,按下按键时相应的IO口被拉到低电平,其IO寄存器位回读为“0”.因此根据回读到的哪个寄存器位为0就能知道哪个键被按下.这种方式适用于规模较小的键盘. 右边的图是常见的行列扫描接法.当单个行扫描管脚拉低后,回读列扫描管脚的状态,即可知道该行有哪几个按键被按下.逐一拉低各个行扫描管脚并回读列管脚状态,即可获得整个矩阵键盘的按键状态.这种方式适用于规模较大的键盘,有效节省珍贵的IO口.

奉新县13892762863: 单片机中什么是键值?它和键编码有何关系? -
路亲丹桃: 单片机中,键值只有两个,=1,表示键按下了,=0,表示键没有按下(或者是取反逻辑); 单片机要读到该键值,先要知道该键的位置,当你安排某个键在某端口的某个引脚上后,该键的位置就固定下来了,只有键值是变化的

奉新县13892762863: 单片机 键盘扫描 这个程序是如何工作的 -
路亲丹桃: 别人写的代码我很难分析,代码也不全,就不想费时间分析,大概的思路,就是将接键盘的IO口设为输入,当按下时位低电平,就能判断哪个被按下.具体的是,4*4,四行四列,表示16个数,四个接行数,数个接列数,具体的接法就不说了,网上有,叫矩阵键盘,然后就是一直扫描,if语句判断哪行被按下,在扫描列,就可以对应到具体的按键了,然后就可以跳到相应的处理函数进行处理.

奉新县13892762863: 给单片机编程为什么要编写一个按键扫描的程序啊? -
路亲丹桃: 其实按键可以有好几种工作方式,比如用中断,这个是不用扫描的,还有就是扫描方式,其实扫描就是不时的检查按键所对应的寄存器的值有没有改变,如果改变,说明按键有动作,没变说明按键没动作,为了做到及时反应按键的状态,就得不停地对按键进行扫描...

奉新县13892762863: 介绍单片机上的几种按键输入实现方法 -
路亲丹桃: 第一种:直接法: 将按键直接串联电阻后与电源相连,当按键后,检测按键所对应的输入口的状态为1为0,则可检测按键是否按下 第二种:矩阵:行列均接电源电阻,并与单片机相连,先给高四位一个高电瓶,检测某一列按下键,在给第四位一个高电瓶,检测哪一行按下,由此可得到哪个键按下

奉新县13892762863: 简述单片机键盘扫描工作过程 -
路亲丹桃: 键盘由行线列线交叉而成.列线接有上拉电阻.对第一行的行线置0,然后读取列线码,如果所有列线都是1说明买有被按下的键,继续扫描下一行.直到能读到0为止,读到0时所扫描的行就是该键的行码,而0所在的位是列码.一般的键盘扫描都做成中断形式,把列线所有线相与,只要有一个0就输出0,将这个信号送给中断,就可以实现在有键被按下时开启扫描了.

奉新县13892762863: 单片机键盘扫描 -
路亲丹桃: 36个按键?恐怕要四十个按键:5*8 个I/O口,就够了 如:51的单片机,可以用P0.0-P0.7和P2.0-P2.4 组成矩阵式键盘就可以了.

奉新县13892762863: 51单片机最有效的按键处理程序 -
路亲丹桃: 只有更好,没有最好.只有更有效,没有最有效.适合当前项目需要的程序就是合适的程序.针对51单片机,没有一个按键程序是包打天下的.通常的按键扫描程序大致为:扫描按键 ==>按键去抖(如果去抖过程中按键值变化了就去抖失败,重新扫描按键) ==>得到有效键 ==》可能需要针对长按或重复按键要求做不同处理 ==>等待按键松开

奉新县13892762863: AT89C51单片机按键扫描程序怎样写? -
路亲丹桃: 源程序就不贴了 大概说下思路吧 按键扫描 一般按键的模式都为行列扫描模式 假设 5*5键盘 共25个按键 占用51单片机 10个IO口 扫描的方式 一般使用定时扫描方式,在定时中断里面执行按键扫描操作. 可先将第一行的IO口置0 再扫描列的5个IO口看哪个为0 为0 的就说明该位置按键被按下 再 将第二行的IO置0 再重复上面的判断 依次扫描剩余三个 当然要做得好点的话就要加上防抖动 重复按键判断 长按键操作处理啥的了

奉新县13892762863: 求单片机4*4矩形键盘行扫描法的扫描过程和原理! -
路亲丹桃: 反转法键盘扫描过程:1)P3高4位为列低4位为行让高4位为1低4位为0.2)判断是否有按键按下,如果有按键按下则高4位上的有一位为低电平.3)去抖动程序.4)继续判断.5)保存高4位上的按键情况.6)判断是否有按键按下,如果有按键按下则低4位上的有一位为低电平.7)去抖动.8)继续判断.9)保存低4位上的按键情况.

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