系列文章目录


前言

所有屏幕都是点阵屏,如果你不能随心所欲地控制其中任意一个像素,就说明你对屏幕的操控还不够熟练。

如果是普中A2开发板,修改一下LCD1602.c文件里的引脚定义就行了

想看效果和下载源代码:B站搜索“甘腾胜”或“gantengsheng”查看和下载。

一、效果展示

在这里插入图片描述

二、原理分析

1、LCD1602如何显示自定义字符?

在这里插入图片描述

LCD1602总共有16列2行,共32个显示区域,每个显示区域都是5*8的点阵。

LCD1602总共可以显示8个自定义字符,每个字符的字模对应8个字节(因为共有8行),总共需要64个字节数据来显示8个自定义字符,64个字节数据对应CGRAM地址的是0x40~0x7F,并且需要横向取模,高位在左,使用每个字节的低5位(高3位的值无影响)。0x40~0x47是第一个自定义字符的字模数据,0x48~0x4F是第二个自定义字符的字模数据,以此类推。

8个自定义字符的字符码分别是0~7,如果想在第一行第一列显示第一个自定义字符,则先写指令0x80设定光标在第一行第一列,再写入数据0x00(直接写0也行),就可以了。

在这里插入图片描述
例如,想在第一行第一列显示一个小心形,可以这么操作:

(1)写入指令:0x40
(2)连续写入8个数据:0x00,0x00,0x0A,0x1F,0x1F,0x0E,0x04,0x00
(3)写入指令:0x80
(4)写入数据:0x00

2、LCD1602如何显示一个汉字?

在这里插入图片描述
以“静”字为例,我们注意到,一个汉字的像素是16*16,并且每个汉字的最后一列是空的,即除了最后一列剩余部分是15*16,刚好可以拆成6个5*8。

在这里插入图片描述
需要6个自定义字符才能显示一个汉字,即8个自定义字符只能显示1 1 3 \frac13 31个汉字。

3、LCD1602如何同时显示多个汉字?

在这里插入图片描述
想要同时显示多个汉字,则需要用到动态扫描显示的方法(类似数码管的扫描)。

将LCD1602屏幕的32个显示区域分成四部分,利用指针、移位、或运算、与运算等操作将汉字拆解,将Part 1要显示的内容对应的数据写入CGRAM,通过设定光标和写入字符码将这八个自定义字符显示在Part 1,延时一段时间后,清空DDRAM中Part 1区域的数据(如果不清空,显示Part 2区域的时候,Part 1区域会显示和Part 2相同的内容),按照同样的方法显示Part 2的内容…显示完Part 4的内容后,再重复之前的操作。

函数中输入参数可以设置一个偏移量的参数Offset,显示一段时间后,改变Offset可以让显示内容左右移动或上下移动。

三、各模块代码

1、延时函数

h文件

#ifndef	__DELAY_H__
#define	__DELAY_H__
 
void Delay(unsigned int xms);
 
#endif

c文件

/**
  * @brief	延时函数,晶振@12.0000MHz时,输入参数延时的单位是1ms
  * @param	xms 延时的时间,范围:0~65535
  * @retval	无
  */
void Delay(unsigned int xms)
{
	unsigned char i, j;
	while(xms)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}
}

2、LCD1602

h文件

#ifndef __LCD1602_H__
#define __LCD1602_H__

void LCD_WriteCommand(unsigned char Command);
void LCD_WriteData(unsigned char Data);
void LCD_SetCursor(unsigned char Line,unsigned char Column);
void LCD_Init();
void LCD_ShowChar(unsigned char Line,unsigned char Column,char Char);
void LCD_ShowString(unsigned char Line,unsigned char Column,char *String);
void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
void LCD_ShowSignedNum(unsigned char Line,unsigned char Column,int Number,unsigned char Length);
void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
void LCD_MakeChar(void);
void LCD_Clear(void);
void LCD_MoveLeft(void);
void LCD_MoveRight(void);
void LCD_Convert_MoveLeft(unsigned char *Array,Part,Offset);
void LCD_Convert_MoveUp(unsigned char *Array,Part,Offset);
void LCD_ShowChinese(unsigned char Part);

#endif

c文件

#include <REGX52.H>

//引脚配置:

//散件版本,方便接线
sbit LCD_RS=P2^5;
sbit LCD_RW=P2^6;
sbit LCD_EN=P2^7;

//普中开发板注释掉上面的引脚配置,用下面的
//sbit LCD_RS=P2^6;
//sbit LCD_RW=P2^5;
//sbit LCD_EN=P2^7;

#define LCD_DataPort P0

//自定义字符,最多8个(8个字节对应一个字符)
unsigned char CGRAMData[64];

//函数定义:
/**
  * @brief  LCD1602私有延时函数,12MHz调用可延时35us
  * @param  无
  * @retval 无
  */
void LCD_Delay35us(void)
{
	unsigned char i;
	i=15;
	while(--i);
}

/**
  * @brief  LCD1602私有延时函数,12MHz调用可延时2ms
  * @param  无
  * @retval 无
  */
void LCD_Delay2ms(void)
{
	unsigned char i, j;
	i=4;
	j=225;
	do
	{
		while(--j);
	}while(--i);
}

/**
  * @brief  LCD1602写指令
  * @param  Command 要写入的指令
  * @retval 无
  */
void LCD_WriteCommand(unsigned char Command)
{
	LCD_RS=0;
	LCD_RW=0;
	LCD_DataPort=Command;
	LCD_EN=1;
	LCD_Delay35us();
	LCD_EN=0;
	LCD_Delay35us();
}

/**
  * @brief  LCD1602写数据
  * @param  Data 要写入的数据
  * @retval 无
  */
void LCD_WriteData(unsigned char Data)
{
	LCD_RS=1;
	LCD_RW=0;
	LCD_DataPort=Data;
	LCD_EN=1;
	LCD_Delay35us();
	LCD_EN=0;
	LCD_Delay35us();
}

