找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2896|回復: 3
收起左側

單片機按鍵不能控制OLED屏,程序按了沒反應

[復制鏈接]
ID:904262 發(fā)表于 2021-4-12 10:32 | 顯示全部樓層 |閱讀模式
20黑幣
按鍵不能控制OLED屏,按了沒反應
這是矩陣鍵盤的代碼
主函數(shù)

4a023c95dc941c094743b3fac301617c.png e21cd13849b3ea6e8c7657c483d25d58.png

回復

使用道具 舉報

ID:476215 發(fā)表于 2021-4-12 23:30 | 顯示全部樓層
你在主循環(huán)中做了顯示OLED的操作,這個操作很耗時間,而且你的按鍵判斷也在這個里面。這樣肯定會導致按鍵判斷相應緩慢。建議的做法是:1、在主循環(huán)里面做按鍵判斷;2、在做好按鍵判斷后增加OLED刷新標志位和按鍵數(shù)據(jù)等值用于給中斷傳遞數(shù)據(jù);3、OLED刷新放在中斷里面,進中斷后判斷是否需要刷新,如果需要的話再根據(jù)鍵值進行刷新等邏輯。這樣按鍵的響應就會好很多。(把按鍵響應放在中斷里面OLED顯示有可能會出異常,因為OLED寫入是有時序要求的,而中斷能打亂他的時序)
回復

使用道具 舉報

ID:207421 發(fā)表于 2021-4-13 00:08 | 顯示全部樓層
KEY_DOWN(void)  這個函數(shù)不要,更不能用return,  其它代碼放到 SCAN_GET(void) 里面
SCAN_GET(void)里面如下:
把IO設置成0x0F, 延時,此時讀IO值A
把IO設置成0xF0, 延時,此時讀IO值B
按鍵值 = A+B
最后判斷,就OK了
回復

使用道具 舉報

ID:904809 發(fā)表于 2021-4-13 02:41 | 顯示全部樓層
程序一直停留在while循環(huán)那里了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表