找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机按键不能控制OLED屏,程序按了没反应

[复制链接]
跳转到指定楼层
楼主
20黑币
按键不能控制OLED屏,按了没反应
这是矩阵键盘的代码
主函数



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

使用道具 举报

沙发
ID:476215 发表于 2021-4-12 23:30 | 只看该作者
你在主循环中做了显示OLED的操作,这个操作很耗时间,而且你的按键判断也在这个里面。这样肯定会导致按键判断相应缓慢。建议的做法是:1、在主循环里面做按键判断;2、在做好按键判断后增加OLED刷新标志位和按键数据等值用于给中断传递数据;3、OLED刷新放在中断里面,进中断后判断是否需要刷新,如果需要的话再根据键值进行刷新等逻辑。这样按键的响应就会好很多。(把按键响应放在中断里面OLED显示有可能会出异常,因为OLED写入是有时序要求的,而中断能打乱他的时序)
回复

使用道具 举报

板凳
ID:207421 发表于 2021-4-13 00:08 | 只看该作者
KEY_DOWN(void)  这个函数不要,更不能用return,  其它代码放到 SCAN_GET(void) 里面
SCAN_GET(void)里面如下:
把IO设置成0x0F, 延时,此时读IO值A
把IO设置成0xF0, 延时,此时读IO值B
按键值 = A+B
最后判断,就OK了
回复

使用道具 举报

地板
ID:904809 发表于 2021-4-13 02:41 | 只看该作者
程序一直停留在while循环那里了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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