LCD1602显示全部字库字符
ATmega16驱动LCD1602显示字符

#include <mega16.h>#include <delay.h>#define RS PORTD.4 //RS: 1-data; 0-cmd#define RW PORTD.5 //RW: 1-Read; 0-Write#define EN PORTD.6/****************************************************************************LCD写数据函数*************************/ void LCD_write_data(unsigned char data){EN=0;RS=1;PORTB=data; //送数据EN=1;delay_ms(1);EN=0;}/*************************************************************************LCD写命令函数***************************/ void LCD_write_cmd(unsigned char cmd){EN=0;RS=0;PORTB=cmd; //送命令码EN=1;delay_ms(1);EN=0;}/*************************************************************************LCD输出字符串函数************************/ void LCD_puts(unsigned char addr,unsigned char *str){unsigned char i=0;LCD_write_cmd(addr|0x80); //设置显示起始位置delay_ms(1);for(i=0;str[i]!='\0';i++) //输出字符串{LCD_write_data(str[i]);delay_ms(1);}}/*************************************************************** *******************LCD初始化*******************************/ void LCD_init(){DDRD.4=1; //设PD4~PD6为输出DDRD.5=1;DDRD.6=1;DDRB=0xff; //PB各口设为输出LCD_write_cmd(0x38); //2行,5*7点阵/每字符delay_ms(1);LCD_write_cmd(0x01); //LCD清屏delay_ms(1);LCD_write_cmd(0x06); //字符输入模式;地址增量,显示屏不动,字符后移delay_ms(1);LCD_write_cmd(0x0c); //显示开,光标不显示不闪烁delay_ms(1);//RW=0;}/******************主函数*********************************/void main (){LCD_init();LCD_puts(0x02,"I LOVE DSP"); //LCD从0行3列开始显示“I LOVE SYSU"LCD_puts(0x41,"Sun Yat-sen"); //LCD从1行1列开始显示“Sun Yat-sen" }。
LCD1602及其控制器的基本显示方法

LCD1602及其控制器的基本显⽰⽅法LCD显⽰及键盘⽤法LCD1602及其控制器的基本显⽰⽅法向LCD输⼊的数据为ASCII码,需要通过数码扫描依次送到LCD显⽰,下⾯介绍LCD 控制器IP核LCD16X2A及其相关程序。
逻辑符号如下图:U_lcd_ctrl模块即为该控制器核在AltiumDesinger原理图中的符号表⽰。
其作⽤是接受前⾯⽤户⾃⼰的逻辑单元送来的ASCII码数据和控制信号,然后与外部的LCD显⽰器通讯,显⽰相应字符。
数据总线使⽤输⼊输出分离模式,IP核后⾯需要增加双向BUF控制单元(U8)。
L CD控制器端⼝说明如下:⽤户控制逻辑接⼝:CLK:控制器⼯作时钟,上升沿有效RST:复位信号,⾼电平有效DA TA[7..0]:ASCII码数据总线ADDR[3..0]:字符在LCD屏幕上的地址(共两⾏,每⾏16个字符)ADDR=“0000”~“1111”对应每⾏的第0~15个字符LINE:LCD1602屏幕上的⾏选择信号,LINE=0时数据在第⼀⾏显⽰,LINE=1时数据在第⼆⾏显⽰BUSY:控制器忙信号,数据未显⽰稳定时BUSY=1;反之为0STROBE:数据输⼊有效使能,⾼电平有效LCD显⽰器接⼝:LCD_E:LCD显⽰器使能LCD_RW:LCD读写⽅向控制LCD_RS:LCD命令,数据选择LCD_DA TA_TRI:LCD数据⾼阻态控制LCD_DA TAO:LCD数据输出总线LCD_DA TAI:LCD数据输⼊总线控制器⼯作原理如下:A 控制器复位当RST信号有效时(⾼电平),控制器进⼊LCD复位与初始化操作,此时,BUSY信号持续⾼电平,表⽰控制器忙,LCD不能进⾏⽤户请求的操作。
RST信号由⾼变低后的⼤约80us之后,LCD控制器初始化完成,可以响应⽤户的操作请求,此时,BUSY信号变低。
LCD处于显⽰模式。
B 字符显⽰上电后的LCD必须初始化⼀次,之后LCD控制器停留于“WAIT FOR DA TA”状态。
lcd1602中文资料

