設置 | 登錄 | 註冊

作者共發了1篇帖子。

【解決辦法】51單片機程序卡在檢查12864液晶忙信號的while循環里

1樓 巨大八爪鱼 2016-7-8 23:00
拔掉開發板上P0口(液晶數據端口)的LED燈跳線即可。
因為如果P0口上同時接了LED燈的話,單片機無法正常讀取液晶通過P0口發來的數據。
【測試程序】
#include <reg52.h>

sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit LED3 = P1^2;

sbit RS = P2^0;
sbit RW = P2^1;
sbit E = P2^2;
sbit PSB = P2^3;
sbit RESET = P2^5;
sbit BF = P0^7;

void delay(unsigned int n)
{
    unsigned char i;
    while (n--)
        for (i = 0; i < 115; i++);
}

int main(void)
{
    delay(40);
   
    LED1 = 0; // LED1表示正在檢查忙型信號
    LED2 = 1; // LED2表示程序因忙信號阻塞
    LED3 = 1; // LED3亮表示程序成功通過忙信號檢查
   
    P0 = 0xff;
    RS = 0;
    RW = 1;
    E = 1;
    while (BF)
        LED2 = 0;
    E = 0;
    LED2 = 1;
    LED1 = 1;
    LED3 = 0;
   
    // 最後只有LED3亮,表明程序通過了忙信號檢查
    // 如果最後是LED1和LED2都亮,則表明程序卡在了忙信號檢查部分
   
    while (1);
}

內容轉換:

回覆帖子
內容:
用戶名: 您目前是匿名發表。
驗證碼:
看不清?換一張
©2010-2025 Purasbar Ver3.0 [手機版] [桌面版]
除非另有聲明,本站採用知識共享署名-相同方式共享 3.0 Unported許可協議進行許可。