您的位置 首页 动态

16×2点阵字符液晶模块规划完成

16×2点阵字符液晶模块设计实现-要实现对16×2点阵字符液晶模块的高效控制,必须按照模块设计方式,建立起相关的子程序,下面先详细介绍驱动16×2点阵字符液晶模块的各功能子程序。

     要完成对16×2点阵字符液晶模块的高效操控,有必要依照模块规划方法,建立起相关的子程序,下面先具体介绍驱动16×2点阵字符液晶模块的各功用子程序。

  1.写指令到LCM子函数

  vOid LCDWriteCommand(uchar CMD,uchar Attribc)

  /*函数名为WriteCommandLCM的写指令到LCM子函数。

  界说CMD、Attribc 为无符号字符型变量。*/

  {

  if(Attribc)WaitForEnable();

  /*若Arrribc为“真”,则调用WaitForEnable子函数进行忙检测*/

  LCM_RS_0;LCM_RW_0;_NOP0;

  /*选中指令寄存器,写形式*/

  DataPort=CMD;_NOP();

  /*将变量WCLCM中的指令传送至数据口

  LCM_EN_1;_NOP0;_NOP();LCM_EN_O:

  /*LCM_EN端发生脉冲下降沿。*/

  }

  /*WriteCommandLCM 子函数完毕。*/

  2,写数据到LCM子函数

  void LcdWritEDAta(dchar dataW)

  /*函数名为WriteDataLCM的写数据到LCM子函数。界说

  dataW 为无符号字符型变量。*/

  {

  /*WriteDataLCM子函数开端。*/

  WaitForEnable();    */

  LCM_RS_1;LCM_RW_0;_NOP0;

  /*选中数据寄存器,写形式。*/

  DataPort=dataW;_NOP();

  /*将变量dataQW中数据传送至数据口。*/

  LCM_EN_1;_NOP();_NOP0;LCM_EN_O:

  /*LCM_EN端发生脉冲下降沿。WriteDataLCM子函数

  完毕*/

  3.检测LCD忙信号子函数

  void WaitForEnable(void)

  /*函数名为WaitForEnable的检测忙信号子程序子函数。

  /*WaitForEnable子函数开端。*/

  uchar val;

  /*界说局部变量val。*/

  DataPOrt=Oxff;

  /*置数据口为全1。*/

  LCM_RS_0;LCM_RW_1;_NOP();

  /*选中指令寄存器,读形式。*/

  LCM_EN_1;_NOP();_NOP();

  /*置LCM_EN端为高电平,读使能。*/

  DDRA=0x00;

  /*数据口置为输入*/

  val=PINA:

  /*读取数据*/

  while(val&Busy)val=PINA:

  /*检测忙信号。当数据口内容与0x80相与后不为零时,

  程序原地踏步持续读取数据并检测忙信号。*/

  LCM_EN_O:

  /*置LCM_EN端为低电平。*/

  DDRA=0xff;

  /*数据口置为输出*/

  }

  /*WaitForEnable子函数完毕。*/

  4.显现光标定位子函数

  void LOCateXY(char posx.char posy)

  /*显现光标定位子函数,函数名为LocareXY,界说posx,

  posxxy为字符型变量。*/

  {

  /*LocateXY子函数开端。*/

  uchar temp;

  /*界说temp为无符号字符型变量。*/

  temp&=0x7f;

  /*temp的改变规模0-15。*/

  temp=posx&0xof;

  /*屏蔽高4位。*/

  posy&=0x01;

  /*posy的改变规模0-1。*/

  if(posy)tempㄧ=0x40;

  /*若posy为1(显现第二行),地址码+0x40*/

  tempㄧ=0x80;

  /*指令码为地址码+0x80。*/

  WriteCommandLCM(temp,0);

  /*将指令temp写入LCM,疏忽忙信号检测。*/

  }

  /*LocateXY子函数完毕。*/

  5.显现指定座标的一个字符(x=0~15,y=0~1)子函数

  void DisplayOneChar(uchar x,uchar y,uchar Wdata)

  /*显现指定座标的一个字符(x=0-15.y=0-1)子函数,函

  数名为DispOneChar,界说x、y、Wdata为无符号字符型变量。

  */

  {

  /*DispOneChar函数开端*/

  LocateXY(x,y):

  /*调用LocateXY函数定位显现地址。*/

  WriteDataLCM(Wdata);

  /*将数据Wdata写入LCM。*/

  }

  /*DispONeChar函数完毕。*/

  6.演示第二行移动字符串子函数

  void Display(uchar dd)

  /*演示第二行移动字符串子函数,函数名为Dispiay,界说

  dd为无符号字符型变量。*/

  {

  /*Display子函数开端。*/

  uchari:

  /*界说;为无符号字符型变量。*/

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/dongtai/348398.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部