LCD1602使用手册-中文详细版

合集下载

lcd1602中文资料

lcd1602中文资料

在日常生活中,我们对液晶显示器并不陌生。

液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用(zhuānyòng)符号和图形。

在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。

发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。

在单片机系统中应用晶液显示器作为输出器件有以下几个(jǐ ɡè)优点:显示(xiǎnshì)质量高由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。

因此(yīncǐ),液晶显示器画质高且不会闪烁。

数字式接口(jiē kǒu)液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。

体积小、重量轻液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。

功耗低相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动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中文资料

液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。

这里介绍的字符型液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等,这里以常用的2行16个字的1602液晶模块来介绍它的编程方法。

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液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”1602液晶模块内部的控制器共有11条控制指令,如表2所示,它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置指令2:光标复位,光标返回到地址00H指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。

LCD1602使用手册-中文详细版

LCD1602使用手册-中文详细版

图1再来一张它的背面的,如图2所示:图2图3图4二.基本操作LCD1602的基本操作分为四种:1. 读状态:输入RS=0,RW=1,E=高脉冲。

输出:D0—D7为状态字。

2. 读数据:输入RS=1,RW=1,E=高脉冲。

输出:D0—D7为数据。

3. 写命令:输入RS=0,RW=0,E=高脉冲。

输出:无。

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

输出:无。

读操作时序图(如图5):图5写操作时序图(如图6):图6时序时间参数(如图7):图7三.DDRAM、CGROM和CGRAMDDRAM(Display Data RAM)就是显示数据RAM,用来寄存待显示的字符代码。

共80个字节,其地址和屏幕的对应关系如下(如图8):图8DDRAM相当于计算机的显存,我们为了在屏幕上显示字符,就把字符代码送入显存,这样该字符就可以显示在屏幕上了。

同样LCD1602共有80个字节的显存,即DDRAM。

但LCD 1602的显示屏幕只有16×2大小,因此,并不是所有写入DDRAM的字符代码都能在屏幕上显示出来,只有写在上图所示范围内的字符才可以显示出来,写在范围外的字符不能显示出来。

这样,我们在程序中可以利用下面的“光标或显示移动指令”使字符慢慢移动到可见的显示范围内,看到字符的移动效果。

前面说了,为了在液晶屏幕上显示字符,就把字符代码送入DDRAM。

例如,如果想在屏幕左上角显示字符‘A’,那么就把字符‘A’的字符代码41H写入DDRAM的00H地址处即可。

至于怎么写入,后面会有说明。

那么为什么把字符代码写入DDRAM,就可以在相应位置显示这个代码的字符呢?我们知道,LCD1602是一种字符点阵显示器,为了显示一种字符的字形,必须要有这个字符的字模数据,什么叫字符的字模数据,看看下面的这个图就明白了(如图9)。

图9上图的左边就是字符‘A’的字模数据,右边就是将左边数据用“○”代表0,用“■”代表1。

从而显示出‘A’这个字形。

LCD1602中文最详细的解释

LCD1602中文最详细的解释

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)显示模式设置
显示开/关及光标设置。

LCD1602串并双口使用说明书

LCD1602串并双口使用说明书

