LCD12864介绍
LCD12864 液晶屏结构上与 LCD1602一样,只是在行列数与显示像素上区别很大。LCD12864,以下简称12864,注意区分 LCD1602 和 LCD12864。12864是 64行128 列,当然也有可能会设计成 64 列 128 行,这里的行列不像 1602 那样,1602 是按照八行四列标准英文字符格式,以一行十六个字符,两列字符命名,而 12864 是以 128 列像素,64 行像素,也就是有 128*64 个像素点组成。就好比是 128 列 64 行的点阵。需要一行一列的去显示像素点。
通常显示一个汉字需要1616个像素点,所以LCD12864一行最多能显示8个汉字,最多能显示4行。通常显示一个字符需要88个像素点,所以LCD12864一行最多能显示16个字符,最多能显示8行。当然这是不依靠后期取模的显示情况,如果通过取模软件取模,然后将LCD12864按照128*64个像素点来显示,显示的内容就可能超过之前的,就拿字符来说,可以选择小号字体,通过取模软件将字符数据取出,然后将这些数据通过在对应的像素点上点亮或熄灭实现不同字体的显示。图像的显示原理也是这样。
常用的 12864 分为带字库和不带字库两种
带字库LCD12864
上图左侧为带字库 12864 显示字符和汉字,右侧为图形模式显示。注意:这里图形模式虽然显示了字符和汉字,但是并不是使用字库里的,显示的方法也是多样化的。
对于带字库 LCD12864,最常见的标志就是在屏幕背后,会有存放字库的芯片。如下图所示:
LCD12864 带字库屏共有20个引脚,管脚功能如下:
引脚号 | 引脚名称 | 功能说明 |
---|---|---|
1 | VSS | 电源地(0V) |
2 | VDD | 电压输入(+5V) |
3 | V0 | LCD驱动电压输入端(对比度调节) |
4 | RS | 寄存器选择端 高:数据寄存器; 低:命令寄存器 |
5 | R/W | 读/写信号 高:读操作; 低:写操作 |
6 | E | 使能信号 |
7~14 | DB0~DB7 | 数据总线 |
15 | CS1 | 片选信号1,低有效,对应左半屏64×64点 |
16 | CS2 | 片选信号2,低有效,对应右半屏64×64点 |
17 | /RST | 复位信号,低有效 |
18 | VOUT | 负压输入输出端 |
19 | LED-A | 背光正极 |
20 | LED-K | 背光负极 |
LCD12864 的指令相对LCD1602要多一些,但常用指令基本上一样,下面来看下LCD12864 带字库常用的指令。
功能设定
- 初始值:001 DL X100 B(DL=1,8BIT 并口;DL=0,4BIT 并口 X=0,1)
- DL : 8/4 位接口控制位:1——8位接口;0——4位接口
- RE :指令集选择控制位:1——扩充指令集;0——基本指令集
- 同一指令的动作不能同时改变DL和RE,需先改变DL再改变RE才能确保设置正确
清屏指令
- 将DDRAM填满“20H”(空格)代码,并且设定DDRAM的地址计数器(AC)位00H
- 更新设置进入设定点将I/D设为1,游标右移AC加1
进入设定点
- 进入设定点,初值:06H
- 指定在显示数据的读取与写入时,设定游标的移动方向及指定显示的移位
- I/D=1,游标右移,DDRAM地址计数器(AC)加1
- I/D=1,游标左移,DDRAM地址计数器(AC)减1
- S:显示画面整体位移
S S 功能描述 H H 画面整体左移 H L 画面整体右移
显示状态开关设置
-
显示状态开关设置
-
显示开关设置,初始值:08H
-
控制整体显示开关,游标开关,游标位置显示反白开关
- D
- D=1 整体显示开
- D=0 整体显示关,但是不改变DDRAM内容
- C
- C=1 游标显示开
- C=0 游标显示关
- B
- B=1 游标位置显示反白开,将游标所在地址上的内容反白显示
- B=0 正常显示
- D
同LCD1602 一样,LCD12864内部也含有DDRAM,与其对应的地址如下:
从上图可知,LCD12864能直接显示的地址范围如下(一个汉字占用2个直接):
- 第一行,0x80~0x87
- 第二行,0x90~0x97
- 第三行,0x88~0x8F
- 第四行,0x98~0x9F
LCD12864 与 LCD1602 有太多的相似之处,包括通信时序,简直是一模一样,所以编写LCD12864的驱动程序时,可完全照搬LCD1602的。
不带字库LCD12864
这种不带字库的 LCD12864 背面没有芯片,一般为转接板,将12864 显示屏转接到开发板。这种显示屏的操作就像带字库的 12864 操作图片形式一样。所有的显示都需要取模,取模方法和点阵取模一样。不带字库的LCD12864,从外形上看其体积比带字库LCD12864要小很多,因此也常称之为MiniLCD12864。
对于MiniLCD12864,要想显示汉字或其他字符需通过取字模方式来实现。要让其显示首先还得初始化,这个和LCD1602原理类似,即通过对其内部一些特殊寄存器设置实现特定功能。MiniLCD12864内部驱动芯片有的是ST7565P,
硬件设计
本实验使用到硬件资源如下:
- 带字库LCD12864液晶
从上图中可知,该接口是LCD12864与TFTLCD彩屏共用的,LCD12864占用下面20个管脚,MiniLCD12864是16脚,而带字库的LCD12864通常是20脚。这样可以兼容带字库的LCD12864和不带字库的LCD12864。
软件设计
本实验所要实现的额功能时:LCD12864商显示汉字字符信息,程序框架如下:
- LCD12864显示函数
- 主函数
1 | /************************************************************************************** |
1 |
|
1 |
|
头文件相关
1 |
|
1 |
|