/**
  * @brief  LCD1602设置光标位置
  * @param  Line 行位置,范围:1~2
  * @param  Column 列位置,范围:1~16
  * @retval 无
  */
void LCD_SetCursor(unsigned char Line,unsigned char Column)
{
	if(Line==1)
	{
		LCD_WriteCommand(0x80|(Column-1));
	}
	else if(Line==2)
	{
		LCD_WriteCommand(0x80|(Column-1+0x40));
	}
}

/**
  * @brief  LCD1602初始化函数
  * @param  无
  * @retval 无
  */
void LCD_Init()
{
	LCD_WriteCommand(0x38);	//八位数据接口,两行显示,5*7点阵
	LCD_WriteCommand(0x0C);	//显示开,光标关,闪烁关
	LCD_WriteCommand(0x06);	//数据读写操作后,光标自动加一,画面不动
	LCD_WriteCommand(0x01);	//光标复位,清屏
	LCD_Delay2ms();	//清屏指令执行需要较长时间,需要较长的延时
}

/**
  * @brief  在LCD1602指定位置上显示一个字符
  * @param  Line 行位置,范围:1~2
  * @param  Column 列位置,范围:1~16
  * @param  Char 要显示的字符
  * @retval 无
  */
void LCD_ShowChar(unsigned char Line,unsigned char Column,char Char)
{
	LCD_SetCursor(Line,Column);
	LCD_WriteData(Char);
}

/**
  * @brief  在LCD1602指定位置开始显示所给字符串
  * @param  Line 起始行位置,范围:1~2
  * @param  Column 起始列位置,范围:1~16
  * @param  String 要显示的字符串
  * @retval 无
  */
void LCD_ShowString(unsigned char Line,unsigned char Column,char *String)
{
	unsigned char i;
	LCD_SetCursor(Line,Column);
	for(i=0;String[i]!='\0';i++)
	{
		LCD_WriteData(String[i]);
	}
}

/**
  * @brief  返回值=X的Y次方
  */
int LCD_Pow(int X,int Y)
{
	unsigned char i;
	int Result=1;
	for(i=0;i<Y;i++)
	{
		Result*=X;
	}
	return Result;
}

/**
  * @brief  在LCD1602指定位置开始显示所给数字
  * @param  Line 起始行位置,范围:1~2
  * @param  Column 起始列位置,范围:1~16
  * @param  Number 要显示的数字,范围:0~65535
  * @param  Length 要显示数字的长度,范围:1~5
  * @retval 无
  */
void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
{
	unsigned char i;
	LCD_SetCursor(Line,Column);
	for(i=Length;i>0;i--)
	{
		LCD_WriteData(Number/LCD_Pow(10,i-1)%10+'0');
	}
}

/**
  * @brief  在LCD1602指定位置开始以有符号十进制显示所给数字
  * @param  Line 起始行位置,范围:1~2
  * @param  Column 起始列位置,范围:1~16
  * @param  Number 要显示的数字,范围:-32768~32767
  * @param  Length 要显示数字的长度,范围:1~5
  * @retval 无
  */
void LCD_ShowSignedNum(unsigned char Line,unsigned char Column,int Number,unsigned char Length)
{
	unsigned char i;
	unsigned int Number1;
	LCD_SetCursor(Line,Column);
	if(Number>=0)
	{
		LCD_WriteData('+');
		Number1=Number;
	}
	else
	{
		LCD_WriteData('-');
		Number1=-Number;
	}
	for(i=Length;i>0;i--)
	{
		LCD_WriteData(Number1/LCD_Pow(10,i-1)%10+'0');
	}
}

/**
  * @brief  在LCD1602指定位置开始以十六进制显示所给数字
  * @param  Line 起始行位置,范围:1~2
  * @param  Column 起始列位置,范围:1~16
  * @param  Number 要显示的数字,范围:0~0xFFFF
  * @param  Length 要显示数字的长度,范围:1~4
  * @retval 无
  */
void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
{
	unsigned char i,SingleNumber;
	LCD_SetCursor(Line,Column);
	for(i=Length;i>0;i--)
	{
		SingleNumber=Number/LCD_Pow(16,i-1)%16;
		if(SingleNumber<10)
		{
			LCD_WriteData(SingleNumber+'0');
		}
		else
		{
			LCD_WriteData(SingleNumber-10+'A');
		}
	}
}

/**
  * @brief  在LCD1602指定位置开始以二进制显示所给数字
  * @param  Line 起始行位置,范围:1~2
  * @param  Column 起始列位置,范围:1~16
  * @param  Number 要显示的数字,范围:0~1111 1111 1111 1111
  * @param  Length 要显示数字的长度,范围:1~16
  * @retval 无
  */
void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
{
	unsigned char i;
	LCD_SetCursor(Line,Column);
	for(i=Length;i>0;i--)
	{
		LCD_WriteData(Number/LCD_Pow(2,i-1)%2+'0');
	}
}

/**
  * @brief  在LCD1602的CGRAM中写入8个自定义字符的64个字节,每个5*8点阵横向取模,使用每个字节的低5位
  * @param  无
  * @retval 无
  */
void LCD_MakeChar(void)
{
	unsigned char i;
	LCD_WriteCommand(0x40);	//CGRAM起始地址为0x40
	for(i=0;i<64;i++)	//01XX XXXX,最多可以在CGRAM中写入64个数据,一个自定义字符对应8个数据
	{
		LCD_WriteData(CGRAMData[i]);
	}
}

/**
  * @brief  LCD1602的光标复位,清屏
  * @param  无
  * @retval 无
  */
void LCD_Clear(void)
{
	LCD_WriteCommand(0x01);
	LCD_Delay2ms();
}

//程序大小超过单片机存储空间了,暂时注释掉两个用不到的函数
/**
  * @brief  LCD1602的屏幕向左移动一个字符位,光标不动
  * @param  无
  * @retval 无
  */
//void LCD_MoveLeft(void)
//{
//	LCD_WriteCommand(0x18);
//}

/**
  * @brief  LCD1602的屏幕向右移动一个字符位,光标不动
  * @param  无
  * @retval 无
  */
//void LCD_MoveRight(void)
//{
//	LCD_WriteCommand(0x1C);
//}

/**
  * @brief  将汉字取模得到的数据进行处理,处理后保存到CGRAMData缓存数组里,以便写入LCD的CGRAM中
  * @param  Array 传递过来的数组的首地址
  * @param  Part LCD的区域编号(将整个屏幕分成四部分),范围:1~4
  * @param  Offset 偏移量,整体向左移动Offset*16个像素,即整体向左移动Offset个汉字
  * @retval 无
  */
void LCD_Convert_MoveLeft(unsigned char *Array,Part,Offset)	//向左移动
{
    unsigned char i;
	Array+=Offset*32;
	
	//将一个汉字拆成6个自定义字符
	if(Part==1)
	{
		for(i=0;i<16;i++){CGRAMData[i]=*(Array+i)>>3;}
		for(i=0;i<16;i++){CGRAMData[i+16]=(*(Array+i)<<2)|(*(Array+i+16)>>6);}
		for(i=0;i<16;i++){CGRAMData[i+32]=*(Array+i+16)>>1;}
		for(i=0;i<16;i++){CGRAMData[i+48]=*(Array+i+32)>>3;}
	}
	if(Part==2)
	{
		for(i=0;i<16;i++){CGRAMData[i]=(*(Array+i+32)<<2)|(*(Array+i+48)>>6);}
		for(i=0;i<16;i++){CGRAMData[i+16]=*(Array+i+48)>>1;}
		for(i=0;i<16;i++){CGRAMData[i+32]=*(Array+i+64)>>3;}
		for(i=0;i<16;i++){CGRAMData[i+48]=(*(Array+i+64)<<2)|(*(Array+i+80)>>6);}
	}
	if(Part==3)
	{
		for(i=0;i<16;i++){CGRAMData[i]=*(Array+i+80)>>1;}
		for(i=0;i<16;i++){CGRAMData[i+16]=*(Array+i+96)>>3;}
		for(i=0;i<16;i++){CGRAMData[i+32]=(*(Array+i+96)<<2)|(*(Array+i+112)>>6);}
		for(i=0;i<16;i++){CGRAMData[i+48]=*(Array+i+112)>>1;}
	}
	if(Part==4)
	{
		for(i=0;i<16;i++){CGRAMData[i]=*(Array+i+128)>>3;}
		for(i=0;i<16;i++){CGRAMData[i+16]=(*(Array+i+128)<<2)|(*(Array+i+144)>>6);}
		for(i=0;i<16;i++){CGRAMData[i+32]=*(Array+i+144)>>1;}
		for(i=0;i<16;i++){CGRAMData[i+48]=*(Array+i+160)>>3;}
	}
}

/**
  * @brief  将汉字取模得到的数据进行处理,处理后保存到CGRAMData缓存数组里,以便写入LCD的CGRAM中
  * @param  Array 传递过来的数组的首地址
  * @param  Part LCD的区域编号(将整个屏幕分成四部分),范围:1~4
  * @param  Offset 偏移量,整体向上移动Offset个像素
  * @retval 无
  */
void LCD_Convert_MoveUp(unsigned char *Array,Part,Offset)
{
    unsigned char i,m,n;
	m=Offset/16;
	n=Offset%16;
	Array+=m*192;
	if(Part==1)
	{
		for(i=0;i<16;i++)
		{
			if(i<16-n){CGRAMData[i]=*(Array+i+n)>>3;}
			else{CGRAMData[i]=*(Array+i+n+176)>>3;}
		}
		for(i=0;i<16;i++)
		{
			if(i<16-n){CGRAMData[i+16]=(*(Array+i+n)<<2)|(*(Array+i+16+n)>>6);}
			else{CGRAMData[i+16]=(*(Array+i+n+176)<<2)|(*(Array+i+16+n+176)>>6);}
		}
		for(i=0;i<16;i++)
		{
			if(i<16-n){CGRAMData[i+32]=*(Array+i+16+n)>>1;}
			else{CGRAMData[i+32]=*(Array+i+16+n+176)>>1;}
		}
		for(i=0;i<16;i++)
		{
			if(i<16-n){CGRAMData[i+48]=*(Array+i+32+n)>>3;}
			else{CGRAMData[i+48]=*(Array+i+32+n+176)>>3;}
		}
	}
	if(Part==2)
	{
		for(i=0;i<16;i++)
		{
			if(i<16-n){CGRAMData[i]=(*(Array+i+32+n)<<2)|(*(Array+i+48+n)>>6);}
			else{CGRAMData[i]=(*(Array+i+32+n+176)<<2)|(*(Array+i+48+n+176)>>6);}
		}
		for(i=0;i<16;i++)
		{
			if(i<16-n){CGRAMData[i+16]=*(Array+i+48+n)>>1;}
			else{CGRAMData[i+16]=*(Array+i+48+n+176)>>1;}
		}
		for(i=0;i<16;i++)
		{
			if(i<16-n){CGRAMData[i+32]=*(Array+i+64+n)>>3;}
			else{CGRAMData[i+32]=*(Array+i+64+n+176)>>3;}
		}
		for(i=0;i<16;i++)
		{
			if(i<16-n){CGRAMData[i+48]=(*(Array+i+64+n)<<2)|(*(Array+i+80+n)>>6);}
			else{CGRAMData[i+48]=(*(Array+i+64+n+176)<<2)|(*(Array+i+80+n+176)>>6);}
		}
	}
	if(Part==3)
	{
		for(i=0;i<16;i++)
		{
			if(i<16-n){CGRAMData[i]=*(Array+i+80+n)>>1;}
			else{CGRAMData[i]=*(Array+i+80+n+176)>>1;}
		}
		for(i=0;i<16;i++)
		{
			if(i<16-n){CGRAMData[i+16]=*(Array+i+96+n)>>3;}
			else{CGRAMData[i+16]=*(Array+i+96+n+176)>>3;}
		}
		for(i=0;i<16;i++)
		{
			if(i<16-n){CGRAMData[i+32]=(*(Array+i+96+n)<<2)|(*(Array+i+112+n)>>6);}
			else{CGRAMData[i+32]=(*(Array+i+96+n+176)<<2)|(*(Array+i+112+n+176)>>6);}
		}
		for(i=0;i<16;i++)
		{
			if(i<16-n){CGRAMData[i+48]=*(Array+i+112+n)>>1;}
			else{CGRAMData[i+48]=*(Array+i+112+n+176)>>1;}
		}
	}
	if(Part==4)
	{
		for(i=0;i<16;i++)
		{
			if(i<16-n){CGRAMData[i]=*(Array+i+128+n)>>3;}
			else{CGRAMData[i]=*(Array+i+128+n+176)>>3;}
		}
		for(i=0;i<16;i++)
		{
			if(i<16-n){CGRAMData[i+16]=(*(Array+i+128+n)<<2)|(*(Array+i+144+n)>>6);}
			else{CGRAMData[i+16]=(*(Array+i+128+n+176)<<2)|(*(Array+i+144+n+176)>>6);}
		}
		for(i=0;i<16;i++)
		{
			if(i<16-n){CGRAMData[i+32]=*(Array+i+144+n)>>1;}
			else{CGRAMData[i+32]=*(Array+i+144+n+176)>>1;}
		}
		for(i=0;i<16;i++)
		{
			if(i<16-n){CGRAMData[i+48]=*(Array+i+160+n)>>3;}
			else{CGRAMData[i+48]=*(Array+i+160+n+176)>>3;}
		}
	}
}