产品使用说明书1602A1字符型液晶显示模块(双接口&带串口)第 1 页,共 29 页目录一、概述--------------------------------------------------------------------------- 3二、主要参数--------------------------------------------------------------------- 3三、接口引脚说明--------------------------------------------------------------- 4四、时序说明--------------------------------------------------------------------- 51、写操作时序与时序图:(MCUàLCM)------------------------------------------ 52、读操作时序与时序图:(LCMàMCU)------------------------------------------ 5五、LCM内部结构-------------------------------------------------------------- 61、指令寄存器(IR)和数据寄存器(DR)-------------------------------------- 62、忙标志位BF ------------------------------------------------------------------------ 63、地址计数器(AC)----------------------------------------------------------------- 64、显示数据寄存器(DDRAM)---------------------------------------------------- 75、字符发生器ROM ------------------------------------------------------------------ 76、字符发生器RAM ------------------------------------------------------------------ 8六、指令说明-------------------------------------------------------------------111、Clear display (清显示)-------------------------------------------------------------112、Return home (归位)----------------------------------------------------------------113、Entry mode set (设置输入模式)-------------------------------------------------124、Display on/off control (显示开/关控制)----------------------------------------125、Cursor or display shift (游标或显示移位元)-----------------------------------126、Function set (功能设置)----------------------------------------------------------137、Set CGRAM address (CGRAM地址设置)-------------------------------------138、Set DDRAM address (DDRAM地址设置)-------------------------------------139、Read busy flag and address (读忙标志BF和AC)-----------------------------1410、Write data to CGRAM or DDRAM(写数据到CGRAM或DDRAM)---------------------------------------------1411、Read data from CGRAM or DDRAM(从CGRAM或DDRAM中读数据)------------------------------------------14七、应用举例--------------------------------------------------------------------151、硬件方面电路----------------------------------------------------------------------152、软件举例----------------------------------------------------------------------------15八、注意事项--------------------------------------------------------------------19第 2 页,共 29 页一、概述:1602A1字符型液晶显示模块是专门用于显示字母、数字元、符号等的点阵型液晶显示模块。

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液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”1602液晶模块内部的控制器共有11条控制指令,如表2所示,它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置指令2:光标复位,光标返回到地址00H指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。

高电平表示有效,低电平则无效指令4:显示开关控制。

D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符指令7:字符发生器RAM地址设置指令8:DDRAM地址设置指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

LCD1602帮助手册

LCD1602帮助手册

LCD1602帮助手册正面图背面图正面图为第一图,管脚应排列在左上方,左边第一脚为管脚1,向右依次为2,3,4………15,16。

背面一般也有标注,并且附带了管脚对应的作用。

其中第三脚VO为对比度调节脚,一般外接滑动变阻器,调节输入的电压,来调节明暗度(可以直接接地,不过直接接地,需要斜着屏幕,才能看见LCD是否显示字符,正面看都是黑黑的一格一格的)。

15,16角一般为背光LED灯源,一个接VCC(一般为15脚),一个接GND(一般为16脚),最好接入限流电阻,不接也可使用,不过会缩短寿命,这两角可以不接,如果不接,在黑暗的室内,显示效果欠佳。

管脚编号如下图所示:管脚对应符号对LCD的操作,有四种操作,分别为:读状态,读数据,写指令和写数据,一般常用的为读状态,写指令和写数据。

操作图如下:当RS端为低电平,RW端为高电平,E为高电平是,对LCD1602的操作为读状态操作,这时,可以对LCD的状态进行读取,读取通过D0~D7的端口读取。

其他操作相似,对照图,即可完成,但是有个读写时序的要求,时序图见下图:读操作时序对LCD进行读操作时,先将RS置为低电平(0V),然后将RW样置为高电平(+5V),然后有个tsp1的延迟(但是一般这个延迟为ns级,一个单片机的指令周期通常都为us级,一般不需要特别延迟,如果程序有一定错误的时候,可以稍微延迟一下),然后再将E置为1,然后延迟td时间(td一般也为ns级,可以适当延迟一点点),然后读取D0~D7的数据。

写操作也是类似的,将RS,RW,E端口进行相应操作即可完成,写数据和写命令的操作,延迟的时间都很短,程序不稳定的话,可以延迟个1us,一般就可以了。

LCD1602的指令有11条,如下图:(指令表)从之前的操作来看,对照此表,不难看出,指令表的前8条都是命令指令,RS,RW都为0,所以操作时,都是写命令操作,D7~D0的数值的不同,代表了操作的不同,比如D0~D7为0x01时,对LCD的操作命令就为清屏显示,第二条指令为光标返回指令,在D0处有个※标记,这表示,不论此位的数据为1还是为0,对此命令都无效,即D0~D7端口写入0x20为光标返回指令,D0~D7端口写入0x03,此命令也为光标返回指令。

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液晶完整中文资料

