lcd1602命令

合集下载

LCD1602的11条指令详解

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指令总结

LCD1602指令总结

LCD1602指令总结A B C D E10101011110011011111 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 S101000x04 201010x05 301100x06 401110x07。

LCD1602中文资料程序和使用说明

LCD1602中文资料程序和使用说明

LCD1602中文资料程序和使用说明一、硬件连接和初始化步骤:1.将LCD1602的16个引脚连接到MCU(单片机)的相应引脚上。

其中,VCC和GND分别接到电源正负极,VO接到可调电位器的中间引脚(用于调节背光亮度),RS、RW和E分别接到MCU的IO口上,D0-D7分别接到MCU的8个IO口上。

2.初始化LCD1602的操作包括设置显示模式、显示光标、输入模式等,具体步骤如下:a.将8位数据接口设置为并行输入模式,即设置D0-D3为输入模式。

b.设置显示模式为2行显示,5x8点阵字符,显示器不移动。

c.将显示光标设置为闪烁显示。

d.设置数据输入方式为向右移动,同时字符显示不移动。

e.清除显示内容,将光标位置设置为第一行第一列。

f.打开显示器和光标显示功能。

二、常用函数和操作方法:1. void lcd1602_init( 初始化LCD1602,包括上述硬件连接和初始化步骤。

2. void lcd1602_clear( 清除显示内容。

3. void lcd1602_setCursor(int row, int column) 设置光标位置,row表示行数(从0开始),column表示列数(从0开始)。

4. void lcd1602_print(String str) 在当前光标位置打印字符串str。

5. void lcd1602_shiftDisplayLeft( 将显示内容向左移动一位。

6. void lcd1602_shiftDisplayRight( 将显示内容向右移动一位。

7. void lcd1602_scrollDisplayLeft( 将整个显示内容向左滚动一格。

8. void lcd1602_scrollDisplayRight( 将整个显示内容向右滚动一格。

9. void lcd1602_noCursor( 关闭光标显示。

10. void lcd1602_cursor( 打开光标显示。

电子教案《微机控制技术项目教程》(汤平)课件lcd1602操作命令

电子教案《微机控制技术项目教程》(汤平)课件lcd1602操作命令

(4)LCD1602的操作命令LCD1602一共有11条指令,它们的格式和功能如下:①清屏指令功能:清除屏幕②光标复位命令功能:光标复位,回到显示器的左上角。

③输入方式设置命令功能:设定当写入一个字节后,光标的移动方向以及后面的内容是否移动。

当I/D=1时,光标从左向右移动;I/D=0时,光标从右向左移动。

当S=1时,内容移动,S=0时,内容不移动。

④显示状态设置命令功能:控制显示的开关,控制光标开关以及控制字符是否闪烁,当D=1时屏幕显示,D=0时屏幕不显示。

当C=1时光标显示,C=0时光标不显示。

当B=1时字符闪烁,B=0时字符不闪烁。

⑤光标画面滚动设置命令功能:移动光标或整个显示字幕移位。

当S/C=1时整个显示字幕移位,当S/C=0时只光标移位。

当R/L=1时光标右移,R/L=0时光标左移。

⑥工作方式设置命令功能:设置数据位数,当DL=1时数据位为8位,DL=0时数据位为4位。

当N=1时双行显示,N=0时单行显示。

当F=1时5×10点阵,F=0时为5×7点阵。

⑦设置字库CGRAM地址命令⑧设置数据存贮器地址命令⑨读忙标志BF及地址计数器AC命令功能:读忙标志及地址计数器AC,当BF=1时则表示忙,这时不能接收命令和数据;BF=0时表示不忙。

低7位为读出的AC的地址,值为0~127。

⑩写DDRAM或CGRAM命令功能:向DDRAM或CGRAM当前位置中写入数据。

对DDRAM或CGRAM写入数据之前须设定DDRAM或CGRAM的地址。

○11读DDRAM或CGRAM命令功能:从DDRAM或CGRAM当前位置中读取数据。

当向DDRAM或CGRAM读出数据时须设定DDRAM或CGRAM的地址。

lcd1602

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指令集解读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中文资料(程序和使用说明)

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指令解读及基本程序

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);。

LCD1602指令集

LCD1602指令集
高电平
读数据
LCD1602字符型液晶显示模块指令集
指令
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
功能
执行时间
1.清屏
0
0
0
0
0
0
0
0
0
1
清除DDRAM和AC值,光标复位。
1.64us
2.归位
0
0
0
0
0
0
0
0
1
*
AC=0,光标复位、DDRAM内容不变。
1.64us
3.输入方式设置
0
0
0
1
0
*
*
画面向左平移一个字符位,但光标不动。
1
1
*
*
画面向右平移一个字符位,但光标不动。
6.功能设置
0
0
0
0
1
0
0
0
*
*
四位数据接口,一行显示,5x7点阵
40us
0
0
1
*
*
四位数据接口,一行显示,5x10点阵
0
1
0
*
*
四位数据接口,两行显示,5x7点阵
0
1
1
*
*
四位数据接口,两行显示,5x10点阵
1
LCD1602引脚说明
引脚编号
符号
引脚说明
1
VSS
接地
2
VDD
电源5v
3
VL
液晶显示偏压
4
RS
数据/命令选择。高电平时选择数据寄存器,低电平时选择指令寄存器。

LCD1602显示模块控制指令

LCD1602显示模块控制指令
(3)指令3:读/写方式下的光标和显示模式设置命令。
I/D:
表示地址计数器的变化情况,即光标的移动方向。
I/D=1:计数器地址自动加1,光标右移一字符位置。
I/D=0:计数器地址自动减1,光标左移一字符位置。
S:
显示屏上画面向左或向右全部移动一个字符位。
S=1,I/D=1:显示画面左移;S=1,I/D=0:显示画面右移
序号
11指令
清显示
光标返回
置输入模式
显示开/关控制
光标或字符移动
置功能
置字符存储器地址
置数据存储器地址
读忙标志或地址
写数到CGRAM或DDRAM
RS 01R/W 10
1D1
BF D1DD400001DL D30001
S/C
N D2001D R/L F D101I/D C **D01*S B **字符发生器存储地址(AGG)显示数据存储器地址(ADD)计数器地址(AC)
(10)指令10:写数据。
(11)指令11:读数据。
要写的数据内容
读出的数据内容
从CGRAM或DDRAM读数1:增量/减量
S=1:全显示屏移动:显示屏移动/光标移动:左移/右移
:8位/4位
:2行/1行
:5*10点阵/5*7点阵:内部操作正在进行/允许指令操作
*:
无关项
(1)指令1:清显示,光标复位到地址00H位置。
(2)指令2:光标复位,光标返回到地址00H.
(6)指令6:功能设置命令。
DL=1时:
内部数据总线为4位宽度DB7~DB4;DL=0时,内部总线为8位宽度。
N=0时,单行显示;N=1时,双行显示。F=0时,显示字形5*7点阵;F=1时,5*10。

LCD1602中文资料

LCD1602中文资料

LCD1602中文资料1.接线说明:VSS:接地连接VDD:电源正极连接,通常为+5VVO:用于设置液晶对比度,通过接一个可变电位器或一个固定电阻和电位器的连接来实现RS:命令/数据选择引脚,高电平用于数据输入,低电平用于指令输入RW:读/写选择引脚,高电平为读模式,低电平为写模式E:使能引脚,通过控制其高低电平实现数据的写入或读取D0-D7:数据引脚,用于传输数据2.初始化:在使用LCD1602之前,需要对其进行初始化设置。

初始化的步骤如下:第一步:确保电源正常,并将VSS、VDD、RS、RW、E连接到正确的电源脚上第二步:发送一些初始化命令给LCD1602,如设置显示模式、清除显示等第三步:设置光标位置,并发送要显示的字符或字符串3.命令与指令:在LCD1602中,使用命令来控制其各种功能。

命令通过RS引脚输入,RW引脚为低电平(写模式)。

以下是一些常用的LCD1602命令:清除显示:发送命令0x01,清除屏幕上的所有字符,并将光标返回到起始位置设置光标位置:发送命令0x80+地址,地址范围为0x00-0x27(第一行)和0x40-0x67(第二行)设置显示模式:发送命令0x08+模式,模式为二进制数-模式0:光标不显示-模式1:光标显示,不闪烁-模式2:光标显示,闪烁-模式3:光标不显示,但开启自动右移-模式4:光标不显示,但开启自动左移4.数据输入:在LCD1602中,数据可以通过RS引脚为高电平(数据输入),RW引脚为低电平(写模式),以及E引脚的控制来进行输入。

以下是一些数据输入的示例:发送字符:将字符的ASCII码通过D0-D7引脚发送给LCD1602发送字符串:将字符串中的字符依次发送给LCD1602,必要时使用设置光标位置的命令来控制显示位置5.其他功能:除了上述基本功能外,LCD1602还提供其他一些有用的功能:显示开关:通过发送命令0x08+显示开关的模式来控制显示的开关光标和光标位置设置:通过发送命令0x08+光标和位置的模式来控制光标的显示和位置显示滚动:通过发送命令0x18+滚动模式来实现显示的滚动效果总结:通过上述的使用说明,可以看出,LCD1602是一款方便易用的液晶显示屏。

LCD1602指令

LCD1602指令

液晶1602指令一、引脚第1脚:VSS为电源接地端第2脚:VDD为5V电源输入端第3脚:VO为液晶显示器对比度调整段接正电源时对比度最弱,接电源地时对比度最高,对比度过高时会产生“鬼影”,使用时可通过一个10K的电位器调整对比度。

第4脚:RS为寄存器选择高电平时选择数据寄存器,低电平时选择指令寄存器。

第5脚:RW为读写信号线高电平时进行读操作,低电平进行写操作。

当RS和RW共同为低电平时可以写入指令或显示地址;当RS为低电平,RW为高电平时可以读忙信号;当RS为高电平,RW为低电平时进行写入数据。

第6脚:E端为是能端当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

第15~16脚:空脚1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示。

这些字符有:阿拉伯数字、英文大小写、常用字符和日文假名等。

每个字符都有一个固定的代码,比如大写的英文字母“A”的代码是0100 0001B(41H),显示时地址41H的点阵字符图形显示出来,我们就能看到字母“A”。

二、控制命令1602液晶模块内部的控制器共有11条控制指令。

第1条:清显示(0x01H)RS RW D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 0 0 0 0 0 1第2条:光标复位(0x02H或0x03H)RS RW D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 0 0 0 0 1 *第3条:设置输入模式RS RW D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 0 0 0 1 I/D S 第4条显示开/关控制RS RW D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 0 0 1 D C B 第5条光标或者字符移位RS RW D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 0 1 S/C R/L * * 第6条功能设置RS RW D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 1 DL N F * *第7条字符发生存储器地址RS RW D7 D6 D5 D4 D3 D2 D1 D00 0 0 1 字符发生器地址(AGG)第8条数据存储器地址RS RW D7 D6 D5 D4 D3 D2 D1 D00 0 1 显示数据存储器地址(ADD)第9条读取忙标志或者地址RS RW D7 D6 D5 D4 D3 D2 D1 D00 1 BF 计数器地址(AC)第10条写数据到CGRAM或者DDRAMRS RW D7 D6 D5 D4 D3 D2 D1 D01 0 写入的数据第11条CGRAM或者DDRAM读取数据RS RW D7 D6 D5 D4 D3 D2 D1 D01 1 读取的数据三、各控制命令的作用指令1:清屏指令码0x01H,光标复位到地址0x00H位置。

lcd1602的用法

lcd1602的用法

LCD1602的用法一、简介LCD1602是一款常用的液晶显示模块,它具有16x2的字符显示能力,可以显示基本的英文、数字和符号。

通过与微处理器或单片机等控制器的连接,可以实现各种数据和信息的显示。

二、硬件连接1. 电源:LCD1602模块需要5V电压供电,可以使用USB转RS232接口或直接连接5V电源。

2. 数据线:LCD1602模块需要连接数据线才能与控制器通信。

常见的连接方式是使用4条数据线:RS、RW、E。

其中RS线控制亮灭,RW线控制光标,E线控制开关。

3. 地线:通常需要连接一个公共地线,以使电路稳定。

三、软件实现以下是一个简单的示例代码,使用C语言和LCD1602模块实现显示字符串的功能:```c#include <reg52.h> // 包含8051单片机寄存器定义#include <lcd1602.h> // 包含LCD1602驱动库文件// 声明LCD1602结构体变量LCD1602 lcd;void main() {// 初始化LCD1602模块lcd_init(&lcd);lcd_clear(&lcd); // 清空屏幕// 显示字符串"Hello, world!"lcd_puts(&lcd, "Hello, world!");// 等待一段时间,以便观察显示效果delay(500);}```四、常用命令LCD1602模块支持一些常用的命令,如光标移动、清屏、显示文本等。

具体命令可以参考LCD1602驱动库文档。

五、注意事项1. LCD1602模块的字符宽高比为4:5,因此需要调整显示的字符大小以适应屏幕。

2. 需要根据具体的应用场景和硬件配置选择合适的LCD1602模块和驱动库。

不同的模块和库可能存在差异,需要参考相应的文档进行操作。

3. 在实际应用中,需要考虑与其他设备的接口和控制方式,确保数据传输的正确性和稳定性。

lcd1602指令集

lcd1602指令集

HD44780内置了DDRAM、CGROM和CGRAM。

DDRAM就是显示数据RAM,用来寄存待显示的字符代码。

共80个字节,其地址和屏幕的对应关系如下表:也就是说想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码就行了。

但具体的写入是要按LCD模块的指令格式来进行的,后面我会说到的。

那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。

第二行也一样用前16个地址。

对应如下:DDRAM地址与显示位置的对应关系(事实上我们往DDRAM里的00H地址处送一个数据,譬如0x31(数字1的代码)并不能显示1出来。

这是一个令初学者很容易出错的地方,原因就是如果你要想在DDRAM 的00H地址处显示数据,则必须将00H加上80H,即80H,若要在DDRAM的01H处显示数据,则必须将01H加上80H即81H。

依次类推。

大家看一下控制指令的的8条:DDRAM地址的设定,即可以明白是怎么样的一回事了)1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下表所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B (41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”上表中的字符代码与我们PC中的字符代码是基本一致的。

因此我们在向DDRAM 写C51字符代码程序时甚至可以直接用P1='A'这样的方法。

PC在编译时就把“A”先转为41H代码了。

字符代码0x00~0x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),就是CGRAM了。

后面我会详细说的。

0x20~0x7F为标准的ASCII码,0xA0~0xFF为日文字符和希腊文字符,其余字符码(0x10~0x1F及0x80~0x9F)没有定义。

lcd1602反白指令

lcd1602反白指令

lcd1602反白指令
LCD1602反白指令通常是指在使用LCD1602液晶显示器时,通过特定的指令或操作,将显示内容进行反白处理,即将原本显示的字符或图像进行翻转或反色显示。

具体的反白指令或操作方法可能因不同的控制器和驱动程序而有所不同。

一般来说,你可以通过查阅LCD1602的控制器或驱动程序的文档,了解如何发送反白指令或执行反白操作。

这些文档通常会提供相关的寄存器地址、命令或操作码等信息。

需要注意的是,反白指令可能会对显示内容造成不可逆的影响,因此在执行反白操作之前,请务必备份原始数据或确保你能够还原显示内容。

同时,不同型号的LCD1602可能会有不同的反白指令或操作方式,建议参考具体的产品说明书或联系厂家获取准确的信息。

lcd1602指令说明

lcd1602指令说明
lcd1602指令说明
lcd1602是一种工业字符型液晶,能够同时显示16x02即32个字符。
lcd1602液晶显示原理lcd1602液晶显示的原理是利用液晶的物理特性,通过
电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
lcd1602指令表:
lcd1602液晶模块内部的控制器共有11条控制指令,如下表
则无效。
指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开
显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电
平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时
移动光标。
指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位
以将光标定位在第二高电平1所以实际写入的数据应该是01000000B
(40H)+10000000B(80H)=11000000B(C0H)。
在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符
时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是
指令11:读数据。
lcd1602RAM地址映射及标准字库表:
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确
认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先
输入显示字符地址,也就是告诉模块在哪里显示字符,下图是lcd1602的内
部显示地址。
例如第二行第一个字符的地址是40H,那幺是否直接写入40H就可
否处于忙的状态。lcd1602液晶模块内部的字符发生存储器(CGROM)已经
存储了160个不同的点阵字符图形,如上图所示,这些字符有:阿拉伯数

Arduino LCD1602 I2C 命令详解

Arduino LCD1602 I2C 命令详解

1 LiquidCrystal()2 begin()3 clear()4 home()5 setCursor()6 write()7 print()8 cursor()9 noCursor()10blink()11 noBlink()12 display()13 noDisplay()14 scrollDisplayLeft()15 scrollDisplayRight()16 autoscroll()17 noAutoscroll()18 leftToRight()19 rightToLeft()20 createChar()1 LiquidCrystal()功能创建一个LiquidCrystal的实例(构造函数).可使用4线或8线方式作为数据线(请注意,还需要指令线).若采用四线方式,将d0-d3悬空不连接.RW引脚可接地而不用接在Arduino的某个引脚上;如果这样接,省略在函数中的rw参数.语法LiquidCrystal(rs, enable, d4, d5, d6, d7)LiquidCrystal(rs, rw, enable, d4, d5, d6, d7)LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)参数rs: rs连接的Arduino的引脚编号rw: rw连接的Arduino的引脚编号enable:enable连接的Arduino的引脚编号d0, d1, d2, d3, d4, d5, d6, d7: 连接的Arduino的引脚编号2 begin ()功能指定显示屏的尺寸(宽度和高度)。

语法lcd.begin(cols, rows)参数lcd: 液晶类型的名称变量cols: 显示器可以显示的列数(1602是16列)rows: 显示器可以显示的行数(1602是2行)功能清楚LCD屏幕上内容,并将光标置于左上角。

LCD1602主要参数引脚功能及初始化方法

LCD1602主要参数引脚功能及初始化方法

LCD1602主要参数引脚功能及初始化方法主要参数:
1.显示形式:16列2行
2.字符点阵:5×8
4.工作电压:通常为5V(可以根据具体情况使用3.3V)
5.工作温度:通常为0℃-50℃
6.亮度调节:可通过外部电位器进行调节
引脚功能:
1.VSS:地线
2.VDD:电源正极
3.V0:液晶对比度电压
4.RS:命令/数据选择信号
5.RW:读/写选择信号
6.EN:使能信号
7.D0-D7:数据线
8.A:LED背光正极
9.K:LED背光负极
10.VCC:电源正极
初始化方法:
使用LCD1602之前,需要进行初始化设置,下面是一个常用的初始化方法。

1.将RS、RW、EN、D0-D7引脚连接到相应的控制线和数据线上。

2.将VSS、VDD、V0引脚连接到地线、电源正极、对比度电压上。

3.将A、K引脚连接到背光电源的正负极。

4.给LCD1602供电(一般为5V),确保电源正极(VDD)和地线(VSS)正确连接。

5.使用控制信号依次发送以下命令进行初始化:
a.设置显示模式(DL=1,显示2行;DL=0,显示1行)
b.清屏指令(清除显示内容)
c.设置输入模式(光标移动方向和是否显式移位)
d.设置显示控制(开启显示、光标和光标闪烁)
e.设置光标起始位置(通常为第一行第一列)
6.初始化完成后,即可使用LCD1602进行字符的显示和控制。

(整理)LCD1602汇编程序.

(整理)LCD1602汇编程序.

(整理)LCD1602汇编程序.LCD1602汇编程序;* 描述: LCD1602 滚动显示*;* 显示方式:*;* 1、从左到右逐字显示,闪动二次,清屏。

*;* 2、再从右到左逐字显示,闪动二次,清屏。

*;* 3、周期性地重复上述显示方式。

*;************************************************************** ***** LCD_RS EQU P2.0LCD_RW EQU P2.1LCD_EN EQU P2.2;************************************************************** ***** ORG 0000HAJMP MAINORG 0030H;************************************************************** ***** MAIN:MOV SP,#60HMOV R4,#02H ;设置闪烁次数ACALL LCD_INITMAIN1:ACALL LCDSET1MOV DPTR,#CHAR1ACALL WRITE1 ;MOV A,#0C0H ;显示第二行左边第一位位置ACALL LCD_CMDMOV DPTR,#CHAR2 ;显示ACALL WRITE1ACALL DELAY4 ;延时ACALL DELAY4ACALL SHAN ;闪烁两次ACALL LCDSET2MOV DPTR,#CHAR3 ;ACALL WRITE1MOV A,#0C0H ;显示第二行右边第一位位置ACALL LCD_CMDMOV DPTR,#CHAR4 ;显示ACALL WRITE1ACALL DELAY4 ;延时ACALL DELAY4ACALL SHAN ;闪烁两次ACALL MAIN1;************************************************************** *;LCD初始化设定子程序;************************************************************** * LCD_INIT:ACALL DELAY5MS ;延时15MSACALL DELAY5MS ;等待LCD 电源稳定ACALL DELAY5MSMOV A,#38H ;16*2 显示,5*7 点阵,8 位数据ACALL LCD_CMD_NC ;不进行LCD 忙检测ACALL DELAY5MSMOV A,#38H ;16*2 显示,5*7 点阵,8 位数据ACALL LCD_CMD_NC ;不进行LCD 忙检测ACALL DELAY5MSMOV A,#38H ;16*2 显示,5*7 点阵,8 位数据ACALL LCD_CMD_NC ;不进行LCD 忙检测ACALL DELAY5MSMOV A,#08H ;显示关ACALL LCD_CMD ;进行LCD 忙检测MOV A,#01H ;清除屏幕ACALL LCD_CMD ;进行LCD忙检测MOV A,#06H ;移动光标ACALL LCD_CMD ;进行LCD 忙检测MOV A,#0CH ;显示开,关光标ACALL LCD_CMD ;进行LCD 忙检测RET;************************************************************** * ;显示位置与移动光标设定;************************************************************** * LCDSET1:MOV A,#01H ;清除屏幕ACALL LCD_CMDACALL DELAY5MSMOV A,#06H ;移动光标(光标加1)ACALL LCD_CMDACALL DELAY5MSMOV A,#80H ;显示第一行左边第一位位置ACALL LCD_CMDACALL DELAY5MSRETLCDSET2:MOV A,#01H ;清除屏幕ACALL LCD_CMDACALL DELAY5MSMOV A,#06H ;移动光标(光标减1)ACALL LCD_CMDACALL DELAY5MSMOV A,#80H ;显示第一行右边第一位位置ACALL LCD_CMDACALL DELAY5MSRET;************************************************************** * ;写指令数据到LCD;RS=L,RW=L,D0-D7=指令码,E=高脉冲;************************************************************** * LCD_CMD:ACALL CHECKBUSYLCD_CMD_NC:CLR LCD_RSCLR LCD_RWMOV P0,ASETB LCD_ENNOPNOPNOPNOPCLR LCD_ENRET;************************************************************** * ; 发送字符串子程序;************************************************************** * WRITE1:MOV R0,#16WRITE0:CLR AMOVC A,@A+DPTRINC DPTRACALL LCD_WDATACALL DELAY ;加延时形成滚动效果DJNZ R0,WRITE0RET;************************************************************** * ;写显示数据到LCD;RS=H,RW=L,D0-D7=数据,E=高脉冲;************************************************************** * LCD_WDATA:ACALL CHECKBUSYSETB LCD_RSCLR LCD_RWMOV P0,ASETB LCD_ENNOPNOPNOPNOPCLR LCD_ENRET;************************************************************** * ;检测LCD 控制器忙状态;读数据;RS=L,RW=H,E=H,输出:D0-D7=数据;************************************************************** * CHECKBUSY:PUSH ACCMOV P0,#0FFHCLR LCD_RSSETB LCD_RWSETB LCD_ENBUSYLOOP:NOPJB P0.7,BUSYLOOPCLR LCD_ENPOP ACCRET;************************************************************** * ;闪烁子程序;************************************************************** * SHAN:MOV A,#08H ;关闭显示ACALL LCD_CMDACALL DELAY4MOV A,#0CH ;开显示,关闭光标ACALL LCD_CMDACALL DELAY4DJNZ R4,SHANMOV R4,#02H ;设置闪烁次数RET;************************************************************** * ;延时120MS 子程序;发送字符串时使用;************************************************************** * DELAY:MOV R7,#240DL1: MOV R6,#250DL2: DJNZ R6,DL2DJNZ R7,DL1RET;************************************************************** * ;延时800MS 子程序;闪烁时使用;************************************************************** * DELAY4:MOV R0,#40DL3: MOV R1,#100DL4: MOV R2,#100DL5: DJNZ R2,DL5DJNZ R1,DL4DJNZ R0,DL3RET;************************************************************** * ;延时5MS子程序;LCD初始化使用;************************************************************** * DELAY5MS:MOV R1,#10DL6: MOV R2,#249DL7: DJNZ R2,DL7DJNZ R1,DL6RET;************************************************************** * ;延时1MS子程序;************************************************************** * DELAY1MS:MOV R6,#14H ;20DL8: MOV R7,#19H ;25DL9: DJNZ R7,DL9DJNZ R6,DL8RET;************************************************************** * CHAR1:DB "Welcome to Cras-"CHAR2:DB " yBoye WorkGroup"CHAR3:DB " QQ: 15910380 "CHAR4:DB "TEL: 139********";************************************************************** *END12864汇编程序X EQU 26H ;LCD 地址变量RS EQU P2.0RW EQU P2.1EN EQU P2.2PSB EQU P2.3RST EQU P2.5ORG 0000HJMP MAINORG 0003H ;外部中断INT0入口地址MAIN:MOV SP,#40HMOV A,#00HMOV R0,#20HLOOP0: MOV @R0,A ;20H-26H清零INC R0CJNE R0,#27H,LOOP0MOV IE,#81H ;允许总中断中断,使能INT0 外部中断MOV TCON,#01H ;触发方式为脉冲负边沿触发SETB RSTNOPSETB PSB ;8位数据,并口CALL SET_LCD ;初始化TS12864mCALL MENU1CALL MENU2CALL MENU3CALL MENU4LOOP1:MOV A,22HCJNE A,#40H,LOOP2LOOP2: CJNE A,#04H,LOOP3LOOP3: JMP LOOP1;====================================== =======; LCD 初始化设置;====================================== =======-SET_LCD:CLR ENMOV A,#34H ;34H--扩充指令操作CALL WCOMMOV A,#30H ;30H--基本指令操作CALL WCOMMOV A,#0CH ;开显示,关光标,CALL WCOMMOV A,#01H ;清除LCM 显示屏CALL WCOMRET;====================================== ============= ;在LCM 各行显示信息字符;====================================== ============= LCD_SHOW:CJNE A,#1,LINE2 ;判断是否为第一行LINE1: MOV A,#80H ;设置LCD 的第一行地址CALL WCOM ;写入命令CALL CLR_LINE ;清除该行字符数据MOV A,#80H ;设置LCD 的第一行地址CALL WCOM ;写入命令JMP FILLLINE2: CJNE A,#2,LINE3 ;判断是否为第三行MOV A,#090H ;设置LCD 的第三行地址CALL WCOM ;写入命令CALL CLR_LINE ;清除该行字符数据MOV A,#090H ;设置LCD 的第三行地址CALL WCOMJMP FILLLINE3: CJNE A,#3,LINE4 ;判断是否为第三行MOV A,#088H ;设置LCD 的第三行地址CALL WCOM ;写入命令CALL CLR_LINE ;清除该行字符数据MOV A,#088H ;设置LCD 的第三行地址CALL WCOMJMP FILLLINE4: CJNE A,#4,LINE5 ;判断是否为第三行MOV A,#098H ;设置LCD 的第三行地址CALL WCOM ;写入命令CALL CLR_LINE ;清除该行字符数据MOV A,#098H ;设置LCD 的第三行地址CALL WCOMFILL: CLR A ;填入字符MOVC A,@A+DPTR ;由消息区取出字符CJNE A,#0,LC1 ;判断是否为结束码LINE5: RETLC1: CALL WDA TA ;写入数据INC DPTR ;指针加1JMP FILL ;继续填入字符RET;====================================== =========== ;清除该行LCM 的字符;====================================== =========== CLR_LINE:MOV R0,#16CL1: MOV A,#' 'CALL WDATADJNZ R0,CL1RET;====================================== ============ ;LCM 显示工作菜单信息;====================================== ============ MENU1:MOV DPTR,#MENU1AMOV A,#1 ;在第一行显示信息CALL LCD_SHOWRETMENU1A: DB "MUC 控制GPRS模块",0MENU2:MOV DPTR,#MENU2AMOV A,#2 ;在第二行显示信息CALL LCD_SHOWRETMENU2A: DB "TEL:139********",0MENU3:MOV DPTR,#MENU3AMOV A,#3 ;在第三行显示信息CALL LCD_SHOWRETMENU3A: DB "方案设计: 龚伟",0MENU4:MOV DPTR,#MENU4AMOV A,#4 ;在第四行显示信息CALL LCD_SHOWRETMENU4A: DB "程序编写: 靳鹏",0;====================================== ======== ; 写指令使能子程序;RS=L,RW=L,D0-D7=指令码,E=高脉冲;====================================== ======== WCOM:MOV P0,ACLR RSCLR RWSETB ENCALL DELAY0CLR ENRET;====================================== ======= ;写数据使能子程序;RS=H,RW=L,D0-D7=数据,E=高脉冲;=============================================WDATA:MOV P0,ASETB RSCLR RWSETB ENCALL DELAY0CLR ENRETDELAY0: MOV R7,#250 ;延时500微秒DJNZ R7,$RET END。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1602型LCD介绍
现在的字符型液晶模块已经是单片机应用设计中最常用的信息显示器件了。

1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点。

1602型LCD可以显示2行16个字符,有8位数据总线D0~D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。

1. 外型尺寸:80X36X13(LXWXH)
2.接口信号说明
1602型LCD的接口信号说明如表1-11所示.
3.主要技术参数
1602型LCD的主要技术参数如下:
4.基本操作程序
读状态:输入:RS=L,RW=H,E=H 输出:D0~D7=状态字
读数据:输入:RS=H,RW=H,E=H 输出:无
写指令:输入:RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:D0~D7=数据
写数据:输入:RS=H,RW=L,D0~D7=数据,E=高脉冲输出:无
5.RAM地址映射图
控制器内部带有80字节的RAM缓冲区,对应关系如图11-3所示
6.状态字说明
☆注意每次对控制器进行读写操作之前,都必须进行读写检测,确保STA7为0。

7.数据指针设置
控制器内部设有一个数据地址指针,用户可以通过它们访问内部的全部80字的RAM。

8.其它设置
9.初始化设置
(1)显示模式设置
显示开/关及光标设置。

相关文档
最新文档