找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 237|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

為什么按下按鍵后LCD1602全部黑塊然后不能再操作了?球球大家解答

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1149720 發(fā)表于 2025-5-7 02:13 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這是按鍵掃描函數(shù)
unsigned char key_scan() {
    static unsigned char key_lock = 0;  // 按鍵鎖定標(biāo)志

    // 檢測(cè)按鍵按下(低電平有效)
    if(!KEY1 || !KEY2 || !KEY3 || !KEY4) {
        if(key_lock == 0) {  // 首次檢測(cè)到按下
            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就會(huì)顯示全部黑塊,然后再顯示一個(gè)黑塊,其他也操作不了了。
這到底是什么問題啊球球各位大佬解答。!有點(diǎn)急。!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1149734 發(fā)表于 2025-5-7 09:42 | 只看該作者
a按鍵掃描存在問題
回復(fù)

使用道具 舉報(bào)

板凳
ID:584814 發(fā)表于 2025-5-7 10:04 | 只看該作者
檢查接線,想解決問題就上完整的工程文件,大神不會(huì)跳神。
回復(fù)

使用道具 舉報(bào)

地板
ID:844772 發(fā)表于 2025-5-7 11:01 | 只看該作者
給看看怎么接線的;還有l(wèi)cd的程序。不過,很多時(shí)候就是簡(jiǎn)單的宏定義錯(cuò)落。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表