液晶L C D1602(中文资料)目录1.………………………………………………指令介绍2.………………………………………………显示字符3.………………………………………显示自定义字符4.……………………………………使用4线数据传输1.指令介绍LCD1602已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。

字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,定义如下表所示:字符型LCD的引脚定义HD44780内置了DDRAM、CGROM和CGRAM。

这里的RAM与ROM不懂得话,可以看看我整理的另一篇/ball648500361/blog/item/4332fdf8bf505fd2b48f3 150.htmlDDRAM就是显示数据RAM,用来寄存待显示的字符代码。

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

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

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

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

对应如下:DDRAM地址与显示位置的对应关系我们知道文本文件中每一个字符都是用一个字节的代码记录的。

一个汉字是用两个字节的代码记录。

在PC上我们只要打开文本文件就能在屏幕上看到对应的字符是因为在操作系统里和BIOS里都固化有字符字模。

什么是字模?就代表了是在点阵屏幕上点亮和熄灭的信息数据。

例如“A”字的字模:01110 ○■■■○10001 ■○○○■10001 ■○○○■10001 ■○○○■11111 ■■■■■10001 ■○○○■10001 ■○○○■上图左边的数据就是字模数据,右边就是将左边数据用“○”代表0,用“■”代表1。

LCD1602中文资料(使用说明)

LCD1602中文资料(使用说明)
控制器主要由指令寄存器 IR、数据寄存器 DR、忙标志 BF、地址计数器 AC、DDRAM、CGROM、 CGRAM 以及时序发生电路组成:
z 指令寄存器(IR)和数据寄存器(DR) 本模块内部具有两个 8 位寄存器:指令寄存器(IR)和地址寄存器(DR)。用户可以通过 RS 和 R/W
输入信号的组合选择指定的寄存器,进行相应的操作。下表中列出了组合选择方式。
VIL1
tH
VIH1 VIL1
Valid data
tcycE
VIH1 VIL1
项目 E 周期 E 脉宽(高电平) E 上升/下降时间 地址设置时间(RS,R/WtoE) 地址保持时间 数据设置时间 数据保持时间
符号 tcycE PWEN tEr,tEf tAS tAH tDSW tH
条件
Vdd=5V±5% Vss=0V Ta=25℃
写操作时下降沿有效数据输入输出口mpu与模块之间的数据传送通道数据输入输出口mpu与模块之间的数据传送通道数据输入输出口mpu与模块之间的数据传送通道数据输入输出口mpu与模块之间的数据传送通道数据输入输出口mpu与模块之间的数据传送通道数据输入输出口mpu与模块之间的数据传送通道数据输入输出口mpu与模块之间的数据传送通道数据输入输出口mpu与模块之间的数据传送通道背光的正端5v背光的负端0v4rs5rw6e7db08db19db210db311db412db513db614db74位方式通讯时不使用db0db315a16k四操作时序图1写操作时序通用1602液晶显示模块使用手册email
-6-
z 本模块采用低功耗 CMOS 设计
通用 1602 液晶显示模块使用手册
☆☆☆☆ Email: support@
1 软硬件注解 1-1 模块组件内部结构

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

在日常生活中,我们对液晶显示器并不陌生。

液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。

在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、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使用手册

