LCD1602最好最详细的中文资料

合集下载

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中文最详细的解释

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中文资料

LCD1602中文资料1. 简介LCD1602是一种常见的液晶显示模块,它具有两行,每行可以显示16个中文字符或32个英文字母字符。

它广泛应用于数字仪表、电子产品、家电控制、智能家居等领域。

2. 主要特点•显示容量:LCD1602可以同时显示两行,每行可以显示16个中文字符或32个英文字母字符。

•分辨率:每个字符由5 x 8个像素点组成。

•背光控制:可通过控制背光开关来控制显示背光。

•低功耗:LCD1602使用低功耗驱动电路,非常适合电池供电的应用。

•接口简单:LCD1602使用标准的I2C接口进行通信,方便与各种微控制器连接。

3. 硬件连接LCD1602的硬件连接非常简单,只需要将其的VCC引脚连接到3.3V或5V电源,GND引脚连接到地,SDA引脚连接到I2C总线的数据线,SCL引脚连接到I2C总线的时钟线。

以下是连接示意图:SDA ———————————> I2C总线数据线SCL ———————————> I2C总线时钟线VCC ———————————> 3.3V或5V电源GND ———————————> 地4. 软件驱动使用LCD1602显示中文需要相应的软件驱动。

以下是使用Python编写的一个简单的LCD1602驱动代码示例:import smbus2import time# LCD1602的I2C地址ADDRESS =0x27# LCD1602的控制命令LCD_COMMAND =0x80LCD_DATA =0x40def lcd_init():# 初始化LCD1602bus = smbus2.SMBus(1)bus.write_byte(ADDRESS, 0x38) # 设置显示模式为2行,5 x 8个像素点bus.write_byte(ADDRESS, 0x0c) # 打开显示,关闭光标bus.write_byte(ADDRESS, 0x06) # 设置光标移动方向为从左到右bus.write_byte(ADDRESS, 0x01) # 清屏def lcd_write(ch):# 向LCD1602写入字符bus = smbus2.SMBus(1)bus.write_byte(ADDRESS, LCD_DATA)bus.write_byte(ADDRESS, ord(ch))def lcd_display(text):# 在LCD1602上显示文本bus = smbus2.SMBus(1)bus.write_byte(ADDRESS, LCD_COMMAND) for ch in text:bus.write_byte(ADDRESS, ord(ch))# 使用示例lcd_init() # 初始化LCD1602lcd_display('Hello, World!') # 在LCD1602上显示文本5. 示例应用使用LCD1602显示中文可以应用于各种场景,以下是一个使用LCD1602显示温湿度的示例应用:import smbus2import Adafruit_DHT# LCD1602的I2C地址ADDRESS =0x27# LCD1602的控制命令LCD_COMMAND =0x80LCD_DATA =0x40def lcd_init():# 初始化LCD1602bus = smbus2.SMBus(1)bus.write_byte(ADDRESS, 0x38) # 设置显示模式为2行,5 x 8个像素点bus.write_byte(ADDRESS, 0x0c) # 打开显示,关闭光标bus.write_byte(ADDRESS, 0x06) # 设置光标移动方向为从左到右bus.write_byte(ADDRESS, 0x01) # 清屏def lcd_write(ch):# 向LCD1602写入字符bus = smbus2.SMBus(1)bus.write_byte(ADDRESS, LCD_DATA)bus.write_byte(ADDRESS, ord(ch))def lcd_display(text):# 在LCD1602上显示文本bus = smbus2.SMBus(1)bus.write_byte(ADDRESS, LCD_COMMAND)for ch in text:bus.write_byte(ADDRESS, ord(ch))# 使用示例lcd_init() # 初始化LCD1602while True:# 读取温湿度数据humidity, temperature = Adafruit_DHT.read_ret ry(Adafruit_DHT.DHT11, 4)# 在LCD1602上显示温湿度数据lcd_display(f'温度:{temperature}℃湿度:{hu midity}%')time.sleep(2)6. 总结LCD1602是一种常见的液晶显示模块,可以显示中文和英文字符。

lcd1602简介

lcd1602简介

LCD1602简介1. 什么是LCD1602?LCD1602是一种基于液晶显示技术的字符型显示模块,它可以显示16x2个字符。

它广泛应用于嵌入式系统、自动化设备和电子产品等领域,是一款非常常见的显示模块。

2. LCD1602的特性•显示能力强:LCD1602能够显示16列2行共32个字符,每个字符由5x8个像素点组成。

•低功耗:LCD1602的功耗非常低,适合长时间运行的场景。

•用户友好:LCD1602的显示效果清晰,易于阅读,界面简洁直观。

•简易控制:LCD1602的控制方式简单,只需要几条数据线和几个控制信号即可进行基本的显示操作。

