找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于单片机矩阵键盘程序的理解 求解释,困惑了好长时间了

查看数: 3613 | 评论数: 8 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-1-15 20:54

正文摘要:

附件是矩阵键盘的原理图 以下是矩阵键盘扫描程序以及在数码管显示0-f 请问如果第一个按键被按下,P1口应该是0x07,但进入到测试列的程序中时,P1口被重新赋值为0x0f,那么P1口怎么还会一直保留原来的0x07 ...

回复

ID:332444 发表于 2021-1-19 09:22
ID:235954 发表于 2021-1-18 15:43
按键行做输出,列做输入,只需检测列那边电平即可
ID:536119 发表于 2021-1-16 16:42
yousir 发表于 2021-1-16 10:18
单片机的处理速度很快(按键时间虽短,但在按键的时间内,单片机已经将这些处理进行完毕,意思就是你还按着 ...

感谢!!!!!!
ID:633344 发表于 2021-1-16 10:18
单片机的处理速度很快(按键时间虽短,但在按键的时间内,单片机已经将这些处理进行完毕,意思就是你还按着那个键,赋予新的初值只是软件上的改变,而你还按着这个键就是硬件上给io口改变了赋值)软件上赋值给io口是为检测硬件上的改变(到底按了哪个键)做准备,然后switch case语句去检测到底按下了哪个键

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

ID:633344 发表于 2021-1-16 10:11
你想啊。单片机执行速度非常的快,你按下按键的时候(按下的时间很短但对于单片机来说很长了,单片机的处理速度很快)这些操作都已经进行完了,意思就是你虽然进行了赋值,但你还按下了按键,按键改变了你的赋值,然后switch case语句去判断你按下了哪个按键,
ID:654028 发表于 2021-1-16 09:12
按键抖动
ID:213173 发表于 2021-1-16 07:04
预置P1口0x0f,如果第一个按键被按下,P1口应该是0x07,此时P1的低4位当前状态已读取,以键值的方式保存在变量KeyValue中,进入到测试列的步骤时,P1口被重新赋值为0xf0,此时P1的高4位当前状态0X70再被读取并与低4位相加。测试得到的结果是0x77。最终输出KeyValue=0。
ID:390416 发表于 2021-1-16 00:56

这就是矩阵键盘扫描的代码,主函数循环调用本函数就行 不能有死等延迟。必须计数延迟。定时器调用也行(有些浪费不建议)。

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

Powered by 单片机教程网

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