最近进度比较慢,马上要学习中断和计时器了。遇到一个很郁闷的问题,矩阵按键线反转法在proteus中用现成的模块就是实现不了,自己画的矩阵模块可以正常使用。不知道什么原因。
行列扫描---按键识别
原理比较简单:P2端口的低四位D0---D3置1,高四位D4-D7分别置0,顺序执行P2口的值
P2 端口的值 0xef 0xdf 0xbf 0x7f,利用按键底层驱动中Key_Scan()函数,得到返回键值
#define KEYPAD P2
KEYPAD = 0xef;
switch(Key_Scan())
{
case 1:
LEDBuf[3]=1;break;
case 2:
LEDBuf[3]=2;break;
case 3:
LEDBuf[3]=3;break;
case 4:
LEDBuf[3]=4;break;
default: break;
}
KEYPAD = 0xdf;
switch(Key_Scan())
{
case 1:
LEDBuf[3]=5;break;
case 2:
LEDBuf[3]=6;break;
case 3:
LEDBuf[3]=7;break;
case 4:
LEDBuf[3]=8;break;
default: break;
}
.........
线反转法--按键识别
1.首先,我们将所有行设置为逻辑0,将所有列设置为逻辑1。
P2口的低四位连接矩阵按键4行上,高四位连接矩阵按键4列上
2.每当我们按下一个按钮时,对应于该按钮的列和行都会短路,并使对应的列达到逻辑电平0。可以确定列号
3.同理我们将所有列设置为逻辑0,将所有行设置为逻辑1。按下一个按钮时,该按钮的列和行都会达到逻辑0.可以确定行号
4.把行号和列号通过逻辑与操作连接起来,和行列编码数组比较,得到按键返回值
#include "Key.h"
u8 Key_Scan()
{
u8 temp,temp2,keycode,i;
static u8 KeyNum = 0;//初始化显示0
u8 KEYCODE[]= //按键行列编码
{0XEE,0XDE,0XBE,0X7E,
0XED,0XDD,0XBD,0X7D,
0XEB,0XDB,0XBB,0X7B,
0XE7,0XD7,0XB7,0X77};
KEYPORT = 0xf0;//4列置1,4行置0
temp = KEYPORT ;//读P2口
if(temp!=0xf0)//判断是否有按键按下
{
DelayXms(10);
if(temp!=0xf0)//再次判断是否有按键按下
{
temp=KEYPORT & 0xf0;//取高4位,取列数
KEYPORT = 0x0f;//低4位写1,高四位取0,线反转
temp2 = KEYPORT & 0x0f;//取低四位,取行号
keycode = temp | temp2;//高四位和第四位(行列)组合到一起
for(i=0;i<16;i++)
{
if(keycode == KEYCODE[i])
{
KeyNum = i;
return KeyNum;
}
}
}
}
return KeyNum;
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
中断
+关注
关注
5文章
895浏览量
41391 -
计时器
+关注
关注
1文章
418浏览量
32634 -
函数
+关注
关注
3文章
4304浏览量
62428 -
按键识别
+关注
关注
0文章
10浏览量
6956 -
矩阵按键
+关注
关注
0文章
28浏览量
8360
发布评论请先 登录
相关推荐
消除按键抖动的两种方法分享
按键也是机械装置,在按下或放开的一瞬间会产生抖动,如下图: 消除方法有两种: 软件除抖和硬件除抖,其中硬件除抖是应用了电容对高频信号短路的原理。 软件除抖是检测出键闭合后执行一个延时
发表于 09-02 17:52
pcb库封装常用的两种方法
识别模块通讯模块调试模块单片机模块PCB库——原理图库——原理图首先需要明白他们之间的关系画图的实质是什么pcb库封装常用的两种方法,简单实用原理图封装原理图的封装和pcb...
发表于 07-29 09:33
STM32操作矩阵键盘的两种方法
目录STM32操作矩阵键盘的两种方法——扫描和中断一、矩阵键盘的结构和原理二、扫描式矩阵键盘的原理和实现三、中断式矩阵键盘的原理和实现四、
发表于 08-12 06:33
检查电池剩余电量的两种方法
检查电池剩余电量的两种方法・如果电池已经被插入到熔接机的插槽中,打开电源。那么电源模式会被自动识别为 "电池",并且剩余电量也会被显示在 "READY" 画面
发表于 11-07 14:26
•65次下载
AODV协议中解决断链问题的两种方法
AODV协议中解决断链问题的两种方法
2.1 备用路由方法由于常规路由协议维护完整的路由表,能得知网络中的拓扑情况,很容易
发表于 03-01 17:31
•1116次阅读
使用jdbc连接上oracle的两种方法
本文主要介绍了使用jdbc连接上oracle的两种方法:1、 使用thin连接,2、 使用oci连接(Oracle Call Interface)
发表于 02-06 10:43
•1701次阅读
STM32操作矩阵键盘的两种方法——扫描和中断
目录STM32操作矩阵键盘的两种方法——扫描和中断一、矩阵键盘的结构和原理二、扫描式矩阵键盘的原理和实现三、中断式矩阵键盘的原理和实现四、
发表于 11-26 13:36
•36次下载
简述安装打印机驱动的两种方法
安装打印机驱动通常有两种方法,一种是直接使用驱动文件自带的安装程序自动安装,而另一种方法就是我们自己手动进行安装。两种方法各有利弊,日常工作中可以根据实际情况来选择使用哪种方法进行安装
评论