LCD1602指令总结
LCD1602学习笔记

LCD1602学习笔记
一、HD44780指令体系及设定:
1、清屏指令(01H):
清屏指令(01H)
功能:<1>清除液晶显示器,即将DDRAM中的内容全部的填入“空白”的ASCLL码20H。
<2>光标归位,即将光标撤回液晶显示屏的左上方。
<3>将地址计数器(AC)的值设置为0。
2、光标归位指令:
功能:<1>将光标撤回液晶显示器的左上方。
<2>把地址计数器(AC)的值设置为0;
<3>保持DDRAM中的值保持不变。
3、显示模式设置指令:
功能:设定每次定入一位数据之后光标的移位方向,以及设定每次写入的一个字符是否移动。
参数设定情况:
①I/D位:0=写入数据后光标左移;1=写入数据后光标右移。
②S位:0=写入新数据后显示屏不移动;1=写入新数据后显示屏整
体右移1个字符。
4、显示开关控制指令:
功能:控制显示器的开/关,光标的显示/关闭,以及光标是否闪烁。
参数的设定:
①D位:0=显示功能关;1=显示功能开。
②C位:0=无光标;1=有光标。
③B位:0=光标闪烁;1=光标不闪烁。
5、设定显示屏或光标的移动方向指令:。
LCD1602指令码

(1)1602LCD主要技术参数显示容量为16×2个字符;芯片工作电压为4.5~5.5V;工作电流为2.0mA(5.0V);模块最佳工作电压为5.0V;字符尺寸为2.95×4.35(W×H)mm。
(2)接口,信号说明1602LCD采用标准的14引脚(无背光)或16引脚(带背光)接口,各引脚接口说明见表1602液晶接口引脚定义1、2 组电源一组是模块的电源一组是背光板的电源均为5V 供电。
2、VL 是调节对比度的引脚调节此脚上的电压可以改变黑白对比度3、RS 是很多液晶上都有的引脚是命令/数据选择引脚该脚电平为高时表示将进行数据操作;为低时表示进行命令操作。
4、RW 也是很多液晶上都有的引脚是读写选择端该脚电平为高是表示要对液晶进行读操作;为低时表示要进行写操作。
5、E 同样很多液晶模块有此引脚通常在总线上信号稳定后给一正脉冲通知把数据读走,在此脚为高电平的时候总线不允许变化。
6、D0—D7 8 位双向并行总线,用来传送命令和数据。
7、BLA是背光源正极,BLK是背光源负极。
与单片机的连接方式,如图9所示图7 1602与单片机的连接方式图(3)控制器接口说明基本操作时序见表基本操作时序对此液晶操作主要有以下几种方法。
1 写命令(包括但不限于初始化、调节显示位置、清除显示)2 写数据 (把一个字符的ASC 码写入液晶使其显示)3 读忙信号(液晶乃低速设备,每次操作前应该测试忙信号,确定其不忙时再操作)(4)1602LCD的指令码(命令码)此液晶上电的时候需要初始化典型的指令码是38H,也就是上电的时候需要调用 void write_cmd(unsigned char command)这个函数写指令码,用法是write_cmd(0x38);执行完这个函数可以把液晶初始化成16x2 显示5x7 的点阵8 位总线接口。
以下指令码用法相同。
此液晶支持的指令码有解释:就是0x38 的命令解释:第一行指令主要能完成的功能是控制液晶显示否,光标显示否,光标闪烁否?共有以下8 种指令解释:第二行指令主要能完成的功能是写完字符光标或屏幕移动方向解释:用该指令码可以把光标移动到想要的位置。
LCD1602知识总结

LCD1602写操作时序:LCD1602读操作时序:1602采用标准的16脚接口,其中: 第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15~16脚:空脚1602液晶模块内部的控制器共有11条控制指令:它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置指令2:光标复位,光标返回到地址00H指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效指令4:显示开关控制。
D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标指令6:功能设置命令DL:高电平时为8位总线,低电平时为4位总线N:低电平时为单行显示,高电平时双行显示F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符指令7:字符发生器RAM地址设置DB5DB4DB3 为字符号,也就是你将来要显示该字符时要用到的字符地址。
(000~111)(能定义八个字符)DB2DB1DB0为行号。
LCD1602和LM016l中文资料