5.2 读操作时序
项目 使能 E 时钟周期 使能 E 脉宽 使能 E 上升/下降沿时间 地址建立时间( RS,R/W 到 E) 地址保持时间 数据建立时间
符号 tcycE PWEH tE、tEf tAS tAH tDDR
最小值 1000 450 ― 60 20 ―
最大值 ― ― 25 ― ― 360
液晶显示模块 1602 使用手册
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ � � 显示回到原始状态 DDRAM 中的内容不变
7.3 进入模式设置指令 RS 0 R/W 0 D7 0 D6 0 D5 0 D4 0 D3 0 D2 1 D1 I/D D0 S
I/D:DDRAM 地址增加/减少 � � I/D=1,光标或闪烁向右移动,DDRAM 地址增加 1。 I/D=0,光标或闪烁向左移动,DDRAM 地址减少 1。
7.2 归位 RS 0 � � R/W 0 D7 0 D6 0 D5 0 D4 0 D3 0 D2 0 D1 1 D0 ―
归位指令置地址计数器 AC=0 光标回原点
9 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @ 珠联璧合 xlzhu xlzhu@
6. 寄存器 6.1 数据寄存器 DR 数据寄存器用来暂时储存来自 DDRAM/CGRAM 的读写数据。 6.2 指令寄存器 IR 指令寄存器用来储存来自微控制器的指令码。微控制器不能使用它来读取指令数据。 用 户可以通过 RS 和 R/W 信号组合来选择寄存器,进行相应的操作。
RS 0 0 1 1 6.3 忙标志 BF
以上定义了“王”字符,对应字符码为 00H,CGRAM 地址为 0H。 7. 指令描述 7.1 清显示 RS 0 � � � R/W 0 D7 0 D6 0 D5 0 D4 0 D3 0 D2 0 D1 0 D0 1

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数据手册

LCD1602数据手册一、概述LCD1602 是一种广泛应用于各类电子设备中的字符型液晶显示模块。

它具有体积小、功耗低、显示清晰等优点,能够显示 16 个字符乘以 2行的信息,非常适合用于显示简单的文本和数据。

二、基本特性1、显示容量:LCD1602 可以显示 32 个字符,即 16 个字符乘以 2 行。

2、工作电压:通常为 5V 直流电源。

3、显示模式:可以显示字母、数字、符号等多种字符。

4、视角范围:具有一定的可视角度,在不同角度下仍能清晰看到显示内容。

三、引脚功能1、 VSS:接地引脚。

2、 VDD:电源引脚,接+5V 电源。

3、 V0:对比度调整引脚,通过外接电位器来调整液晶显示的对比度。

4、 RS:寄存器选择引脚。

当 RS 为低电平时,选择指令寄存器;当 RS 为高电平时,选择数据寄存器。

5、 RW:读写选择引脚。

当 RW 为低电平时,进行写操作;当 RW 为高电平时,进行读操作。

6、 E:使能引脚,下降沿触发。

7、 D0 D7:数据引脚,用于传输指令和数据。

四、指令集1、清屏指令:将显示缓冲区的内容清除,屏幕显示空白。

2、归位指令:使光标回到起始位置,即第一行第一列。

3、输入方式设置指令:用于设置数据的输入方式,如光标移动方向等。

4、显示开关控制指令:控制显示、光标、闪烁等功能的开启和关闭。

5、光标或显示移位指令:使光标或整个显示内容向左或向右移动。

6、功能设置指令:设定数据长度、行数、字形等参数。

7、 CGRAM 地址设置指令:用于自定义字符的地址设置。

8、 DDRAM 地址设置指令:指定显示数据的存储地址。

五、显示缓冲区LCD1602 内部具有显示缓冲区,通过向缓冲区写入数据来控制显示内容。

第一行的地址为 0x00 0x0F,第二行的地址为 0x40 0x4F。

六、初始化设置在使用LCD1602 之前,需要进行初始化设置,包括设置显示模式、输入方式、显示开关等。

以下是一个常见的初始化流程示例:1、延时 15ms 以上。

lcd1602使用说明,液晶显示屏lcd1602资料,lcd1602资料

lcd1602使用说明,液晶显示屏lcd1602资料,lcd1602资料