1602LCD液晶显示器(资料)1.1602字符型LCD简介字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块.下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。
一般1602字符型液晶显示器实物如图1:图1。
1602字符型液晶显示器实物图2. 1602LCD的基本参数及引脚功能1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图2所示:图2. 1602LCD尺寸图1602LCD主要技术参数:显示容量:16×2个字符芯片工作电压:4。
5—5。
5V工作电流:2.0mA(5。
0V)模块最佳工作电压:5.0V字符尺寸:2。
95×4。
35(W×H)mm引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表3所示:编号符号引脚说明编号符号引脚说明1 VSS电源地9 D2数据2 VDD电源正极10D3 数据3 VL 液晶显示偏压11 D4 数据4 RS 数据/命令选择12D5 数据5 R/W读/写选择13 D6 数据6 E 使能信号14 D7 数据7 D0 数据15 BLA背光源正极写指令输入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=高脉冲读写操作时序如图3和图4所示:图3. 读操作时序图4.写操作时序4. 1602LCD的RAM地址映射及标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图5是1602的内部显示地址。
字符型液晶模块LCD1602操作实例

LCD 液晶显示器是Liquid Crystal Display 的简称LCM(LCDModule)即LCD显示模组,是指将显示控制器,驱动器,字符存储器等集成到一起的LCD显示产品,它提供用户一个标准的LCD显示驱动接口(有4位、8位、VGA等不同类型),用户按照接口要求进行操作来控制LCD正确显示。
字符型LCD:有多个5*7或5*11点阵符位组成,每个点阵符位都可以显示一个字符。
专用于显示字母,数字,及自定义符号。
常用的有16字*1行,16字*2行,20字*2行,40字*2行:如LCD 1602 是16*2,可以显示两行字符,每行16个字符。
点阵式LCD: 不但可以显示字符,还可以显示汉字,图形。
如LCD 12864VDD :接5V正电源VL :液晶显示器对比度调整端,接正电源对比度最弱,接地时对比度最高,对比度过高会产生“鬼影”,一般在该引脚接一固定电阻或一电位器。
RS :寄存器选择,1时选择数据寄存器,0时选择指令寄存器。
R/W:读写控制信号线,1为读操作,0为写操作。
E : 为模块使能端,当有高电平跳变到低电平时,液晶模块执行命令。
DB0-DB7:8位双向数据线。
DDRAM就是显示数据RAM,用来寄存待显示的字符代码。
共80个字节,其地址和屏幕的对应关系如下表:也就是说想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H 地址写入“A”字的代码就行了。
但具体的写入是要按LCD模块的指令格式来进行的,后面我会说到的。
那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。
第二行也一样用前16个地址。
第一行对应16个地址位0x00-0x0fH,第二行对应的地址为:40H-4FH1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下表所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”#define RS_0 PORTC&=~(1<<PC0) //RS为0,0选择指令寄存器#define RS_1 PORTC|=(1<<PC0) //RS 为1,1选择数据寄存器#define RW_0 PORTC&=~(1<<PC1) //RW为0, 0为写操作#define RW_1 PORTC&=(1<<PC1) //RW为1,1为读操作#define EN_0 PORTC&=~(1<<PC2) //E 为0,#define EN_1 PORTC&=(1<<PC2) //E 为1. //使能端,高电平跳变到低电平时,液晶模块执行命令。
常用液晶屏LCD1602的使用

