lcd1602使用手册,LCD1602的使用详解http://www.elecfans.com/uploads/allimg/1

您所在的位置:网站首页 upd70f3451数据手册 lcd1602使用手册,LCD1602的使用详解http://www.elecfans.com/uploads/allimg/1

lcd1602使用手册,LCD1602的使用详解http://www.elecfans.com/uploads/allimg/1

2023-11-19 01:57| 来源: 网络整理| 查看: 265

LCD1602接线图

  一般来说,LCD1602有16条引脚,据说还有14条引脚的,与16脚的相比缺少了背光电源A(15脚)和地线K(16脚)。我手里这块LCD1602的型号是HJ1602A,是绘晶科技公司的产品,它有16条引脚。 

LCD1602实物图

2、LCD1602的基本操作

  1. 读状态:输入RS=0,RW=1,E=高脉冲。输出:D0—D7为状态字。

  2. 读数据:输入RS=1,RW=1,E=高脉冲。输出:D0—D7为数据。

  3. 写命令:输入RS=0,RW=0,E=低脉冲。输出:无。(写完置E=高脉冲)

  4. 写数据:输入RS=1,RW=0,E=低脉冲。输出:无。

3、分析时序图

  (1)写操作(单片机至HD44780)

 

LCD1602写操作时序图

首先要对寄存器的选择和读、写操作选择进行配置。RS是寄存器选择,RS = 1对数据进行操作;RS = 0对指令进行操作。

  接着对读写操作选择进行配置,RW = 0 写操作。

  打开使能端,输入使能信号 E = 1。

  数据总线,对DB0~DB7赋值,进行数据的传输

  【注】如果先打开使能,再进行其他配置的话,有可能传输的数据不是自己想要的。

 (2)读操作(HD44780至单片机)

 

 

 

LCD1602读操作时序图

 显示的位置设置DDRAM

显示的位置设置DDRAM

 显示模块的指令集,根据自己的显示需要进行相应的配置

显示模块的指令集,根据自己的显示需要进行相应的配置

显示在第一行某一列的数据可以写命令:0x80 | 0x,0x80是因为在设置DDRAM地址时,DB7固定是为1的。

 LCD1602写入自己的字符及显示汉字

  1、由于LCD是外部设备,处理速度比CPU速度慢,向LCD写入命令到完成功能需要一定的时间,在这个过程中,LCD处于忙状态,不能向LCD写入新的内容。LCD是否处于忙状态可以通过读忙标志命令来了解。

  用state = LCDPORT来读取IO端口的状态,将state & 0x80来判断LCD是否处于忙状态,若IO口bit7为1,则表示LCD处于忙状态,反之则空闲。

  2、要让LCD1602显示自定义字符,就得用到CGRAM指令,CGROM字码表实际只有8个字节可供使用,writecom(0x40)表示将要在CGRAM中写入数据,设置字库CGRAM地址命令是0100 0000.

  1602能存储8个自定义字符(即8个字节的使用),这8个自定义字符存储空间的首地址分别是:0X40,0X48,0X50,0X58,0X60,0X68,0X70,0X78。

  使用时读取自定义字符的地址即为0X40-0X78 对应为 00H-07H。一个地址(如00H)存放1B的一个字符(1B = 8bit,一个字符由8个0x**组成)

        如果使用5*7字符的话,那么最左3位和最后一行的数据实际上是没用的,通常置0。 

这样我们就得到每个地址需要写入的数据:

  地址 : 数据

        0x40 : 0x16

        0x41 : 0x09

        0x42 : 0x08 

        其他类推。将这8个数据写入到对应地址即可。(有红格子的即为1,白格子即为0)

案例

首先,1602液晶显示屏除了电源、地以外,有3个控制引脚 RS R/W E 和8个数据引脚DB0-7。建议8个数据引脚接在同一组上,程序写起来比较简单。硬件连接参考如图。

LCD1602原理图连接

            连接上硬件电路,就要写程序了,从名字可以看出来,1602显示两行,每行16个字符,一个字符包含的点阵可以自己设置(后边介绍)。

首先显示内容分为两种,一种是常用字符,存储在CGROM中,用户可以直接调用,另一种是自定义的字符,比如自己设计的一些奇怪的图形之,存储在CGRAM。当时被这两个名词和DDRAM搞得很乱,这里详细解释一下。

