搜索
bottom↓
回复: 52

最简单的4X4矩阵键盘

[复制链接]

出0入0汤圆

发表于 2010-10-8 20:05:03 | 显示全部楼层 |阅读模式
/*
P2口是4X4矩阵键盘
P0口是8个发光二极管,用来显示按键
*/
#include<reg52.h>
unsigned char Trg;
unsigned char Cont;
void KeyRead( void )
{
    unsigned char ReadData;
    P2=0x0f;
    ReadData=P2;
    P2=0xf0;
    ReadData=(ReadData | P2)^0xff;
    Trg  = ReadData & (ReadData ^ Cont);
    Cont = ReadData;
}
void KeyProc(void)
{
    if (Trg  )  // 如果有按下
    {
         P0=Trg^0xff;// 执行的代码
    }
     
    if (Cont)  // 如果按键被按着不放
    {
           
    }  
    if (Trg ==0 & Cont==0)  //按键放开  
    {
         P0=0xff;

    }
}

void main()
{

    Trg=0;
    Cont=0;
    while(1)
    {
        KeyRead();
        KeyProc();
    }

}

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

发表于 2010-10-9 06:58:33 | 显示全部楼层
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4309217&bbs_id=9999

不要老是"最".

出0入0汤圆

发表于 2010-10-9 07:54:08 | 显示全部楼层
这还最呢,占用了8个IO啊,太浪费了!!!!!

出0入96汤圆

发表于 2010-10-9 13:03:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-9 18:08:33 | 显示全部楼层
太好了,MARK

出0入0汤圆

发表于 2010-10-14 09:46:35 | 显示全部楼层
mark,看起来好像没有消除抖动的。

出0入0汤圆

发表于 2010-10-23 01:19:30 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-23 08:02:49 | 显示全部楼层
谢谢!

出0入0汤圆

发表于 2010-11-10 14:26:17 | 显示全部楼层
这个写的也很简单,学习

出0入0汤圆

发表于 2010-12-25 10:23:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-29 14:55:31 | 显示全部楼层
回复【楼主位】xywap
-----------------------------------------------------------------------

main()中的
Trg=0;
这个应该不要了吧。
还有你可是4X4键盘哦。
就没看到你表示出来

出0入0汤圆

发表于 2011-1-5 14:43:47 | 显示全部楼层
P0=TRG^0XFF
这样也只能是显示四个键的值啊
你4×4键盘怎么用二级管显示?
不是就显示有键按下没有吧

出0入0汤圆

发表于 2011-1-19 16:03:15 | 显示全部楼层
算上每根口线与地,还能加8个键

出0入0汤圆

发表于 2011-5-6 13:03:59 | 显示全部楼层
记下

出0入0汤圆

发表于 2011-7-3 15:38:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-4 16:53:11 | 显示全部楼层
如果这些按键分布在不同的P口,就不简单了;确实8个键做个4*4键盘,是比较浪费的

出0入0汤圆

发表于 2011-7-4 23:28:51 | 显示全部楼层
mark

出50入0汤圆

发表于 2011-7-10 12:53:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-11 20:59:17 | 显示全部楼层
mark ,学习了

出0入0汤圆

发表于 2011-7-12 08:45:54 | 显示全部楼层
看不出来是否用了查表的思想?

出0入85汤圆

发表于 2011-8-15 20:41:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-16 10:04:50 | 显示全部楼层
是可以使用,但以前人家有介绍,你只是在“引用”

出0入0汤圆

发表于 2011-8-20 16:06:55 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-11 11:31:08 | 显示全部楼层
不错  另外一篇帖子有讲解
http://www.ourdev.cn/bbs/bbs_content_all.jsp?bbs_sn=4308630

出0入0汤圆

发表于 2011-10-12 18:23:06 | 显示全部楼层
今天刚搞定矩阵键盘 嗯 楼主写的很不错 继续加油

出0入0汤圆

发表于 2011-12-24 20:55:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-25 21:09:08 | 显示全部楼层
不错,用“最”可是有点过了