常用液晶屏LCD1602的使用LCD_1602, 学过单片机的朋友们都知道它了吧,可以说是用的最广,最简单,也是学液晶入门级别的一块液晶了。
LCD1602 顾名思义就是两行显示的液晶,每行最多显示16 个字符(里面总共有160 个字符),其中包括阿拉伯数字、英文字母的大小写,常用符号,及日文的假名!每个字符对应一个ASCII 码,我们通过向液晶送相应符号的ASCII 码来显示这个字符。
总的来说这个用起来很简单的,到网上下载1602 的数据手册,自己写写程序估计也就差不多了,我在这里主要是说说自己的对一些常见问题的经验,和LCD1602 自定义字符的显示方法。
要显示我们自定义的字符,就要用到LCD 中的CGRAM 存储器(character generate RAM),而我们之前用的显示自带的字符用到的是DDRAM,两个是不同的。
看液晶手册我们知道,CGRAM 的容量是64 个字节,而一个字符是8 个字节,所以一共能显示8 个自定义的字符。
内部常用字符的显示是从0x20 开始的,0x00 ~ 0x0F 是专门留给自定义字符显示用的,0x00~0x07 和0x80~0x0F 显示的内容是一样的,也就是说0x00=0x08,0x01=0x09,以此类推。
CGRAM 共128 个位,地址是0x40~0x7F,128/8=16 正好对应的是0x00~0x0F 共16 个。
下面说说如何显示自定义字符吧。
首先我们要清楚LCD1602 显示字符的点阵大小,眼力好的可以看出来,LCD1602 一个显示字符的位置是5*8 的点阵,也就是说它所能显示的点阵图形的大小是5*8 的!要显示一个自定义的字符,首先我们要知道所显示自定义字符的点阵数据,也就是在一个5*8 的点阵上那个点是黑的(将该点点黑,就是高电平----1),哪个点是白的(该点不显示,为低电平----0),但是我们送入到LCD 中的是ASCII 码,它是8 位的数据,而一个显示字符的点阵大小只是5*8 的,显然不够,显示的办法是8*8 点阵的前三列不用,也就是不。
通用型LCD1602自定义字符的显示

通用型LCD1602自定义字符的显示LCD1602主要用来显示数字、字母、图形以及少量自定义字符。
由于其显示控制简单,性价比高,广泛用于电子表、冰箱、空调、汽车电子仪表等装置。
本文主要研究一下如何在LCD1602显示自定义字符。
虽然技术含量不高,但是注意编程的细节还是很有必要去探讨一番。
1.引言液晶显示器的英文名是Liquid CrystalDisplay,简称LCD.液晶显示器作为显示器件具有体积小、重量轻、功耗低,性价比高等优点,所以LCD日渐成为各种便携式电子产品的理想显示器,1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块,它有若干个5X7或5X11点阵字符位组成,每个点阵字符位都可以显示一个字符。
每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以它不能像12864一样显示图形,但是有时候很想要用图形表示,那么LCD1602提供了8个空间的自定义字符,如图1所示,显示的年月日,.C 就是自定义字符。
2.通用型LCD1602操作方法LCD1602是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
如图2所示,字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),从左到右分别是1引脚到16引脚在这里要说明的是:(1)要用1602型LCD显示字符必须解决3个问题:a.待显示字符ASCII标准码产生;b.液晶显示模式的设置;c.字符显示位置的指定。
(2)若想在00H处显示数据的话,则必须将00H加上80H,即0x00H+0x80H,若要在01H处显示数据,也必须加0x80H,例如要将某字符显示在第2行第5列,则确定地址的。
1602 液晶静态显示字符

