12864点阵型液晶显示器

在上一章中,我们学习了如何使用1602字符型液晶显示器。在产品开发的过程中,有时需要显示汉字或更为复杂的图形,这时功能更加强大的12864液晶显示器也许能满足你的需要。早期的12864液晶显示器采用并行传输结构,使用时会占用处理器较多的I/O口,而且体积大、价格偏高。目前推出的新型12864液晶显示器采用了COG技术,体积小巧轻薄,使用SPI串行通信方式传输数据,较并行液晶产品具有明显的优势。本章介绍的就是基于COG技术的12864点阵型液晶显示器及其驱动方法。

22.1

12864点阵型液晶介绍

12864液晶显示器因能显示128×64个点而得名,而基于COG技术的12864液晶显示器具有价格低、显示功能强大、工作可靠的优点。所谓COG技术,就是将显示驱动芯片、显存等系列半导体器件直接集成在LCD玻璃上,从而制作出体积小巧轻薄的液晶显示屏。不同的液晶生产厂会将基于COG技术的液晶显示屏安装在自己设计的背板上,从而衍生出型号众多的12864液晶显示器。本章介绍的JLX12864G-086点阵型液晶显示器就是其中之一。

22.1.1

JLX12864G-086液晶的特点

JLX12864G-086点阵型液晶显示器采用UC1701X驱动IC,可显示总计128×64点阵的文字或图形,其外观如图22-1所示。

JLX12864G-086点阵型液晶显示器具有如下特点:

·显示区域为128×64点阵,可以用于显示汉字或复杂的图形。

·在16×16点阵模式下每行可显示8个汉字,共可显示4行。

·指令功能强大,多种显示方式可满足不同的需求。

·采用4线仅写入的串行SPI接口,可有效节省控制器I/O口资源。

·其扩展型号可配置专用字库IC,西文及汉字显示更加容易。

·有3.3V、5V两种电压模块可供用户选择。

22.1.2

JLX12864G-086液晶的引脚功能

JLX12864G-086点阵型液晶显示器内部电路原理如图22-2所示。液晶显示器采用UC1701X驱动IC(兼容ST7565R),用以控制128×64点阵液晶显示器显示。UC1701X驱动IC使用串行SPI通信方式与控制器通信。可选的字库IC内部集成有GB2312汉字库,同样使用串行通信方式。另外,该液晶显示器具有独立的背光控制引脚,其引脚功能详见表22-1。

22.2

12864点阵型液晶显示方式

22.2.1

显示屏与显存的对应关系

JLX12864G-086液晶的显示区域横向有128个点,纵向有64个点。显示区域自上而下每8行为1个页(PAGE),总计划分为8个页。在每个页中,显存中的数据是纵向排列的,一个字节对应着一列,写满一个PAGE需要128个字节的数据,字节的低位在上,高位在下。字节中的每一位对应着屏幕上的一个点,当显示位赋值为1时,与其结应的点显示,赋值为0时关闭。12864点阵型液晶显示区域与显存的对应关系如图22-3所示,数据字节与像素的对应关系如图22-4所示。

从图22-4中我们会发现,文字“S”的形状可以用它左边的一组数值表示出来,这组数值包含了要显示的文字的图像信息,也就是我们说的“S”的字模。

22.2.2

显存的组织结构

JLX12864G-086液晶显存中的数据存储区域比实际的显示区域稍大一些,显存横向有65行,其中前64行对应着屏幕的显示区域PAGE0~PAGE7,最后一行对应着PAGE8,在显示区域之外。显存的纵向有132列,从SEG1至SEG132,其中前128列对应着屏幕的显示区域,后4列在显示区域之外。12864液晶的显存组织结构如图22-5所示。

22.2.3

读写时序

JLX12864G-086液晶显示器在电源启动后,需要将RESET引脚保持低电平至少3μs的时间,使液晶复位。复位时序如图22-6所示。

向液晶显示器写入1位信息的时序如图22-7所示。RS(CD)端用于控制写入液晶显示器的信息是命令还是数据,CS端用于对液晶显示器的片选,SCK线为串行时钟线,SDA线为串行数据线,在SCK线时钟的上升沿,SDA线上的数据被写入液晶显示器中。

向液晶显示器写入1字节的时序如图22-8所示。CS端用于对液晶显示器的片选,在向液晶显示器写入第8字节时,液晶显示器会判断RS(CD)端的状态,用于分辨写入液晶显示器的信息是命令还是数据,SCK线为串行时钟线,SDA线为串行数据线,在SCK线时钟的上升沿,SDA线上的信息被写入液晶显示器中。

22.2.4

UC1701X指令集

对液晶显示器的操作是通过一系列的指令来实现的。我们前面说过,JLX12864G-086液晶显示器采用的驱动IC是UC1701X,并且与ST7565R兼容,因此其指令集也同样适用于采用ST7565R驱动IC的液晶显示器。UC1701X驱动IC的指令详见表22-2。

