標(biāo)題:
為什么按下按鍵后LCD1602全部黑塊然后不能再操作了?球球大家解答
[打印本頁]
作者:
tutu-
時(shí)間:
2025-5-7 02:13
標(biāo)題:
為什么按下按鍵后LCD1602全部黑塊然后不能再操作了?球球大家解答
這是按鍵掃描函數(shù)
unsigned char key_scan() {
static unsigned char key_lock = 0; // 按鍵鎖定標(biāo)志
// 檢測按鍵按下(低電平有效)
if(!KEY1 || !KEY2 || !KEY3 || !KEY4) {
if(key_lock == 0) { // 首次檢測到按下
delay_ms(20); // 消抖
key_lock = 1;
if(!KEY1) return KEY1_PRESS;
else if(!KEY2) return KEY2_PRESS;
else if(!KEY3) return KEY3_PRESS;
else if(!KEY4) return KEY4_PRESS;
}
}
else {
key_lock = 0; // 按鍵釋放
}
return KEY_UNPRESS;
}
這是主函數(shù)
void main() {
unsigned char key;
// 初始化
lcd1602_init();//LCD1602初始化
lcd1602_show_string(0, 0, "Braille System");
lcd1602_show_string(0, 1, "Select:");
// 初始化所有點(diǎn)為不凸起狀態(tài)
P1 = 0xFF;
P2 = 0xFF;
while(1) {
key = key_scan();
if(key == 1 && current_index > 0) { // 上一個(gè)
current_index--;
lcd1602_show_string(7, 1, braille_library[current_index].pinyin);
beep();
}
else if(key == 2 && current_index < BRAILLE_COUNT-1) { // 下一個(gè)
current_index++;
lcd1602_show_string(7, 1, braille_library[current_index].pinyin);
beep();
}
else if(key == 3) { // 顯示
show_braille_pattern(braille_library[current_index].dot_pattern);
lcd1602_show_string(0, 0, "Showing: ");
lcd1602_show_string(8, 0, braille_library[current_index].pinyin);
beep();
}
else if(key == 4) { // 確認(rèn)/返回
P1 = 0xFF; P2 = 0xFF;
lcd1602_show_string(0, 0, "Braille System");
lcd1602_show_string(0, 1, "Select:");
lcd1602_show_string(7, 1, braille_library[current_index].pinyin);
beep();
}
delay_ms(10);
}
}
我在proteus里面運(yùn)行,一開始能夠正常顯示,但是按鍵234就會顯示全部黑塊,然后再顯示一個(gè)黑塊,其他也操作不了了。
這到底是什么問題啊
球球各位大佬解答�。�!有點(diǎn)急�。。�
作者:
qwr248
時(shí)間:
2025-5-7 09:42
a按鍵掃描存在問題
作者:
man1234567
時(shí)間:
2025-5-7 10:04
檢查接線,想解決問題就上完整的工程文件,大神不會跳神。
作者:
glinfei
時(shí)間:
2025-5-7 11:01
給看看怎么接線的;還有l(wèi)cd的程序。不過,很多時(shí)候就是簡單的宏定義錯(cuò)落。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1