上一章我们学习了如何在
LCD1602
显示字符数据,我们知道
LCD1602
是字符型显示器,它不能显示汉字图形等。对于需要显示汉字或图形的项目中,
LCD1602
无法实现,因此本章就来介绍一个可以实现字符、汉字、图形等显示的液晶屏–
LCD12864
。
LCD12864
分为
带字库和不带字库两种。我们开发板上集成了一个
LCD12864
液晶显示器接口,它可兼容带字库和不带字库两种屏,将
LCD12864
液晶对应插入即可。本章要实现的功能是:系统运行时,
LCD12864
上显示汉字字符信息。
一、LCD12864 介绍
LCD12864
液晶屏结构上与 LCD1602
一样,只是在行列数与显示像素上区别很大。LCD12864
,以下简称 12864,注意区分 LCD1602
和LCD12864
。12864 是 64行 128 列,当然也有可能会设计成 64 列 128 行,这里的行列不像 1602 那样,1602 是按照八行四列标准英文字符格式,以一行十六个字符,两列字符命名,而 12864 是以 128 列像素,64 行像素,也就是有 128*64
个像素点组成。就好比是 128 列 64 行的点阵。需要一行一列的去显示像素点。
通常显示一个汉字需要 16*16
个像素点,所以LCD12864
一行最多能显示 8 个汉字,最多能显示 4 行。通常显示一个字符需要 8*8
个像素点,所以 LCD12864
一行最多能显示 16 个字符,最多能显示 8 行。当然这是不依靠后期取模的显示情况,如果通过取模软件取模,然后将 LCD12864
按照 128*64
个像素点来显示,显示的内容就可能超过之前的,就拿字符来说,可以选择小号字体,通过取模软件将字符数据取出,然后将这些数据通过在对应的像素点上点亮或熄灭实现不同字体的显示。图像的显示原理也是这样。
常用的 12864
分为带字库和不带字库两种。
1.带字库 LCD12864
上图左侧为带字库 12864
显示字符和汉字,右侧为图形模式显示。注意:这里图形模式虽然显示了字符和汉字,但是并不是使用字库里的,显示的方法也是多样化的。
对于带字库 LCD12864
,最常见的标志就是在屏幕背后,会有存放字库的芯片。如下图所示:
LCD12864
带字库屏共有 20
个引脚,管脚功能如下:
LCD12864
的指令相对 LCD1602
要多一些,但常用指令基本上一样,下面来看下 LCD12864
带字库常用的指令。
- 功能设定:
0x30
- 清屏指令:
0x01
- 进入设定点:
0x06
- 显示状态开关设置:
0x0c
同 LCD1602
一样,LCD12864
内部也含有DDRAM
,与其对应的地址如下:
从上图可知,LCD12864
能直接显示的地址范围如下:
第一行:0X80-OX87;(一个汉字占用 2 个字节,共 8 个汉字)
第二行:0X90-0X97;
第三行:0X88-0X8F;
第四行:0X98-0X9F;
LCD12864
与 LCD1602
有太多的相似之处,包括通信时序,简直是一模一样,所以编写 LCD12864
的驱动程序时,可完全照搬 LCD1602
的。
2.不带字库 LCD12864
这种不带字库的 LCD12864
背面没有芯片,一般为转接板,将 12864
显示屏转接到开发板。这种显示屏的操作就像带字库的 12864
操作图片形式一样。 所有的显示都需要取模,取模方法和点阵取模一样。不带字库的 LCD12864
,从外形上看其体积比带字库 LCD12864
要小很多,因此也常称之为 MiniLCD12864
。
对于 MiniLCD12864
,要想显示汉字或其他字符需通过取字模方式来实现。要让其显示首先还得初始化,这个和 LCD1602
原理类似,即通过对其内部一些特殊寄存器设置实现特定功能。MiniLCD12864
内部驱动芯片有的是 ST7565P
。
本章实验,我们以简单易用的带字库 LCD12864
为例进行讲解,对于MiniLCD12864
等用到时再做辅助学习,不同品牌的 MiniLCD12864
,驱动芯片也不一样,所以没有带字库的 LCD12864
通用。
二、硬件设计
本实验使用到硬件资源如下:
- 带字库
LCD12864
液晶
开发板上集成了一个LCD12864
液晶接口,下面我们来看下开发板上LCD12864
液晶接口电路,如下图所示:
从上图中可知,该接口是LCD12864
与TFTLCD
彩屏共用的,LCD12864
占用下面20
个管脚,MiniLCD12864
是16
脚,而带