22.3

12864点阵型液晶应用实例

22.3.1

液晶显示器的接口电路

JLX12864G-086点阵型液晶驱动接口电路如图22-9所示。单片机的5个I/O口分别驱动液晶显示器UC1701X的5个驱动端。如果需要,还可以使用额外的I/O口连接字库IC的驱动端。

22.3.2

汉字的取模方法

对于没有中西文字库的点阵型液晶显示器,显示文本同样十分方便。我们只需要提取待显示文字的字模,并将其保有存在源代码中供软件调用即可。以下是使用16×16点阵为汉字提取字模的方法,西文字符提取字模的方法与此大致相同。字模的提取如图22-10所示,具体步骤如下:

1)使用字模提取软件,在“基本操作”中选择“新建图像”,将图像宽度和高度均设为16。

2)在文字输入区输入一个汉字,完成后按“CTRL+ENTER”键。

3)在“参数设置”项中选“其他选项”,在出现的对话框中勾选“纵向取模”和“字节倒序”选项,并去掉“保留文字字模数据的最后一个逗号”选项。

4)在“取模方式”选项中选择“C51格式”,字模转换即刻完成。

5)在“基本操作”中选择“保存点阵数据”,将生成的字模数据保存到文本文件中,供在C程序中使用。

22.3.3

图像的取模方法

使用点阵型液晶显示图像同样要对其取模,图像取模的方法如图22-11所示,步骤如下:

1)新建一幅图像或将已有图像保存成单色位图(BMP)格式,分辨率修改为128×64像素。

2)打开取模软件,在“基本操作”中选择“新建图像”,将图像设定为128×64。

3)在“打开图像图标”项中打开已经转换好的单色位图图片。

4)在“参数设置”项中选择“其他选项”,在出现的对话框中勾选“纵向取模”和“字节倒序”项,并去掉“保留文字字模数据的最后一个逗号”选项。

5)在“取模方式”项中选择“C51格式”,图像取模即刻完成。

6)在“基本操作”中选择“保存点阵数据”项,将生成的点阵数据保存到文本文件中,供在C程序中使用。

22.3.4

汉字和图形显示

我们可以使用12864液晶显示汉字或图片,如果你的单片机有足够大的程序存储器(FLASH),你完全可以用这款液晶显示器开发出一本有趣的电子漫画书来。本书限于篇幅,只给大家介绍如何在12864液晶上显示出一个汉字和一幅图画,相信有了这些作为基础,你一定能自己DIY出更加生动的显示内容来。

按本章图22-9所示电路连接液晶显示器和AVR系统板,打开Atmel Studio 6.1软件,新建名为“LCD12864”的项目,保存在chapter22文件夹下,软件会自动将名为“LCD12864.c”的源文件添加到新建的项目中。编辑“LCD12864.c”源文件,编写代码详见代码清单22-1。

代码清单22-1

使用12864液晶显示汉字和图像

/*

*

LCD12864.c *

12864

液晶显示汉字和图像

*

Created: 2013/10/27

10:01:10

*

Author: GAO */