出0入0汤圆

发表于 2012-4-12 20:08:23 | 显示全部楼层
牛~刚刚看了您另外一个帖子~真的是不错~谢谢分享

出0入0汤圆

发表于 2012-5-27 10:18:02 | 显示全部楼层
rainyss 发表于 2010-10-9 06:58
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4309217&bbs_id=9999

不要老是"最".

我觉得这个应该是最简单得了,其他更简单的没有松手检测,长按检测的。实际使用中往往是需要这些的

出0入0汤圆

发表于 2012-5-27 10:36:54 | 显示全部楼层
我也谢了个和你相似的矩阵扫键程序,不过我做成了带有按键优先级的。高优先级的的按下了第优先级的再按就没用,低优先级的按下了按高优先级先响应高优先级。

出0入0汤圆

发表于 2012-6-26 17:46:56 | 显示全部楼层
感谢,标记

出0入0汤圆

发表于 2012-7-22 09:15:31 | 显示全部楼层
好东西,记下

出0入0汤圆

发表于 2012-7-22 10:01:01 | 显示全部楼层
sunnyqd 发表于 2012-7-22 09:15
好东西,记下

看不懂

出0入0汤圆

发表于 2012-7-22 10:21:54 | 显示全部楼层
我只是路过的 发表于 2012-7-22 10:01
看不懂

单步调试一下就知道了

出0入0汤圆

发表于 2012-7-22 13:25:58 | 显示全部楼层
sunnyqd 发表于 2012-7-22 10:21
单步调试一下就知道了

P2=0x0f;
    ReadData=P2;
    P2=0xf0;
    ReadData=(ReadData | P2)^0xff;
    Trg  = ReadData & (ReadData ^ Cont);
    Cont = ReadData;
不懂他的思维到底是怎样的

出0入0汤圆

发表于 2012-9-27 15:59:48 | 显示全部楼层
好像弄复杂了吧,直接P2=0xff;  ReadData=ReadData ^0xff;不就行了吗?反正都是ReadData | P2=0xff。还是我理解错了呢?

出0入0汤圆

发表于 2012-9-27 16:17:04 | 显示全部楼层
楼主偷东西太没水平了。。。

出0入0汤圆

发表于 2012-9-27 16:19:54 | 显示全部楼层
http://www.amobbs.com/thread-4308630-1-1.html

出0入0汤圆

发表于 2012-10-5 12:32:11 | 显示全部楼层
标记下先~~

出0入0汤圆

发表于 2013-2-26 11:04:49 | 显示全部楼层
MARK

出0入0汤圆

发表于 2013-2-26 13:49:47 来自手机 | 显示全部楼层
学习一下....

出0入0汤圆

发表于 2013-4-7 18:52:59 | 显示全部楼层
楼主实验好用吗?

出0入0汤圆

发表于 2013-4-14 11:59:05 | 显示全部楼层
16个按键才用8个口,感觉挺好的了,怎么才是省IO口呢

出0入0汤圆

发表于 2013-8-5 11:30:45 | 显示全部楼层
   mark,还不错哦

出0入0汤圆

发表于 2013-8-14 19:00:21 来自手机 | 显示全部楼层
mark……
顶一个…

出0入0汤圆

发表于 2013-8-29 22:00:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-9-1 14:43:13 | 显示全部楼层
学过了……

出0入0汤圆

发表于 2014-4-17 10:10:41 | 显示全部楼层
8个IO口可以做4*4矩阵+8独立 共24个按键

出0入0汤圆

发表于 2015-5-21 19:04:48 | 显示全部楼层
标记一下,也许派的上用场

出0入0汤圆

发表于 2015-6-1 09:55:20 | 显示全部楼层
不错

出0入0汤圆

发表于 2015-12-22 11:25:59 | 显示全部楼层
先顶了,学习学习

出0入0汤圆

发表于 2019-4-17 13:55:55 | 显示全部楼层
矩阵扫描按键   MARK..
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 23:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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