LCD1602中文资料在日常生活中,我们对液晶显示器并不陌生。
液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。
在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。
发光管和LED数码管比较常用,软硬件都比较简单,在单片机系统中应用晶液显示器作为输出器件有以下几个优点:(1)显示质量高,由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。
因此,液晶显示器画质高且不会闪烁。
(2)数字式接口,液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。
(3)体积小、重量轻,液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。
(4)功耗低,相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。
一、液晶显示简介1、液晶显示原理:液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
2、液晶显示器的分类:液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。
除了黑白显示外,液晶显示器还有多灰度有彩色显示等。
如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。
3、液晶显示器各种图形的显示原理:线段的显示:点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。
LCD1602的11条指令详解

1602指令共11条指令:1.清屏指令功能:<1> 清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCII码20H;<2> 光标归位,即将光标撤回液晶显示屏的左上方;<3> 将地址计数器(AC)的值设为0。
2.光标归位指令功能:<1> 把光标撤回到显示器的左上方;<2> 把地址计数器(AC)的值设置为0;<3> 保持DDRAM的内容不变。
3.进入模式设置指令功能:设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。
参数设定的情况如下所示:位名设置I/D 0=写入新数据后光标左移 1=写入新数据后光标右移S 0=写入新数据后显示屏不移动1=写入新数据后显示屏整体右移1个字符4.显示开关控制指令功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。
参数设定的情况如下:位名设置D 0=显示功能关1=显示功能开C 0=无光标1=有光标B 0=光标闪烁1=光标不闪烁5.设定显示屏或光标移动方向指令功能:使光标移位或使整个显示屏幕移位。
参数设定的情况如下:S/C R/L 设定情况0 0 光标左移1格,且AC值减10 1 光标右移1格,且AC值加11 0 显示器上字符全部左移一格,但光标不动1 1 显示器上字符全部右移一格,但光标不动6.功能设定指令功能:设定数据总线位数、显示的行数及字型。
参数设定的情况如下:位名设置DL 0=数据总线为4位 1=数据总线为8位N 0=显示1行 1=显示2行F 0=5×7点阵/每字符1=5×10点阵/每字符7.设定CGRAM地址指令功能:设定下一个要存入数据的CGRAM的地址。
8.设定DDRAM地址指令功能:设定下一个要存入数据的CGRAM的地址。
9.读取忙信号或AC地址指令功能:<1> 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令; 当BF=0时,液晶显示器可以接收单片机送来的数据或指令;<2> 读取地址计数器(AC)的内容。
lcd1602