/**
  * @brief  扫描显示函数
  * @param  Part 要显示的区域的编号,范围:1~4(从左到右)
  * @retval 无
  */
void LCD_ShowChinese(unsigned char Part)
{
	Part--;
	
	//显示一段时间后清空显示,防止多个区域都显示相同的内容
	if(Part)	//清空上一个区域的内容
	{
		LCD_WriteCommand(0x80+(Part-1)*4);
		LCD_WriteData(0x20);	//清空显示,写“0x20”或直接写“20”都可以
		LCD_WriteData(0x20);
		LCD_WriteData(0x20);
		LCD_WriteData(0x20);
		LCD_WriteCommand(0xC0+(Part-1)*4);
		LCD_WriteData(0x20);
		LCD_WriteData(0x20);
		LCD_WriteData(0x20);
		LCD_WriteData(0x20);
	}
	else
	{
		LCD_WriteCommand(0x80+12);
		LCD_WriteData(0x20);
		LCD_WriteData(0x20);
		LCD_WriteData(0x20);
		LCD_WriteData(0x20);
		LCD_WriteCommand(0xC0+12);
		LCD_WriteData(0x20);
		LCD_WriteData(0x20);
		LCD_WriteData(0x20);
		LCD_WriteData(0x20);
	}
	
	//将CGRAMData数组中的64个数据写入CGRAM进行更新
	LCD_MakeChar();
	
	//在对应位置写入8个自定义字符,先写第一行,在写第二行
	LCD_WriteCommand(0x80+Part*4);
	LCD_WriteData(0);
	LCD_WriteData(2);
	LCD_WriteData(4);
	LCD_WriteData(6);
	LCD_WriteCommand(0xC0+Part*4);
	LCD_WriteData(1);
	LCD_WriteData(3);
	LCD_WriteData(5);
	LCD_WriteData(7);
}

3、汉字字模头文件

h文件

//行列式取模,高位在左,阴码(1为亮,0为灭)

