找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2407|回复: 0
打印 上一主题 下一主题
收起左侧

关于矩阵键盘的检测

[复制链接]
跳转到指定楼层
楼主
现在睡不着,就把以前想到的矩阵键盘的检测分享一下吧,可能已经有人想到了,那就算我是无聊吧。现在老师上课讲的矩阵键盘的检测都是一行一行或一列一列检测,代码比较繁琐,以4×4的矩阵键盘为例(接的IO口为P0),我的想法是一次性将低四位全部为0(P0=0xf0),然后取P0的高四位,第二步将高四位为0(P0=0x0f),取P0的低四位,将两次的数值合并即得到键值。这个想法我想到之初觉得太好了,但转念一想, 遇到了对单片机内部硬件的困惑,将两个IO口直接相连,其中一个IO口拉低电平,那另一个IO口会怎么样?是高电平被低电平拉低还是低电平被高电平太高?当时不确定,就没去多想,不过现在我可以说是高电平被低电平拉低,因为我刚刚做过实验,而且看了书上IO口的硬件组成(有关场效应管的东西)也可以得到相同的结论。这是仿真做的图片,另外,用这种方法检测的另一个好处就是能支持组合键的识别。下面是简单的代码:
unsigned char get_key_value(void)
{
        unsigned char value;
        KEY=0xf0;        
        value=KEY;
        KEY=0x0f;                                       
        value=value|KEY;
        return value;
}
好了 ,睡觉,都没睡意了。




proteus仿真图


仿真文件下载:
代码.zip (38.88 KB, 下载次数: 27)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表