名称:LCD1602编写:fangya日期:2011.12修改:无内容:通过标准程序静态显示字符引脚定义如下:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK------------------------------------------------*/#include<reg52.h>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#define uchar unsigned char#define uint unsigned intsbit RS = P2^4; //定义端口sbit RW = P2^5;sbit EN = P2^6;#define DataPort P0 //定义数据,这一步必须有的/*------------------------------------------------mS延时函数,含有输入参数unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编------------------------------------------------*/void delay_ms(uint t){uint a,b;for(a=t;a>0;a--)for(b=110;b>0;b--);}/*------------------------------------------------写入命令函数------------------------------------------------*/void LCD_Write_Com(uchar com){RS=0;RW=0;EN=1;DataPort=com;delay_ms(5);EN=0;}/*------------------------------------------------写入数据函数void LCD_Write_Data(uchar Data){RS=1;RW=0;EN=1;DataPort= Data;delay_ms(5);EN=0;}/*------------------------------------------------写入字符串函数------------------------------------------------*/void LCD_Write_String(uchar x,uchar y,uchar *s){if (y == 0){LCD_Write_Com(0x80 + x-1); //表示第一行}else{LCD_Write_Com(0xC0 + x-1); //表示第二行}while (*s){LCD_Write_Data( *s);s ++;}}//在主函数中写入字符需用单引号引起来,写入字符需用双引号引起来/*------------------------------------------------初始化函数------------------------------------------------*/void LCD_Init(void){delay_ms(5);LCD_Write_Com(0x38); /*显示模式设置*/LCD_Write_Com(0x08); /*显示关闭*/LCD_Write_Com(0x06); /*显示光标移动设置*/delay_ms(5);LCD_Write_Com(0x0C); /*显示开及光标设置*/LCD_Write_Com(0x01); /*清屏*/}/*------------------------------------------------主函数void main(void){LCD_Init();while (1){LCD_Write_String(2,0,"WANG QIN"); LCD_Write_String(2,1,"I LOVE YOU!"); while(1);}}。
LCD1602

