找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1402|回复: 0
打印 上一主题 下一主题
收起左侧

12864

[复制链接]
跳转到指定楼层
楼主
ID:300385 发表于 2018-4-1 15:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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);


}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表