2.4.4 液晶显示器1602介绍(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脚(带背光)接口,各引脚接口说明如表2-1所示:编号符号引脚说明编号符号引脚说明1 VSS 电源地9 D2 数据2 VDD 电源正极10 D3 数据3 VL 液晶显示偏压11 D4 数据4 RS 数据/命令选择12 D5 数据5 R/W 读/写选择13 D6 数据6 E 使能信号14 D7 数据7 D0 数据15 BLA 背光源正极8 D1 数据16 BLK 背光源负极表2-1:引脚接口说明表第1脚:VSS为地电源。

第2脚:VDD接5V正电源。

第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

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

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

当RS 和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

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

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

第15脚:背光源正极。

第16脚:背光源负极。

(3)1602LCD的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如表2-2所示:序号指令RSR/WD7 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 1I/DS4 显示开/关控制0 0 0 0 0 0 1 D C B5 光标或字符移位0 0 0 0 0 1S/CR/L* *6 置功能0 0 0 0 1 DL N F * *7 置字符发生存贮器地址0 0 0 1字符发生存贮器地址8 置数据存贮器地址0 0 1 显示数据存贮器地址9 读忙标志或地址0 1 BF 计数器地址10 写数到CGRAM或DDRAM)1 0要写的数据内容11 从CGRAM或DDRAM读数1 1读出的数据内容表2-2:控制命令表1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

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

图1再来一张它的背面的,如图2所示:图2图3图4二.基本操作LCD1602的基本操作分为四种:1. 读状态:输入RS=0,RW=1,E=高脉冲。

输出:D0—D7为状态字。

2. 读数据:输入RS=1,RW=1,E=高脉冲。

输出:D0—D7为数据。

3. 写命令:输入RS=0,RW=0,E=高脉冲。

输出:无。

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

输出:无。

读操作时序图(如图5):图5写操作时序图(如图6):图6时序时间参数(如图7):图7三.DDRAM、CGROM和CGRAMDDRAM(Display Data RAM)就是显示数据RAM,用来寄存待显示的字符代码。

共80个字节,其地址和屏幕的对应关系如下(如图8):图8DDRAM相当于计算机的显存,我们为了在屏幕上显示字符,就把字符代码送入显存,这样该字符就可以显示在屏幕上了。

同样LCD1602共有80个字节的显存,即DDRAM。

但LCD 1602的显示屏幕只有16×2大小,因此,并不是所有写入DDRAM的字符代码都能在屏幕上显示出来,只有写在上图所示范围内的字符才可以显示出来,写在范围外的字符不能显示出来。

这样,我们在程序中可以利用下面的“光标或显示移动指令”使字符慢慢移动到可见的显示范围内,看到字符的移动效果。

前面说了,为了在液晶屏幕上显示字符,就把字符代码送入DDRAM。

例如,如果想在屏幕左上角显示字符‘A’,那么就把字符‘A’的字符代码41H写入DDRAM的00H地址处即可。

至于怎么写入,后面会有说明。

那么为什么把字符代码写入DDRAM,就可以在相应位置显示这个代码的字符呢?我们知道,LCD1602是一种字符点阵显示器,为了显示一种字符的字形,必须要有这个字符的字模数据,什么叫字符的字模数据,看看下面的这个图就明白了(如图9)。

图9上图的左边就是字符‘A’的字模数据,右边就是将左边数据用“○”代表0,用“■”代表1。

从而显示出‘A’这个字形。

从下面的图可以看出,字符‘A’的高4位是010 0,低4位是0001,合在一起就是01000001b,即41H。

它恰好与该字符的ASCII码一致,这样就给了我们很大的方便,我们可以在PC上使用P2=‘A’这样的语法。

编译后,正好是这个字符的字符代码。

在LCD1602模块上固化了字模存储器,就是CGROM和CGRAM,HD44780内置了192个常用字符的字模,存于字符产生器CGROM(Character Generator ROM)中,另外还有8个允许用户自定义的字符产生RAM,称为CGRAM(Character Generator RAM)。

下图(如图12)说明了CGROM和CGRAM与字符的对应关系。

从ROM和RAM的名字我们也可以知道,ROM是早已固化在LCD1602模块中的,只能读取;而RAM是可读写的。

