您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > lcd(lm016l)学习
实验十三字符LCD显示实验一、实验目的1、了解字符LCD模块的使用方法2、掌握8051单片机控制字符LCD模块显示程序的设计方法。二、实验原理字符LCD模块是一种专用显示字符、数字或符号的液晶显示模块。这种模块每一个符号由5×7、5×8或5×11的点阵像素排列组成的,字符间隔为一个点距,行间隔为一个行距,模块本身附有显示驱动控制电路,可以与单片机的I/O口线直接连接,使用方便。目前广泛使用的字符LCD模块其显示驱动控制电路多是HD44780或兼容品,其接口信号、操作指令相同。本实验选用的字符LCD模块是香港精电公司生产的规格为16×1的字符LCD模块,可以在一行上显示16个字符。该模块与8051单片机I/O口线直接连接的电路如下图所示。1、字符LCD模块的接口信号①GND、VCC:电源,VCC=+5V。②Vee:液晶显示对比度调节电压输入。可以通过调节LCD左上角的多圈电位器RW2来调节。③DB7~DB0:数据总线,三态。用于与模块之间传送信息。这里连接P1.0~P1.7。以下3个信号为控制信号:④RS:寄存器选择信号,输入。这里连接P3.3(INT1)。模块中有两类寄存器,一类是指令寄存器,用于写入指令;另一类是数据寄存器,用于写入的数据。RS=0,选择指令寄存器。RS=1,选择数据寄存器。⑤R/W:读/写信号,输入。这里连接P3.4(T0)。R/W=1,读操作;R/W=0,写操作。⑥E:使能信号,输入。模块的读/写控制信号。这里连接P3.5(T1)。读操作时,E为高电平时,模块的数据或状态输出至DB7~DB0上,供单片机读取;写操作时,E信号的下降沿将单片机送至数据总线上的数据或指令写入模块中。这里3个控制信号,均通过单片机的I/O口线产生。字符LCD模块的写时序与读时序如下。2、字符LCD模块的编程字符LCD模块的编程主要有两方面的内容:①向模块写入有关指令,设定其初始状态、工作方式、显示格式、数据长度、内部RAM地址等。字符液晶显示模块的指令有11条,后面将作一简单介绍。②写入数据,亦将所显示字符的代码写入模块的显示存储器DDRAM中,DDRAM的一个存储单元与液晶上一个字符位置对应。本实验选用的16×1字符LCD模块,其字符位置与DRAM单元的对应关系如下表。例如,若在液晶屏上第一个字符位置上显示“A”,只需向DDRAM的00H单元写入代码“41H”。字符LCD模块可显示的符号的代码如下表所示。英文字母、数字的代码与ASCII码相同。代码00H~0FH的显示内容可由用户在其CGRAM中自定义。3、HD44780的指令简介①清屏指令:01H该指令完成下列功能:将20H(空格)写入DDRAM所有单元,使显示消失;并将地址指针计数器AC=0,光标返回显示屏第一字符位置。地址指针计数器AC,是模块的一个重要的计数器,当向DRAM单元写入数据后AC可以自动加1,指向下一单元(或自动减1)。②归位指令:02H将地址指针计数器AC=0,光标返回显示屏第一字符位置,但DDRAM中的内容不变。③输入方式设置指令:04H~07H该指令用于设置显示字符的输入方式。指令码如下:其中位I/D=1,向DRAM写入一个字符码后,AC自动加1,光标右移一个字符位;I/D=0,向DDRAM写入一个字符码后,AC自动减1,光标左移一个字符位;位S=1,写入字符时,允许显示画面移动。S=0,写入字符时,显示画面不移动。④显示开关控制指令码如下:D:显示开关:D=1,开显示,D=0关显示。关显示后显示代码仍在DRAM中,开显示后,立即再现。C:光标显示控制:D=1,光标显示;D=0,光标不显示。B:闪烁显示控制:B=1,闪烁;D=0,不闪烁。⑤光标或显示画面移动指令码如下:可使光标或显示画面在没有读写显示数据的情况下,向左或向右移动。S/C:S/C=1,显示移位、S/C=0,光标移位。R/L:R/L=1,右移、R/L=0,左移。⑥工作方式设置指令码如下:该指令是字符液晶显示模块的初始化指令。DL:设置接口方式。DL=1,数据总线为8位,使用DB7~DB0。DL=0,数据总线为4位,使用DB7~DB4,8位数据要分2次传送。N:设置显示的字符行数。N=0,为1行,N=1为2行。F:设置显示字符的字体。F=0,为5×8点阵;F=1,为5×11点阵(自定义时)。另外:该指令还是软件复位指令。软件复位的方法是对它写入3条30H指令,每条30H指令之间加入延时,时间大于4.1ms。HD44780操作前必须先复位。⑦CGRAM地址设置指令码如下:CGRAM是字符液晶显示模块中用于存放用户自定义字符点阵字模库的存储器地址为00H~3FH,共64个字节。用户可以利用它自定义8个5×8点阵的字模库,或4个5×11的点阵字模库。前者每个字符代码的点阵占用CGRAM的8个字节,后者每个字符代码的点阵占用CGRAM的16个字节。当用户需要向CGRAM写入点阵字模时,需要先设置CGRAM地址。本指令的ACG5~ACG0是欲设置的6位CGRAM地址指针至AC中。随后对CGRAM写(读)操作即从此新址开始。⑧DDRAM地址设置指令码如下:本指令用于设置DDRAM的地址指针至AC中。随后对DDRAM写(读)操作即从此新地址开始。⑨读“忙”标志BF和地址指针AC格式:当RS=0,R/W=1时,E高电平时,DB7输出“忙”标志BF,DB6~DB0输出地址指针AC的值。BF=1,表示模块的显示驱动控制电路忙,不能接收指令或数据。BF=0,表示模块的显示驱动控制电路闲,可以接收指令或数据。单片机在向模块写指令或数据前必须先查询BF的状态。读出的AC6~AC0是当前AC的值。由于AC是CGRAM、DDRAM公用,它所指区域与前一条指令操作区域相同。⑩写数据格式:当RS=1、R/W=0时、E信号的下降沿,将单片机送至DB7~DB0上的数据写入模块。若AC为DDRAM的地址指针,写入DDRAM中;若AC为CGRAM的地址指针,写入CGRAM中。写入的数据先进入模块中的数据寄存器DR中,再由模块的内部操作自动送入AC所指单元。⑾读数据格式:当RS=1、R/W=1时、E高电平时,AC所指的DDRAM或CGRAM单元的内容被读出。读出的数据先进入模块中的数据寄存器DR中,再由模块的内部操作自动送至DB7~DB0上。三、实验内容将字符LCD模块与单片机相连接,编程在显示屏上显示:Howareyou?四、参考程序实验LCD.ASMORG0000HRSEQUP3.3;寄存器选择信号RWEQUP3.4;读/写控制信号EEQUP3.5;使能信号COMEQU20H;命令字暂存单元CLRRSCLRRWMOVP1,#30H;向LCD写入3条30H指令,使之复位MOVR7,#03HINT:SETBE;使E产生下降沿CLRECALLDELAY;延时大于4.1msDJNZR7,INTMOVP1,#38H;工作方式设置命令字:设置8位数据总线,5×8点阵SETBE;使E产生下降沿CLREMOVCOM,#01H;清屏指令01HCALLPR1;调向LCD写指令子程序MOVCOM,#06H;设置输入方式命令字:AC加1计数,光标右移1个字符CALLPR1MOVCOM,#0FH;显示开关控制命令字:开显示,光标显示;闪烁CALLPR1MOVR6,#16;R6作字符计数器MOVDPTR,#DATA1MOVR4,#0DISPLY:CALLF_BUSY;调判忙子程序MOVA,R4MOVCA,@A+DPTR;取数SETBRS;以下5条指令为向LCD写数CLRRWMOVP1,ASETBECLREINCR4CJNER4,#08H,NEXT;不到显示位置9转MOVCOM,#0C0H;设置地址40H至AC,调整显示位置为9CALLPR1NEXT:DJNZR6,DISPLYSJMP$PR1:CALLF_BUSY;写指令子程序CLRRWMOVP1,COMSETBECLRERETF_BUSY:CLRRS;判忙子程序SETBRWF_BY1:MOVP1,#0FFHSETBEMOVA,P1CLREJBACC.7,F_BY1;忙转RETDELAY:MOVR0,#8H;延时子程序DLY0:MOVR1,#0C8HDLY1:DJNZR1,DLY1DJNZR0,DLY0RETDATA1:DB20H,20H,’Howareyou?‘,20HEND
本文标题:lcd(lm016l)学习
链接地址:https://www.777doc.com/doc-2046487 .html