unsigned char code ChineseTable1[]={

//无显示,用来制作汉字进入屏幕的效果
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",2*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",4*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",5*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",6*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",7*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",8*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",9*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",10*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",11*/

//《静夜思》
0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x09,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,
0x10,0x24,0x48,0x90,0x20,0x40,0x80,0x00,0x80,0x40,0x20,0x90,0x48,0x24,0x10,0x00,/*"《",0*/
0x10,0x10,0xFE,0x10,0x7C,0x11,0xFE,0x00,0x7D,0x44,0x7C,0x45,0x7C,0x44,0x54,0x48,
0x40,0x40,0x78,0x88,0x10,0xFC,0x24,0x24,0xFE,0x24,0x24,0xFC,0x24,0x20,0xA0,0x40,/*"静",1*/
0x02,0x01,0xFF,0x08,0x08,0x10,0x11,0x31,0x52,0x95,0x11,0x10,0x10,0x10,0x11,0x16,
0x00,0x00,0xFE,0x80,0x80,0xF8,0x08,0x48,0x28,0x10,0x10,0xA0,0x40,0xA0,0x18,0x06,/*"夜",2*/
0x00,0x3F,0x21,0x21,0x3F,0x21,0x21,0x3F,0x20,0x01,0x08,0x48,0x48,0x48,0x87,0x00,
0x00,0xF8,0x08,0x08,0xF8,0x08,0x08,0xF8,0x08,0x00,0x88,0x84,0x12,0x12,0xF0,0x00,/*"思",3*/
0x08,0x24,0x12,0x09,0x04,0x02,0x01,0x00,0x01,0x02,0x04,0x09,0x12,0x24,0x08,0x00,
0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x90,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,/*"》",4*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",5*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",6*/

//唐·李白
0x01,0x00,0x3F,0x20,0x2F,0x20,0x3F,0x20,0x2F,0x20,0x2F,0x28,0x48,0x48,0x8F,0x08,
0x00,0x80,0xFE,0x80,0xF8,0x88,0xFE,0x88,0xF8,0x80,0xF8,0x08,0x08,0x08,0xF8,0x08,/*"唐",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,/*"·",1*/
0x01,0x01,0x7F,0x03,0x05,0x09,0x31,0xC1,0x0F,0x00,0x00,0xFF,0x01,0x01,0x05,0x02,
0x00,0x00,0xFC,0x80,0x40,0x20,0x18,0x06,0xE0,0x40,0x80,0xFE,0x00,0x00,0x00,0x00,/*"李",2*/
0x01,0x02,0x04,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,
0x00,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x08,0x08,0xF8,0x08,/*"白",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",4*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",5*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",6*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",7*/

//床前明月光,
0x01,0x00,0x3F,0x20,0x20,0x20,0x2F,0x20,0x21,0x22,0x22,0x24,0x48,0x50,0x80,0x00,
0x00,0x80,0xFE,0x00,0x80,0x80,0xFC,0x80,0xC0,0xA0,0xA0,0x90,0x88,0x86,0x80,0x80,/*"床",0*/
0x10,0x08,0x08,0xFF,0x00,0x3E,0x22,0x22,0x3E,0x22,0x22,0x3E,0x22,0x22,0x2A,0x24,
0x10,0x10,0x20,0xFE,0x00,0x08,0x48,0x48,0x48,0x48,0x48,0x48,0x08,0x08,0x28,0x10,/*"前",1*/
0x00,0x00,0x7C,0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0x7C,0x44,0x01,0x01,0x02,0x04,
0x00,0xFC,0x84,0x84,0x84,0xFC,0x84,0x84,0x84,0xFC,0x84,0x84,0x04,0x04,0x14,0x08,/*"明",2*/
0x00,0x1F,0x10,0x10,0x10,0x1F,0x10,0x10,0x10,0x1F,0x10,0x10,0x20,0x20,0x40,0x80,
0x00,0xF8,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x08,0x28,0x10,/*"月",3*/
0x01,0x21,0x11,0x09,0x09,0x01,0xFF,0x04,0x04,0x04,0x04,0x08,0x08,0x10,0x20,0xC0,
0x00,0x08,0x08,0x10,0x20,0x00,0xFE,0x40,0x40,0x40,0x40,0x42,0x42,0x42,0x3E,0x00,/*"光",4*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x10,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*",",5*/

//疑是地上霜。
0x40,0x4D,0x70,0x44,0x44,0x3D,0x40,0x7C,0x90,0x10,0xFE,0x10,0x28,0x25,0x45,0x82,
0x00,0xFC,0x08,0x50,0x20,0xFE,0x24,0x28,0xA0,0xB8,0xA0,0xA0,0xE0,0x20,0x1E,0x00,/*"疑",6*/
0x1F,0x10,0x10,0x1F,0x10,0x10,0x1F,0x00,0xFF,0x01,0x11,0x11,0x11,0x29,0x45,0x83,
0xF0,0x10,0x10,0xF0,0x10,0x10,0xF0,0x00,0xFE,0x00,0x00,0xF8,0x00,0x00,0x00,0xFE,/*"是",7*/
0x10,0x10,0x10,0x11,0x11,0xFD,0x11,0x13,0x11,0x11,0x11,0x1D,0xE1,0x41,0x00,0x00,
0x20,0x20,0x20,0x20,0x2C,0x34,0x64,0xA4,0x24,0x34,0x28,0x22,0x22,0x02,0xFE,0x00,/*"地",8*/
0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xFF,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,/*"上",9*/
0x3F,0x01,0x7F,0x41,0x9D,0x01,0x1D,0x00,0x08,0x7E,0x18,0x2C,0x4A,0x88,0x08,0x08,
0xF8,0x00,0xFE,0x02,0x74,0x00,0x70,0x00,0xFC,0x84,0xFC,0x84,0xFC,0x84,0xFC,0x84,/*"霜",10*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"。",11*/

//举头望明月,
0x22,0x11,0x11,0x00,0xFF,0x08,0x11,0x21,0xCF,0x01,0x01,0x7F,0x01,0x01,0x01,0x01,
0x08,0x08,0x10,0x20,0xFE,0x20,0x10,0x08,0xE6,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,/*"举",12*/
0x00,0x00,0x08,0x04,0x24,0x10,0x10,0x00,0xFF,0x01,0x01,0x02,0x04,0x08,0x30,0xC0,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFE,0x00,0x40,0x20,0x10,0x08,0x04,0x04,/*"头",13*/
0x10,0x08,0xFF,0x20,0x20,0x26,0x38,0x20,0x01,0x7F,0x01,0x01,0x3F,0x01,0x01,0xFF,
0x00,0x7C,0x44,0x7C,0x44,0x7C,0x44,0x94,0x08,0xFC,0x00,0x00,0xF8,0x00,0x00,0xFE,/*"望",14*/
0x00,0x00,0x7C,0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0x7C,0x44,0x01,0x01,0x02,0x04,
0x00,0xFC,0x84,0x84,0x84,0xFC,0x84,0x84,0x84,0xFC,0x84,0x84,0x04,0x04,0x14,0x08,/*"明",15*/
0x00,0x1F,0x10,0x10,0x10,0x1F,0x10,0x10,0x10,0x1F,0x10,0x10,0x20,0x20,0x40,0x80,
0x00,0xF8,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x08,0x28,0x10,/*"月",16*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x10,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*",",17*/
0x08,0x08,0x0B,0x12,0x12,0x32,0x32,0x53,0x92,0x12,0x12,0x12,0x12,0x12,0x13,0x12,

//低头思故乡。
0x08,0x3C,0xE0,0x20,0x20,0x20,0x20,0xFE,0x20,0x10,0x10,0x12,0x0A,0x8A,0x26,0x12,/*"低",18*/
0x00,0x00,0x08,0x04,0x24,0x10,0x10,0x00,0xFF,0x01,0x01,0x02,0x04,0x08,0x30,0xC0,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFE,0x00,0x40,0x20,0x10,0x08,0x04,0x04,/*"头",19*/
0x00,0x3F,0x21,0x21,0x3F,0x21,0x21,0x3F,0x20,0x01,0x08,0x48,0x48,0x48,0x87,0x00,
0x00,0xF8,0x08,0x08,0xF8,0x08,0x08,0xF8,0x08,0x00,0x88,0x84,0x12,0x12,0xF0,0x00,/*"思",20*/
0x10,0x10,0x10,0x10,0xFE,0x11,0x12,0x10,0x7C,0x44,0x44,0x44,0x44,0x7C,0x45,0x02,
0x40,0x40,0x40,0x80,0xFE,0x08,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x88,0x04,0x02,/*"故",21*/
0x02,0x02,0x04,0x08,0x10,0x3F,0x01,0x02,0x04,0x1F,0x00,0x00,0x01,0x06,0x18,0xE0,
0x00,0x00,0x20,0x20,0x40,0x80,0x08,0x08,0x10,0xE0,0x40,0x80,0x00,0x00,0x00,0x00,/*"乡",22*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"。",23*/

//无显示,用来制作汉字退出屏幕的效果
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",2*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",4*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",5*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",6*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",7*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",8*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",9*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",10*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",11*/

};