也就是说,如果只需要在屏幕上显示已存在于CGROM中的字符,那么只须在DDRAM中写入它的字符代码就可以了;但如果要显示CGROM中没有的字符,比如摄氏温标的符号,那么就只有先在CGRAM中定义,然后再在DDRAM中写入这个自定义字符的字符代码即可。

和CGROM中固化的字符不同,CGRAM中本身没有字符,所以要在DDRAM中写入某个CGROM不存在的字符,必须在CGRA M中先定义后使用。

程序退出后CGRAM中定义的字符也不复存在,下次使用时,必须重新定义。

图10上面这个图(如图10)说明的是5×8点阵和5×10点阵字符的字形和光标的位置。

先来说5×8点阵,它有8行5列。

那么定义这样一个字符需要8个字节,每个字节的前3个位没有被使用。

例如,定义摄氏温标的符号{0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00}。

图11上面这个图(如图11)说明的是设置CGRAM地址指令。

从这个指令的格式中我们可以看出,它共有aaaaaa这6位,一共可以表示64个地址,即64个字节。

一个5×8点阵字符共占用8个字节,那么这64个字节一共可以自定义8个字符。

也就是说,上面这个图的6位地址中的DB5DB4DB3用来表示8个自定义的字符,DB2DB1DB0用来表示每个字符的8个字节。

这DB5DB4DB3所表示的8个自定义字符(0--7)就是要写入DDRAM中的字符代码。

我们知道,在CGRAM中只能定义8个自定义字符,也就是只有0—7这8个字符代码,但在下面的这个表(如图12)中一共有16个字符代码(××××0000b--××××1111b)。

实际上,如图所示,它只能表示8个自定义字符 (××××0000b=××××1000b, ××××000 1b=××××1001b……依次类推)。

也就是说,写入DDRAM中的字符代码0和字符代码8是同一个自定义字符。

5×10点阵每个字符共占用16个字节的空间,所以CGRAM中只能定义4个这样的自定义字符。

那么如何在CGRAM中自定义字符呢?在上面的介绍中,我们知道有一个设置CGRAM地址指令,同写DDRAM指令相似,只须设置好某个自定义字符的字模数据,然后按照上面介绍的方法,设置好CGRAM地址,依次写入这个字模数据即可。

我们在后面的例子中再进行说明。

四.LCD1602指令1.工作方式设置指令(如图13)图13×:不关心,也就是说这个位是0或1都可以,一般取0。

DL:设置数据接口位数。

DL=1:8位数据接口(D7—D0)。

DL=0:4位数据接口(D7—D4)。

N=0:一行显示。

N=1:两行显示。

F=0:5×8点阵字符。

F=1:5×10点阵字符。

说明:因为是写指令字,所以RS和RW都是0。

LCD1602只能用并行方式驱动,不能用串行方式驱动。

而并行方式又可以选择8位数据接口或4位数据接口。

这里我们选择8位数据接口(D7—D0)。

我们的设置是8位数据接口,两行显示,5×8点阵,即0b00111000也就是0x38。

(注意:NF是10或11的效果是一样的,都是两行5×8点阵。

因为它不能以两行5×10点阵方式进行显示,换句话说,这里用0x38或0x3c是一样的)。

2.显示开关控制指令(如图14)图14D=1:显示开,D=0:显示关。

C=1:光标显示,C=0:光标不显示。

B=1:光标闪烁,B=0:光标不闪烁。

说明:这里的设置是显示开,不显示光标,光标不闪烁,设置字为0x0c。

3.进入模式设置指令(如图15、16)I/D=1:写入新数据后光标右移。

I/D=0:写入新数据后光标左移。

S=1:显示移动。

S=0:显示不移动。

图16说明:这里的设置是0x06。

4.光标或显示移动指令(如图17、18)图17图18说明:在需要进行整屏移动时,这个指令非常有用,可以实现屏幕的滚动显示效果。

初始化时不使用这个指令。

5.清屏指令(如图19)图19说明:清除屏幕显示内容。

光标返回屏幕左上角。

执行这个指令时需要一定时间。

