作者共发了1篇帖子。 内容转换:不转换▼
 
点击 回复
261 0
【解决办法】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);
}

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:261 回复数:0
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2016-7-8 23:00
 
©2010-2024 Arslanbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。