控制接口说明:1、基本操作时序:1.1读状态:输入:RS=L,RW=H,E=H 输出:D0—D7=状态字1.2写指令:输入:RS=L,RW=L,D0—D7=指令码,E=高脉冲输出:无1.3读数据:输入:RS=H,RW=H,E=H 输出:D0—D7=数据1.4写数据:输入:RS=L,RW=L,D0—D7=数据,E=高脉冲输出:无2、状态字说明3、RAM地址映射图控制器内部带有80×8位(80字节)的RAM缓冲区,对应的关系如下图所示:4、指令说明4.1初始化设置显示模式设置控制器内部设有一个数据地址指针,可通过它们来访问内部的全部80字节RAM。
数据指针设置:延时15ms写指令38H(不检测忙信号)延时5ms写指令38H(不检测忙信号)延时5ms写指令38H(不检测忙信号)(以后每次写指令、读/写数据操作之前均需检测忙信号)写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置原文出自:/47okey/blog/item/809c7cfc8dd6541c08244d60.html程序分析:、程序清单:RS BIT P3.7 ;RS1602液晶的数据命令控制端,高电平为数据,低电平为指令;这3位是液晶屏的控制信号,连接方式由具体硬件而定RW BIT P3.6;RW1602液晶的读写控制端,高电平为读,低电平为写E BIT P3.5;E1602的使能端ORG 0000H;程序开始LJMP MAIN;跳转到MAIN处执行程序ORG 0100H;数据存放地址MAIN:LCALL DISPLAY;调用液晶显示子程序LCALL D1S;延时1秒LJMP MAIN;返回到MAIN处;-------液晶显示的子程序(显示前先格式转换)---------------------------------------DISPLAY:LCALL INITIAL;调用初始化子程序MOV A, #10000000B ; LINE1: DB 'This is a TEST',00H,设置第一行的显示地址LCALL WRITE_INSTRUCTION;调用写液晶命令子程序MOV DPTR, #LINE1;将表格1送到DPTR中LCALL PR_STRING;调用写字符子程序LCALL WRITE_LCDDATA;调用写液晶数据子程序MOV A, #11000000B ; LINE2: DB'Design by 47okey',00H,设置第二行的显示地址LCALL WRITE_INSTRUCTION;调用写液晶命令子程序MOV DPTR, #LINE2;将表格2送到DPTR中LCALL PR_STRING;调用写字符子程序RET;---液晶屏初始化,具体请参考资料-------------------------------------------------initial: MOV A, #01H;01H这个指令是设置1602的清屏操作LCALL WRITE_INSTRUCTION;调用液晶命令写入子程序MOV A, #38H;38H这个指令是设置1602的显示模式,2行,16个字符/行LCALL WRITE_instruction;调用液晶命令写入子程序MOV A, #0FH;0FH这个指令是设置1602的显示、显示光标、光标闪烁LCALL WRITE_instruction;调用液晶命令写入子程序MOV A, #06H;06H这个指令是设置1602的输入方式,增量不移位LCALL WRITE_instruction;调用液晶命令写入子程序RET;----写液晶指令的子程序------------------------------------------WRITE_instruction: MOV P1, A;将累加器A中的命令送到P0口做输出数据CLR RS ;写入控制命令,RS低电平为命令CLR RW;读写控制端,RW,低电平为写,就是写命令CLR E;使能端,E发生电平跳变就开始写入命令LCALL DELAY;调用延时子程序,也就是下面写的判断液晶模块是否处于忙状态SETB E;使能端,E发生电平跳变完成,写入命令完成RET;----写液晶数据的子程序---------------------------------------------write_lcddata: MOV P1, A;将累加器A中的数据送到P0口做输出数据SETB RS ;写入显示数据,RS高电平为数据CLR RW;读写控制端,RW低电平为写数据CLR E;使能端E,低电平LCALL DELAY ;判断液晶模块是否忙?SETB E;使能端,E发生电平跳变完成,写入数据完成RET;-----写行字符的子程序---------------------------------------------------------------PR_STRING: CLR A;将累加器A中的内容做清零操作MOVC A, @A+DPTR;查表,将查到的数据送到累加器A中去JZ END_PR;JZ为累加器A判0转移指令,若A 中不为0则往下执行程序,为0则跳转到END_PR处LCALL WRITE_LCDDATA;调用写液晶数据的的子程序INC DPTR;DPTR地址加一LJMP PR_STRING;跳转到PR_STRING处执行程序END_PR: RET;----查看液晶忙碌信号的子程序---------------------------------------------------------DELAY: MOV P1,#0FFH ;判断液晶显示器是否忙的子程序 CLR RS;RS低电平,写命令SETB RW;RW高电平,读液晶内部的数据CLR E;使能端低电平NOP;延时一个机器周期SETB E;使能端高电平JB P1.7,DELAY ;如果P1.7为高电平表示忙就循环等待,JB判bit转移,bit为1则跳转,否则顺序执行程序 RET;---1mS延时(按12MHZ算)-----------------------------------------------------------------D1mS: MOV R7,#250LOOP0: NOPNOPDJNZ R7,LOOP0RET;----1S延时(按12MHZ算)-----------------------------------------------------------------D1S: Mov R6,#4LOOP2: mov R5,#250LOOP1: LCALL D1mSDJNZ R5,LOOP1DJNZ R6,LOOP2RET;--------------------------------------------------------------------------------------LINE1: DB 'This is a TEST !',00HLINE2: DB 'Design by 47okey',00HEND。
(完整版)LCD1602学习总结
LCD1602液晶屏知识点总结LCD1602的引脚包括数据指令寄存器RS,读写控制寄存器R/W,使能端E,三态数据总线DBO〜DB7,电源引脚VDD, VSS,背光正负极A、K,背光调节引脚V0。
1602可以显示2行每行16个共32个5*8或者5*11个字符,这就是1602名字的由来。
1602内部有CGROM、CGRAM、DDRAM。
CGROM是字符发生器ROM,是固化在内部的,共192个字符,包括160个5*7点阵字符,32个5*10点阵字符。
(为什么上面是5*8和5*11,这里不是,因为内部CGROM中的字符没有完全占满可以用的字模)其中部分与ASCII完全一样,所以对于大小写英文字母和数字及部分符号,在编程时可以直接双引号括起来用。
CGRAM是64字节用户可自定义的存储区,可自定义8个5*8或者4个5*11的字符。
DDRAM是控制显示的RAM,想显示什么,就把显示内容的地址放进DDRAM,不过还要设置好显示方式。
DDRAM共80字节,第一行和第二行各40字节。
这40个字节在一次显示时当然不会全部显示,因为屏幕只能显示16个,但在滚动显示时就可以全部显示出来。
LCD1602设定某种地址,接下去读取数据就放在改类地址中,比如设定了CGRAM的地址,那么接下去读取的数据就放在CGRAM中。
由于写数据时最高位必须为1所以实际地址是:R=1时,是数据寄存器,RS=0时,是指令寄存器。
R/W=1时,是读操作,R/W=0时,是写操作。
读操作时,使能端E要保持1,写操作时,下降沿使能。
当RS=0,R/W=0 时,是写入命令:1、01H :清除DDRAM的所有单元,光标被移动到屏幕左上角<1>清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCII码20H;<2>光标归位,即将光标撤回液晶显示屏的左上方;<3>将地址计数器(AC)的值设为02、02H或这03H : DDRAM 所有单元的内容不变,光标移至左上角0<1>把光标撤回到显示器的左上方;<2>把地址计数器(AC)的值设置为0;<3>保持DDRAM的内容不变3、输入方式设置(EnterModeSet ),这些指令规定了两个方面:一是写入一个DDRAM单元后,地址指针如何改变(加一还是减一);二是屏幕上的内容是否滚动。
LCD1602指令集解读
LCD1602指令集解读LCD1602指令集(11个)1、清屏指令(clear display) RS=0 ,R/w=0, 01H功能:清除液晶显⽰器,即将DDRAM中的内容全部填⼊20H(空⽩字符)光标撤回显⽰屏左上⽅将地址计数器(AC)设为0,光标移动⽅向为从左向右,并且DDRAM的⾃增量为1(I/D=1).2、光标归位指令(Return Home)RS=0 ,R/w=0, 0000_001X功能:将地址计数器(AC)设为00H,DDRAM内容保持不变,光标移⾄左上脚3、进⼊模式设置指令(Entry Mode Set)功能:设定每次定⼊ 1 位数据后光标移位⽅向并且设定次写⼊⼀个字符是否移动。
I/D = 0 光标左移,DDRAM地址⾃增1 I/D = 1 光标右移,DDRAM地址⾃增1 (当从CGRAM中读取或写⼊数据时,CGRAM操作与DDRAM相同)SH = 0 且 DDRAM是读操作(CGRAM读或写),整个屏幕不移动SH = 1 且 DDRAM是写操作,整个屏幕移动,移动⽅向由I/D决定4、显⽰开关控制(Display ON/OFF Control)功能: D = 1 , 显⽰功能开 D = 0 , 显⽰功能关,但是DDRAM中的数据依然保留C = 1 , 有光标 C = 0 , 没有光标B = 1 , 光标闪烁 B = 0 , 光标不闪烁5、设置显⽰屏或光标移动⽅向的指令功能:整屏的移动或光标移动S/C =0 R/L =0 光标左移,地址计数器减1(即显⽰内容和光标⼀起左移)S/C =0 R/L =1 光标右移,地址计数器加1(即显⽰内容和光标⼀起右移)S/C =1 R/L =0 显⽰内容左移,光标不移动S/C =1 R/L =1 显⽰内容右移,光标不移动6、功能设定指令功能:设定数据总线位数、显⽰的⾏数及字形。
DL=1 ,数据总线是8位 DL=0 ,数据总线是4位N =0 ,显⽰⼀⾏ N=1 ,显⽰两⾏F =0 , 5*8 点阵/字符 F=1 ,5*11点阵/字符7、设定 CGRAM地址指令功能:设定下⼀个要存⼊数据的CGRAM地址DB5DB4DB3为字符号,即将显⽰该字符⽤到的字符地址DB2DB1DB0为⾏号补充理解:在芯⽚中内置了192个常⽤字符的字模,存于CGROM(character generate ROM)中,还有8个允许⽤户⾃定义字符(也就是可以显⽰⼋个中⽂字)的RAM,也就是CGRAM。
LCD1602中文资料(程序和使用说明)
在日常生活中,我们对液晶显示器并不陌生。
液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。
在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。
发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。
在单片机系统中应用晶液显示器作为输出器件有以下几个优点:显示质量高由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。
因此,液晶显示器画质高且不会闪烁。
数字式接口液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。
体积小、重量轻液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。
功耗低相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。
10.8.1 液晶显示简介①液晶显示原理液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
②液晶显示器的分类液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。
除了黑白显示外,液晶显示器还有多灰度有彩色显示等。
如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。
③液晶显示器各种图形的显示原理:线段的显示点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。
lcd1602指令解读及基本程序
HD44780内置了DDRAM、CGROM和CGRAM。
CGROM和CGRAM就是内置192个常用字符产生器,用户自定义的字符产生器RAM DDRAM就是显示数据RAM,用来寄存待显示的字符代码。
共80个字节,其地址和屏幕的对应关系如下表:显示位置: 1 2 3 4 5 6 7 8 (40)第一行: 00H 01H 02H 03H 04H 05H 06H 07H ..... 27H第二行: 40H 41H 42H 43H 44H 45H 46H 47H ..... 67H*/1602LCD的RAM地址映射液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在,哪里显示字符,图是1602的内部显示地址。
也就是说想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码就行了。
但具体的写入是要按LCD模块的指令格式来进行的,后面我会说到的。
那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。
第二行也一样用前16个地址。
对应如下:DDRAM地址与显示位置的对应关系图五:LCD1602内部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1,所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。
/*1602液晶模块内部的控制器共有11条控制指令,如下表序号指令RS R/W D7 D6 D5 D4 D3 D2 D1 D01 清显示0 0 0 0 0 0 0 0 0 12 光标返回0 0 0 0 0 0 0 0 1 *3 置输入模式0 0 0 0 0 0 0 1 I/D S4 显示开/关控制0 0 0 0 0 0 1 D C B5 光标或字符移位0 0 0 0 0 1 S/C R/L * *D3=1移字符D3=0移光标D2=1右移D2=0左移6 功能设置0 0 0 0 1 DL N F * *DL=1总线8位DL=0总线4位N=0显单行N=1显双行F=0 5X7点阵F=1 5X10点阵7 置字符发生器地址0 0 0 1 -字符发生存贮器地址(6位)-8 置数据存贮器地址0 0 1 --显示数据存贮器地址(7位)---9 读忙标志或地址0 1 BF ----计数器地址(7位)---------10 写CGRAM或DDRAM 1 0 --------要写的数据内容(8位------11 读CGRAM或DDRAM 1 1 --------读出的数据内容(8位)-----*/// 51单片机对lcd1602一些基础程序/* 基本操作时序:写指令输入:RS=0,RW=0,E=下降沿脉冲,DB0~DB7=指令码输出:无写数据输入:RS=1,RW=0,E=下降沿脉冲,DB0~DB7=数据输出:无读状态输入:RS=0,RW=1,E=1 输出:DB0~DB7=状态字读数据输入:RS=1,RW=1,E=1 输出:DB0~DB7=数据/*//*lcd_1602指令:指令位D7 D6 D5 D4 D3 D2 D1 D0功能设置0 0 1 DL N F * *DL=1总线8位DL=0总线4位N=0显单行N=1显双行F=0 5X7点阵F=1 5X10点阵lcd_1602指令汇总0x28 设置16*2显示,5*7点阵,4位数据接口0x38 设置16*2显示,5*7点阵,8位数据接口0x01 清屏,光标复位到地址00H位置0x02 光标归原点,DDRAM中内容不变,地址计数器AC=0;(此时地址为0x80)0x0F 开显示,显示光标,光标闪烁0x0e 开显示,显示光标,光标不闪烁0x0c 开显示,不显示光标0x08 只开显示0x06 地址加一,当写入数据的时候光标右移设定显示屏或光标移动方向指令0x18 字符全部左移一格,但光标不动0x1c 字符全部右移一格,但光标不动0x10 光标左移1格,且AC值减10x14 光标右移1格,且AC值加1*/#include <intrins.h>#define dataport P1sbit RS=P2^ 6;sbit RW=P2^5;sbit EN=P2^4;void waitfor() //检测忙信号函数{dataport=0xff;RS=0;RW=1; //选择指令寄存器读操作RS=0指令RS=1数据; RW=0写RW=1读EN=1; //使能操作while(dataport&0x80); //如果最高位是1 表示1602正忙原地踏步忙完后芯片会将高位拉低EN=0;}void writedata(unsigned char dataw) //写数据到LCD1602{waitfor(); //测忙RS=1;RW=0; //选择数据寄存器写操作RS=0指令RS=1数据; RW=0写RW=1读dataport=dataw; //将数据送到数据口EN=1;EN=0; //使能下降沿脉冲}void writecmd(unsigned char cmd) //写命令到LCD1602{waitfor(); //测忙RS=0;RW=0; //选择指令寄存器写操作dataport=cmd; //将数据送到数据口EN=1;EN=0; //使能下降沿脉冲}void init(void) // 初始化函数{writecmd(0x38); //功能设定8位数据传输双行显示设置工作方式:0x28=4位总线字符两行显示,0x38=8位总线字符两行显示writecmd(0x0c); //显示器开关writecmd(0x01); //清屏writecmd(0x06); //字符进入模式每进入一个字符光标向右移动一格原有字符不动}void location(unsigned char x,unsigned char y) //坐标函数{unsigned char temp;temp=x&0x0f; //只要x数据的后四位if(y){temp=temp|0x40;} //第一行为0 第二行为1 如果y=1则地址加0x40temp|=0x80; //DDRAM地址的命令DB7为一writecmd(temp);}void DisplayOneChar(unsigned char x,unsigned char y,unsigned char dataw) //显示一个字符函数{location(x,y);writedata(dataw);}void displaylistchar(unsigned char x,unsigned char y,unsigned char *p) //显示字符串{while(*p) //当一个字符型数组读完时*P指的为零{displayonechar(x,y,*(p++));x++;}}void WriteCgram(unsigned char address,unsigned char *p) //写CGRAM的数据{unsigned char i=8;writecmd(address); //CGRAM里的地址初始值0x40 每次加0x80while(i--){writedata(*p);p++;}}void DisplayOneChar(unsigned char x,unsigned char y,unsigned char address,unsigned char *p) //显示一个自定义字符{unsigned char i=8;writecmd(address); //CGRAM里的地址初始值0x40 每次加0x08while(i--){writedata(*p);p++;}location(x,y); //设定要显示的位置writedata((address&=0x3f)/0x08); //要从CGRAM中读出数据在1602上显示搞了半天发现CGRAM里的地址} //和DDRAM里的地址有上面的转换关系void displynumber(unsigned char x,unsigned char y,unsigned long num) //显示一个整数{unsigned int number[8];int k,gh;for(k=0;;k++){*(number+k)=(unsigned int)(num%10);//强制类型转换num=num/10;if(num==0)break;}for(gh=k;gh>=0;gh--){displyonechar(x,y,(*(number+gh)+48));x++;}}//字型码uchar code nian[]={0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02};// "年"uchar code yue[]={0x0f,0x09,0x0f,0x09,0x0f,0x09,0x0b,0x11};// "月"uchar code ri[]={0x1f,0x11,0x11,0x1f,0x11,0x11,0x11,0x1f};// "日"//显示汉字displyonecharacter(0,0,0x40,nian);displyonecharacter(1,0,0x80,yue);displyonecharacter(1,0,0xc0,ri);。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LCD1602指令总结
A B C D E
10101011110011011111 1.显示模式设置
写指令0x38,设置16*2显示,5*7点阵,8位数据接口
2.显示开关以及光标设置指令(两条指令)
1)、一个字节中8位,其中高5位是固定的,0b00001,低3位用DCB从高到底表示,D = 1表示开显示,D = 0表示关显示;
C = 1表示显示光标,C = 0表示不显示光标;B = 1表示光标闪烁,B = 0表示光标不闪烁;
2)、高6位是固定的0b000001;低两位用NS表示,其中N = 1表示读或者写一个字符后,指针自动加1,光标自动加1,N = 0表示读或者写一个字符后,指针自动减1,光标自动减1;S = 1表示写一个字符后,整屏显示左移(N = 1)或右移(N = 0),S = 0表示写一个字符后,整屏显示不移动。
指令 1)备注
0x0C打开屏幕显示,不显示光标(闪烁与否无关紧要)0x0D打开屏幕显示,不显示光标(闪烁与否无关紧要)0x0E打开屏幕显示,显示光标,光标不闪烁
0x0F打开屏幕显示,显示光标,光标闪烁
指令 2)备注
0x04指针光标自动减1,整屏不移动
0x05指针光标自动减1,整屏右移
0x06指针光标自动加1,整屏不移动
0x07指针光标自动加1,整屏左移
3.清屏指令
写入0x01表示显示清屏,且是数据指针清零,显示清零;
写入0x02表示仅数据指针清零,显示不清零;
4.RAM地址设置指令(一般通过自定义函数调用完成)
该指令码的最高位为1,低7位为RAM的地址。
第一排起止地址:0x00 - 0x0F;
第二排起止地址:0x40 - 0x4F;
N S
101000x04 201010x05 301100x06 401110x07。