1602液晶显示屏显示AWord版
- 格式:doc
- 大小:225.00 KB
- 文档页数:11
L CD1 6 0 2 显示中文汉字LCD1602 显示中文汉字LCD1602 相比大家都比较了解,但是我们一般只用来显示字符,数字。
最近在网上看许多人用LCD1602 来显示汉字,觉得有趣于是拜读了一些资料,教程,但感觉大部分相当晦涩难懂,本人认为既然是教程,就不必要相当的复杂,毕竟人家看完许久后还是不能得出实验结果~!!接下我谈谈我得做法,保证你10分钟之内一样可以在LCD1602 上显示你想显示的各种符号,汉字!!!首先:我们要弄清楚一个概念,其实我们使用1602 显示中文汉字,就是利用其内部的自定义字节空间,我们都知道LCD1602 内部有一个64字节的自定义CGRAM ,那么好,我们就是要利用自定义字节来达到显示汉字的效果. 我们知道一个字符占8 个字节,所以在CGRAM 能够存放8 个字符。
也就是说,这个64 字节的CGRAM 是给我们提供写入数据的,那么我们怎么把我们要的汉字写入CGRAM 呢?不要急,大家查看LCD1602 的用户手册,里面提到当我们需要想CGRAM 写入数据时,我们需要先写入CGRAM 的地址,从手册上可知,CGRAM 的地址为0x40所以当我们要写入数据时,要先写入一条地址命令write_com(0x040); 然后把你要写入的数据通过写数据命令写入write_date( 你要写得数据);做完以上步骤了,是不是LCD1602 就会显示你输入的汉字呢?不要急,以上你只是把你要显示汉字的代码存放在CGRAM 里,就相当于其他常用字符一样固定在LCD 里面了,如果你不把它读出来,LCD 是不会显示当你把上面的步骤做完后,接下来要做的与你平常怎么使用 的,只不过是LCD1602里面增加了一些你自定义的字符,汉字。
可能到这里,也许会有些疑问,既然自定义字符、汉字的代码需要我们自己输 入,那么我该怎么编写这些代码,呵呵,不要着急,接下来就要用到下面这个 取字模软件。
4収虫日式*偉改壬慨烁楼咀韋IH*丘出用片4B-S I 询厲 1 .11 g 佃如 ATI相信有的朋友应该都用过这个软件。
1602A液晶模块文档介绍1602A液晶模块是一种常用的显示设备,主要用于显示文本信息。
它具有16列和2行的显示区域,每个区域可以显示一个字符。
本文档将介绍1602A液晶模块的基本原理、特性以及使用方法。
特性以下是1602A液晶模块的主要特性:•16列2行的显示区域•每个区域可显示一个字符•内置液晶控制器,简化控制电路的设计•低功耗设计,适合长期运行•使用标准的I2C总线进行通信,方便连接到其他设备引脚定义1602A液晶模块包含16个引脚,下面是各个引脚的定义:引脚序号引脚名称功能描述1 VSS 电源地2 VDD 电源正极3 V0 对比度调节4 RS 命令/数据选择5 R/W 读/写选择6 E 使能信号7-14 DB0-DB7 数据总线位15 LED+ 背光电源正极16 LED- 背光电源地控制指令1602A液晶模块的显示内容是由控制指令决定的。
下面是一些常用的控制指令:•光标移动指令–0x80: 将光标移动到第一行的起始位置–0xC0: 将光标移动到第二行的起始位置•清屏指令–0x01: 清除整个显示区域的内容,将光标移动到起始位置•写入数据指令–0x02: 将光标移动到起始位置–0x06: 设置光标移动一次后自动增加•光标显示控制指令–0x0E: 显示光标并设置为闪烁模式–0x0C: 显示光标而不闪烁•功能设置指令–0x38: 设置显示模式为16x2字符模式使用示例下面是一个使用1602A液晶模块的示例程序,使用Arduino开发板控制:```c #include <Wire.h> #include <LiquidCrystal_I2C.h>// 初始化液晶模块 LiquidCrystal_I2C lcd(0x27, 16, 2);void setup() { // 初始化串口通信 Serial.begin(9600); while (!Serial);// 初始化液晶模块 lcd.begin(16, 2); lcd.backlight(); }void loop() { // 显示Hello World!文本 lcd.setCursor(0, 0); lcd.print(。
LCD1602 液晶屏知识点总结LCD1602 的引脚包括数据指令寄存器RS,读写控制寄存器R/W,使能端E,三态数据总线DB0~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 中。
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)的值设为0。
ORG 0000HAJMP STARTORG 0030H;液晶初始化START: MOV OUT,#01H;清屏LCALL WRMLMOV OUT,#38H;8为数据口,两行显示5*7点阵 LCALL WRMLMOV OUT,#06H;设置输入方式为光标向右移,屏幕上文字不移动LCALL WRMLMOV OUT,#0CH;设置显示方式,开显示屏LCALL WRML;第一行显示Hello!MOV OUT,#80H;设定第一行起始地址LCALL WRMLMOV R3,#80HMOV R4,#16MOV R5,#00HMOV DPTR,#TAB1WRIN1: LCALL DISPDJNZ R4,WRIN1;第二行逐字显示Nice to meet youMOV OUT,#0FH;设置显示方式,开显示屏,有光标,光标闪烁LCALL WRMLMOV OUT,#0C0H;设定第二行起始地址LCALL WRMLMOV R3,#0C0HMOV R4,#16MOV R5,#00HMOV DPTR,#TAB2WRIN2: LCALL DISPLCALL DELAYDJNZ R4,WRIN2MOV OUT,#08H;设置显示方式,关显示屏LCALL WRMLLCALL DELAYAJMP START;******************查表显示子程序******************DISP: PUSH AMOV A ,R5MOVC A,@A+DPTRMOV OUT,ALCALL WRDTINC R3INC R5POP ARET;*************判忙子程序************RDBF: MOV OUT,#0FFH;置位,准备读CLR RS;RS=0SETB RW ;R/W=1CLR ENOPSETB EJB OUT.7, RDBFRET;**************写命令子程序***************WRML: CLR RSCLR RWCLR ELCALL RDBFSETB ERET;*************写显示数据子程序*************WRDT: SETB RSCLR RW ;准备写入数据CLR E ;执行显示命令LCALL RDBF ;判断液晶模块是否忙?SETB ERET;*******************延时子程序*********** DELAY: MOV R6,#00HMOV R7,#00HDELAY1: NOPDJNZ R7,DELAY1DJNZ R6,DELAY1RETTAB1: DB 20H,20H,20H,20H,20H,48H,65H,6CH,6CH,6FH,21H ;Hello!DB 20H,20H,20H,20H,20HTAB2: DB 4EH,69H,63H,65H,20H,74H,6FH,20H,6DH,65H,65H ;Nice to meet youDB 74H,20H,79H,6FH,75HEND。
L CD1 6 0 2 显示中文汉字LCD1602 显示中文汉字LCD1602 相比大家都比较了解,但是我们一般只用来显示字符,数字。
最近在网上看许多人用LCD1602 来显示汉字,觉得有趣于是拜读了一些资料,教程,但感觉大部分相当晦涩难懂,本人认为既然是教程,就不必要相当的复杂,毕竟人家看完许久后还是不能得出实验结果~!!接下我谈谈我得做法,保证你10分钟之内一样可以在LCD1602 上显示你想显示的各种符号,汉字!!!首先:我们要弄清楚一个概念,其实我们使用1602 显示中文汉字,就是利用其内部的自定义字节空间,我们都知道LCD1602 内部有一个64字节的自定义CGRAM ,那么好,我们就是要利用自定义字节来达到显示汉字的效果. 我们知道一个字符占8 个字节,所以在CGRAM 能够存放8 个字符。
也就是说,这个64 字节的CGRAM 是给我们提供写入数据的,那么我们怎么把我们要的汉字写入CGRAM 呢?不要急,大家查看LCD1602 的用户手册,里面提到当我们需要想CGRAM 写入数据时,我们需要先写入CGRAM 的地址,从手册上可知,CGRAM 的地址为0x40所以当我们要写入数据时,要先写入一条地址命令write_com(0x040); 然后把你要写入的数据通过写数据命令写入write_date( 你要写得数据);做完以上步骤了,是不是LCD1602 就会显示你输入的汉字呢?不要急,以上你只是把你要显示汉字的代码存放在CGRAM 里,就相当于其他常用字符一样固定在LCD 里面了,如果你不把它读出来,LCD 是不会显示当你把上面的步骤做完后,接下来要做的与你平常怎么使用 的,只不过是LCD1602里面增加了一些你自定义的字符,汉字。
可能到这里,也许会有些疑问,既然自定义字符、汉字的代码需要我们自己输 入,那么我该怎么编写这些代码,呵呵,不要着急,接下来就要用到下面这个 取字模软件。
4収虫日式*偉改壬慨烁楼咀韋IH*丘出用片4B-S I 询厲 1 .11 g 佃如 ATI相信有的朋友应该都用过这个软件。
第一节:了解LCD液晶显示屏一:字符型点阵式LCD液晶显示屏:LCD的应用很广泛,简单如手表上的液晶显示屏,仪表仪器上的液晶显示器或者是电脑笔记本上的液晶显示器,都使用了LCD。
在一般的办公设备上也很常见,如传真机,复印机,以及一些娱乐器材玩具等也常常见到LCD的足迹。
本站要介绍的LCD为字符型点阵式LCD模块(liquid Crystal Display Module)简称LCM,或者是字符型LCD。
字符型液晶显示模块是一类专门用于显示字母,数字,符号等的点阵式液晶显示模块。
在显示器件上的电极图型设计,它是由若干个5*7或5*11等点阵符位组成。
每一个点阵字符位都可以显示一个字符。
点阵字符位之间有一空点距的间隔起到了字符间距和行距的作用。
目前市面上常用的有16字*1行,16字*2行,20字*2行和40字*2行等的字符模块组。
这些LCM虽然显示字数各不相同,但是都具有相同的输入输出界面。
本章将以WINTECH 16*2字符型液晶显示模块WM-C1602N为例,详细介绍字符兴高采烈晶显示模块的应用技术。
一般字符LCD模块的控制器为日本日立新华通讯社司的HD44780及其替代集成电路,驱动器为HD44100及其替代的集成电路以下将会略做介绍。
一般初学者由字符型LCD入手比较简单,学完之后,再进一步控制图案型LCD模块。
图1.1所示为16*2地的外观,表1.2为LCM的接脚及功能。
看她的样子在太酷爱,现在我拿她作为讲解实例。
字串8图1.1a:液晶显示模块WM-C1602N背后图1.1b: 液晶显示模块WM-C1602N丰姿图1.1c:液晶显示模块WM-C1602N规格字串4表1.2:液晶显示模块WM-C1602N的接脚及功能应用液晶显示模块WM-C1602N那得先对她的内部结构有所了解,下一节我将会带大家进一步的了解液晶显示模块WM-C1602N。
第二节:LCD液晶显示屏的内部结构液晶显示模块WM-C1602N的内部结构可以分成三部份:一为LCD控制器,二为LCD驱动器,三为LCD显示装置,如图示2.1所示:字串1图2.1:LCM内部方块图字串1目前大多数的LCD液晶显示器的控制器都有采用一颗型号为HD44780的集成电路作控制器。
SMC1602A LCD液晶显示屏SMC1602A为16x2的液晶显示屏,支持字母和数字的ASIC II 码显示,即给LCD送入相应数字和字母的ASIC II 码,保持正确时序,即可显示相应的字符。
SMC1602A也支持DDRAM的图片显示格式,可以显示部分点阵图像。
SMC1602的外形图如下图所示:
图1 SMC1602A 外形图
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脚:背光电源电压。
分别接5V电源和地。
LCD的点亮时序非常重要,如下图所示,为LCD的具体时序参数要求:
图2 LCD的具体时序要去
控制器接口时序说明:
读操作时序:
图3 读操作时序
写操作时序:
图4写操作时序。
1602a1602A是一种常见的液晶显示器模块,广泛应用于各种电子设备中。
本文将详细介绍1602A的特点、工作原理以及使用方法。
一、1602A的特点1602A是一种16字符×2行的液晶显示器模块。
它具有以下特点:1. 显示区域大:每行可显示16个字符,共2行,总共可显示32个字符。
2. 显示效果好:采用高对比度的液晶材料,显示效果清晰,字体清晰可见。
3. 显示方式多样:支持多种显示模式,包括字母、数字、符号等多种字符显示。
4. 电源电压范围广:1602A可在4.5V至5.5V的电压范围内正常工作,适用于多种电源供应。
5. 低功耗:1602A工作时的功耗较低,可延长电池寿命。
二、1602A的工作原理1602A的工作原理主要基于液晶显示技术。
它由液晶显示面板、驱动芯片、背光源等部分组成。
通过控制驱动芯片,可以实现对液晶显示面板中每一个像素点的控制,从而实现字符、数字、符号等的显示。
1602A的液晶显示面板由许多行和列的像素组成。
每个像素点由一个液晶分子和一个电容构成,通过对液晶分子施加不同的电场,可以改变液晶分子的排列状态从而实现不同的显示效果。
驱动芯片负责接收外部的控制信号,并根据信号的不同控制液晶分子的状态。
通过改变每行像素点的排列状态,可以实现字符、数字等的显示。
背光源是1602A显示器的背光光源,为显示器提供良好的背光照明效果,使得显示效果更加清晰可见。
三、1602A的使用方法使用1602A显示器模块通常需要连接到单片机或其他控制器上。
下面以单片机为例,介绍1602A的使用方法:1. 接线连接:将1602A的VCC引脚连接到单片机的电源正极,将GND引脚连接到单片机的地线,并将RS、RW、E、D0-D7引脚连接到单片机的相应IO口。
2. 初始化:在使用1602A之前,需要先进行初始化设置,如设置数据位长、显示模式等。
3. 发送指令:使用单片机控制1602A需要发送指令,比如设置光标位置、清除屏幕内容等。
描述: LCD1602 移动显示*显示方式:1、LCD第一行显示:BIG BIG WORLDLCD第二行显示:I LOVE PUZHONG2、先将两行字符写入DDRAM中,然后从右至左逐字移出显示。
3、在指定位置停留1.6秒后,闪烁2次,清屏。
4、反复循环上述显示方式。
程序源代码:#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit LCD_RS = P2^6;sbit LCD_RW = P2^5;sbit LCD_EN = P2^7;uchar code dis1[] = {"BIG BIG WORLD"};uchar code dis2[] = {"I LOVE PUZHONG"};/*******************************************************************/ /*/* 延时子程序/*/*******************************************************************/void delay(int ms){int i;while(ms--){for(i = 0; i< 250; i++){_nop_();_nop_();_nop_();_nop_();}}}/*******************************************************************/ /*/*检查LCD忙状态/*lcd_busy为1时,忙,等待。
lcd-busy为0时,闲,可写指令与数据。
/*/*******************************************************************/bit lcd_busy(){bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;_nop_();_nop_();_nop_();_nop_();result = (bit)(P0&0x80);LCD_EN = 0;return result;}/*******************************************************************/ /*/*写指令数据到LCD/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。
概述:SMC1602A 标准字符点阵型液晶显示模块(LCM),采用点阵型液晶显示器(LCD),可显示16 个字符X2 行西文字符,字符尺寸为2.95X4.35(WXH)mm,内置HD44780 接口型液晶显示控制器,可与MCU 单片机直接连接,广泛应用于各类仪器仪表及电子设备。
◆控制器接口说明(HD44780 及兼容芯片):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=H,RW=L,D0~D7=数据,E=高脉冲输出:无3 RAM 地址映射图控制器内部带有80X8 位(80字节)的RAM缓冲区,对应关系如右图所示:4 指令说明4.1 初始化设置4.1.1 显示模式设置4.1.2 显示开/关及光标设置4.2 数据控制控制器内部设有一个数据地址指针,用户可通过它们来访问内部的全部 80 字节RAM。
4.2.1 数据指针设置4.2.2 读数据:见1.3 节4.2.3 写数据:见1.4 节4.2.4 其他设置5 初始化过程(复位过程)5.1 写指令38H:显示模式设置第一次5.2 延时3ms5.3 写指令38H:显示模式设置第二次5.4 延时3ms5.5 写指令38H:显示模式设置第三次5.6 延时3ms5.7 写指令38H:显示模式设置第四次5.8 延时3ms5.9 写指令08H:显示关闭5.10 写指令01H:显示清屏5.11 延时3ms5.12 写指令06H:显示光标移动设置5.13 写指令0CH:显示开及光标设置。
Proteus仿真图C程序:/******************************************实例81:用LCD显示字符'A'*******************************************/#include<reg51.h>//包含单片机寄存器的头文件#include<intrins.h>//包含_nop_()函数定义的头文件sbitRS=P2^0;//寄存器选择位,将RS位定义为P2.0引脚sbitRW=P2^1;//读写选择位,将RW位定义为P2.1引脚sbitE=P2^2;//使能信号位,将E位定义为P2.2引脚sbitBF=P0^7;//忙碌标志位,,将BF位定义为P0.7引脚/*****************************************************函数功能:延时1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒***************************************************/ voiddelay1ms(){unsignedchari,j;for(i=0;i<10;i++)for(j=0;j<33;j++) ;}/*****************************************************函数功能:延时若干毫秒入口参数:n***************************************************/ voiddelay(unsignedcharn){unsignedchari;for(i=0;i<n;i++)delay1ms();}/*****************************************************函数功能:判断液晶模块的忙碌状态返回值:result。
产品类型: 字符型LCD液晶显示模组产品型号: 1602A客户:客户编号:日期:确认(盖章)制造商客户目录1.修订记录2.概述3.外形尺寸4.硬件方框图5.电气特性6.接口说明7.指令说明8.操作时序说明9.应用例程10.注意事项1 . 修订记录版本发行日期新制/修订内容 V1.0 2020-8-12新制2.概述1602A 字符型液晶显示模块是专门用于显示字母、数字元、符号等的点阵型液晶显示模块。
分4 位和8 位数据传输方式。
提供5×7 点阵+光标的显示模式。
提供显示数据缓冲区DDRAM、字符发生器CGROM 和字符发生器CGRAM,可以使用CGRAM 来存储自己定义的最多8 个5×8 点阵的图形字符的字模数据。
提供了丰富的指令设置:清显示;光标回原点;显示开/关;光标开/关;显示字符闪烁;游标移位;显示移位元等。
提供内部上电自动复位电路,当外加电源时,自动对模块进行初始化操作,将模块设置为默认的显示工作状态。
显示字符数: 16 字符 X 2 行字符点阵:5X7字阵+光标显示颜色及背光颜色: STN 蓝,黄绿,灰; 背光黑,白,黄绿偏光膜:全透/半透观察角度: 6:00显示占空比: 1/16驱动偏压: 1/5控制芯片:SPLC780D或兼容IC(如AIP31066)字符发生器 ROM (CGROM): 10880 bits (192 character 5*8 dots) 或(64character 5*11 dots)字符发生器 RAM (CGRAM): 64X8 bits (8 characters 5*8 dots)或(4 characters 5*11 dots)显示数据 RAM (DDRAM) :80X8 bits (80 characters max)尺寸 (Unit: mm)外形尺寸: 80X36X11可视区域 : 64.5X13.8字符字体: 5X7 dots + 光标字符尺寸:55.7X11点尺寸:0.54X0.6字符间距: 3.52X5.85重量:g 对比度:V0外部调节或内部固定对比度工作电压: +3.3V或+5V 默认5V3.外形尺寸:4.硬件方框图:5.电气特性5.1极限参数5.2.1 直流参数1(Ta=25o C,Vdd=4.5V~5.5V)5.2.2 直流参数2(Ta=25o C,Vdd=2.7V~4.5V)典型值参数名称符号条件最小值最大值单位电源电压Vdd -0.37.0VLCD 驱动电压V5Vdd-10.0Vdd+0.3V 输入电压Vi -0.3Vdd+0.3V 工作温度(T)Top --2070℃储存温度(T)Tstg--3080℃标称值参数名称符号条件最小典型最大单位电源电压Vdd-GND - 4.5 5.0 5.5V 工作电流(不包括背光)Idd 0.9 1.5 1.7mA LCD 驱动电流Iee -0.6-mA LCD 驱动电压Vdd-V5Vdd=5V4.2 4.5 4.8V LED 背光工作电流If 171820mA LED 背光功耗Pd Vf=3.0~3.2V90100110mW 输入高电平Vih 2.5-Vdd V 输入低电平Vil -0.3-0.6V 输出高电平Voh Ioh=-0.205mA 2.4--V 输出低电平VolIo1=1.2mA--0.4V标称值参数名称符号条件最小典型最大单位电源电压Vdd-GND - 2.7 3.3 4.5V 工作电流(不包括背光)Idd 0.450.9 1.0mA LCD 驱动电流Iee -0.6-mA LCD 驱动电压Vdd-V5Vdd=3.3V4.2 4.5 4.8V LED 背光工作电流If 171820mA LED 背光功耗Pd Vf=3.0~3.2V556066mW 输入高电平Vih 0.7Vdd -Vdd V 输入低电平Vil -0.3-0.55V 输出高电平Voh Ioh=-0.1mA 0.75Vdd--V 输出低电平VolIol=0.1mA--0.2VddV液晶显示模块使用说明书5.3.1 交流参数1(Ta=25o C,Vdd=4.5V~5.5V)5.3.2 交流参数2(Ta=25o C,Vdd=2.7V~4.5V)交流测试波形图写模式读模式6.接口说明脚号符号功能备注1Vss 0V 2Vdd +5V3Vo 电源供应LCD 偏压调节对比度调节4RS 数据/指令选择(H:数据 L: 指令)5R/W 读/写选择(H:读 L:写)6E 使能信号7DB0数据位 08DB1数据位19DB2数据位210DB3数据位311DB4数据位412DB5数据位513DB6数据位614DB7数据位715A LED 背光正16KLED 背光负7.指令说明模块具有4位/8位MCU 并行通讯模式,4位/8位总线通过指令寄存器的DL 位进行选定。
1602液晶显示屏显示一、1602液晶显示屏简介液晶显示模块具有体积小、功耗低、显示内容丰富等特点,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了。
本文以常见的1602CD模块为例,介绍该模块的简单使用。
1602可以显示2行16个字符,有8位数据总线D0-D7,和RS、R/W、EN三个控制端口,工作电压为5V,并且带有字符对比度调节和背光。
该模块也可以只用D4-D7作为四位数据分两次传送。
这样的话可以节省MCU的I/O口资源。
本文将使用Atmega16并采用四位数据方式来控制1602。
1.1 1602封装尺寸图1.2 1602外观如下图所示1.3 1602引脚说明编号符号引脚说明编号符号引脚说明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 BLK 背光源地8 D1 双向数据口16 BLA 背光源正极注意事项:从该模块的正面看,引脚排列从右向左为:15脚、16脚,然后才是1-14脚(线路板上已经标明)。
VDD:电源正极,4.5-5.5V,通常使用5V电压;VL:LCD对比度调节端,电压调节范围为0-5V。
接正电源时对比度最弱,接地电源时对比度最高,但对比度过高时会产生“鬼影”,因此通常使用一个10K的电位器来调整对比度,或者直接串接一个电阻到地;RS:MCU写入数据或者指令选择端。
MCU要写入指令时,使RS为低电平;MCU要写入数据时,使RS为高电平;R/W:读写控制端。
R/W为高电平时,读取数据;R/W为低电平时,写入数据;E:LCD模块使能信号控制端。
写数据时,需要下降沿触发模块。
D0-D7:8位数据总线,三态双向。
如果MCU的I/O口资源紧张的话,该模块也可以只使用4位数据线D4-D7接口传送数据。
本充电器就是采用4位数据传送方式;BLA: LED背光正极。
需要背光时,BLA串接一个限流电阻接VDD,BLK接地,实测该模块的背光电流为50mA左右;BLK: LED背光地端。
1.4 1602操作时序(1)读操作时序(2)写操作时序(3)基本操作时序二、实例2.1 proteus仿真2.2 程序*LCD.h文件------------------------------------------------------------- LCD引脚定义1---GND2---VCC3---VO4---RS5---RW6---EN7到14--D0-D715--背景灯+16--背景灯------------------------------------------------------------------*/#include <iom16v.h>#include <macros.h>/*---------------------------------------------------------------下面是AVR与LCD连接信息PA2 ->RSPA3 ->EN地->RWPA4 ->D4PA5 ->D5PA6 ->D6PA7 ->D7要使用本驱动,改变下面配置信息即可-----------------------------------------------------------------*/#define LCD_EN_PORT PORTA //以下2个要设为同一个口#define LCD_EN_DDR DDRA#define LCD_RS_PORT PORTA //以下2个要设为同一个口#define LCD_RS_DDR DDRA#define LCD_DATA_PORT PORTA //以下3个要设为同一个口#define LCD_DATA_DDR DDRA //一定要用高4位#define LCD_DATA_PIN PINA#define LCD_RS (1<<PA2) //0x04 portA2 out#define LCD_EN (1<<PA3) //0x08 portA3 out#define LCD_DATA ((1<<PA4)|(1<<PA5)|(1<<PA6)|(1<<PA7)) //0xf0 portA4/5/6/7 out /*------------------------------------------------------------------------------函数说明------------------------------------------------------------------------------*/void LCD_init(void);void LCD_en_write(void);void LCD_write_command(unsigned char command) ;void LCD_write_data(unsigned char data);void LCD_set_xy (unsigned char x, unsigned char y);void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);void LCD_write_char(unsigned char X,unsigned char Y,unsigned char data);void delay_nus(unsigned int n);void delay_nms(unsigned int n);==============================================================================#include "LCD.h"void LCD_init(void) //液晶初始化{LCD_DATA_DDR|=LCD_DATA; //数据口方向为输出LCD_EN_DDR|=LCD_EN; //设置EN方向为输出LCD_RS_DDR|=LCD_RS; //设置RS方向为输出LCD_write_command(0x28);LCD_en_write();delay_nus(40);LCD_write_command(0x28); //4位显示LCD_write_command(0x0c); //显示开LCD_write_command(0x01); //清屏delay_nms(2);}void LCD_en_write(void) //液晶使能{LCD_EN_PORT|=LCD_EN;delay_nus(1);LCD_EN_PORT&=~LCD_EN;}void LCD_write_command(unsigned char command) //写指令{delay_nus(16);LCD_RS_PORT&=~LCD_RS; //RS=0LCD_DATA_PORT&=0X0f; //清高四位LCD_DATA_PORT|=command&0xf0; //写高四位LCD_en_write();command=command<<4; //低四位移到高四位LCD_DATA_PORT&=0x0f; //清高四位LCD_DATA_PORT|=command&0xf0; //写低四位LCD_en_write();}void LCD_write_data(unsigned char data) //写数据{delay_nus(16);LCD_RS_PORT|=LCD_RS; //RS=1LCD_DATA_PORT&=0X0f; //清高四位LCD_DATA_PORT|=data&0xf0; //写高四位LCD_en_write();data=data<<4; //低四位移到高四位LCD_DATA_PORT&=0X0f; //清高四位LCD_DATA_PORT|=data&0xf0; //写低四位LCD_en_write();}void LCD_set_xy( unsigned char x, unsigned char y ) //写地址函数{unsigned char address;if (y == 0) address = 0x80 + x;else address = 0xc0 + x;LCD_write_command( address);}void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) //列x=0~15,行y=0,1 {LCD_set_xy( X, Y ); //写地址while (*s) // 写显示字符{LCD_write_data( *s );s ++;}}void LCD_write_char(unsigned char X,unsigned char Y,unsigned char data) //列x=0~15,行y=0,1 {LCD_set_xy( X, Y ); //写地址LCD_write_data( data);}=======================================================================void delay_1us(void) //1us延时函数{asm("nop");}void delay_nus(unsigned int n) //N us延时函数{unsigned int i=0;for (i=0;i<n;i++)delay_1us();}void delay_1ms(void) //1ms延时函数{unsigned int i;for (i=0;i<1140;i++);}void delay_nms(unsigned int n) //N ms延时函数{unsigned int i=0;for (i=0;i<n;i++)delay_1ms();}========================================================================= #include "LCD.h"void init_devices(void){CLI(); //disable all interruptsLCD_init();MCUCR = 0x00;GICR = 0x00;TIMSK = 0x00; //timer interrupt sourcesSEI(); //re-enable interrupts}//main.c文件#include "LCD.h"void main(void){init_devices();LCD_write_string(1,0,"Hi!!");for(;;){LCD_write_string(0,1,"archeng504");LCD_write_char(6,0,'8');}(注:可编辑下载,若有不当之处,请指正,谢谢!)。