找回密码
 立即注册

QQ登录

只需一步,快速开始

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

lcd12864显示程序

[复制链接]
跳转到指定楼层
楼主
ID:309532 发表于 2018-4-16 20:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int

sbit LCD_RS=P3^4;       //数据/命令选择端
sbit LCD_RW=P3^6;       //读/写选择端
sbit LCD_EN=P3^5;       //液晶使能控制

uchar code dis_l1[]={"白日依山尽"};   //定义所要被显示的数据
uchar code dis_l2[]={"黄河入海流"};
uchar code dis_l3[]={"欲穷千里目"};
uchar code dis_l4[]={"更上一层楼"};

void delayms(uint ms)
{
   uint i,j;
   for(i=ms;i>0;i++)
      for(j=110;j>0;j--);
}

/*写指令到LCD中,指令通过单片机的P0口输入,
  写指令操作顺序按照RS=0;RW=0;EN=0;延时;EN=1;写指令;延时;EN=0的顺序*/
void write_comd(uchar cmd)
{
   LCD_RS=0;
   LCD_RW=0;
   LCD_EN=0;
   delayms(5);
   LCD_EN=1;
   P0=cmd;
   delayms(5);
   LCD_EN=0;
}
/*写数据到LCD中,数据通过单片机的P0口输入,
  写数据操作顺序按照RS=1;RW=0;EN=0;延时;EN=1;写数据;延时;EN=0的顺序*/
void write_dat(uchar dat)
{
   LCD_RS=1;
   LCD_RW=0;
   LCD_EN=0;
   delayms(5);
   LCD_EN=1;
   P0=dat;
   delayms(5);
   LCD_EN=0;
}

/*设定LCD的显示位置 X表示所要显示的行数,Y表示所要显示的列数*/
void lcd_posi(uchar X,uchar Y)
{
   uchar posi;
   if(X==1)
      X=0x80;
   else if(X==2)
           X=0x90;
           else if(X==3)
                   X=0x88;
                   else if(X==4)
                        X=0x98;
    posi=X+Y;
    write_comd(posi);
}

/*LCD初始化*/
void lcd_init()
{
   write_comd(0x30);     //LCD功能设定指令,采用八位数据,基本指令集
   delayms(5);
   write_comd(0x0c);     //LCD显示状态开关指令,显示开,游标开,不允许反白显示
   delayms(5);
   write_comd(0x01);    //LCD清除显示指令,清除LCD显示内容,为后面显示做准备
   delayms(5);
}


void main()
{
   uchar i;
   lcd_init();    //初始化

   lcd_posi(1,0);//设定显示位置为第一行第一个字符
   i=0;
   while(dis_l1[i]!='\0')
      {
         write_dat(dis_l1[i]);//显示字符
         i++;
      }

   lcd_posi(2,0);//设定显示位置为第二行第一个字符
   i=0;
   while(dis_l2[i]!='\0')
      {
         write_dat(dis_l2[i]);
         i++;
      }

   lcd_posi(3,0);//设定显示位置为第三行第一个字符
   i=0;
   while(dis_l3[i]!='\0')
      {
         write_dat(dis_l3[i]);
         i++;
      }

   lcd_posi(4,0);//设定显示位置为第四行第一个字符
   i=0;
   while(dis_l4[i]!='\0')
      {
         write_dat(dis_l4[i]);
         i++;
      }

}

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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