当前位置:文档之家› 1602显示汉字

1602显示汉字

液晶显示模块LCD1602介绍液晶显示(LCD)是单片机应用系统中的一种常见人机接口形式,其优点是体积小、重量轻、功耗低。

目前市场上的液晶显示器主要有字段型、点阵字符型和点阵图形三大类。

此处介绍点阵字符型LCD1602。

点阵字符型液晶显示根据显示容量可以分为1*16,2*16,2*20字等形式。

LCD1602为2*16型。

LCD1602可以显示内部常用字符(包括阿拉伯数字,英文字母大小写,常用符号和日文假名等),也可以显示自定义字符(单或多个字符组成的简单汉字,符号,图案等,最多可以产生8个自定义字符)。

LCD1602模块采用16引脚接线:引脚01:Vss,接地。

引脚02:Vdd,接5V。

引脚03:VL,对比度调整端。

通常接地,此时对比度最高。

引脚04:RS,数据/命令寄存器选择端。

1→数据寄存器,0→命令寄存器。

引脚05:RW,读/写选择端。

1→读,0→写。

引脚06:E,使能端。

1→0跳变时液晶模块执行命令。

引脚07-14,D0-D7,8位双向数据总线。

引脚15:BLA,背光正极。

应缴16:BLK,背光负极。

LCD1602模块的命令,共有11条,如表1所示表1 LCD1602的操作命令序号指令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 0 I/D S4 显示与不显示设置0 0 0 0 0 1 D C B0 0 0 0 0 1 S/C R/L * * 5 光标或屏幕内容移位选择6 功能设置0 0 0 0 1 DL N F * *7 CGRAM地址设置0 0 0 1 CGRAM地址8 DDRAM地址设置0 0 1 DDRAM地址0 1 BF 计数器地址9 读忙标志和计数器地址设置10 写DDRAM或1 0 要写的数据CGROM1 1 读出的数据11 读DDRAM或CGROM命令说明:命令1:清屏。

光标回到左上角,地址计数器设为0.命令2:光标归位。

光标回到左上角。

命令3:显示模式设置I/D S 显示模式0 0 光标左移1格,地址计数器减10 1 屏幕内容全部右移1格,光标不动1 0 光标右移1格,地址计数器加11 1 屏幕内容全部左移1格,光标不动命令4:显示与不显示设置。

D=1 →开显示,D=0 →关显示C=1 →开光标,C=0 →关光标B=1 →光标闪烁,B=0 →光标不闪烁命令5:光标或屏幕内容移位选择。

S/C=1 →移动屏幕内容,S/C=0 →移动光标R/L=1 →右移,R/L=0 →左移,命令6:功能设置。

DL=0 → 4位数据接口,DL=1 → 8位数据接口N=0 →单行显示,N=1 →双行显示F=0 →显示5*7点阵,F=1 →显示5*10点阵命令7:CGRAM地址设置。

地址范围40H-7FH (将一个字符分成5*8点阵,一次写入一行,8行组成一个字符)命令8:DDROM地址(显示地址)设置。

第一行地址80-8F,第二行地址C0-CF命令9:读忙标志和计数器地址设置。

BF=1→忙,BF=0→不忙计数器地址00H-7FH命令10:写DDRAM或CGROM。

要配合地址设置命令。

命令11:读DDRAM或CGROM。

要配合地址设置命令。

