标题: 12864 [打印本页]

作者: 潘小帅    时间: 2018-4-1 15:49
标题: 12864
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define delayNOP() {_nop_();_nop_();_nop_();_nop_();}
//#define lcd_date P0               
sbit lcd_rs=P3^5;
sbit lcd_rw=P3^6;
sbit lcd_en=P3^4;
sbit lcd_psb=P3^1;
sbit dula=P2^6;                  
sbit wela=P2^7;
uchar code dis1[]={"请输入密码"};                   //显示四行
uchar code dis2[]={"111111"};
uchar code dis3[]={"1313"};
uchar code dis4[]={"1414"};
void lcd_pos(uchar x,uchar y); //地址
void delay(uint z)//z等于几就延时几ms
{
        uint x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}

bit lcd_busy()
{
        bit result;
        lcd_rs=0;
        lcd_rw=1;
        lcd_en=1;
        delayNOP();
        result=(bit)(P0&0x80);
        lcd_en=0;
        return(result);

}
void lcd_wcmd(uchar cmd)
{
        while(lcd_busy());         //忙状态检测
        lcd_rs=0;
        lcd_rw=0;
        lcd_en=0;
        _nop_();                //1us
        _nop_();
        P0=cmd;
        delayNOP();//4us
        lcd_en=1;
        delayNOP();
        lcd_en=0;
}

void lcd_wdat(uchar dat)
{
        while(lcd_busy());
        lcd_rs=1;
        lcd_rw=0;
        lcd_en=0;
        P0=dat;
        delayNOP();
        lcd_en=1;
        delayNOP();
        lcd_en=0;
}

void lcd_init()
{
        lcd_psb=1; //并行
        lcd_wcmd(0x34);
        delay(5);
          lcd_wcmd(0x30);
        delay(5);
        lcd_wcmd(0x0c);
        delay(5);
        lcd_wcmd(0x01);
        delay(5);
}

void lcd_pos(uchar x,uchar y)
{
        uchar pos;
        if(x==0) {x=0x80;}
        if(x==1) {x=0x90;}
        if(x==2) {x=0x88;}
    if(x==3) {x=0x98;}
        pos=x+y;
        lcd_wcmd(pos);

}
void main()
{
        uchar i;
        delay(10);
        wela=0;
        dula=0;
        lcd_init();

        lcd_pos(0,0);
        i=0;
        while(dis1[i]!='\0')   //不等于 '空'
        {
                lcd_wdat(dis1[i]);
                i++;
        }

        lcd_pos(1,0);
        i=0;
        while(dis2[i]!='\0')
        {
                lcd_wdat(dis2[i]);
                i++;
        }


        lcd_pos(2,0);
        i=0;
        while(dis3[i]!='\0')
        {
                 lcd_wdat(dis3[i]);
                i++;
        }  

        lcd_pos(3,0);
        i=0;
        while(dis4[i]!='\0')
        {
                lcd_wdat(dis4[i]);
                i++;
        }
        while(1);


}







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1