#include 
//
包含AVR 头文件
#define F_CPU 16000000UL //
定义系统时钟
#include 
//
包含延时函数头文件
#define uchar unsigned char #define uint unsigned int #define sck128_SET (PORTD|=0x08)
//
置位PD3
定义串行时钟端
#define sck128_CLR (PORTD&=0xF7)
//
清零PD3
#define sda128_SET (PORTD|=0x10)
//
置位PD4
定义串行数据端
#define sda128_CLR (PORTD&=0xEF)
//
清零PD4
#define rs128_SET (PORTD|=0x20)
//
置位PD5
定义数据/
命令选择端
#define rs128_CLR (PORTD&=0xDF)
//
清零PD5
#define rst128_SET (PORTD|=0x40)
//
置位PD6
定义复位端
#define rst128_CLR (PORTD&=0xBF)
//
清零PD6
#define cs128_SET (PORTD|=0x80)
//
置位PD7
定义片选端
#define cs128_CLR (PORTD&=0x7F)
//
清零PD7
void port12864_init(); //
驱动端口初始化函数声明
void init_lcd(); //
液晶初始化函数声明
void transfor_command(uchar comm1); //
写入命令函数声明
void transfor_data(uchar data1); //
写入数据函数声明
void clear_screen(); //
清屏函数声明
void delay(uint t); //
延时函数声明
void display_text(); //
显示16×16
汉字函数声明
void display_picture(); //
显示128×64
图片函数声明
const uchar text1[]; //
文字数组声明
const uchar graphic1[]; //
图像数组声明
/**********
主函数**********/
int main(void)
{
port12864_init(); //
驱动端口初始化
init_lcd(); //
液晶显示器初始化
clear_screen(); //
清屏
while(1)
{
display_text(); //
显示文本
_delay_ms(2000); clear_screen(); //
清屏
_delay_ms(100); display_picture(); //
显示图像
_delay_ms(2000); clear_screen(); //
清屏
_delay_ms(100); }
}
/**********
驱动端口初始化函数**********/
void port12864_init()
{
DDRD|=0xF8; }
/**********
液晶初始化函数**********/
void init_lcd()
{
rst128_SET; _delay_us(3); //
延时
rst128_CLR; //
低电平复位液晶
_delay_us(3); //
延时
rst128_SET; //
解除复位状态
_delay_us(3); //
延时
transfor_command(0xe2); //
软复位
transfor_command(0x2c); //
升压步骤1
transfor_command(0x2e); //
升压步骤2
transfor_command(0x2f); //
升压步骤3
transfor_command(0x23); //
粗调对比度,范围20-27
transfor_command(0x81); //
微调对比度
transfor_command(0x30); //
微调对比度的值,范围0-63
transfor_command(0xa2); //1/9
偏压比
transfor_command(0xc8); //
行扫描顺序:从上到下
transfor_command(0xa0); //
列扫描顺序:从左到右
transfor_command(0xaf); //
开显示
}
/**********
写入命令函数**********/
void transfor_command(uchar comm1)
{
uchar i; uchar TEMP; cs128_CLR; //
片选液晶显示器
_delay_us(2); //
延时
rs128_CLR; //
低电平表示写入命令
_delay_us(2); //
延时
TEMP=comm1; for(i=0;i<8;i++)
{
_delay_us(2); //
延时
sck128_CLR; //
拉低时钟线
_delay_us(2); //
延时
if((TEMP&0x80)==0)
//
判断最高位为0
{
sda128_CLR; //
数据线则输出0
}
else {
sda128_SET; //
否则输出1
}
_delay_us(2); //
延时
sck128_SET; //
置高时钟线,数据写入
_delay_us(2); //
延时
TEMP=TEMP<<1; //
将数据左移1

}
}
/**********
写入数据函数**********/
void transfor_data(uchar data1)
{
uchar i; uchar TEMP; cs128_CLR; _delay_us(2); //
延时
rs128_SET; //
高电平表示写入数据
_delay_us(2); //
延时
TEMP=data1; for(i=0;i<8;i++)
{
_delay_us(2); //
延时
sck128_CLR; _delay_us(2); //
延时
if((TEMP&0x80)==0)
{
sda128_CLR; }
else {
sda128_SET; }
_delay_us(2); //
延时
sck128_SET; _delay_us(2); //
延时
TEMP=TEMP<<1; }
}
/**********
清屏函数**********/
void clear_screen()
{
uchar i,j; cs128_CLR; for(i=0;i<8;i++)
{
_delay_us(2); //
延时
transfor_command(0xB0+i); //
页地址
transfor_command(0x10); //
高位列地址
transfor_command(0x00); //
低位列地址
for(j=0;j<128;j++)
{
transfor_data(0x00); //
写入数据0
_delay_us(2); //
延时
}
}
}
/**********
显示文本函数**********/
void display_text()
{
uchar TEMP,i,j; cs128_CLR; for(i=0;i<2;i++)
{
_delay_us(2); //
延时
transfor_command(0xB0+i); //
页地址
transfor_command(0x10); //
高位列地址
transfor_command(0x00); //
低位列地址
for(j=0;j<16;j++)
{
TEMP=text1[i*16+j]; transfor_data(TEMP); //
写入数据
_delay_us(2); //
延时
}
}
}
/**********
显示图像函数**********/
void display_picture()
{
uchar TEMP,i,j; cs128_CLR; for(i=0;i<8;i++)
{
_delay_us(2); //
延时
transfor_command(0xB0+i); //
页地址
transfor_command(0x10); //
高位列地址
transfor_command(0x00); //
低位列地址
for(j=0;j<128;j++)
{
TEMP=graphic1[i*128+j]; transfor_data(TEMP); //
写入数据
_delay_us(2); //
延时
}
}
}
/**********
文字数组**********/
const uchar text1[]={
/*--
文字: 囧
--*/
/*--
宋体12; 此字体下对应的点阵为:宽×
高=16×16
--*/
0x00,0xFE,0x82,0x42,0x22,0x1A,0x02,0x02,0x02,0x0A,0x12,0x62, 0x02,0xFE,0x00,0x00, 0x00,0xFF,0x40,0x40,0x40,0x7F,0x41,0x41,0x41,0x7F,0x40,0x40, 0x40,0xFF,0x00,0x00
}; /**********
图像数组**********/
const uchar graphic1[]={
/*--
调入了一幅图像:C:\Users\gcs\Desktop\PICTURE1.bmp --*/
/*--
宽度×
高度=128×64
--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, 0x80,0xC0,0xC0,0xC0,0x80,0x80,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xE0, 0xF0,0x70,0x78,0x38,0x38,0x3C,0x1C,0x1C, 0x1C,0x1C,0x1C,0x1C,0x1C,0x3C,0x38,0x38, 0x78,0x70,0xF0,0xE0,0xE0,0xC0,0x80,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0xC0,0xC0,0xE0,0xE0,0xF0,0x70,0x78, 0x38,0x3C,0x1C,0x1E,0x0E,0x0F,0x07,0x07, 0x03,0x03,0x01,0x03,0x03,0x07,0x07,0x0F, 0x0E,0x1E,0x1C,0x3C,0x38,0x78,0x70,0xF0, 0xE0,0xE0,0xC0,0xC0,0x80,0x80,0x00,0x00, 0x00,0x00,0x00,0xF0,0xF8,0xF8,0xF0,0x80, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0, 0xF0,0xFC,0x7E,0x1F,0x0F,0x03,0x01,0x01, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x1F, 0x7E,0xFC,0xF0,0xC0,0x80,0xC0,0xE0,0xE0, 0xF0,0x78,0x78,0xF0,0xE0,0xE0,0xC0,0xFF, 0xFF,0xFF,0x01,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x01,0x01,0xFF,0xFF,0xFF,0x00,0x00, 0xC0,0xF8,0xFF,0x3F,0x07,0x07,0x3F,0xFF, 0xFC,0xE0,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF, 0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0xC0,0xC0,0xE0,0xF0,0x78,0x38, 0x3C,0x1F,0xFF,0xFF,0xFF,0x03,0x01,0x00, 0x00,0x00,0x00,0x00,0x00,0x01,0x03,0xFF, 0xFF,0xFF,0x1E,0x3C,0x38,0x78,0xF0,0xE0, 0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x78, 0xF8,0xF8,0xF8,0xF8,0xB8,0xB8,0x38,0x38, 0x38,0x38,0x38,0xFF,0xFF,0xFF,0x38,0x3E, 0x3F,0x0F,0x01,0x00,0x00,0x00,0x00,0x01, 0x0F,0x3F,0x3E,0x38,0x38,0x38,0x38,0x38, 0x38,0x38,0x38,0x38,0x38,0xB8,0xF8,0xF8, 0xF8,0xF8,0x78,0x30,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x1F, 0x7F,0xFE,0xF0,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x07,0x3F,0xFF,0xFD,0xC1,0x00,0x00,0xC0, 0xE0,0xFE,0x7F,0x1F,0x03,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F, 0x0F,0x1F,0x1C,0x3C,0x38,0x78,0x70,0xF1, 0xF9,0xFF,0xFF,0xC7,0x80,0x80,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, 0x80,0xC0,0xC1,0xE3,0xE7,0xF7,0x7F,0x7E, 0x3C,0x3C,0x7C,0xFF,0xEF,0xCF,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xC0,0xE0,0xF0,0x78, 0x38,0x3C,0x1E,0x0F,0x07,0x07,0x03,0x01, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x01,0x03,0x07,0x0F,0x1E,0x3C,0x38, 0x78,0x70,0xF0,0xE0,0xE0,0xE0,0xC0,0xC0, 0xC0,0xC0,0xC0,0xC0,0xC0,0xE0,0xE0,0xE0, 0xE0,0x70,0x79,0x3F,0xFF,0xFE,0xFF,0x87, 0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xF0,0xFE,0xFF, 0x1F,0x01,0x01,0x03,0x03,0x07,0x07,0x0F, 0x0E,0x1E,0x1C,0x1E,0x0E,0x0F,0x07,0x07, 0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00, 0x80,0xF8,0xFF,0x7F,0x0F,0x00,0x00,0x80, 0x80,0xC0,0xE0,0xE0,0x70,0x70,0xF0,0xE0, 0xC0,0x80,0x80,0x00,0x00,0x07,0x7F,0xFF, 0xF8,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x07,0x3F,0x7F, 0x78,0x70,0x70,0x70,0x70,0x70,0x70,0x70, 0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70, 0x70,0x70,0x70,0x78,0x7F,0x3F,0x07,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x60,0xFC, 0xFF,0x7F,0x3B,0x3C,0x1E,0x0E,0x0F,0x07, 0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x01, 0x01,0x03,0x07,0x0F,0x0E,0x1E,0x3C,0x3B, 0x7F,0xFF,0xFC,0x60,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
}; /**********
结束**********/
将以上代码正确编译后下载到AVR系统板中,程序运行后在12864液晶显示器上会交替显示出汉字“囧”和我们自己创作的图像,其显示状态如图22-12和图22-13所示。

 


评论: