找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2003|回复: 0
收起左侧

12864基本显示

[复制链接]
ID:224465 发表于 2017-8-6 12:47 | 显示全部楼层 |阅读模式
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint  unsigned int

sbit LCD_RS=P3^5;//数据命令选择
sbit LCD_RW=P3^6;//读写选择
sbit LCD_EN=P3^4;//使能端
sbit LCD_PSB=P3^7;//串并行选择
sbit wela=P2^6;
sbit dula=P2^7;

uchar  code dis0[]={"谢谢大家看帖子"};
uchar  code dis1[]={"欢迎大家"};
uchar  code dis2[]={"早登高峰"};
uchar  code dis3[]={"感谢教程网"};
uchar i;

/*延时1ms*/
void delay(uint time)
{
        uint x,y;
        for(x=time;x>0;x--)
                for(y=114;y>0;y--);
}


/*写指令到LCD函数*/
void write_cmd(uchar cmd)
{
        LCD_RS=0;
        LCD_RW=0;
        LCD_EN=0;
        P0=cmd;
        delay(5);
        LCD_EN=1;
        delay(5);
        LCD_EN=0;
}

/*写数据到LCD函数*/
void write_dat(uchar dat)
{
        LCD_RS=1;
        LCD_RW=0;
        LCD_EN=0;
        P0=dat;
        delay(5);
        LCD_EN=1;
        delay(5);
        LCD_EN=0;
}       

/*设定显示位置*/

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


/*LCD初始化*/
void lcd_init()
{
       
        LCD_PSB=1;                        //选择为并行串口
        wela=0;
        dula=0;
        delay(10);
        write_cmd(0x30);
        delay(5);
        write_cmd(0x0C);
        delay(5);
}


main()
{

                        lcd_init();//LCD初始化
                        lcd_pos(0,0);//显示在第一行第一格
                        i=0;
                        while(dis0[i]!='\0')
                        {
                        write_dat(dis0[i]);
                        i++;
                        }
                                lcd_pos(1,0);
                                i=0;
                                while(dis1[i]!='\0')
                                {
                                write_dat(dis1[i]);
                                i++;
                                }
                                        lcd_pos(2,0);
                                        i=0;
                                        while(dis2[i]!='\0')
                                        {
                                        write_dat(dis2[i]);
                                        i++;
                                        }
                                                        lcd_pos(3,0);
                                                        i=0;
                                                        while(dis3[i]!='\0')
                                                        {
                                                        write_dat(dis3[i]);
                                                        i++;
                                                        }

}


回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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