3. LCD1602的工作原理LCD1602由一个液晶显示器和一个控制电路板组成。

液晶显示器由16个字符和每个字符5x8的像素点组成,通过液晶分子的电场调整能够控制像素点的亮度。

控制电路板则负责根据用户的指令控制液晶显示器的显示内容。

LCD1602的控制电路采用了并行通信的方式,需要通过几个控制信号和一个数据总线来进行通信。

控制信号包括使能信号(E),读写信号(RW)和数据/命令选择信号(RS)。

数据总线则用于传输数据和命令。

控制LCD1602的步骤大致如下: 1. 发送初始化命令:初始化LCD1602的内部寄存器。

2. 发送显示命令:控制LCD1602显示内容的相关参数,如显示模式、光标设置等。

3. 发送数据:将需要显示的字符数据发送给LCD1602。

4. LCD1602的应用领域由于LCD1602具有简单易用的特点,它被广泛应用于各种嵌入式系统、自动化设备和电子产品中。

一些常见的应用领域包括:•工业自动化:LCD1602可以作为工业设备的人机界面,用于显示设备的状态、参数等信息。

•家电控制:LCD1602可以作为家电设备的显示屏,用于显示时间、温度、湿度等信息。

•智能家居:LCD1602可以作为智能家居系统的控制界面,用于显示和操作系统的各种功能。

•教育培训:LCD1602可以作为教学实验平台的显示模块,用于展示实验结果和相关信息。

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液晶显示完全资料

LCD1602液晶显示完全资料0x18 光标和显示一起向左移动4.显示地址:LCD1602内部RAM显示缓冲区地址的映射图,00~0F、40~4F分别对应LCD1602的上下两行的每一个字符,只要往对应的RAM地址写入要显示字符的ASCII代码,就可以显示出来。

5.读写时序:时序图1602手册中有,这里不引用了。

时序图很重要,编程就是根据时序图设置寄存器,让LCD工作。

二、LCD1602程序编写流程:LCD1602在了解完以上信息后便可以编写,这里我们把程序分为以下几步:1.定义LCD1602管脚,包括RS,R/W,E。

这里定义是指这些管脚分别接在单片机哪些I/O口上。

现举例如下:sbit EN=P3^4;sbit RS=P3^5;sbit RW=P3^6;2.显示初始化,在这一步进行初始化及设置显示模式等操作,包括以下步骤:设置显示方式延时清理显示缓存设置显示模式通常推荐的初始化过程如下:延时15ms写指令38H延时5ms写指令38H延时5ms写指令38H延时5ms注:以上写38H指令可以看情况省略1~2步(以上都不检测忙信号)(以下都要检测忙信号)写指令38H写指令08H 关闭显示写指令01H 显示清屏写指令06H 光标移动设置写指令0cH 显示开及光标设置3.设置显示地址(写显示字符的位置)。

4.写显示字符的数据。

三、LCD1602各子程序模块及主程序编写:现在按照上面编写程序的流程,给出各子程序模块及主程序的例子。

1.头文件,宏定义,定义管脚等:#include<reg52.h>#include <string.h>#define uchar unsigned char#define uint unsigned intsbit EN=P3^4;sbit RS=P3^5;sbit RW=P3^6;uchar code table0[]={"QQ:545699636"}; //此条语句为显示字符串时定义的字符串数组2.LCD1602基本初始化子程序:void LCD1602(){EN=0;RS=1;RW=1;P0=0xff; //这里P0为与LCD D0~D7相连的I/O口}3.读忙子程序:void read_busy(){P0=0xff;RS=0;RW=1;EN=1;while(P0&0x80); //P0和10000000相与,D7位若不为0,停在此处EN=0; //若为0跳出进入下一步;这条语句的作用就是检测D7位} //若忙在此等待,不忙跳出读忙子程序执行读写指令4.写指令写数据子程序:void write(uchar i,bit j){read_busy();P0=i; //其中i=0,写指令;i=1,写数据;RS=j;RW=0;EN=1;EN=0;}5.延时子程序:void delay(uint c) //功能为提供初始化等其他子程序中的延时1xc MS{uint a,b;for(a=0;a<c;a++)for(b=0;b<120;b++);}6.LCD1602初始化子程序:void init() //完全按照要求初始化流程来,中间省略了一步写指令38H{delay(15);write(0x38,0);delay(5);write(0x38,0);write(0x08,0);write(0x01,0);write(0x06,0);write(0x0c,0);}7.显示单个字符子程序:void display_lcd_byte(uchar y,uchar x,uchar z) //Y=0,1(起始行)X=0~15(起始列)Z=想写字符的ASCII码{if(y) //是否显示在第二行(若在第一行Y=0,不进入IF语句,若在第二行,进入IF语句{x+=0x40; //第二行起始地址加上列数为字符显示地址}x+=0x80; //设置数据指针位置write(x,0);write(z,1); //写入数据}8.显示字符串子程序:void display_lcd_text(uchar y,uchar x,uchartable[]) //Y,X同上字符显示,table[]字符串数组{uchar z=0;uchar t;t=strlen(table)+x; // 求得字符串长度加上起始列位置 while(x<t) //功能为LCD显示到字符串最后一个字符,防止字符串{ //没有16个字符,从而不够位产生乱码; display_lcd_byte(y,x,table[z]); //逐位显示数组内字符x++;z++;}}9.主程序:主程序里除了放入初始化程序外就是加入自己编写的显示子程序,根据你所要的不用功能可以编写各种类型的显示子程序,这里不做详细介绍,以下举例为显示一个字符和显示字符串的显示子程序。

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

