打印

有谁用51编过1602液晶显示的程序没有

[复制链接]
1516|1
手机看帖
扫描二维码
随时随地手机跟帖
沙发
ljolove| | 2008-3-8 18:12 | 只看该作者

写指令的时候得要判断忙啊

//1ms延时函数
void delay_1ms(void)
{
 unsigned int i;
 for(i=0;i<600;i++);
}

//n ms延时函数
void delay_nms(unsigned int n)
{
 unsigned int i;
 for(i=0;i<n;i++)delay_1ms();
}

//-----------判断液晶状态-----------------
void wait_en(void)
{
    P0=0xff;
    RS=0;
    RW=1;
    _nop_();
    EN=1;
    while((P0&0x80)==0x80);
    EN=0;
}

//--------------写指令-------------------
void writecomd(unsigned char comd,unsigned char wait_flag)
{
    if(wait_flag)wait_en();
    EN=0;
    RS=0;
    RW=0;
    _nop_();
    EN=1;
    _nop_();
    P0=comd;
    EN=0;
    RW=1;
}
//-----------写数据-----------------------
void writedat(unsigned char dat)
{
    wait_en();
    EN=0;
    RS=1;
    RW=0;
    _nop_();
    EN=1;
    P0=dat;
    EN=0;
    RW=1;
}
//------------读数据---------------------
unsigned char readdat(void)
{
    unsigned char tempdat;
    P0=0xff;
    EN=0;
    RS=1;
    RW=1;
    _nop_();
    EN=1;
    tempdat=P0;
    EN=0;
    return tempdat;
}

//---------------液晶初始化---------------
void Init_lcd(void)
{
     delay_nms(15);
     writecomd(0x38,0);//显示模式设置三次(此时不管lcd空闲与否)
     delay_nms(5);
     writecomd(0x38,0);
     delay_nms(5);
     writecomd(0x38,0);
     delay_nms(5);
 
     writecomd(0x38,1);//显示模式设置(从此之后均需lcd空闲)
     writecomd(0x08,1);//显示关闭
     writecomd(0x01,1);//显示清屏
     writecomd(0x06,1);//显示光标移动设置
     writecomd(0x0c,1);//显示开及光标设置
}
给你程序吧

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