lcd1602的封装_lcd1602的初始化程序

显示光电

95人已加入

描述

  lcd1602的封装

  lcd1602的封装尺寸(单位mm):

LCD1602

  封装一般使用16脚排座,下面还可以布一些矮的元件。另外LCD1602的引脚可以用16个的排针或排座代替。

  LCD1602初始化流程图

  用户所编的显示程序,开始必须进行初始化,否则模块无法正常显示,下面介绍两种初始化方法:

  1. 利用内部复位电路进行初始化

  下面指令是在初始化过程中执行的。

  清屏(DISPLAY CLEAR);

  功能设置(FUNCTION SET);

  DL = 1: 8Bit 接口数据;

  N = 0: 1行显示;

  F = 0:5&TImes;7dot字形;

  显示开/关控制(DISPLAY ON/OFF CONTROL)

  D = 0: 显示关; C = 0: 光标关; B = 0: 消隐关

  输入方式设置(ENTRY MODE SET )

  I/D = 1:(增量): S = 0: 无移位:

  2. 软件复位

  如果电路电源不能满足复位电路的要求的话,那么初始化就要用软件来实现,过程如下:

LCD1602

  lcd1602的初始化程序

  uchar BusyTest(void) //lcd忙碌状态检测

  {

  bit result;

  RS=0;

  RW=1;

  E=1;

  _nop_();

  _nop_();

  _nop_();

  _nop_(); //空操作四个机器周期,给硬件反应时间

  result=BF;

  E=0;

  return result;

  }

  void WriteInstruction (uchar dictate) //设置模式或地址

  {

  while(BusyTest()==1);

  RS=0; //根据规定,RS和R/W同时为低电平时,可以写入指令

  RW=0;

  E=0;

  _nop_();

  _nop_();

  P0=dictate; //将数据送入P0口,即写入指令或地址

  _nop_();

  _nop_();

  _nop_();

  _nop_();

  E=1; //E置高电平

  _nop_();

  _nop_();

  _nop_();

  _nop_();

  E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令

  }

  void WriteAddress(uchar x) //设置实际显示的地址

  {

  WriteInstruction(x|0x80);

  }

  void WriteData(uchar y) //向LCD写数据

  {

  while(BusyTest()==1);

  RS=1;

  RW=0;

  E=0;

  P0=y;

  _nop_();

  _nop_();

  _nop_();

  _nop_();

  E=1;

  _nop_();

  _nop_();

  _nop_();

  _nop_();

  E=0;

  }

  void LcdInitiate(void) //初始化操作

  {

  delay(15); //首次写指令时应给LCD一段较长的反应时间

  WriteInstruction(0x38); //显示模式设置:16×2显示,5×7点阵,8位数据接口

  delay(5);

  WriteInstruction(0x38);

  delay(5);

  WriteInstruction(0x38);

  delay(5);

  WriteInstruction(0x0f); //显示模式设置:显示开,有光标,光标闪烁

  delay(5);

  WriteInstruction(0x06); //显示模式设置:光标右移,字符不移

  delay(5);

  WriteInstruction(0x01); //清屏幕指令,将以前的显示内容清除

  delay(5);

  }

  void display(uchar hang,uchar lie,uchar *p)

  {

  uchar a;

  if(hang == 1)

  {

  a = 0x80;

  }

  if(hang == 2)

  {

  a = 0xc0;

  }

  a = a + lie - 1;

  while(1)

  {

  BusyTest();

  WriteInstruction(a);

  BusyTest();

  WriteData(*p);

  delay(10);

  a++;

  p++;

  if((*p == ‘\0’)||(a==0x90)||(a==0xd0))

  {

  break;

  }

  }

  }

  小编推荐阅读:

  lcd1602液晶显示屏介绍_lcd1602引脚功能

  lcd1602在proteus中怎么找_lcd1602proteus仿真

  lcd1602只亮不显示_lcd1602简单显示程序

  lcd1602地址设置_LCD1602内部的控制器指令

  lcd1602的a和k是什么引脚_lcd1602与单片机的连接方法

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分