unsigned char code ChineseTable2[]={

//无显示
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",2*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",4*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",5*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",6*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",7*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",8*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",9*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",10*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",11*/

//《春晓》
0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x09,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,
0x10,0x24,0x48,0x90,0x20,0x40,0x80,0x00,0x80,0x40,0x20,0x90,0x48,0x24,0x10,0x00,/*"《",0*/
0x01,0x01,0x7F,0x01,0x3F,0x02,0xFF,0x08,0x10,0x2F,0xC8,0x08,0x0F,0x08,0x08,0x0F,
0x00,0x00,0xFC,0x00,0xF8,0x00,0xFE,0x20,0x10,0xE8,0x26,0x20,0xE0,0x20,0x20,0xE0,/*"春",1*/
0x00,0x00,0x78,0x4B,0x48,0x48,0x48,0x7B,0x48,0x4B,0x48,0x48,0x79,0x49,0x02,0x04,
0x80,0x80,0xBC,0xC0,0x50,0x24,0xD4,0x0C,0x00,0xFE,0x90,0x90,0x12,0x12,0x0E,0x00,/*"晓",2*/
0x08,0x24,0x12,0x09,0x04,0x02,0x01,0x00,0x01,0x02,0x04,0x09,0x12,0x24,0x08,0x00,
0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x90,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,/*"》",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",4*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",5*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",6*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",7*/

//唐·孟浩然
0x01,0x00,0x3F,0x20,0x2F,0x20,0x3F,0x20,0x2F,0x20,0x2F,0x28,0x48,0x48,0x8F,0x08,
0x00,0x80,0xFE,0x80,0xF8,0x88,0xFE,0x88,0xF8,0x80,0xF8,0x08,0x08,0x08,0xF8,0x08,/*"唐",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,/*"·",1*/
0x00,0x1F,0x00,0x01,0xFF,0x01,0x01,0x05,0x02,0x3F,0x24,0x24,0x24,0x24,0xFF,0x00,
0x00,0xE0,0x40,0x80,0xFE,0x00,0x00,0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFE,0x00,/*"孟",2*/
0x00,0x22,0x12,0x13,0x84,0x48,0x40,0x17,0x10,0x20,0xE3,0x22,0x22,0x22,0x23,0x02,
0x40,0x40,0x40,0xFC,0x40,0x40,0x40,0xFE,0x00,0x00,0xF8,0x08,0x08,0x08,0xF8,0x08,/*"浩",3*/
0x10,0x10,0x1E,0x22,0x33,0x4A,0xA4,0x14,0x08,0x10,0x21,0x42,0x00,0x48,0x44,0x84,
0x20,0x28,0x24,0x20,0xFE,0x20,0x50,0x50,0x88,0x88,0x04,0x02,0x00,0x88,0x44,0x44,/*"然",4*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",5*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",6*/

//春眠不觉晓,
0x01,0x01,0x7F,0x01,0x3F,0x02,0xFF,0x08,0x10,0x2F,0xC8,0x08,0x0F,0x08,0x08,0x0F,
0x00,0x00,0xFC,0x00,0xF8,0x00,0xFE,0x20,0x10,0xE8,0x26,0x20,0xE0,0x20,0x20,0xE0,/*"春",0*/
0x00,0x01,0x7D,0x45,0x45,0x7D,0x45,0x45,0x7D,0x45,0x45,0x45,0x7D,0x45,0x01,0x01,
0x00,0xFC,0x04,0x04,0x04,0xFC,0x20,0x20,0xFE,0x20,0x20,0x10,0x12,0x4A,0x86,0x02,/*"眠",1*/
0x00,0x7F,0x00,0x00,0x01,0x01,0x03,0x05,0x09,0x11,0x21,0x41,0x81,0x01,0x01,0x01,
0x00,0xFC,0x80,0x80,0x00,0x00,0x40,0x20,0x10,0x08,0x04,0x04,0x00,0x00,0x00,0x00,/*"不",2*/
0x22,0x11,0x00,0x7F,0x40,0x80,0x1F,0x10,0x11,0x11,0x11,0x12,0x02,0x04,0x18,0x60,
0x08,0x10,0x20,0xFE,0x02,0x04,0xF0,0x10,0x10,0x10,0x10,0x90,0x80,0x84,0x84,0x7C,/*"觉",3*/
0x00,0x00,0x78,0x4B,0x48,0x48,0x48,0x7B,0x48,0x4B,0x48,0x48,0x79,0x49,0x02,0x04,
0x80,0x80,0xBC,0xC0,0x50,0x24,0xD4,0x0C,0x00,0xFE,0x90,0x90,0x12,0x12,0x0E,0x00,/*"晓",4*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x10,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*",",5*/

//处处闻啼鸟。
0x10,0x10,0x10,0x1E,0x12,0x22,0x22,0x52,0x94,0x14,0x08,0x08,0x14,0x23,0x40,0x80,
0x40,0x40,0x40,0x40,0x60,0x50,0x48,0x44,0x44,0x40,0x40,0x40,0x40,0x00,0xFE,0x00,/*"处",6*/
0x10,0x10,0x10,0x1E,0x12,0x22,0x22,0x52,0x94,0x14,0x08,0x08,0x14,0x23,0x40,0x80,
0x40,0x40,0x40,0x40,0x60,0x50,0x48,0x44,0x44,0x40,0x40,0x40,0x40,0x00,0xFE,0x00,/*"处",7*/
0x20,0x17,0x00,0x40,0x5F,0x44,0x47,0x44,0x47,0x44,0x44,0x5F,0x40,0x40,0x40,0x40,
0x00,0xFC,0x04,0x04,0xF4,0x44,0xC4,0x44,0xC4,0x44,0x74,0xC4,0x44,0x44,0x54,0x08,/*"闻",8*/
0x00,0x00,0x79,0x48,0x48,0x48,0x4B,0x4A,0x4C,0x49,0x49,0x79,0x49,0x01,0x00,0x00,
0x40,0x20,0xFC,0x00,0x88,0x50,0xFE,0x22,0x24,0xFC,0x24,0x24,0x34,0x28,0x20,0x20,/*"啼",9*/
0x01,0x02,0x1F,0x10,0x12,0x11,0x11,0x10,0x10,0x1F,0x00,0x00,0x7F,0x00,0x00,0x00,
0x00,0x00,0xF0,0x10,0x10,0x10,0x50,0x20,0x00,0xFC,0x04,0x04,0xE4,0x04,0x28,0x10,/*"鸟",10*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"。",11*/

//夜来风雨声,
0x02,0x01,0xFF,0x08,0x08,0x10,0x11,0x31,0x52,0x95,0x11,0x10,0x10,0x10,0x11,0x16,
0x00,0x00,0xFE,0x80,0x80,0xF8,0x08,0x48,0x28,0x10,0x10,0xA0,0x40,0xA0,0x18,0x06,/*"夜",12*/
0x01,0x01,0x01,0x7F,0x01,0x11,0x09,0x09,0xFF,0x03,0x05,0x09,0x31,0xC1,0x01,0x01,
0x00,0x00,0x00,0xFC,0x00,0x10,0x10,0x20,0xFE,0x80,0x40,0x20,0x18,0x06,0x00,0x00,/*"来",13*/
0x00,0x3F,0x20,0x20,0x28,0x24,0x22,0x22,0x21,0x21,0x22,0x22,0x24,0x48,0x40,0x80,
0x00,0xF0,0x10,0x10,0x50,0x50,0x90,0x90,0x10,0x10,0x90,0x92,0x4A,0x4A,0x06,0x02,/*"风",14*/
0x00,0xFF,0x01,0x01,0x01,0x7F,0x41,0x41,0x49,0x45,0x41,0x49,0x45,0x41,0x41,0x40,
0x00,0xFE,0x00,0x00,0x00,0xFC,0x04,0x04,0x44,0x24,0x04,0x44,0x24,0x04,0x14,0x08,/*"雨",15*/
0x01,0x01,0xFF,0x01,0x7F,0x00,0x3F,0x21,0x21,0x3F,0x20,0x20,0x20,0x40,0x40,0x80,
0x00,0x00,0xFE,0x00,0xFC,0x00,0xF8,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,/*"声",16*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x10,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*",",17*/

//花落知多少。
0x08,0x08,0xFF,0x08,0x00,0x08,0x08,0x10,0x30,0x50,0x91,0x12,0x14,0x10,0x10,0x10,
0x20,0x20,0xFE,0x20,0x00,0x88,0x90,0xA0,0xC0,0x80,0x80,0x82,0x82,0x82,0x7E,0x00,/*"花",18*/
0x08,0x08,0xFF,0x08,0x20,0x10,0x11,0x82,0x48,0x49,0x16,0xE1,0x21,0x21,0x21,0x21,
0x20,0x20,0xFE,0x20,0x80,0xF8,0x08,0x90,0x60,0x98,0x06,0xF8,0x08,0x08,0xF8,0x08,/*"落",19*/
0x20,0x20,0x20,0x7E,0x48,0x88,0x08,0x08,0xFF,0x08,0x14,0x14,0x22,0x22,0x42,0x80,
0x00,0x00,0x7C,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x7C,0x44,0x00,0x00,/*"知",20*/
0x02,0x02,0x07,0x08,0x38,0x04,0x03,0x0C,0x71,0x02,0x0C,0x32,0x01,0x01,0x0E,0x70,
0x00,0x00,0xF0,0x20,0x40,0x80,0x40,0x80,0xF8,0x08,0x10,0x20,0x40,0x80,0x00,0x00,/*"多",21*/
0x01,0x01,0x01,0x09,0x09,0x11,0x11,0x21,0x41,0x01,0x00,0x00,0x01,0x02,0x0C,0x70,
0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x14,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,/*"少",22*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"。",23*/

//无显示
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",2*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",4*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",5*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",6*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",7*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",8*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",9*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",10*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",11*/

};