6.光标归位指令(如图20)图20说明:光标返回屏幕左上角,它不改变屏幕显示内容。

7.设置CGRAM地址指令(如图21)图21说明:这个指令在上面已经介绍过。

用法在后面例子中说明。

8.设置DDRAM地址指令(如图22)图22说明:这个指令用于设置DDRAM地址。

在对DDRAM进行读写之前,首先要设置DDRAM地址,然后才能进行读写。

前面我们说过,DDRAM就是LCD1602的显示存储器。

我们要在它上面进行显示,就要把要显示的字符写入DDRAM。

同样,我们想知道DDRAM某个地址上有什么字符,也要先设置DDRAM地址,然后将它读出到单片机。

9.读忙信号和地址计数器AC(如图23)图23说明:这个指令用来读取LCD1602状态。

对于单片机来说,LCD1602属于慢速设备。

当单片机向其发送一个指令后,它将去执行这个指令。

这时如果单片机再次发送下一条指令,由于LCD1602速度较慢,前一条指令还未执行完毕,它将不接受这新的指令,导致新的指令丢失。

因此这条读忙指令可以用来判断LCD1602是否忙,能否接收单片机发来的指令。

当BF=1,表示LCD1602正忙,不能接受单片机的指令;当BF=0,表示LCD160 2空闲,可以接收单片机的指令。

RS=0,表示是指令;RW=1,表示是读取。

这条指令还有一个副产品:即可以得到地址记数器AC的值(address counter)。

LCD1602维护了一个地址计数器AC,用来记录下一次读写CGRAM或DDRAM的位置。

需要强调的是:这条指令我一次也没有执行成功。

很多网友似乎也是这样。

好在我们有另外的办法,也就是延时。

通过查看每条指令的执行时间,再经过一些试验,可以确定指令的延时。

这样就可以在上一条指令执行完毕后再执行下一条指令了。

10.写数据到CGRAM或DDRAM指令(如图24)图24说明:RS=1,数据;RW=0,写。

指令执行时,要在DB7—DB0上先设置好要写入的数据,然后执行写命令。

11.从CGRAM或DDRAM读数据指令(如图25)图25说明:RS=1,数据;RW=1,读。

先设置好CGRAM或DDRAM的地址,然后执行读取命令。

数据就被读入后DB7—DB0。

五.实例下面我们就以一个实例来结束这篇文章。

先介绍一下背景:单片机最小系统(扩充了外部RAM 62256)。

采用STC89C52RC,晶振22.1184MHZ。

以5×8点阵,16×2行,8位数据端口。

首先在第一行显示“I love MCU!”,第二行显示“LCD1602 Test!”。

延时一段时间,清屏。

然后在第一行显示自定义字符:摄氏温标标志。

第二行显示圆周率(pai)标志。

再延时一段时间,清屏。

最后在第一行显示“Welcome to my blog!”,显示方式是从屏幕右面移入,左面移出。

周而复始(如图26)。