LCD602中文资料1602字符型LCD简介字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。

下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。

一般1602字符型液晶显示器实物如图10-53:图10-53 1602字符型液晶显示器实物图10.8.2.1 1602LCD的基本参数及引脚功能1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图10-54所示:图10-54 1602LCD尺寸图1602LCD主要技术参数:显示容量:16×2个字符芯片工作电压:4.5—5.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.95×4.35(W×H)mm引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表10-13所示:编号符号引脚说明编号符号引脚说明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 背光源负极表10-13:引脚接口说明表第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脚:背光源负极。

10.8.2.3 1602LCD的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如表10-14所示:表10-14:控制命令表1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

(说明: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:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

指令10:写数据。

指令11:读数据。

与HD44780相兼容的芯片时序表如下:读状态输入RS=L,R/W=H,E=H 输出D0—D7=状态字写指令输入RS=L,R/W=L,D0—D7=指令码,E=高输出无脉冲读数据输入RS=H,R/W=H,E=H 输出D0—D7=数据输出无写数据输入RS=H,R/W=L,D0—D7=数据,E=高脉冲表10-15:基本操作时序表读写操作时序如图10-55和10-56所示:图10-55 读操作时序图10-56 写操作时序10.8.2.4 1602LCD的RAM地址映射及标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。

要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图10-57是1602的内部显示地址。

图10-57 1602LCD内部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。

在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。

每次输入指令前都要判断液晶模块是否处于忙的状态。

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”图10-58 字符代码与图形对应图10.8.2.5 1602LCD的一般初始化(复位)过程延时15mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置10.8.3 1602LCD的软硬件设计实例在1602LCD第一行显示网站名:在第二行显示联系电话:8。

实验前应先将显示切换开关切换到LCD 工作状态。

图10-59 1602LCD实验演示图10.8.3.1 硬件原理图1602液晶显示模块可以和单片机AT89C51直接接口,电路如图10-60所示。

图10-60 硬件原理图10.8.3.2 程序流程图图10-61 软件流程图10.8.3.3 软件代码#include <reg51.h>#include <intrins.h>sbit rs= P2^0;sbit rw = P2^1;sbit ep = P2^2;unsigned char code dis1[] = {""};unsigned char code dis2[] = {"8"};void delay(unsigned char ms){unsigned char i;while(ms--){for(i = 0; i< 250; i++){_nop_();_nop_();_nop_();_nop_();}}}bit lcd_bz(){bit result;rs = 0;rw = 1;ep = 1;_nop_();_nop_();_nop_();_nop_();result = (bit)(P0 & 0x80);ep = 0;return result;}void lcd_wcmd(unsigned char cmd) {while(lcd_bz());//判断LCD是否忙碌rs = 0;rw = 0;ep = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();_nop_();ep = 1;_nop_();_nop_();_nop_();_nop_();ep = 0;}void lcd_pos(unsigned char pos) {lcd_wcmd(pos | 0x80);}void lcd_wdat(unsigned char dat) {while(lcd_bz());//判断LCD是否忙碌rs = 1;rw = 0;ep = 0;P0 = dat;_nop_();_nop_();_nop_();_nop_();ep = 1;_nop_();_nop_();_nop_();_nop_();ep = 0;}void lcd_init(){lcd_wcmd(0x38);delay(1);lcd_wcmd(0x0c);delay(1);lcd_wcmd(0x06);delay(1);lcd_wcmd(0x01);delay(1);}void main(void){unsigned char i;lcd_init();// 初始化LCD delay(10);lcd_pos(0x01);//设置显示位置i = 0;while(dis1[i] != '\0'){lcd_wdat(dis1[i]);//显示字符i++;}lcd_pos(0x42);// 设置显示位置i = 0;while(dis2[i] != '\0'){lcd_wdat(dis2[i]);// 显示字符i++;}。

相关文档
最新文档