废话不多说,LCD12864是一款分辨率为64X128的液晶显示屏。
常见ST7920主控的LCD12864 引脚定义如下:
1 VSS - 模块的电源地
2 VDD - 模块的电源正端
3 V0 - LCD驱动电压输入端
4 RS(CS) H/L 并行的指令/数据选择信号;串行的片选信号
5 R/W(SID) H/L 并行的读写选择信号;串行的数据口
6 E(CLK) H/L 并行的使能信号;串行的同步时钟
7 DB0 H/L 数据0
8 DB1 H/L 数据1
9 DB2 H/L 数据2
10 DB3 H/L 数据3
11 DB4 H/L 数据4
12 DB5 H/L 数据5
13 DB6 H/L 数据6
14 DB7 H/L 数据7
15 PSB H/L 并/串行接口选择:H-并行;L-串行
16 NC 空脚
17 /RET H/L 复位 低电平有效
18 NC 空脚
19 LED_A (LED+5V) 背光源正极
20 LED_K (LED-OV)背光源和负极
因为使用的是带字库版本,所以可以直接显示汉字。
奈何官方字库太僵硬,我选择自定义字体。这就要使用到LCD12864的画图模式,对文字取模成图片数据,然后画进LCD就可以实现任意字体文字的显示了。
先上网找份可以正常使用的程序进行移植,这部分还是很简单的,很快就可以调用字库显示文字、画128X64大小的图片。
因为要增加功能,我去找了LCD12864的手册,有些要注意的地方。
如下是网上找的一张图片。
LCD12864分上下屏,下屏的地址其实在上屏的8位后。也就是:
屏幕一共32行,地址为0x80~0x9f(0x80+31)
屏幕一共16列,
分为上屏8列,地址为0x80~0x87(0x80+7)
分为下屏8列,地址为0x88~0x8f(0x88+7)。
对屏幕的数据都是对应行列的地址写入,每个地址有16位数据,也就是要写入两次8位是数据。
那么开始动手,打开扩展指令集就可以对屏幕地址写入数据,在写入完成后打开绘图显示并回到基本指令集。
自定义分辨率图片的显示:
自定义字符显示:
欸,不说了,上代码。等有空了,看看能不能更。
//cryfucns.h
typedef unsigned int uint;
typedef unsigned char uchar;
void Send(unsigned char type, unsigned char transdata);
void Ini_Lcd(void);
void Clear_GDRAM(void);
void Disp_HZ(unsigned char addr, const unsigned char* pt, unsigned char num);
void Draw_PM(const unsigned char* ptr);
void Draw_TX(unsigned char Yaddr, unsigned char Xaddr, const unsigned char* dp);
void Disp_SZ(unsigned char addr, unsigned char shuzi);
void Send(uchar type, uchar transdata);
void ShowIMG(const uchar* ptr, uchar h, uchar w);
void Str2IN1(char a1, char a2);
void LCD_ShowChar(char x, char y, char ch1, char ch2);
void LCD_ShowStr(char x, char y, char* ch);
void LCD_ClearPic(void); //图片清屏
void LCD_ShowCharCH(char x, char y, char* CH);
void LCD_ShowStrCH(char x, char y, char* ch, char num);
/*************************
1 GND
2 VCC
3 对比度
4 CS片选
5 SID串行数据输入
6 CLK串行时钟
15 PSB(L选择串口模式)
17 RST复位
19 A背光+5V
20 K背光0V
*************************/
//cryfucns.c
#include <msp430.h>
#include "cryfucns.h"
#define BIT(x) (1 << (x))
extern const unsigned char shuzi_table[];
/**********液晶控制IO的宏定义*************/
#define cyCS 0 //P3.0,片选信号
#define cySID 1 //P3.1,串行数据
#define cyCLK 2 //P3.2,同步时钟
#define cyPORT P3OUT
#define cyDDR P3DIR
/*******************************************
函数名称:delay_Nus
功 能:延时N个us的时间
参 数:n--延时长度
返回值 :无
********************************************/
void delay_Nus(uint n)
{
uchar i;
for (i = n; i > 0; i--)
_NOP();
}
/*******************************************
函数名称:delay_1ms
功 能:延时约1ms的时间
参 数:无
返回值 :无
********************************************/
void delay_1ms(void)
{
uchar i;
for (i = 150; i > 0; i--) _NOP();
}
/*******************************************
函数名称:delay_Nms
功 能:延时N个ms的时间
参 数:无
返回值 :无
********************************************/
void delay_Nms(uint n)
{
uint i = 0;
for (i = n; i > 0; i--)
delay_1ms();
}
/*******************************************
函数名称:Ini_Lcd
功 能:初始化液晶模块
参 数:无
返回值 :无
********************************************/
void Ini_Lcd(void)
{
cyDDR |= BIT(cyCLK) + BIT(cySID) + BIT(cyCS); //相应的位端口设置为输出
delay_Nms(100); //延时等待液晶完成复位
Send(0, 0x30); /*功能设置:一次送8位数据,基本指令集*/
delay_Nus(72);
Send(0, 0x02); /*DDRAM地址归位*/
delay_Nus(72);
Send(0, 0x0c); /*显示设定:开显示,不显示光标,不做当前显示位反白闪动*/
delay_Nus(72);
Send(0, 0x01); /*清屏,将DDRAM的位址计数器调整为“00H”*/
delay_Nus(72);
Send(0, 0x06); /*功能设置,点设定:显示字符/光标从左到右移位,DDRAM地址加1*/
delay_Nus(72);
}
/*******************************************
函数名称:Send
功 能:MCU向液晶模块发送1一个字节的数据
参 数:type--数据类型,0--控制命令,1--显示数据
transdata--发送的数据
返回值 :无
********************************************/
void Send(uchar type, uchar transdata)
{
uchar firstbyte = 0xf8;
uchar temp;
uchar i, j = 3;
if (type) firstbyte |= 0x02;
cyPORT |= BIT(cyCS);
cyPORT &= ~BIT(cyCLK);
while (j > 0)
{
if (j == 3) temp = firstbyte;
else if (j == 2) temp = transdata & 0xf0;
else temp = (transdata << 4) & 0xf0;
for (i = 8; i > 0; i--)
{
if (temp & 0x80) cyPORT |= BIT(cySID);
else cyPORT &= ~BIT(cySID);
cyPORT |= BIT(cyCLK);
temp <<= 1;
cyPORT &= ~BIT(cyCLK);
}
//三个字节之间一定要有足够的延时,否则易出现时序问题
if (j == 3) delay_Nus(600);
else delay_Nus(200);
j--;
}
cyPORT &= ~BIT(cySID);
cyPORT &= ~BIT(cyCS);
}
/*******************************************
函数名称:Clear_GDRAM
功 能:清除液晶GDRAM内部的随机数据
参 数:无
返回值 :无
********************************************/
void Clear_GDRAM(void)
{
uchar i, j, k;
Send(0, 0x34); //打开扩展指令集
i = 0x80;
for (j = 0; j < 32; j++)
{
Send(0, i++);
Send(0, 0x80);
for (k = 0; k < 16; k++)
{
Send(1, 0x00);
}
}
i = 0x80;
for (j = 0; j < 32; j++)
{
Send(0, i++);
Send(0, 0x88);
for (k = 0; k < 16; k++)
{
Send(1, 0x00);
}
}
Send(0, 0x30); //回到基本指令集
}
/*******************************************
函数名称:Disp_HZ
功 能:显示汉字程序
参 数:addr--显示位置的首地址
pt--指向显示数据的指针
num--显示数据的个数
返回值 :无
********************************************/
void Disp_HZ(uchar addr, const uchar* pt, uchar num)
{
uchar i;
Send(0, addr);
//for(i = 0;i < (num*2);i++)
while (*pt != '\0')
Send(1, *(pt++));
}
/*******************************************
函数名称:Draw_PM
功 能:在整个屏幕上画一个图片
参 数:ptr--指向保存图片位置的指针
返回值 :无
********************************************/
void Draw_PM(const uchar* ptr)
{
uchar i, j, k;
Send(0, 0x34); //打开扩展指令集
i = 0x80;
for (j = 0; j < 32; j++)
{
Send(0, i++);
Send(0, 0x80); //上屏
for (k = 0; k < 16; k++)
{
Send(1, *ptr++);
}
}
/**/
i = 0x80;
for (j = 0; j < 32; j++)
{
Send(0, i++);
Send(0, 0x88); //下屏
for (k = 0; k < 16; k++)
{
Send(1, *ptr++);
}
}
Send(0, 0x36); //打开绘图显示
Send(0, 0x30); //回到基本指令集
}
/*******************************************
函数名称:Draw_TX
功 能:在液晶上描绘一个16*16的图形
参 数:Yaddr--Y地址,
Xaddr--X地址
dp--指向保存图形数据的指针
返回值 :无
********************************************/
void Draw_TX(uchar Yaddr, uchar Xaddr, const uchar* dp)
{
uchar j;
uchar k = 0;
Send(0, 0x34); //使用扩展指令集,关闭绘图显示
for (j = 0; j < 16; j++)
{
Send(0, Yaddr++); //Y地址
Send(0, Xaddr); //X地址
Send(1, dp[k++]); //送两个字节的显示数据
Send(1, dp[k++]);
}
Send(0, 0x36); //打开绘图显示
Send(0, 0x30); //回到基本指令集模式
}
/*******************************************
函数名称:Disp_SZ
功 能:显示一个两位数字
参 数:addr--显示地址
数字--显示的数字
返回值 :无
********************************************/
void Disp_SZ(uchar addr, uchar shuzi)
{
uchar tmp0, tmp1;
tmp0 = shuzi / 10;
tmp1 = shuzi % 10;
Send(0, addr);
Send(1, shuzi_table[tmp0]);
Send(1, shuzi_table[tmp1]);
}
void ShowIMG(const uchar* ptr, uchar h, uchar w)
{
uchar i, x, y;
int count = 0;
w /= 8;
Send(0, 0x34); //打开扩展指令集
//Send(0,0x34); //打开扩展指令集
for (i = 0; i < 2; i++) //上下屏写入
{
for (y = 0; y < 32; y++) //垂直Y写32次
{
Send(0, 0x80 + y); //行地址
Send(0, 0x80 + i * 8); //列地址
for (x = 0; x < 16; x++) //横向X写8次
{
if (x < w && count < h)
Send(1, *ptr++); //写字节数据
else
Send(1, 0x00); //写字节数据
}
count++;
}
}
Send(0, 0x36); //打开绘图显示
Send(0, 0x30); //回到基本指令集
}
//======================================================
// 128X64I液晶底层驱动[8X16]字体库
// 重新取模 (横向取模,字节倒序)
// 描 述: [8X16]西文字符的字模数据
// !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
//======================================================
// 字高16X16
const uchar F8X16[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0
0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x10,0x10,0x00,0x00,/*"!",0*/
0x00,0x12,0x24,0x24,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*""",1*/
0x00,0x00,0x00,0x12,0x12,0x12,0x7E,0x24,0x24,0x24,0x7E,0x24,0x24,0x24,0x00,0x00,/*"#",2*/
0x00,0x00,0x08,0x3C,0x4A,0x4A,0x48,0x38,0x0C,0x0A,0x0A,0x4A,0x4A,0x3C,0x08,0x08,/*"$",3*/
0x00,0x00,0x00,0x44,0xA4,0xA8,0xA8,0xB0,0x54,0x1A,0x2A,0x2A,0x4A,0x44,0x00,0x00,/*"%",4*/
0x00,0x00,0x00,0x30,0x48,0x48,0x48,0x50,0x6E,0xA4,0x94,0x98,0x89,0x76,0x00,0x00,/*"&",5*/
0x00,0x60,0x20,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"'",6*/
0x00,0x02,0x04,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x08,0x08,0x04,0x02,0x00,/*"(",7*/
0x00,0x40,0x20,0x10,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x10,0x20,0x40,0x00,/*")",8*/
0x00,0x00,0x00,0x00,0x10,0x10,0xD6,0x38,0x38,0xD6,0x10,0x10,0x00,0x00,0x00,0x00,/*"*",9*/
0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x7F,0x08,0x08,0x08,0x00,0x00,0x00,0x00,/*"+",10*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x20,0x20,0x40,/*",",11*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"-",12*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,/*".",13*/
0x00,0x00,0x02,0x04,0x04,0x04,0x08,0x08,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x00,/*"/",14*/
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*"0",15*/
0x00,0x00,0x00,0x08,0x38,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00,/*"1",16*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x02,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,/*"2",17*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x02,0x04,0x18,0x04,0x02,0x42,0x42,0x3C,0x00,0x00,/*"3",18*/
0x00,0x00,0x00,0x04,0x0C,0x0C,0x14,0x24,0x24,0x44,0x7F,0x04,0x04,0x1F,0x00,0x00,/*"4",19*/
0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x78,0x44,0x02,0x02,0x42,0x44,0x38,0x00,0x00,/*"5",20*/
0x00,0x00,0x00,0x18,0x24,0x40,0x40,0x5C,0x62,0x42,0x42,0x42,0x22,0x1C,0x00,0x00,/*"6",21*/
0x00,0x00,0x00,0x7E,0x42,0x04,0x04,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x00,0x00,/*"7",22*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,/*"8",23*/
0x00,0x00,0x00,0x38,0x44,0x42,0x42,0x42,0x46,0x3A,0x02,0x02,0x24,0x18,0x00,0x00,/*"9",24*/
0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,/*":",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,/*";",1*/
0x00,0x00,0x00,0x02,0x04,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x00,/*"<",2*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"-",3*/
0x00,0x00,0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x04,0x08,0x10,0x20,0x40,0x00,0x00,/*">",4*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x62,0x04,0x08,0x08,0x08,0x00,0x18,0x18,0x00,0x00,/*"?",5*/
0x00,0x00,0x00,0x38,0x44,0x5A,0xAA,0xAA,0xAA,0xAA,0xAA,0x5C,0x42,0x3C,0x00,0x00,/*"@",6*/
0x00,0x00,0x00,0x10,0x10,0x18,0x28,0x28,0x24,0x3C,0x44,0x42,0x42,0xE7,0x00,0x00,/*"A",0*/
0x00,0x00,0x00,0xF8,0x44,0x44,0x44,0x78,0x44,0x42,0x42,0x42,0x44,0xF8,0x00,0x00,/*"B",1*/
0x00,0x00,0x00,0x3E,0x42,0x42,0x80,0x80,0x80,0x80,0x80,0x42,0x44,0x38,0x00,0x00,/*"C",2*/
0x00,0x00,0x00,0xF8,0x44,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x44,0xF8,0x00,0x00,/*"D",3*/
0x00,0x00,0x00,0xFC,0x42,0x48,0x48,0x78,0x48,0x48,0x40,0x42,0x42,0xFC,0x00,0x00,/*"E",4*/
0x00,0x00,0x00,0xFC,0x42,0x48,0x48,0x78,0x48,0x48,0x40,0x40,0x40,0xE0,0x00,0x00,/*"F",5*/
0x00,0x00,0x00,0x3C,0x44,0x44,0x80,0x80,0x80,0x8E,0x84,0x44,0x44,0x38,0x00,0x00,/*"G",6*/
0x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,/*"H",7*/
0x00,0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,/*"I",8*/
0x00,0x00,0x00,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x88,0xF0,/*"J",9*/
0x00,0x00,0x00,0xEE,0x44,0x48,0x50,0x70,0x50,0x48,0x48,0x44,0x44,0xEE,0x00,0x00,/*"K",10*/
0x00,0x00,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0xFE,0x00,0x00,/*"L",11*/
0x00,0x00,0x00,0xEE,0x6C,0x6C,0x6C,0x6C,0x6C,0x54,0x54,0x54,0x54,0xD6,0x00,0x00,/*"M",12*/
0x00,0x00,0x00,0xC7,0x62,0x62,0x52,0x52,0x4A,0x4A,0x4A,0x46,0x46,0xE2,0x00,0x00,/*"N",13*/
0x00,0x00,0x00,0x38,0x44,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x44,0x38,0x00,0x00,/*"O",14*/
0x00,0x00,0x00,0xFC,0x42,0x42,0x42,0x42,0x7C,0x40,0x40,0x40,0x40,0xE0,0x00,0x00,/*"P",15*/
0x00,0x00,0x00,0x38,0x44,0x82,0x82,0x82,0x82,0x82,0x82,0xB2,0x4C,0x38,0x06,0x00,/*"Q",16*/
0x00,0x00,0x00,0xFC,0x42,0x42,0x42,0x7C,0x48,0x48,0x44,0x44,0x42,0xE3,0x00,0x00,/*"R",17*/
0x00,0x00,0x00,0x3E,0x42,0x42,0x40,0x20,0x18,0x04,0x02,0x42,0x42,0x7C,0x00,0x00,/*"S",18*/
0x00,0x00,0x00,0xFE,0x92,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00,/*"T",19*/
0x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,/*"U",20*/
0x00,0x00,0x00,0xE7,0x42,0x42,0x44,0x24,0x24,0x28,0x28,0x18,0x10,0x10,0x00,0x00,/*"V",21*/
0x00,0x00,0x00,0xD6,0x54,0x54,0x54,0x54,0x54,0x6C,0x28,0x28,0x28,0x28,0x00,0x00,/*"W",22*/
0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,0x18,0x18,0x24,0x24,0x42,0xE7,0x00,0x00,/*"X",23*/
0x00,0x00,0x00,0xEE,0x44,0x44,0x28,0x28,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00,/*"Y",24*/
0x00,0x00,0x00,0x7E,0x84,0x04,0x08,0x08,0x10,0x20,0x20,0x42,0x42,0xFC,0x00,0x00,/*"Z",25*/
0x00,0x1E,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1E,0x00,/*"[",0*/
0x00,0x00,0x40,0x20,0x20,0x20,0x10,0x10,0x10,0x08,0x08,0x04,0x04,0x04,0x02,0x02,/*"\",1*/
0x00,0x78,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x78,0x00,/*"]",2*/
0x00,0x18,0x24,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,0xFF,/*"_",4*/
0x00,0x60,0x20,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"'",5*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x44,0x0C,0x34,0x44,0x4C,0x36,0x00,0x00,/*"a",0*/
0x00,0x00,0x00,0x00,0xC0,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x64,0x58,0x00,0x00,/*"b",1*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x22,0x40,0x40,0x40,0x22,0x1C,0x00,0x00,/*"c",2*/
0x00,0x00,0x00,0x00,0x06,0x02,0x02,0x3E,0x42,0x42,0x42,0x42,0x46,0x3B,0x00,0x00,/*"d",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x7E,0x40,0x42,0x3C,0x00,0x00,/*"e",4*/
0x00,0x00,0x00,0x00,0x0C,0x12,0x10,0x7C,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,/*"f",5*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x44,0x44,0x38,0x40,0x3C,0x42,0x42,0x3C,/*"g",6*/
0x00,0x00,0x00,0x00,0xC0,0x40,0x40,0x5C,0x62,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,/*"h",7*/
0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,/*"i",8*/
0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x1C,0x04,0x04,0x04,0x04,0x04,0x04,0x44,0x78,/*"j",9*/
0x00,0x00,0x00,0x00,0xC0,0x40,0x40,0x4E,0x48,0x50,0x70,0x48,0x44,0xEE,0x00,0x00,/*"k",10*/
0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,/*"l",11*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x49,0x49,0x49,0x49,0x49,0xED,0x00,0x00,/*"m",12*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0x62,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,/*"n",13*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,/*"o",14*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0x64,0x42,0x42,0x42,0x64,0x58,0x40,0xE0,/*"p",15*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x26,0x42,0x42,0x42,0x26,0x1A,0x02,0x07,/*"q",16*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEE,0x32,0x20,0x20,0x20,0x20,0xF8,0x00,0x00,/*"r",17*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x42,0x40,0x3C,0x02,0x42,0x7C,0x00,0x00,/*"s",18*/
0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x7C,0x10,0x10,0x10,0x10,0x12,0x0C,0x00,0x00,/*"t",19*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x42,0x42,0x42,0x42,0x46,0x3B,0x00,0x00,/*"u",20*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEE,0x44,0x44,0x28,0x28,0x10,0x10,0x00,0x00,/*"v",21*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDB,0x89,0x4A,0x5A,0x54,0x24,0x24,0x00,0x00,/*"w",22*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0x24,0x18,0x18,0x18,0x24,0x6E,0x00,0x00,/*"x",23*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,0x18,0x10,0x10,0x60,/*"y",24*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x44,0x08,0x10,0x10,0x22,0x7E,0x00,0x00,/*"z",25*/
0x00,0x03,0x04,0x04,0x04,0x04,0x04,0x04,0x08,0x04,0x04,0x04,0x04,0x04,0x03,0x00,/*"{",0*/
0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,/*"|",1*/
0x00,0xC0,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x20,0x20,0x20,0x20,0x20,0xC0,0x00,/*"}",2*/
0x20,0x5A,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"~",3*/
};
uchar ONE_CHAR[] = {
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,// 0
};
//LCD 横向地址8个 每个16位数据
void LCD_ShowChar(char x, char y, char ch1, char ch2)
{
char i, j;
char c = 0;
//合成一个16X16字符的模
Str2IN1(ch1, ch2);
for (i = 0; i < 16; i++)
{
if (y + i >= 32)
{
y = y + i - 32;
break;
}
Send(0, 0x80 + y + i); //行地址
Send(0, 0x80 + x); //列地址 一行8个16位
Send(1, ONE_CHAR[c++]); //写数据
Send(1, ONE_CHAR[c++]); //写数据
}
for (j = 0; j + i < 16; j++)
{
Send(0, 0x80 + y + j); //行地址
Send(0, 0x88 + x); //列地址 一行8个16位
Send(1, ONE_CHAR[c++]); //写数据
Send(1, ONE_CHAR[c++]); //写数据
}
}
void LCD_ShowCharCH(char x, char y, char* CH)
{
char i, j;
for (i = 0; i < 16; i++)
{
if (y + i >= 32)
{
y = y + i - 32;
break;
}
Send(0, 0x80 + y + i); //行地址
Send(0, 0x80 + x); //列地址 一行8个16位
Send(1, *CH++); //写数据
Send(1, *CH++); //写数据
}
for (j = 0; j + i < 16; j++)
{
Send(0, 0x80 + y + j); //行地址
Send(0, 0x88 + x); //列地址 一行8个16位
Send(1, *CH++); //写数据
Send(1, *CH++); //写数据
}
}
//x取0-15 y取0-63
void LCD_ShowStrCH(char x, char y, char* ch, char num)
{
Send(0, 0x34); //打开扩展指令集
while (num--)
{
LCD_ShowCharCH(x++, y, ch);
ch += 32;
}
Send(0, 0x36); //打开绘图显示
Send(0, 0x30); //回到基本指令集
}
//x取0-15 y取0-63
void LCD_ShowStr(char x, char y, char* ch)
{
Send(0, 0x34); //打开扩展指令集
char i = 0;
for (;;)
{
i++;
if (*ch++ == '\0')
{
if (i == 2)
{
LCD_ShowChar(x++, y, *(ch - 2), ' ');
}
break;
}
else if (i == 2)
{
i = 0;
LCD_ShowChar(x++, y, *(ch - 2), *(ch - 1));
}
}
Send(0, 0x36); //打开绘图显示
Send(0, 0x30); //回到基本指令集
}
//把两个16X8的模合成一个16X16的模
void Str2IN1(char a1, char a2)
{
char i;
unsigned int c1, c2;
c1 = (a1 - 32) * 16;
c2 = (a2 - 32) * 16;
for (i = 0; i < 16; i++)
{
ONE_CHAR[i * 2] = F8X16[c1++];
ONE_CHAR[i * 2 + 1] = F8X16[c2++];
}
}
void LCD_ClearPic(void)
{
uchar i, x, y;
Send(0, 0x34); //打开扩展指令集
for (i = 0; i < 2; i++) //上下屏写入
{
for (y = 0; y < 32; y++) //垂直Y写32次
{
Send(0, 0x80 + y); //行地址
Send(0, 0x80 + i * 8); //列地址
for (x = 0; x < 16; x++) //横向X写8次
{
Send(1, 0x00); //写字节数据
}
}
}
Send(0, 0x36); //打开绘图显示
Send(0, 0x30); //回到基本指令集
}
//main.c
#include <msp430.h>
#include "cryfucns.h"
#include "displaydata.h"
/***********************系统延时*******************/
#define CPU_F ((double)1035000)
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define List0 0x80
#define List1 0x90
#define List2 0x88
#define List3 0x98
//集美大学诚毅学院
uchar CH_CH1[] = {
0x00,0x00,0x00,0x90,0x01,0x20,0x03,0xF8,0x04,0x78,0x07,0xF8,0x03,0xE0,0x02,0xFC,
0x01,0x20,0x03,0xFF,0x1D,0x20,0x03,0x26,0x07,0x26,0x00,0xE0,0x00,0x00,0x00,0x00,/*"集",0*/
0x00,0x00,0x00,0x08,0x03,0xB0,0x02,0x78,0x03,0xE0,0x00,0x70,0x03,0xD8,0x00,0xE0,
0x03,0xFE,0x01,0xFF,0x1E,0x80,0x01,0x10,0x07,0x0E,0x00,0x06,0x00,0x00,0x00,0x00,/*"美",1*/
0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xF8,0x0F,0xE0,0x07,0xC0,
0x01,0xC0,0x01,0x70,0x03,0x18,0x06,0x0E,0x38,0x07,0x00,0x00,0x00,0x00,0x00,0x00,/*"大",2*/
0x00,0x08,0x00,0xD8,0x04,0xB0,0x06,0x78,0x03,0xC6,0x04,0x63,0x13,0xBC,0x32,0x40,
0x00,0x7E,0x07,0xE0,0x08,0x60,0x00,0x60,0x00,0x40,0x01,0xC0,0x00,0x00,0x00,0x00,/*"学",3*/
0x00,0x20,0x00,0x20,0x00,0x24,0x08,0x26,0x0C,0x18,0x00,0xF0,0x00,0x96,0x79,0xF4,
0x11,0x6C,0x15,0x58,0x19,0xC4,0x12,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,/*"诚",4*/
0x00,0x00,0x02,0x00,0x03,0x1C,0x01,0x28,0x0F,0x28,0x05,0x2E,0x07,0xC0,0x3D,0x3C,
0x16,0x48,0x0B,0x78,0x0F,0x18,0x32,0x26,0x0F,0xC3,0x00,0x00,0x00,0x00,0x00,0x00,/*"毅",5*/
0x00,0x08,0x00,0xD8,0x04,0xB0,0x06,0x78,0x03,0xC6,0x04,0x63,0x13,0xBC,0x32,0x40,
0x00,0x7E,0x07,0xE0,0x08,0x60,0x00,0x60,0x00,0x40,0x01,0xC0,0x00,0x00,0x00,0x00,/*"学",6*/
0x00,0x00,0x00,0x20,0x00,0x30,0x0E,0x00,0x16,0x1C,0x15,0xE2,0x17,0x1E,0x1E,0x7C,
0x11,0xE0,0x11,0x58,0x10,0x90,0x11,0x10,0x16,0x10,0x00,0x0F,0x00,0x00,0x00,0x00,/*"院",7*/
};
//风萧萧兮易水寒
uchar CH_CH3[] = {
0x00,0x00,0x00,0x00,0x00,0x3C,0x03,0xCC,0x02,0x08,0x03,0xA8,0x02,0xE8,0x02,0xE8,
0x05,0xE9,0x07,0xB8,0x0C,0x08,0x18,0x04,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,/*"风",0*/
0x00,0x10,0x03,0x14,0x07,0xF8,0x05,0x40,0x00,0xF8,0x03,0x5F,0x07,0xF0,0x38,0xFC,
0x03,0x4C,0x02,0xC4,0x03,0xF4,0x05,0x54,0x0C,0x44,0x00,0x44,0x00,0x00,0x00,0x00,/*"萧",1*/
0x00,0x10,0x03,0x14,0x07,0xF8,0x05,0x40,0x00,0xF8,0x03,0x5F,0x07,0xF0,0x38,0xFC,
0x03,0x4C,0x02,0xC4,0x03,0xF4,0x05,0x54,0x0C,0x44,0x00,0x44,0x00,0x00,0x00,0x00,/*"萧",2*/
0x00,0x00,0x00,0x40,0x00,0xE0,0x01,0xA0,0x03,0x10,0x03,0xEC,0x05,0xC7,0x18,0xB7,
0x31,0xF8,0x00,0x18,0x00,0x10,0x02,0x30,0x01,0xF0,0x00,0x60,0x00,0x00,0x00,0x00,/*"兮",3*/
0x00,0x00,0x03,0xF8,0x03,0x30,0x03,0xB0,0x02,0x30,0x03,0xF0,0x03,0xB0,0x03,0xFE,
0x0D,0xF6,0x12,0x64,0x0C,0xCC,0x03,0x88,0x06,0xD0,0x00,0x30,0x00,0x00,0x00,0x00,/*"易",4*/
0x00,0x00,0x00,0xC0,0x00,0xC4,0x00,0xC8,0x00,0xF0,0x00,0xC0,0x0E,0xE0,0x32,0xD8,
0x04,0xC6,0x0C,0xC3,0x1C,0xC0,0x03,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,/*"水",5*/
0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0xFC,0x01,0xE6,0x0F,0xB8,0x03,0xE0,0x01,0xF8,
0x0F,0x20,0x02,0x98,0x04,0xC6,0x18,0x47,0x00,0xC0,0x00,0x40,0x00,0x00,0x00,0x00,/*"寒",6*/
};
/************************主函数***********************/
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
Ini_Lcd(); //LCD初始化
//调用字库显示文字
//Disp_HZ(List1,"集美大学诚毅学院",0);
LCD_ClearPic(); //清屏 图片使用
//自定义字体的中文显示
LCD_ShowStrCH(0, 28, CH_CH3, 7);
LCD_ShowStr(0, 45, "Show me someting!");
delay_ms(3000);
//Send(0,0x01); //清屏
LCD_ClearPic(); //清屏 图片使用
//自定义字体的英文显示
LCD_ShowStr(0, 28, "hello WORD!!");
delay_ms(3000);
//自定义大小的图片显示
ShowIMG(gImage_xixixi, 64, 128);
delay_ms(3000);
//自定义大小的图片显示
ShowIMG(gImage_xixixa, 64, 64);
delay_ms(3000);
Send(0, 0x01); //清屏
Disp_HZ(List1+3, "嘻嘻嘻", 4); //结束文字
for (;;);
}
以下为图片取模:
//displaydata.h
//图片取模会多取6组
const unsigned char gImage_xixixi[] = {
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,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X08,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X0C,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,0X2F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X2D,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X2D,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X04,0X00,0X2D,0X00,0X08,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X40,0X2D,0X00,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X01,0X20,0X2D,0X01,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X02,0X10,0X2D,0X06,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X01,0X08,0X2D,0X0F,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X80,0X2D,0X1E,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X08,0X2D,0X3D,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X10,0X2D,0X5A,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X08,0X6D,0X34,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X2D,0X68,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X29,0X10,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X7F,0XFF,0X80,0XFF,0XFF,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,
0X0C,0X7F,0XFF,0X80,0XFF,0XFF,0X8C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X08,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X7F,0XFF,0X80,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X40,0X06,0X80,0XF2,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X2F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X08,0X2D,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X02,0X10,0X00,0X00,0X00,
0X00,0X00,0X10,0XAD,0X00,0X00,0X01,0XE0,0X00,0X00,0X00,0X03,0X18,0X00,0X00,0X00,
0X00,0X00,0X21,0X2D,0X00,0X00,0X01,0X10,0X00,0X00,0X00,0X02,0X18,0X00,0X00,0X00,
0X00,0X00,0X42,0X2D,0X00,0X00,0X01,0X33,0X93,0X2F,0X77,0X9E,0X1F,0X44,0X00,0X00,
0X00,0X00,0X80,0X2D,0X00,0X00,0X01,0XE4,0XF7,0X79,0XF4,0XF2,0X19,0XE4,0X00,0X00,
0X00,0X02,0X00,0X2D,0X00,0X00,0X01,0X0C,0X5D,0XDF,0X6F,0XE2,0X18,0XAC,0X00,0X00,
0X00,0X01,0X20,0X2D,0X00,0X00,0X01,0X0C,0XCC,0XD9,0X6C,0XE7,0X1B,0XB8,0X00,0X00,
0X00,0X00,0X40,0X2D,0X00,0X00,0X03,0X07,0X88,0X8F,0X67,0X9F,0X1E,0X18,0X00,0X00,
0X00,0X04,0X00,0X2D,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X10,0X00,0X00,
0X00,0X00,0X00,0X2D,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X30,0X00,0X00,
0X00,0X00,0X00,0X2D,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X20,0X00,0X00,
0X00,0X00,0X00,0X2D,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X2D,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X02,0X10,0X00,0X21,0X10,0X00,0X06,0XC0,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X30,0X00,0X61,0X80,0X00,0X66,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X63,0XBE,0X73,0X97,0XC7,0X3C,0X8E,0X78,
0X00,0X00,0X00,0X0C,0X00,0X00,0X00,0X01,0XC6,0XB2,0X52,0X97,0X4D,0X18,0XDA,0XCC,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X8C,0XB2,0X5E,0X96,0X59,0X18,0XB2,0X84,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X8D,0XA2,0XCC,0XD6,0X5B,0X3C,0XB6,0XCC,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X87,0XB2,0XCC,0XD6,0X4F,0X66,0X9E,0X78,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1B,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0E,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,
};
const unsigned char gImage_xixixa[] = {
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X03,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFE,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XFF,
0XFF,0XFF,0XE0,0X00,0X7F,0XC7,0XFF,0XFF,0XFF,0XFF,0XC0,0X03,0XFF,0XF9,0XFF,0XFF,
0XFF,0XFF,0X00,0X0F,0XFF,0XFE,0XFF,0XFF,0XFF,0XFE,0X00,0X1F,0XFF,0XFF,0X7F,0XFF,
0XFF,0XFC,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XF0,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XE0,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XC0,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0X80,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0X7F,0XFE,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0X7F,
0XFE,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0X7F,0XFE,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0X7F,
0XFE,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0X7F,0XFE,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0X7F,
0XFE,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0X7F,0XFE,0X00,0X1F,0XFF,0XFF,0XFF,0XFE,0X7F,
0XFE,0X00,0X0F,0XFF,0XFF,0XFF,0XFE,0X7F,0XFE,0X00,0X0F,0XFF,0XFF,0XFF,0XFE,0X7F,
0XFE,0X00,0X0F,0XFF,0XFF,0XFF,0XFC,0X7F,0XFF,0X00,0X07,0XFF,0XFF,0XFF,0XFC,0XFF,
0XFF,0X00,0X03,0XFF,0XFF,0XFF,0XF8,0XFF,0XFF,0X00,0X03,0XFF,0XFF,0XFF,0XF8,0XFF,
0XFF,0X00,0X01,0XFF,0XFF,0XFF,0XF0,0XFF,0XFF,0X80,0X00,0XFF,0XFF,0XFF,0XE1,0XFF,
0XFF,0X80,0X00,0X7F,0XFF,0XFF,0XC1,0XFF,0XFF,0XC0,0X00,0X3F,0XFF,0XFF,0X83,0XFF,
0XFF,0XC0,0X00,0X0F,0XFF,0XFE,0X03,0XFF,0XFF,0XE0,0X00,0X03,0XFF,0XF8,0X07,0XFF,
0XFF,0XF0,0X00,0X00,0XFF,0XC0,0X0F,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X0F,0XFF,
0XFF,0XF8,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X3F,0XFF,
0XFF,0XFE,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,
0XFF,0XFF,0XC0,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X07,0XFF,0XFF,
0XFF,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XC0,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
};