DDRAM是显示用的,从RAM可以看出来,是读的意思,地址与显示位置如下,每行40个地址,1602只用到前16个,共两行,对应关系如下。

DDRAM地址与显示位置的对应关系 

当我们想在指定位置写入内容时,要先指定地址,如在第一行第一位写入,地址位是00H,再加上DB7的1,即80H(0010000000),第二行第一位是40H,再加上DB7的1,即C0H(0011000000),依次类推。

LCD的已有的字模存储在CGROM中,自定义的存储在CGRAM,留给自定义的位置只有8个地址,字模地址为01000000-01000111八个地址,也就是最多自定义8个符号或者图形。

 根据这条指令,来写一个摄氏度℃的自定义符号,对应图如下

℃显示

字符对应的数组为table【】={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00},将℃写入指定的位置之前,要先把对应数组写入CGRAM存储,再写入DDRAM显示。如果直接用已有的字符,可以直接把数组写入DDRAM显示。

区分清楚自定义字符和已有字符,程序就简单了。主要步骤是延时函数、写指令、写数据、初始化、主函数。

下面举两个例子,写入常规字符串12345,写入字符串℃。

实操程序一(写入常规字符串12345)

#include    //包含头文件

#define uint unsigned int  //预定义

#define uchar unsigned char 

sbit rs=P2^6;    //1602的数据/指令选择控制线 

sbit rw=P2^5;        //1602的读写控制线 

sbit en=P2^7;        //1602的使能控制线 

/*P0口接1602的D0~D7*/ 

uchar code table[]="1234";             //要显示的内容放入数组table

void delay(uint n)       //延时函数                       

    uint x,y;  

    for(x=n;x>0;x--) 

        for(y=110;y>0;y--); 

void lcd_wcom(uchar com)  //1602写命令函数                 

    rs=0;            //选择指令寄存器 

    rw=0;            //选择写 

    P0=com;            //把命令字送入P2 

    delay(5);            //延时一小会儿,让1602准备接收数据 

    en=1;           //使能线电平变化,命令送入1602的8位数据口 

    en=0; 

void lcd_wdat(uchar dat)        //1602写数据函数       

    rs=1;        //选择数据寄存器 

    rw=0;        //选择写 

    P0=dat;        //把要显示的数据送入P2 

    delay(5);        //延时一小会儿,让1602准备接收数据 

    en=1;        //使能线电平变化,数据送入1602的8位数据口 

    en=0; 

void lcd_init()              //1602初始化函数       

    lcd_wcom(0x38);       //8位数据,双列,5*7字形       

    lcd_wcom(0x0c);      //开启显示屏,关光标,光标不闪烁 

    lcd_wcom(0x06);    //显示地址递增,即写一个数据后,显示位置右移一位 

    lcd_wcom(0x01);    //清屏 

void main()            //主函数 

{     

    uchar m=0; 

    lcd_init();       //液晶初始化 

    lcd_wcom(0x80);   //显示地址设为80H(即00H,)上排第一位       

    for(m=0;m0;x--) 

        for(y=110;y>0;y--); 

void lcd_wcom(uchar com)  //1602写命令函数                 

    rs=0;            //选择指令寄存器 

    rw=0;            //选择写 

    P0=com;            //把命令字送入P2 

    delay(5);            //延时一小会儿,让1602准备接收数据 

    en=1;           //使能线电平变化,命令送入1602的8位数据口 

    en=0; 

void lcd_wdat(uchar dat)        //1602写数据函数       

    rs=1;        //选择数据寄存器 

    rw=0;        //选择写 

    P0=dat;        //把要显示的数据送入P2 

    delay(5);        //延时一小会儿,让1602准备接收数据 

    en=1;        //使能线电平变化,数据送入1602的8位数据口 

    en=0; 

void lcd_init()              //1602初始化函数       

    lcd_wcom(0x38);       //8位数据,双列,5*7字形       

    lcd_wcom(0x0c);      //开启显示屏,关光标,光标不闪烁 

    lcd_wcom(0x06);    //显示地址递增,即写一个数据后,显示位置右移一位 

    lcd_wcom(0x01);    //清屏 

void main()            //主函数 

{     

    uchar m; 

    lcd_init();       //液晶初始化 

    lcd_wcom(0x40);//设定CGRAM地址,把自定义字符存储进去     

    for(m=0;m



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3