找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机4*4矩阵键盘 超简洁程序

[复制链接]
跳转到指定楼层
楼主
以前用的矩阵键盘扫描程序,非常冗余。

但是这个程序,只用了了几行代码,巧妙地用2层嵌套,就能实现16个按键的扫描过程 和 返回值。非常适合新手学习 和 应用。详细代码见附件。


单片机源程序如下:
  1. *功能:检测被按下的按键,并返回相应的值
  2. uchar Keyscan(void)
  3. {
  4. Uchar i,j,temp,Buffer[4]={0xfe,0xfd,0xfb,0xf7};
  5. for(j=0;j<4;j++)
  6. {
  7. P1=Buffer[j];
  8. temp=0x10;
  9. for(i=0;i<4;i++)
  10. {
  11. If(!(P1&temp))
  12. {
  13. Return(i+j*4);
  14. }
  15. temp<<1;
  16. }
  17. }
  18. }
复制代码



评分

参与人数 1黑币 +60 收起 理由
admin + 60 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:42147 发表于 2021-6-19 08:22 | 只看该作者
谢谢管理员的认可
回复

使用道具 举报

板凳
ID:894907 发表于 2021-6-19 17:06 | 只看该作者
纯新手看不太懂,If(!(P1&temp))这句怎么理解…………
回复

使用道具 举报

地板
ID:894907 发表于 2021-6-19 17:19 | 只看该作者
P1第一次赋值时,Buffer[j]是0xfe,假如现在是按下S2开关,那P1实际的值是0xde,我这个理解对么……
回复

使用道具 举报

5#
ID:331078 发表于 2021-6-20 22:54 | 只看该作者
附件在哪里啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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