unsigned char code ChineseTable3[]={

//无显示
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",2*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",4*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",5*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",6*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",7*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",8*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",9*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",10*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",11*/
	
//by 甘腾胜
0x00,0x00,0x00,0x00,0xC0,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x64,0x58,0x00,0x00,/*"b",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,0x18,0x10,0x10,0x60,/*"y",1*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",2*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/
0x08,0x08,0x08,0x08,0x7F,0x08,0x08,0x08,0x08,0x0F,0x08,0x08,0x08,0x08,0x0F,0x08,
0x10,0x10,0x10,0x10,0xFE,0x10,0x10,0x10,0x10,0xF0,0x10,0x10,0x10,0x10,0xF0,0x10,/*"甘",4*/
0x02,0x79,0x49,0x4F,0x48,0x7F,0x49,0x4A,0x4D,0x78,0x49,0x49,0x48,0x4B,0x48,0x98,
0x48,0x48,0x50,0xFC,0x40,0xFE,0x10,0x08,0xF6,0x10,0x10,0xFC,0x04,0xE4,0x14,0x08,/*"腾",5*/
0x00,0x78,0x49,0x49,0x49,0x79,0x4A,0x48,0x48,0x79,0x48,0x48,0x48,0x48,0x4B,0x98,
0x20,0x20,0x20,0x20,0xFC,0x20,0x20,0x20,0x20,0xFC,0x20,0x20,0x20,0x20,0xFE,0x00,/*"胜",6*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",7*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",8*/

//@ 20241108
0x00,0x00,0x00,0x38,0x44,0x5A,0xAA,0xAA,0xAA,0xAA,0xAA,0x5C,0x42,0x3C,0x00,0x00,/*"@",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x02,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,/*"2",2*/
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*"0",3*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x02,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,/*"2",4*/
0x00,0x00,0x00,0x04,0x0C,0x0C,0x14,0x24,0x24,0x44,0x7F,0x04,0x04,0x1F,0x00,0x00,/*"4",5*/
0x00,0x00,0x00,0x08,0x38,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00,/*"1",6*/
0x00,0x00,0x00,0x08,0x38,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00,/*"1",7*/
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*"0",8*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,/*"8",9*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",10*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",11*/

//无显示
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",2*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",4*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",5*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",6*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",7*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",8*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",9*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",10*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",11*/

};