LCD1602简介字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD ,市面上字符液晶绝大多数是基于HD44780液晶芯片,HD44780是带西文字库的液晶显示控制器,用户只需要向HD44780送ASCII 的字符码,HD44780就按照内置的ROM 点阵发生器自动在LCD 液晶显示器上显示出来。
所以,HD44780主要适用于显示西文ASCII 字符内容的液晶显示。
1602字符型LCD 能够同时显示16*2即32个字符(16列2行)。
其内置192种字符(160个5*7点阵字符和32个5*10点阵字符),具有64个字节的自定义字符RAM ,可自定义8个5*8点阵字符或4个5*11点阵字符。
1602通常有14条引脚线或16条引脚线两种,多出来的2条线是背光电源线和地线,带背光的比不带背光的略厚,控制原理与14脚的LCD 完全一样,是否带背光在应用中并无差别。
本设计中采用带背光16引脚线的。
其主要技术参数为:显示容量:16×2个字符。
芯片工作电压:4.5-5.5V 。
工作电流:2.0mA(5.0V)。
模块最佳工作电压:5.0V 。
字符尺寸:2.95×4.35(W ×H)mm 。
LCD1602的16个引脚可参照图3-3,其引脚功能分别为: VSS :电源地(GND)。
VCC :电源电压(5V)。
V0:LCD 驱动电压,液晶显示器对比度调整端。
使用时可以通过一个10K 的电位器调整对比度,接正电源时对比度最弱,接地电源时对比度最高。
RS :寄存器选择输入端,选择模块内部寄存器类型信号。
RS=0,进行写模图3-3 LCD1602引脚图图3-4 LCD1602写时序块操作时指向指令寄存器,进行读模块操作时指向地址计数器。
RS=1,无论进行读操作还是写操作均指向数据寄存器。
R/W:读写控制输入端,选择读/写模块操作信号。
R/W=0,读操作;R/W=1,写操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LCD1602显示全部字库字符、看门狗定时器测试
LCD1602液晶内含有192个字符字库,这个程序是分6屏进行显示,整个显示过程长
约7秒,看门狗定时器设置时间为8.38秒,刚好显示完全部字符,修改看门狗就可以看到
在显示中途重启,比较直观
LCD_E BIT P3.4 ;LCD片选
LCD_RS BIT P3.5 ;指令、数据位
LCD_RW BIT P3.6 ;读、写位
PORT EQU P0 ;端口定义
WDT_COUNT EQU 0E1H ;看门狗
START: LCALL LCD_INIT
LCALL WDT_INIT
MOV A,#01H ;清屏
LCALL WR_CMD
DISP_LOOP: MOV R0,#06H ;循环计数器
MOV R1,#80H ;LCD地址计数器
MOV R2,#00H ;字符表指针计数器
MOV DPTR,#TAB
WR_DAT_LOOP: MOV A,R1 ;地址命令
LCALL WR_CMD
INC R1 ;地址加一
MOV A,R2 ;表指针
MOVC A,@A+DPTR
LCALL WR_DAT
LCALL DELAY100MS
INC R2 ;表指针加一
CJNE R1,#90H,BIJIAO ;字符是否到16
MOV R1,#0C0H ;到16,换地址
BIJIAO: CJNE R1,#0D0H,WR_DAT_LOOP ;字符数是否到32
MOV R1,#80H ;地址回归
LCALL DELAY1S
MOV A,#1B ;清屏
LCALL WR_CMD
DJNZ R0,WR_DAT_LOOP
MOV WDT_COUNT,#00110111B
LJMP DISP_LOOP
LCD_INIT: MOV A,#111000B ;8位总线
LCALL WR_CMD
MOV A,#10B ;数据指针清零
LCALL WR_CMD
MOV A,#01H ;清屏
LCALL WR_CMD
MOV A,#1111B ;显示开,光标开,闪烁开
LCALL WR_CMD
MOV A,#10000000B ;设置显示地址00H
LCALL WR_CMD
RET
WDT_INIT: MOV WDT_COUNT,#00110111B ;看门狗定时器设置时间1.1秒
RET
CHK_BUSY: SETB PORT.7
CLR LCD_RS
SETB LCD_RW
WAIT1: SETB LCD_E
MOV C,PORT.7
JC WAIT1
CLR LCD_E
RET
WR_CMD: LCALL CHK_BUSY
CLR LCD_RS
CLR LCD_RW
SETB LCD_E
MOV PORT,A
CLR LCD_E
RET
WR_DAT: LCALL CHK_BUSY
SETB LCD_RS
CLR LCD_RW
SETB LCD_E
MOV PORT,A
CLR LCD_E
RET
DELAY100MS: MOV R7,#10
DL5: MOV R6,#250
DL4: NOP
NOP
DJNZ R6,DL4
DJNZ R7,DL5
RET
DELAY1S: MOV R7,#10
DL1: MOV R6,#200
DL2: MOV R5,#248
DL3: DJNZ R5,DL3
DJNZ R6,DL2
DJNZ R7,DL1
RET
TAB: DB
20H,21H,22H,23H,24H,25H,26H,27H,28H,29H,2AH,2BH,2CH,2DH,2EH,2FH
DB
30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH
DB
40H,41H,42H,43H,44H,45H,46H,47H,48H,49H,4AH,4BH,4CH,4DH,4EH,4FH
DB
50H,51H,52H,53H,54H,55H,56H,57H,58H,59H,5AH,5BH,5CH,5DH,5EH,5FH
DB
60H,61H,62H,63H,64H,65H,66H,67H,68H,69H,6AH,6BH,6CH,6DH,6EH,6FH
DB
70H,71H,72H,73H,74H,75H,76H,77H,78H,79H,7AH,7BH,7CH,7DH,7EH,7FH
DB
0A0H,0A1H,0A2H,0A3H,0A4H,0A5H,0A6H,0A7H,0A8H,0A9H,0AAH,0ABH,0ACH,0ADH,0
AEH,0AFH
DB
0B0H,0B1H,0B2H,0B3H,0B4H,0B5H,0B6H,0B7H,0B8H,0B9H,0BAH,0BBH,0BCH,0BDH,0BE
H,0BFH
DB
0C0H,0C1H,0C2H,0C3H,0C4H,0C5H,0C6H,0C7H,0C8H,0C9H,0CAH,0CBH,0CCH,0CDH,0CE
H,0CFH
DB
0D0H,0D1H,0D2H,0D3H,0D4H,0D5H,0D6H,0D7H,0D8H,0D9H,0DAH,0DBH,0DCH,0DDH,0
DEH,0DFH
DB
0E0H,0E1H,0E2H,0E3H,0E4H,0E5H,0E6H,0E7H,0E8H,0E9H,0EAH,0EBH,0ECH,0EDH,0EEH
,0EFH
DB
0F0H,0F1H,0F2H,0F3H,0F4H,0F5H,0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH,0FEH,0
FFH
END