图26//File1#ifndef __ZHANGTYPE_H__#define __ZHANGTYPE_H__#define uint8 unsigned char#define uint16 unsigned short int#define uint32 unsigned long int#define int8 signed char#define int16 signed short int#define int32 signed long int#define uint64 unsigned long long int#define int64 signed long long int#endif//File2#ifndef __FUN_H__#define __FUN_H__#include "ZhangType.h"#includevoid Delay(uint16 time);#endif//File3#include "fun.h"void Delay(uint16 time){while(time--);}//File4#ifndef __1602_H__#define __1602_H__#include#include "ZhangType.h" //变量类型#include "fun.h" //常用函数#define SETMODE 0x38 //16*2显示,5*7点阵,8位数据接口#define DISOPEN 0x0C //显示开,不显示光标,光标不闪烁#define DISMODE 0x06 //读写字符后地址加1,屏显不移动#define SETADDR 0x80 //设置数据地址指针初始值#define CLEAR 0x01 //清屏,数据指针清零#define RET 0x02 //回车,数据指针清零#define PORT P2 //I/O口sbit RS = P1^0;sbit RW = P1^1;sbit E = P1^2;void Init1602(void); //初始化1602void Write1602_Com(uint8 com); //写命令void Write1602_Dat(uint8 dat); //写数据void CheckBusy(void); //检查忙void Write1602_One_Dat(uint8 X,uint8 Y,uint8 dat); //写一个数据void Write1602_Str(uint8 addr,uint8 length,uint8 *pbuf); //写一个数据串 #endif////File5#include "1602.h"void Write1602_Com(uint8 com){E=0;RS=0; //命令Delay(50); //延时RW=0; //写Delay(50);PORT=com; //端口赋值Delay(50);E=1; //高脉冲Delay(50);E=0;}void Write1602_Dat(uint8 dat){E=0;RS=1; //数据Delay(50); //延时RW=0; //写Delay(50);PORT=dat; //端口赋值Delay(50);E=1; //高脉冲Delay(50);E=0;}void CheckBusy(void){uint8 temp;RS=0; //命令RW=1; //读E=0;while(1){PORT=0xFF; //端口为输入E=1; //高脉冲temp=PORT;E=0;if ((temp&0x80)==0) //检查BF位是否为0 break;}}void Init1602(void){Write1602_Com(SETMODE); //模式设置Delay(500);Write1602_Com(DISOPEN); //显示设置Delay(500);Write1602_Com(DISMODE); //显示模式Delay(500);Write1602_Com(CLEAR); //清屏Delay(500);}void Write1602_One_Dat(uint8 x,uint8 y,uint8 dat){x&=0x0f;y&=0x01;if(y)x|=0x40;x|=0x80;Write1602_Com(x);Write1602_Dat(dat);}void Write1602_Str(uint8 addr,uint8 length,uint8 *pbuf) {uint8 i;Write1602_Com(addr);for(i=0;i{Write1602_Dat(pbuf[i]);}}//File6******************************************************* *名称:主文件(_main.c)*功能:测试*日期:2014/09/09*******************************************************/#include "1602.h"#include "fun.h"uint8 code hot[8]={ //摄氏温度字模0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00};uint8 code pi[8]={0x00,0x1f,0x0a,0x0a,0x0a,0x13,0x00,0x00 //pai};uint8 code strMCU[]="I love MCU!";uint8 code strTest[]="LCD1602 Test!";uint8 code blog[]="Welcome to my blog!";uint8 i;void main(){Init1602(); //初始化1602//自定义CGRAMWrite1602_Str(0x40,8,hot); //摄氏温标Write1602_Str(0x48,8,pi); //paiWrite1602_Str(0x80,strlen(strMCU),strMCU); //"I love MCU!" Write1602_Str(0x80+0x40,strlen(strTest),strTest); //"LCD1602 Test!"for(i=0;i<50;i++) //延时一段时间Delay(10000);Write1602_Com(CLEAR); //指令执行时间较长Delay(500); //多加一些延时for(i=0;i<16;i++)Write1602_Dat(0);Write1602_Com(0xc0); //设置DDRAM地址for(i=0;i<16;i++)Write1602_Dat(1);for(i=0;i<50;i++) //延时一段时间Delay(10000);Write1602_Com(CLEAR); //指令执行时间较长 Delay(500); //多加一些延时Write1602_Str(0x80+0x10,strlen(blog),blog); //写在显示之外 while(1){Write1602_Com(0x18); //左移for(i=0;i<20;i++) //延时Delay(10000);}}//############################# THE END #############################相关文章LCD1602液晶显示带汉字的万年历程LCD1602液晶显示器 C51模块化程序新唐M051驱动LCD1602液晶屏程序基于51单片机之LCD1602时钟实验例单片机驱动1602液晶电路图及c51程基于51单片机之LCD1602实验例程用1602液晶模块显示汉字和图形LCD1602.h和LCD1602.c文件下载(5LCD1602液晶秒表C51程序51驱动1602液晶显示器c程序。

相关文档
最新文档