LCD1602模块使用时要先进行初始化,初始化内容为:●清屏●功能设置●显示与不显示设置●输入模式设置一、显示常用字符1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表2所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是41H,显示时模块把地址41H 中的点阵字符图形显示出来,我们就能看到字母“A”表2 点阵字符图形编码序号代码ASCII字符序号代码ASCII字符序号代码ASCII字符0 00 CGRAM自定义字符143 2B + 86 56 V1 01 自定义字符2 44 2C ,87 57 W2 02 自定义字符3 45 2D - 88 58 X3 03 自定义字符4 46 2E . 89 59 Y4 04 自定义字符5 47 2F / 90 5A Z5 05 自定义字符6 48 30 0 91 5B [6 06 自定义字符7 49 31 1 92 5C ¥7 07 自定义字符8 50 32 2 93 5D ]8 08 自定义字符1 51 33 3 94 5E ^9 09 自定义字符2 52 34 4 95 5F _10 0A 自定义字符3 53 35 5 96 60 `11 0B 自定义字符4 54 36 6 97 61 a12 0C 自定义字符5 55 37 7 98 62 b13 0D 自定义字符6 56 38 8 99 63 c14 0E 自定义字符7 57 39 9 100 64 d15 0F 自定义字符8 58 3A : 101 65 e16 10 自定义字符1 59 3B ; 102 66 f17 11 自定义字符2 60 3C < 103 67 g18 12 自定义字符3 61 3D = 104 68 h19 13 自定义字符4 62 3E > 105 69 i20 14 自定义字符5 63 3F ? 106 6A j21 15 自定义字符6 64 40 @ 107 6B k22 16 自定义字符7 65 41 A 108 6C l23 17 自定义字符8 66 42 B 109 6D m24 18 自定义字符1 67 43 C 110 6E n25 19 自定义字符2 68 44 D 111 6F o26 1A 自定义字符3 69 45 E 112 70 p27 1B 自定义字符4 70 46 F 113 71 q28 1C 自定义字符5 71 47 G 114 72 r29 1D 自定义字符6 72 48 H 115 73 s30 1E 自定义字符7 73 49 I 116 74 t31 1F 自定义字符8 74 4A J 117 75 u32 20 空格75 4B K 118 76 v33 21 !76 4C L 119 77 w34 22 " 77 4D M 120 78 x35 23 # 78 4E N 121 79 y36 24 $ 79 4F O 122 7A z37 25 % 80 50 P 123 7B {38 26 & 81 51 Q 124 7C |39 27 ' 82 52 R 125 7D }40 28 (83 53 S 126 7E→41 29 )84 54 T ←42 2A * 85 55 U显示操作的过程:首先确认显示的位置,即在第几行,第几个字符开始显示。

也就是要显示的地址,如下表所示的显示地址。

第一行的显示地址是0x80-0x8F,第二行的显示地址是0xC0-0xCF。

例如想要在第2行,第3个位置显示一个字符,那么地址码就是0xC2。

在编程过程中,通常编写一个函数确定在某行某个位置显示数据。

函数需要行参数(y),和列参数(x)来确定显示位置。

程序参考如下/***************设置显示位置**************************/void LCD_set_xy( unsigned char x, unsigned char y ){unsigned char address;if (0 == y) x |= 0x80; //当要显示第一行时地址码+0x80;else x |= 0xC0; //在第二行显示是地址码+0xC0;Write_com(x); //发送地址码0x80-0x8F 或者0xC0-0xCF}其次设置要显示的内容,即上面提到的CGROM内的字符编码。

如显示“A”,将编码41H写入到液晶屏显示即可。

通常设置地址和显示内容用一个函数来完成。

代码参考如下://功能:按指定位置显示一个字符//输入:列显示地址x(取值范围0-15) 行显示地址y(取值范围0-1), 指定字符void DisplayOneChar(unsigned char x, unsigned char y, unsigned char Data) {if (0 == y) x |= 0x80; //当要显示第一行时地址码+0x80;else x |= 0xC0; //在第二行显示是地址码+0xC0;Write_com(x); //发送地址码Write_dat(Data); //发送要显示的字符编码}显示字符“A”调用过程如下代码:DisplayOneChar(0,0,0x41);//功能:在第1行第1个字符显示一个大写字母A二、显示字符串在C语言操作时,还可以显示整个字符串。

定义一个字符串显示函数,可以通过直接输入字符方式进行显示//功能:按指定位置显示一串字符//输入:列显示地址x(取值范围0-15) 行显示地址y(取值范围0-1), 指定字符串指针*p,要显示的字符个数count (取值范围1-16)void Disp_1602 (unsigned char x, unsigned char y, unsigned char *p, unsigned char count){unsigned char i;for(i=0;i<count;i++){if (0 == y) x |= 0x80; //当要显示第一行时地址码+0x80;else x |= 0xC0; //在第二行显示是地址码+0xC0;Write_com(x); //发送地址码Write_dat(*p); //发送要显示的字符编码x++;p++;}}调用方法如下:DisplayListChar(0,0,"hello world",11); //液晶1602第一行显示DisplayListChar(0,1,"",12); //液晶1602第二行显示二、显示自定义字符。

显示效果:三、显示汉字1、首先取得想要的中文或者图形的字模数组。

通过字模软件不能直接提取5*8点阵的字模数据,可以通过手动提取的方法。

如下图所示,对应一个字符显示区域。

每8个字节,组成一个点阵数组。

“日”的点阵数组即为{0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00}2个点阵组成一个汉字取模举例:“车”字取模数组为:{0x00,0x0f,0x02,0x04,0x07,0x00,0x0f,0x00,0x10,0x1e,0x00,0x10,0x1c,0x10,0x1e,0x10}将生成的点阵数组保存到CGRAM存储器中,生成自定义字符。

相关主题