打印

求助:LPC无法驱动LCD1602

[复制链接]
950|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yylove520|  楼主 | 2012-2-14 10:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

本帖最后由 隐身状态 于 2012-2-12 11:48 编辑

/****************************************************************************
* File: main.c
* 功能:向LCD输出字符
****************************************************************************/
#include <LPC21xx.H>

#define rs (1<<8)
#define rw (1<<9)
#define en (1<<10)
#define busy 0x00000080
#define uint8 unsigned char
#define uint32 unsigned int



/****************************************************************************
* 名称:ChkBusy()
* 功能:检查总线是否忙
****************************************************************************/
void ChkBusy()
{
            IO0DIR=0x700;  //P0.0~P0.7为输入
                while(1)
                {
                IO0CLR=rs;
                IO0SET=rw;
                IO0SET=en;
                if((IO0PIN&busy)==0)
                break;
                IO0CLR=en;
                }        
           IO0CLR=en;
           IO0DIR=0x7ff;
}
/****************************************************************************
* 名称:WrOp()
* 功能:写函数
****************************************************************************/
void WrOp(uint8 dat)
{
        ChkBusy();           //检测是否繁忙
        IO0CLR=rs;               
        IO0CLR=rw;
    IO0CLR=0xff;                //先清零
    IO0CLR=en;
        IO0SET=dat;
        IO0SET=en;
        IO0CLR=en;


}
/****************************************************************************
* 名称:WrDat()
* 功能:写数据函数
****************************************************************************/
void WrDat(uint8 dat)        
{
        ChkBusy();            //检测是否繁忙
        IO0SET=rs;
        IO0CLR=rw;
        IO0CLR=en;
        IO0CLR=0xff;                //先清零
        IO0SET=dat;
        IO0SET=en;
        IO0CLR=en;
        

}
/****************************************************************************
* 名称:lcd_init()
* 功能:lcd初始化函数
****************************************************************************/
void lcd_init(void)
{         
        WrOp(0x38);                        
        
        WrOp(0x0c);               
        WrOp(0x06);
        
        WrOp(0x01);
        
}
/****************************************************************************
* 名称:DisText()
* 功能:显示文本函数
****************************************************************************/
/*


/****************************************************************************
* 名称:main()
* 功能:显示文本
****************************************************************************/

int  main(void)
{   PINSEL0=0x00000000;          //IO选择GPIO
    PINSEL1=0x00000000;
    IO0DIR=0x7ff;                //设置为输出
        IO0CLR=0x7ff;
    lcd_init();

         WrOp(0x80);;
     WrDat(2) ;
         

        }


这程序有问题 吗??为什么LCD1602没显示

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