unsigned char code ChineseTable4[]={

//无显示
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",2*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",4*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",5*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",6*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",7*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",8*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",9*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",10*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",11*/
	
//B站图标
0x00,0x04,0x02,0x01,0x3F,0x40,0x40,0x40,0x4C,0x4C,0x4C,0x40,0x40,0x40,0x3F,0x00,
0x00,0x20,0x40,0x80,0xFC,0x02,0x02,0x02,0x32,0x32,0x32,0x02,0x02,0x02,0xFC,0x00,/*"B站图标",0*/
0x00,0x00,0x00,0x01,0x01,0x03,0x37,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x37,0x00,
0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFC,0xFC,0xF8,0x00,/*"点赞",0*/
0x00,0x03,0x0F,0x18,0x38,0x3E,0x78,0x72,0x72,0x76,0x36,0x3E,0x1E,0x0F,0x03,0x00,
0x00,0xC0,0xF0,0x18,0x1C,0x7C,0x1E,0x4E,0x4E,0x6E,0x6C,0x7C,0x78,0xF0,0xC0,0x00,/*"投币",0*/
0x01,0x03,0x03,0x07,0x0F,0x7F,0xFF,0x7F,0x3F,0x1F,0x1F,0x1F,0x1F,0x18,0x10,0x00,
0x00,0x80,0x80,0xC0,0xE0,0xFC,0xFE,0xFC,0xF8,0xF0,0xF0,0xF0,0xF0,0x30,0x10,0x00,/*"收藏",0*/
0x00,0x00,0x00,0x00,0x00,0x01,0x0F,0x1F,0x3F,0x3F,0x70,0x60,0x40,0x00,0x00,0x00,
0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFE,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x00,/*"转发",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/

//无显示
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",2*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",4*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",5*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",6*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",7*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",8*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",9*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",10*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",11*/

};

四、主函数

main.c

/*
by甘腾胜@20241108
效果和工程文件下载:可以在B站搜索“甘腾胜”或“gantengsheng”查看
单片机:STC89C52RC
晶振:12T@12.0000MHz
外设:只有一个,LCD1602液晶显示屏
注意1:由于LCD1602写入数据要进行延时,所以导致每个区域(共分为4个)显示的占空比较小,会有闪烁的现象,也要将对比度调大点才方便观察
注意2:普中A2开发板也使用,改一下LCD1602.c文件里的引脚定义就行了
*/

#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "Chinese.h"	//将汉字的取模数据放在头文件,防止其在main.c中占太多空间

void main()
{
	unsigned char i,j,k;
	LCD_Init();	//LCD1602初始化
	while(1)
	{
		
		for(k=0;k<42;k++)	//偏移,k增加1,则整体向左移动一个汉字
		{
			for(j=0;j<7;j++)	//延时
			{
				for(i=0;i<4;i++)	//LCD1602分成的四部分扫描显示
				{
					LCD_Convert_MoveLeft(ChineseTable1,i+1,k);	//显示古诗《静夜思》,向左移动
					LCD_ShowChinese(i+1);
					Delay(20);	//隔20ms切换显示
				}
			}
		}
		
		for(k=0;k<56;k++)	//偏移,k增加1,则向上移动两个像素
		{
			for(j=0;j<5;j++)
			{
				for(i=0;i<4;i++)
				{
					LCD_Convert_MoveUp(ChineseTable2,i+1,2*k);	//显示古诗《春晓》,向上移动
					LCD_ShowChinese(i+1);
					Delay(20);
				}
			}
		}
		
		for(k=0;k<18;k++)	//偏移,k增加1,则整体向左移动一个汉字
		{
			for(j=0;j<7;j++)
			{
				for(i=0;i<4;i++)
				{
					LCD_Convert_MoveLeft(ChineseTable3,i+1,k);	//显示作者信息和编程日期,向左移动
					LCD_ShowChinese(i+1);
					Delay(20);
				}
			}
		}
		
		for(k=0;k<16;k++)	//偏移,k增加1,则整体向下移动两个像素
		{
			for(j=0;j<5;j++)
			{
				for(i=0;i<4;i++)
				{
					LCD_Convert_MoveUp(ChineseTable4,i+1,31-k);	//显示B站小图标,向下移动
					LCD_ShowChinese(i+1);
					Delay(20);
				}
			}
		}
		
		
		for(k=0;k<6;k++)	//偏移,k增加1,则整体向右移动16个像素
		{
			for(j=0;j<7;j++)
			{
				for(i=0;i<4;i++)
				{
					LCD_Convert_MoveLeft(ChineseTable4,i+1,5-k);	//显示B站小图标,向右移动
					LCD_ShowChinese(i+1);
					Delay(20);
				}
			}
		}
	}
}

总结

想显示多个汉字的话,用LCD12864更加好,而且LCD12864有汉字字幕库,很方便显示。

用LCD1602显示多个汉字,目的是尝试、挑战,并提高使用指针、移位、或运算、与运算等操作的熟练度。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