1602/2002/2004液晶模块驱动

摘自:http://blog.21ic.com/user1/8392/archives/2012/92439.html

 

 一.概述

点阵式液晶显示模块(LCD)广泛应用于单片机控制系统,比数码管、段式液晶能模块显示更多、更直观的信息,如汉字、曲线、图片等。点阵液晶显示模块集成度很高,一般都内置控制芯片、行驱动芯片和列驱动芯片,点阵数量较大的LCD还配置RAM芯片,带汉字库的LCD还内嵌汉字库芯片,有负压输出的LCD还设有负压驱动电路等。单片机读写LCD实际上就是对LCD的控制芯片进行读写命令和数据。编程驱动LCD时,不需要对LCD的结构和点阵行列驱动原理深入了解,只要理解LCD接口的定义和LCD的控制芯片的读写时序和命令就可以了。

1602/2002/2004 LCD属于点阵字符液晶模块,控制芯片一般使用HD44780U或者KS0066U芯片,只能显示数字和西文字符,不能显示汉字和图片。1602可以显示2行每行16个字符;2002可以显示2行每行20个字符;2004可以显示4行每行20个字符,它们的接口定义、读写时序、命令均相同,所以驱动程序可以直接互相套用。

.电路设计

一般情况下,1602/2002/2004 LCD对比度调节的电位器从10K-20K欧姆选择,背光的限流电阻从10-20欧姆选择。如果说明书有明确要求的,请使用说明书规定的参数。

 

 

            

              

.软件设计

/*****************************************************************

*程序名称:1602/2002/21004液晶显示模块驱动

*程序功能:显示字符

*开发工具:WSF-51DB开发板

* MCU型号:AT89S52-24PU

*时钟频率:12MHZ

*程序作者:吴师傅

*版权说明:吴师傅版权所有。转载请注明来源和作者。

*****************************************************************/

#i nclude<reg52.h>

 

sbit E=P3^4;//脉冲使能

sbit RW=P3^3;//读写选择

sbit RS=P3^2;//数据命令选择

 

// 延时ms函数:

void Delayms(unsigned int t)

{

       unsigned int i,j;

       for(i=t;i>0;i--)

                for(j=0;j<120;j++);

}

 

// 1602检查状态函数:

void Check1602State(void)

       P2=0xff;//P2口初始值

       E=0;//读状态前三控制线的状态

       RS=0;

       RW=1;

       E=1;//拉高,读状态

       while((P2&0x80)==0x80);//判断是否繁忙,等待空闲

       E=0;//读状态后三控制线的状态

       RS=1;

       RW=0;   

}

 

// 1602写命令函数:

void Write1602Command( unsigned char com)

       Check1602State();//检查状态

       P2=com;//赋值

       E=0;//写命令前三控制线的状态

       RS=0;

       RW=0;

       E=1;//拉高,写命令

       E=0;//写命令后三控制线的状态

       RS=1;

       RW=1;

}

 

//1602写数据函数:

void Write1602Data( unsigned char dat)

       Check1602State();//检查状态

       P2=dat;//赋值

       E=0;//写数据前三控制线的状态

       RS=1;

       RW=0;   

       E=1;//拉高,写数据

       E=0;//写数据后三控制线的状态

       RS=0;

       RW=1;

}    

 

//在指定的位置显示一个数字(0-9)函数(用来显示变量的值):

void LCD1602DisplayOneNumber( unsigned char y,unsigned char x,unsigned char v)

              //y-行数值0-3x-列数值0-19v-变量的一位数字0-9

{

      unsigned char lineaddr;

      switch(y)//根据行号选择行地址(对于1602,2002液晶只有两行)

      {

               case 0:lineaddr=0x80;break;//第一行首地址

               case 1:lineaddr=0xc0;break;//第二行首地址

               //case 2:lineaddr=0x94;break;//第三行首地址 (2004LCD才有)

               //case 3:lineaddr=0xd4;break;//第四行首地址 (2004LCD才有)

               default:;

      }

      Write1602Command(lineaddr+x);//写地址

      Write1602Data(0x30+v);//先将数字化成ASCII码,再写入

}    

 

//在指定的位置显示字符串函数:

void LCD1602DisplayString( unsigned char y,unsigned char x, unsigned char *pstr)

             //y-行数值0-3x-列数值0-19pstr-字符串指针

{      unsigned char lineaddr,n=0;

        switch(y)//根据行号选择行地址(对于1602,2002液晶只有两行)

       {

                case 0:lineaddr=0x80;break;//第一行首地址

                case 1:lineaddr=0xc0;break;//第二行首地址

               //case 2:lineaddr=0x94;break;//第三行首地址 (2004LCD才有)

               //case 3:lineaddr=0xd4;break;//第四行首地址 (2004LCD才有)

                default:;

        }

        Write1602Command(lineaddr+x);//写地址

        while(*pstr!='\0')//判断字符串是否写完

        {

                 Write1602Data(*pstr++);//写字符

                 n++;

                 if((n+x)==16)//如果第一行写满,写第二行(对于1602液晶)

                         Write1602Command(0xc0);//写第二行地址

        }

}

/1602初始化函数:

void Initialize1602()

{  

       Delayms(20);

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

       Write1602Command(0x08);//显示关

       Write1602Command(0x01);//清屏

       Write1602Command(0x06);//写一个字符地址指针加一、光标加一

       Write1602Command(0x0c);//显示开

}

 

//主函数:

int main(void)

{  

       Initialize1602();//初始化1602

       LCD1602DisplayString(0,2,"http://wushifuc51.21ic.org");

                                                             //在第一行第二个位置开始写字符串

       LCD1602DisplayOneNumber(1,15,8);//在第二行最后一个位置显示数字8

       while(1);

       return 0;

}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LCD1602液晶显示模块是一种常用的显示器件,可以显示文字和图形,广泛应用于各种电子设备中。下面介绍一些调试LCD1602液晶显示模块的具体方法: 1. 检查电路连接。首先要确保电路连接正确,电源电压稳定,各个引脚连接正确。在连接时,可以参考LCD1602液晶显示模块的连接图。 2. 初始化液晶显示模块。在程序中,需要先对液晶显示模块进行初始化,即设置显示模式、光标位置、显示内容等。常用的初始化命令有0x38、0x0C、0x01等。 3. 发送显示数据。在程序中,使用相应的命令和数据,向液晶显示模块发送需要显示的文字、数字、符号等信息。常用的显示命令有0x80、0x81、0x82等,对应不同的显示位置。 4. 观察显示效果。在程序中,可以通过调整显示内容、光标位置等参数,观察液晶显示模块的显示效果。同时,可以使用万用表、示波器等工具,观察引脚电平、信号波形等信息。 5. 调整对比度。对于LCD1602液晶显示模块,对比度的调整非常重要,可以通过旋转可变电阻或者改变电压等方法进行调整。对比度调整得好,可以使得显示效果更加清晰、鲜明。 需要注意的是,在调试过程中,要注意保护液晶显示模块和电路的稳定性和可靠性,避免连接错误、电源波动等问题,同时还要注意操作的准确性,避免意外操作造成的损坏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值