(1)显示器,常见显示器。
(2)LCD(Liquid Crystal Display),液晶显示器,原理介绍。
(3)LCD应用领域。
(4)LED OLED。
(1)像素(分辨率)。
(2)显存,用来做显示的内存。
(3)字模。
(4)字库。
(5)控制器和驱动器。
(6)软件+硬件实现功能。
(1)为什么叫1602(16x2,显示器显示2排,每排16个字符)。能显示的字符数是32,但是像素数不是32,因为一个字符是由多个像素组成的。有可能一个字符是由5*7=35个像素组成的,也有可能是由6*8=48个像素组成的。但是我们不用去管,因为LCD1602内置了字库了。
(2)带ASCII码字库,不能显示中文。当我们想让LCD1602显示某个ASCII码字符时,只需要将这个字符对应的ASCII码发给LCD1602内部的控制器,控制器就会去查字库得到字模,然后将字模发给内部的驱动器去驱动LCD做显示。
(3)用途:工业应用。
(1)引脚分为:数据接口(8)+控制接口(3)+VO(1)+电源地(4)。
(2)并行接口:串行就是数据线只有1根,同时只能传输1个bit位,如果要传送多个bit位必须分时传输;并行就是数据线有多根,每一根可以传输1个bit位,所以同时可以传输多个bit位。譬如LCD1602有8根数据线,所以一次同时传输8个bit位。
(3)背光亮度调节。
(4)接线确认。
(1)概念:LCM和LCD,其实lcm就是lcd module(LCD模组)。
(2)主要技术参数解析。
(3)引脚定义(结合原理图来对照分析)。
(4)控制器接口说明(注意控制器型号)。
RS=1时,D0-D7上传输的是数据
RS=0时,D0-D7上传输的是命令
RW=1时,表示我们要读
RW=0时,表示我们要写
E=1时,表示使能 enable
E=0时,表示禁止(禁能) disable
(1)时序走控制接口引脚。
(2)指令码、状态字、数据,这三个走数据接口。
(3)注意是并行的。
(1)低层时序描述。
(2)官方示例程序。
(3)指令码的解析方法。
(1)读数据。
(2)写数据。
(3)RAM空间。RAM地址范围(芯片范围是0-39每行,但是实际只用了0-15每行),数据是什么数据:要显示的字符的ASCII码编码值。
00001000 0x08 关闭显示
00001100 0x0C 打开显示不显示光标
00001111 0x0F 打开显示并且显示光标并且光标闪烁
00000110 0x06 地址指针自动加1,整体屏幕不移动
0x80+(0x00-0x0F) 第一行设置地址指针指令
0x80+(0x40-0x4F) 第二行设置地址指针指令
0x01 显示清屏
0x02 回车
1602.h
#ifndef __1602_H__
#define __1602_H__
// 只需要声明高层时序即可,而低层时序是不需要声明的。
// 因为我们在头文件中声明这个函数,目的是为了让别的文件去包含这个头文件
// 从而可以调用这个头文件中声明的函数,所以我们只需要声明1602.c中将来
// 会被外部.c文件调用的那些函数即可。而1602.c中自己使用的内部函数将来也
// 不会被外部.c文件调用,因此就不用声明了
void InitLcd1602();
void LcdSetCursor(unsigned char x,unsigned char y);
void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str);
#endif
l602.c
#include
// 对LCD1602的底层以及高层时序做封装
// IO接口定义
#define LCD1602_DB P0 //data bus 数据总线
// 控制总线
sbit LCD1602_RS = P2^6;
sbit LCD1602_RW = P2^5;
sbit LCD1602_EN = P2^7;
/************ 低层时序 ********************************/
void Read_Busy() //忙检测函数,判断bit7是0,允许执行;1禁止
{
unsigned char sta; //
LCD1602_DB = 0xff;
LCD1602_RS = 0;
LCD1602_RW = 1;
do
{
LCD1602_EN = 1;
sta = LCD1602_DB;
LCD1602_EN = 0; //使能,用完就拉低,释放总线
}while(sta & 0x80);
}
void Lcd1602_Write_Cmd(unsigned char cmd) //写命令
{
Read_Busy();
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_DB = cmd;
LCD1602_EN = 1;
LCD1602_EN = 0;
}
void Lcd1602_Write_Data(unsigned char dat) //写数据
{
Read_Busy();
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_DB = dat;
LCD1602_EN = 1;
LCD1602_EN = 0;
}
/************* 高层时序 ******************************/
// 本函数用来设置当前光标位置,其实就是设置当前正在编辑的位置,
// 其实就是内部的数据地址指针,其实就是RAM显存的偏移量
// x范围是0-15,y=0表示上面一行,y=1表示下面一行
void LcdSetCursor(unsigned char x,unsigned char y) //坐标显示
{
unsigned char addr;
if(y == 0)
addr = 0x00 + x;
else
addr = 0x40 + x;
Lcd1602_Write_Cmd(addr|0x80);
}
// 函数功能是:从坐标(x,y)开始显示字符串str
// 注意这个函数不能跨行显示,因为显存地址是不连续的
// 其实我们可以封装出一个能够折行显示的函数的
void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str) //显示字符串
{
LcdSetCursor(x,y); //当前字符的坐标
while(*str != '\0')
{
Lcd1602_Write_Data(*str++);
}
}
// 初始化LCD,使之能够开始正常工作
void InitLcd1602() //1602初始化
{
Lcd1602_Write_Cmd(0x38); //打开,5*8,8位数据
//Lcd1602_Write_Cmd(0x0c); // 打开显示并且无光标
Lcd1602_Write_Cmd(0x0f); // 打开显示并且光标闪烁
Lcd1602_Write_Cmd(0x06);
Lcd1602_Write_Cmd(0x01); //清屏
}
main.c
#include "1602.h"
void main(void)
{
InitLcd1602();
//LcdShowStr(0, 0, "www.zhulaoshi.org");
LcdShowStr(0, 0, "zhulaoshi");
//LcdShowStr(0, 1, "angdajiangtang");
}
(1)128p*64p,注意不是字符而是pixel。
(2)没有内置字库,用户需要提供字模给LCD12864内部的控制器。
(3)常见外观有2类(网上找图看)。
(4)可以显示文字(英文、中文或其他文字)和图片(点阵图)。
(1)接线确认。
(2)原理图(开发板底板、屏幕转接板)。
(3)数据手册(LCD12864、ST7565)。
(1)并行接口。
(2)控制总线+数据总线。
(3)控制总线的定义总结。
(1)找准数据手册中关键信息点,用来查而不是挨个看。
(2)数据手册对照官方示例代码来参照对比。
(3)要结合各部分原理图、各部分数据手册、示例代码来综合分析。
(4)必要时要做笔记。
(1)写指令。
/*******************************************************************************
* 函 数 名 : LCD12864_WriteCmd
* 函数功能 : 写入一个命令到12864
* 输 入 : cmd
* 输 出 : 无
*******************************************************************************/
void LcdSt7565_WriteCmd(cmd)
{
LCD12864_CS = 0; //chip select,打开片选
LCD12864_RD = 1; //disable read,读失能
LCD12864_RS = 0; //select command,选择命令
LCD12864_RW = 0; //select write,选择写模式
_nop_();
_nop_();
DATA_PORT = cmd; //put command,放置命令
_nop_();
_nop_();
LCD12864_RW = 1; //command writing ,写入命令
}
(2)写数据。
/*******************************************************************************
* 函 数 名 : LcdSt7565_WriteData
* 函数功能 : 写入一个数据到12864
* 输 入 : dat
* 输 出 : 无
*******************************************************************************/
void LcdSt7565_WriteData(dat)
{
LCD12864_CS = 0; //chip select,打开片选
LCD12864_RD = 1; //disable read,读失能
LCD12864_RS = 1; //select data,选择数据
LCD12864_RW = 0; //select write,选择写模式
_nop_();
_nop_();
DATA_PORT = dat; //put data,放置数据
_nop_();
_nop_();
LCD12864_RW = 1; //data writing,写数据
}
(1)随着产品变复杂,资料也会变复杂。
(2)资料会有不完善,甚至错误的。
(3)思路要始终清晰,大脑必须有一定复杂度。
(1)指令式交互系统。
(2)指令表是关键。
(1)沿着数据手册顺序分析。
(2)沿着示例代码按需分析。
(1)1号指令:Display ON/OFF,
10101111 0xAF on
10101110 0xAE off
(2)2号指令:显示行号设置
01000000+(0-63)
0x40+(0-63) 表示要将内容显示在第0-63行
(3)3号指令:设置page address
10110000+(0-7)
0xB0+(0-7) 表示设置page address到0-8
(4)4号指令:设置column address
一个完整指令是分为2条相连的指令合起来的。必须连发2个
指令1:00010000+高4位 0x10+高4位
指令2:00000000+低4位 0x00+低4位
(8)设置ADC:
0xA0 normal, columu address 从左往右的
0xA1 reverse, column address 从右往左的
(1)第一类指令:时序需要的。
(2)第二类指令:硬件特性设置需要的(譬如屏幕亮度、对比度之类的)。
(3)第三类指令:显示参数相关的:A1/A0 C8/C0 0x40+(0-63)。
/*******************************************************************************
* 函 数 名 : LCD12864_Init
* 函数功能 : 初始化12864
* 输 入 : 无
* 输 出 : 无
* 说 明 : LCD12864的命令指令可以查看例程文件夹下的《ST7565p数据手册》
* * 的第51页的位置。
*******************************************************************************/
void Lcd12864_Init()
{
uchar i;
LCD12864_RSET = 0;
for (i=0; i<100; i++);
LCD12864_CS = 0;
LCD12864_RSET = 1;
//----------------Start Initial Sequence-------//
//------程序初始化设置,具体命令可以看文件夹下---//
//--软件初始化--//
LcdSt7565_WriteCmd(0xE2); //reset
for (i=0; i<100; i++); //延时一下
//--表格第8个命令,0xA0段(左右)方向选择正常方向(0xA1为反方向)--//
// 0xA0对应0-127,0xA1对应4-131
LcdSt7565_WriteCmd(0xA0); //ADC select segment direction
//--表格第15个命令,0xC8普通(上下)方向选择选择反向,0xC0为正常方向--//
LcdSt7565_WriteCmd(0xC8); //Common direction
//--表格第9个命令,0xA6为设置字体为黑色,背景为白色---//
//--0xA7为设置字体为白色,背景为黑色---//
LcdSt7565_WriteCmd(0xA6); //reverse display
//--表格第10个命令,0xA4像素正常显示,0xA5像素全开--//
LcdSt7565_WriteCmd(0xA4); //normal display
//--表格第11个命令,0xA3偏压为1/7,0xA2偏压为1/9--//
LcdSt7565_WriteCmd(0xA2); //bias set 1/9
//--表格第19个命令,这个是个双字节的命令,0xF800选择增压为4X;--//
//--0xF801,选择增压为5X,其实效果差不多--//
LcdSt7565_WriteCmd(0xF8); //Boost ratio set
LcdSt7565_WriteCmd(0x01); //x4
//--表格第18个命令,这个是个双字节命令,高字节为0X81,低字节可以--//
//--选择从0x00到0X3F。用来设置背景光对比度。---/
LcdSt7565_WriteCmd(0x81); //V0 a set
LcdSt7565_WriteCmd(0x23);
//--表格第17个命令,选择调节电阻率--//
LcdSt7565_WriteCmd(0x25); //Ra/Rb set
//--表格第16个命令,电源设置。--//
LcdSt7565_WriteCmd(0x2F);
for (i=0; i<100; i++);
//--表格第2个命令,设置显示开始位置--//
LcdSt7565_WriteCmd(0x40); //start line
//--表格第1个命令,开启显示--//
LcdSt7565_WriteCmd(0xAF); // display on
for (i=0; i<100; i++);
}
/*******************************************************************************
* 函 数 名 : LCD12864_ClearScreen
* 函数功能 : 清屏12864
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Lcd12864_ClearScreen(void)
{
uchar i, j;
for(i=0; i<8; i++)
{
//--表格第3个命令,设置Y的坐标--//
//--Y轴有64个,一个坐标8位,也就是有8个坐标--//
//所以一般我们使用的也就是从0xB0到0x07,就够了--//
LcdSt7565_WriteCmd(0xB0+i);
//--表格第4个命令,设置X坐标--//
//--当你的段初始化为0xA1时,X坐标从0x10,0x04到0x18,0x04,一共128位--//
//--当你的段初始化为0xA0时,X坐标从0x10,0x00到0x18,0x00,一共128位--//
//--在写入数据之后X坐标的坐标是会自动加1的,我们初始化使用0xA0所以--//
//--我们的X坐标从0x10,0x00开始---//
LcdSt7565_WriteCmd(0x10);
LcdSt7565_WriteCmd(0x00);
//--X轴有128位,就一共刷128次,X坐标会自动加1,所以我们不用再设置坐标--//
for(j=0; j<128; j++)
{
LcdSt7565_WriteData(0x00); //如果设置背景为白色时,清屏选择0XFF
}
}
}
(1)字模。
(2)像素&显存的对应关系。
(3)显示函数:将字模丢到正确的显存中去。
(1)芯片自带字库。
(2)网上下载字库。
(3)字模生成软件自助生成。
(1)先弄好低层时序和清屏函数。
(2)网上找6*8的ASCII码字库。
(3)写代码去显示。
// 在屏幕的(x, y)坐标处,显示c这个字符
// (x, y)表示像素点的坐标值,所以x范围是0-127;y的范围是0-63
// 注意,因为显示文字是以整页为单位的,为了简单起见必须页对齐显示
// 因此给的y值必须是页首地址,就是0 8 16 24 等数值
void ascii_display(unsigned char x, unsigned char y, unsigned char c)
{
unsigned char i = 0;
unsigned char x1, x2;
/*
LcdSt7565_WriteCmd(0xB0);
// x坐标,只要在范围内别超出就可以了
LcdSt7565_WriteCmd(0x10);
LcdSt7565_WriteCmd(0x04);
for (i=0; i<6; i++)
{
LcdSt7565_WriteData(0xff);
}
*/
// 第一步,设置显示的x和y坐标
// y坐标,其实就是page address
LcdSt7565_WriteCmd(0xB0 + y / 8);
// x坐标,只要在范围内别超出就可以了
x1 = (x >> 4) & 0x0f;
x2 = x & 0x0f;
LcdSt7565_WriteCmd(0x10 + x1);
LcdSt7565_WriteCmd(0x00 + x2);
// 第二步,找到c对应的字模
// ASCII_6_8[c-20][0] 字模的第一个字节
// 第三步,将字模丢到显存中去
for (i=0; i<6; i++)
{
LcdSt7565_WriteData(ASCII_6_8[c-0x20][i]);
}
}
(1)看显示效果。
(2)换不同字符去显示。
(3)换不同位置去显示。
(1)其他大小尺寸的字模如何显示。
(2)取模方式对显示函数的影响。
(1)初始化和字模不匹配,造成字是反的。
(2)初始化不对,造成x坐标是从右往左的。
解决遗留问题:修改初始化代码从左向右显示
(1)常见汉字字模大小是16*16。
(2)去哪里找汉字字模。
void hanzi_display(unsigned char x, unsigned char y, unsigned char zimo[])
{
unsigned char i = 0;
unsigned char x1, x2;
// 先显示上面一半
LcdSt7565_WriteCmd(0xB0 + y / 8);
// x坐标,只要在范围内别超出就可以了
x1 = (x >> 4) & 0x0f;
x2 = x & 0x0f;
LcdSt7565_WriteCmd(0x10 + x1);
LcdSt7565_WriteCmd(0x00 + x2);
for (i=0; i<16; i++)
{
LcdSt7565_WriteData(zimo[i]);
}
// 再显示下面一半
LcdSt7565_WriteCmd(0xB0 + y / 8 + 1);
// x坐标,只要在范围内别超出就可以了
x1 = (x >> 4) & 0x0f;
x2 = x & 0x0f;
LcdSt7565_WriteCmd(0x10 + x1);
LcdSt7565_WriteCmd(0x00 + x2);
for (i=16; i<32; i++)
{
LcdSt7565_WriteData(zimo[i]);
}
}
(1)思路分析。
(2)图片数据获取。
(3)写显示函数。
(4)调试。
// 在屏幕上显示一个图片,从屏幕左上角开始显示
void pic_display(unsigned char pic[])
{
uchar i, j;
uint k = 0;
for(i=0; i<8; i++)
{
LcdSt7565_WriteCmd(0xB0+i);
LcdSt7565_WriteCmd(0x10);
LcdSt7565_WriteCmd(0x00);
//--X轴有128位,就一共刷128次,X坐标会自动加1,所以我们不用再设置坐标--//
for(j=0; j<128; j++)
{
LcdSt7565_WriteData(pic[k++]); //如果设置背景为白色时,清屏选择0XFF
}
}
}
st7565.h
#ifndef __ST7565_H
#define __ST7565_H
#include
#include
//---重定义关键词---//
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif
//--定时使用的IO口--//
#define DATA_PORT P0
sbit LCD12864_CS = P3^2;
sbit LCD12864_RSET = P3^3;
sbit LCD12864_RS = P2^6;
sbit LCD12864_RW = P2^7;
sbit LCD12864_RD = P2^5;
//--定义全局函数--//
void LcdSt7565_WriteCmd(cmd);
void LcdSt7565_WriteData(dat);
void Lcd12864_Init();
void Lcd12864_ClearScreen(void);
void ascii_display(unsigned char x, unsigned char y, unsigned char c);
void hanzi_display(unsigned char x, unsigned char y, unsigned char zimo[]);
void pic_display(unsigned char pic[]);
#endif
st7565p.c
#include "st7565p.h"
#include "Font6_8.h" // 网上下载的6*8的ASCII码字符表
/*******************************************************************************
* 函 数 名 : LCD12864_WriteCmd
* 函数功能 : 写入一个命令到12864
* 输 入 : cmd
* 输 出 : 无
*******************************************************************************/
void LcdSt7565_WriteCmd(cmd)
{
LCD12864_CS = 0; //chip select,打开片选
LCD12864_RD = 1; //disable read,读失能
LCD12864_RS = 0; //select command,选择命令
LCD12864_RW = 0; //select write,选择写模式
_nop_();
_nop_();
DATA_PORT = cmd; //put command,放置命令
_nop_();
_nop_();
LCD12864_RW = 1; //command writing ,写入命令
}
/*******************************************************************************
* 函 数 名 : LcdSt7565_WriteData
* 函数功能 : 写入一个数据到12864
* 输 入 : dat
* 输 出 : 无
*******************************************************************************/
void LcdSt7565_WriteData(dat)
{
LCD12864_CS = 0; //chip select,打开片选
LCD12864_RD = 1; //disable read,读失能
LCD12864_RS = 1; //select data,选择数据
LCD12864_RW = 0; //select write,选择写模式
_nop_();
_nop_();
DATA_PORT = dat; //put data,放置数据
_nop_();
_nop_();
LCD12864_RW = 1; //data writing,写数据
}
/*******************************************************************************
* 函 数 名 : LCD12864_Init
* 函数功能 : 初始化12864
* 输 入 : 无
* 输 出 : 无
* 说 明 : LCD12864的命令指令可以查看例程文件夹下的《ST7565p数据手册》
* * 的第51页的位置。
*******************************************************************************/
void Lcd12864_Init()
{
uchar i;
LCD12864_RSET = 0;
for (i=0; i<100; i++);
LCD12864_CS = 0;
LCD12864_RSET = 1;
//----------------Start Initial Sequence-------//
//------程序初始化设置,具体命令可以看文件夹下---//
//--软件初始化--//
LcdSt7565_WriteCmd(0xE2); //reset
for (i=0; i<100; i++); //延时一下
//--表格第8个命令,0xA0段(左右)方向选择正常方向(0xA1为反方向)--//
// 0xA0对应0-127,0xA1对应4-131
LcdSt7565_WriteCmd(0xA0); //ADC select segment direction
//--表格第15个命令,0xC8普通(上下)方向选择选择反向,0xC0为正常方向--//
LcdSt7565_WriteCmd(0xC8); //Common direction
//--表格第9个命令,0xA6为设置字体为黑色,背景为白色---//
//--0xA7为设置字体为白色,背景为黑色---//
LcdSt7565_WriteCmd(0xA6); //reverse display
//--表格第10个命令,0xA4像素正常显示,0xA5像素全开--//
LcdSt7565_WriteCmd(0xA4); //normal display
//--表格第11个命令,0xA3偏压为1/7,0xA2偏压为1/9--//
LcdSt7565_WriteCmd(0xA2); //bias set 1/9
//--表格第19个命令,这个是个双字节的命令,0xF800选择增压为4X;--//
//--0xF801,选择增压为5X,其实效果差不多--//
LcdSt7565_WriteCmd(0xF8); //Boost ratio set
LcdSt7565_WriteCmd(0x01); //x4
//--表格第18个命令,这个是个双字节命令,高字节为0X81,低字节可以--//
//--选择从0x00到0X3F。用来设置背景光对比度。---/
LcdSt7565_WriteCmd(0x81); //V0 a set
LcdSt7565_WriteCmd(0x23);
//--表格第17个命令,选择调节电阻率--//
LcdSt7565_WriteCmd(0x25); //Ra/Rb set
//--表格第16个命令,电源设置。--//
LcdSt7565_WriteCmd(0x2F);
for (i=0; i<100; i++);
//--表格第2个命令,设置显示开始位置--//
LcdSt7565_WriteCmd(0x40); //start line
//--表格第1个命令,开启显示--//
LcdSt7565_WriteCmd(0xAF); // display on
for (i=0; i<100; i++);
}
/*******************************************************************************
* 函 数 名 : LCD12864_ClearScreen
* 函数功能 : 清屏12864
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Lcd12864_ClearScreen(void)
{
uchar i, j;
for(i=0; i<8; i++)
{
//--表格第3个命令,设置Y的坐标--//
//--Y轴有64个,一个坐标8位,也就是有8个坐标--//
//所以一般我们使用的也就是从0xB0到0x07,就够了--//
LcdSt7565_WriteCmd(0xB0+i);
//--表格第4个命令,设置X坐标--//
//--当你的段初始化为0xA1时,X坐标从0x10,0x04到0x18,0x04,一共128位--//
//--当你的段初始化为0xA0时,X坐标从0x10,0x00到0x18,0x00,一共128位--//
//--在写入数据之后X坐标的坐标是会自动加1的,我们初始化使用0xA0所以--//
//--我们的X坐标从0x10,0x00开始---//
LcdSt7565_WriteCmd(0x10);
LcdSt7565_WriteCmd(0x00);
//--X轴有128位,就一共刷128次,X坐标会自动加1,所以我们不用再设置坐标--//
for(j=0; j<128; j++)
{
LcdSt7565_WriteData(0x00); //如果设置背景为白色时,清屏选择0XFF
}
}
}
// 在屏幕的(x, y)坐标处,显示c这个字符
// (x, y)表示像素点的坐标值,所以x范围是0-127;y的范围是0-63
// 注意,因为显示文字是以整页为单位的,为了简单起见必须页对齐显示
// 因此给的y值必须是页首地址,就是0 8 16 24 等数值
void ascii_display(unsigned char x, unsigned char y, unsigned char c)
{
unsigned char i = 0;
unsigned char x1, x2;
/*
LcdSt7565_WriteCmd(0xB0);
// x坐标,只要在范围内别超出就可以了
LcdSt7565_WriteCmd(0x10);
LcdSt7565_WriteCmd(0x04);
for (i=0; i<6; i++)
{
LcdSt7565_WriteData(0xff);
}
*/
// 第一步,设置显示的x和y坐标
// y坐标,其实就是page address
LcdSt7565_WriteCmd(0xB0 + y / 8);
// x坐标,只要在范围内别超出就可以了
x1 = (x >> 4) & 0x0f;
x2 = x & 0x0f;
LcdSt7565_WriteCmd(0x10 + x1);
LcdSt7565_WriteCmd(0x00 + x2);
// 第二步,找到c对应的字模
// ASCII_6_8[c-20][0] 字模的第一个字节
// 第三步,将字模丢到显存中去
for (i=0; i<6; i++)
{
LcdSt7565_WriteData(ASCII_6_8[c-0x20][i]);
}
}
/*
void string_display(unsigned char x, unsigned char y, unsigned char str[])
{
}
*/
void hanzi_display(unsigned char x, unsigned char y, unsigned char zimo[])
{
unsigned char i = 0;
unsigned char x1, x2;
// 先显示上面一半
LcdSt7565_WriteCmd(0xB0 + y / 8);
// x坐标,只要在范围内别超出就可以了
x1 = (x >> 4) & 0x0f;
x2 = x & 0x0f;
LcdSt7565_WriteCmd(0x10 + x1);
LcdSt7565_WriteCmd(0x00 + x2);
for (i=0; i<16; i++)
{
LcdSt7565_WriteData(zimo[i]);
}
// 再显示下面一半
LcdSt7565_WriteCmd(0xB0 + y / 8 + 1);
// x坐标,只要在范围内别超出就可以了
x1 = (x >> 4) & 0x0f;
x2 = x & 0x0f;
LcdSt7565_WriteCmd(0x10 + x1);
LcdSt7565_WriteCmd(0x00 + x2);
for (i=16; i<32; i++)
{
LcdSt7565_WriteData(zimo[i]);
}
}
// 在屏幕上显示一个图片,从屏幕左上角开始显示
void pic_display(unsigned char pic[])
{
uchar i, j;
uint k = 0;
for(i=0; i<8; i++)
{
LcdSt7565_WriteCmd(0xB0+i);
LcdSt7565_WriteCmd(0x10);
LcdSt7565_WriteCmd(0x00);
//--X轴有128位,就一共刷128次,X坐标会自动加1,所以我们不用再设置坐标--//
for(j=0; j<128; j++)
{
LcdSt7565_WriteData(pic[k++]); //如果设置背景为白色时,清屏选择0XFF
}
}
}
zimo.h
#ifndef __ZIMO_H__
#define __ZIMO_H__
/*
unsigned char code zimo_zhu[] =
{0x80,0xA0,0x90,0x8E,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0x88,0x80,0x80,0x00,
0x20,0x20,0x10,0x08,0x04,0x02,0x01,0xFF,0x01,0x02,0x04,0x08,0x10,0x20,0x20,0x00,};
unsigned char code zimo_you[] =
{0x04,0x04,0x04,0x84,0xE4,0x3C,0x27,0x24,0x24,0x24,0x24,0xE4,0x04,0x04,0x04,0x00,
0x04,0x02,0x01,0x00,0xFF,0x09,0x09,0x09,0x09,0x49,0x89,0x7F,0x00,0x00,0x00,0x00,};
unsigned char code zimo_peng[] =
{0x00,0xFE,0x22,0xFE,0x00,0xFE,0x22,0xFE,0x00,0xFC,0x16,0x25,0x84,0xFC,0x00,0x00,
0x60,0x1F,0x22,0xBF,0x40,0x3F,0x82,0xFF,0x00,0x13,0x12,0x12,0x52,0x82,0x7E,0x00,};
*/
unsigned char code zimo_zhuyoupeng[3][32] =
{
// 朱
{0x80,0xA0,0x90,0x8E,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0x88,0x80,0x80,0x00,
0x20,0x20,0x10,0x08,0x04,0x02,0x01,0xFF,0x01,0x02,0x04,0x08,0x10,0x20,0x20,0x00,},
// 有
{0x04,0x04,0x04,0x84,0xE4,0x3C,0x27,0x24,0x24,0x24,0x24,0xE4,0x04,0x04,0x04,0x00,
0x04,0x02,0x01,0x00,0xFF,0x09,0x09,0x09,0x09,0x49,0x89,0x7F,0x00,0x00,0x00,0x00,},
// 鹏
{0x00,0xFE,0x22,0xFE,0x00,0xFE,0x22,0xFE,0x00,0xFC,0x16,0x25,0x84,0xFC,0x00,0x00,
0x60,0x1F,0x22,0xBF,0x40,0x3F,0x82,0xFF,0x00,0x13,0x12,0x12,0x52,0x82,0x7E,0x00,},
};
#endif
pic.h
#ifndef __PICTURE_H__
#define __PICTURE_H__
unsigned char code pic[] =
{
0x00,0x00,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,0xC0,0xC0,0xC0,0xC8,0xD8,
0xF8,0x78,0x78,0x18,0x18,0x38,0x38,0x3E,0x3C,0x1C,0x38,0x70,0x70,0x60,0xC0,0x60,
0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x40,0xC0,0xC0,0xC0,0x80,0x80,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0xFC,0x78,0x30,0xA0,0xE0,0x60,
0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,
0xE0,0xE0,0xC0,0xC0,0x80,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,
0xC0,0xE2,0xFE,0x9C,0xB0,0x30,0xE0,0x60,0x60,0x60,0x20,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xF9,0x1D,
0x0F,0x07,0x07,0x00,0x00,0x00,0x00,0x60,0x60,0xA0,0xB0,0xF0,0xF0,0xD0,0x78,0x10,
0x00,0x00,0x02,0x02,0x02,0x02,0x1A,0x1B,0x1B,0x02,0x80,0x80,0x01,0x01,0x03,0x03,
0x06,0x1E,0x3C,0x70,0xE0,0xE0,0x80,0x00,0x00,0x00,0x01,0x03,0x07,0x0E,0x3F,0x7E,
0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x0F,0x05,0x05,0x3F,
0x2F,0x3F,0x37,0x35,0x33,0x31,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x03,0x03,0x0F,0x1E,0x3C,0x70,0xC0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x7F,0xF0,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x04,
0x04,0x00,0x04,0x76,0x76,0x3E,0xBE,0x8A,0x83,0x94,0xDC,0x4C,0x08,0x00,0x00,0x00,
0xC0,0xC0,0x60,0xF0,0xB0,0xB7,0xBF,0x90,0x90,0x10,0x10,0x10,0x90,0x90,0xF0,0x70,
0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x12,0x12,0x12,
0x12,0xFA,0xFE,0x16,0x16,0x16,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,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,0x80,0x80,0xC1,0x43,
0x63,0x66,0x3E,0x18,0x10,0x00,0x00,0x00,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,0x1D,0x7E,0xF6,0xC3,0x01,0x01,0x01,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xE0,0xE1,
0xE1,0xE1,0xE1,0xE0,0xE0,0xE0,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,0x18,0x18,0x1C,0x1C,0x1C,0x1E,0x1E,0x9A,0x8A,0x8B,0x8D,0x8D,0xCC,0xCC,0x44,
0x44,0x46,0x06,0x06,0x06,0x02,0x0E,0x3E,0xB0,0x80,0xC0,0xC0,0xC0,0x60,0x70,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF8,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x0F,0x0E,
0x0E,0x0F,0x1E,0x0E,0x0E,0x1E,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x10,0x10,0x18,0x18,0x18,0x18,0x1C,0x1C,0x1C,0x0C,0x0C,0x8C,0x8C,0x84,0x86,0xC6,
0xC6,0x46,0x46,0x63,0x63,0x23,0x23,0x31,0x31,0x11,0x11,0x18,0x18,0x0C,0x0C,0x04,
0x04,0x06,0x06,0x02,0x03,0x03,0x01,0x81,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x1F,0x0C,0x0C,0x0C,0x04,
0x04,0x04,0x04,0x04,0x0C,0x8C,0xFC,0x70,0x30,0x00,0x00,0x3E,0xBE,0xC0,0x7F,0x1F,
0x00,0x7E,0x02,0xFF,0xFF,0x22,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x04,0x04,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0xC0,0x70,0x78,0x18,0x0E,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0xC0,0xC0,0xC0,0xC0,0xE0,0xE0,
0xF0,0xF0,0xD8,0xD8,0xC8,0xC8,0xEC,0xE4,0xE4,0x66,0x66,0x66,0x67,0x7F,0x7F,0xE0,
0xC0,0xC0,0xD8,0xFC,0xFF,0x73,0x01,0x20,0x70,0x70,0x30,0x30,0x30,0x30,0x30,0x30,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x10,0x10,0x30,0x30,0x30,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x00,0x00,0x00,
0x00,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,0xF0,0xB8,0xDE,0xC6,
0xC3,0xC3,0x61,0x20,0x20,0x30,0x10,0x18,0x18,0x0C,0x0C,0x7C,0x7C,0x5E,0xDE,0xC6,
0x06,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x01,0x01,0x01,0x01,0x01,0x01,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,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x06,0x06,0x06,0x00,0x00,0x00,
};
#endif
Font6_8.h
/*
* Font6_8.h
*
* Created on: 2012-2-5
* Author: Administrator
*/
#ifndef FONT6_8_H_
#define FONT6_8_H_
unsigned char code ASCII_6_8[][6] =
{
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // 20
,{0x00, 0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !
,{0x00, 0x00, 0x07, 0x00, 0x07, 0x00} // 22 "
,{0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 #
,{0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $
,{0x00, 0x23, 0x13, 0x08, 0x64, 0x62} // 25 %
,{0x00, 0x36, 0x49, 0x55, 0x22, 0x50} // 26 &
,{0x00, 0x00, 0x05, 0x03, 0x00, 0x00} // 27 '
,{0x00, 0x00, 0x1c, 0x22, 0x41, 0x00} // 28 (
,{0x00, 0x00, 0x41, 0x22, 0x1c, 0x00} // 29 )
,{0x00, 0x14, 0x08, 0x3e, 0x08, 0x14} // 2a *
,{0x00, 0x08, 0x08, 0x3e, 0x08, 0x08} // 2b +
,{0x00, 0x00, 0x50, 0x30, 0x00, 0x00} // 2c ,
,{0x00, 0x08, 0x08, 0x08, 0x08, 0x08} // 2d -
,{0x00, 0x00, 0x60, 0x60, 0x00, 0x00} // 2e .
,{0x00, 0x20, 0x10, 0x08, 0x04, 0x02} // 2f /
,{0x00, 0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0
,{0x00, 0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1
,{0x00, 0x42, 0x61, 0x51, 0x49, 0x46} // 32 2
,{0x00, 0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3
,{0x00, 0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4
,{0x00, 0x27, 0x45, 0x45, 0x45, 0x39} // 35 5
,{0x00, 0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6
,{0x00, 0x01, 0x71, 0x09, 0x05, 0x03} // 37 7
,{0x00, 0x36, 0x49, 0x49, 0x49, 0x36} // 38 8
,{0x00, 0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9
,{0x00, 0x00, 0x36, 0x36, 0x00, 0x00} // 3a :
,{0x00, 0x00, 0x56, 0x36, 0x00, 0x00} // 3b ;
,{0x00, 0x08, 0x14, 0x22, 0x41, 0x00} // 3c <
,{0x00, 0x14, 0x14, 0x14, 0x14, 0x14} // 3d =
,{0x00, 0x00, 0x41, 0x22, 0x14, 0x08} // 3e >
,{0x00, 0x02, 0x01, 0x51, 0x09, 0x06} // 3f ?
,{0x00, 0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @
,{0x00, 0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A
,{0x00, 0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B
,{0x00, 0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C
,{0x00, 0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D
,{0x00, 0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E
,{0x00, 0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F
,{0x00, 0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G
,{0x00, 0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H
,{0x00, 0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I
,{0x00, 0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J
,{0x00, 0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K
,{0x00, 0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L
,{0x00, 0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M
,{0x00, 0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N
,{0x00, 0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O
,{0x00, 0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P
,{0x00, 0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q
,{0x00, 0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R
,{0x00, 0x46, 0x49, 0x49, 0x49, 0x31} // 53 S
,{0x00, 0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T
,{0x00, 0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U
,{0x00, 0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V
,{0x00, 0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W
,{0x00, 0x63, 0x14, 0x08, 0x14, 0x63} // 58 X
,{0x00, 0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y
,{0x00, 0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z
,{0x00, 0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [
,{0x00, 0x02, 0x04, 0x08, 0x10, 0x20} // 5c \ //
,{0x00, 0x00, 0x41, 0x41, 0x7f, 0x00} // 5d ]
,{0x00, 0x04, 0x02, 0x01, 0x02, 0x04} // 5e ^
,{0x00, 0x40, 0x40, 0x40, 0x40, 0x40} // 5f _
,{0x00, 0x00, 0x01, 0x02, 0x04, 0x00} // 60 `
,{0x00, 0x20, 0x54, 0x54, 0x54, 0x78} // 61 a
,{0x00, 0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b
,{0x00, 0x38, 0x44, 0x44, 0x44, 0x20} // 63 c
,{0x00, 0x38, 0x44, 0x44, 0x48, 0x7f} // 64 d
,{0x00, 0x38, 0x54, 0x54, 0x54, 0x18} // 65 e
,{0x00, 0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f
,{0x00, 0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g
,{0x00, 0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h
,{0x00, 0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i
,{0x00, 0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j
,{0x00, 0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k
,{0x00, 0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l
,{0x00, 0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m
,{0x00, 0x7c, 0x08, 0x04, 0x04, 0x78} // 6e n
,{0x00, 0x38, 0x44, 0x44, 0x44, 0x38} // 6f o
,{0x00, 0x7c, 0x14, 0x14, 0x14, 0x08} // 70 p
,{0x00, 0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q
,{0x00, 0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r
,{0x00, 0x48, 0x54, 0x54, 0x54, 0x20} // 73 s
,{0x00, 0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t
,{0x00, 0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u
,{0x00, 0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v
,{0x00, 0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w
,{0x00, 0x44, 0x28, 0x10, 0x28, 0x44} // 78 x
,{0x00, 0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y
,{0x00, 0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z
,{0x00, 0x00, 0x08, 0x36, 0x41, 0x00} // 7b {
,{0x00, 0x00, 0x00, 0x7f, 0x00, 0x00} // 7c |
,{0x00, 0x00, 0x41, 0x36, 0x08, 0x00} // 7d }
,{0x00, 0x10, 0x08, 0x08, 0x10, 0x08} // 7e ~
,{0x00, 0x78, 0x46, 0x41, 0x46, 0x78} // 7f (delete)
};
/*
static const char sign[][6] =
{
{0x00, 0x08, 0x08, 0x2a, 0x1c, 0x08} // 00 ->
,{0x00, 0x08, 0x1c, 0x2a, 0x08, 0x08} // 01 <-
,{0x00, 0x04, 0x02, 0x7f, 0x02, 0x04} // 02 ↑
,{0x00, 0x10, 0x20, 0x7f, 0x20, 0x10} // 03 ↓
,{0x00, 0x15, 0x16, 0x7c, 0x16, 0x15} // 04 ¥
,{0x00, 0x03, 0x3b, 0x44, 0x44, 0x44} // 05 ℃
,{0x00, 0x03, 0x03, 0x7c, 0x14, 0x14} // 06 ℉
,{0x00, 0x44, 0x28, 0x10, 0x28, 0x44} // 07 ×
,{0x00, 0x08, 0x08, 0x2a, 0x08, 0x08} // 08 ÷
,{0x00, 0x38, 0x44, 0x48, 0x30, 0x2c} // 09 α
,{0x00, 0xf8, 0x54, 0x54, 0x54, 0x28} // 0a β
,{0x00, 0x28, 0x54, 0x54, 0x44, 0x20} // 0b ε
,{0x00, 0x3e, 0x49, 0x09, 0x09, 0x06} // 0c ρ
,{0x00, 0x38, 0x44, 0x4c, 0x54, 0x24} // 0d σ
,{0x00, 0x40, 0x3f, 0x08, 0x08, 0x1f} // 0e μ
,{0x00, 0x1f, 0x08, 0x08, 0x3f, 0x40} // 0f η
,{0x00, 0x3c, 0x4a, 0x4a, 0x4a, 0x3c} // 10 θ
,{0x00, 0x58, 0x64, 0x04, 0x64, 0x58} // 11 Ω
,{0x00, 0x44, 0x3c, 0x04, 0x7c, 0x44} // 12 π
,{0x00, 0x30, 0x28, 0x10, 0x28, 0x18} // 13 ∞
,{0x00, 0x30, 0x28, 0x24, 0x28, 0x30} // 14 △
,{0x00, 0x08, 0x1c, 0x08, 0x08, 0x0e} // 15 (Enter)
};
*/
#endif /* FONT6_8_H_ */
main.c
#include "st7565p.h"
#include "zimo.h"
#include "pic.h"
void main(void)
{
Lcd12864_Init();
Lcd12864_ClearScreen();
// ascii_display(40, 8, '%');
/*
hanzi_display(0, 0, zimo_zhu);
hanzi_display(16, 0, zimo_you);
hanzi_display(32, 0, zimo_peng);
*/
/*
hanzi_display(16*0, 16, zimo_zhuyoupeng[0]);
hanzi_display(16*1, 16, zimo_zhuyoupeng[1]);
hanzi_display(16*2, 16, zimo_zhuyoupeng[2]);
*/
pic_display(pic);
while (1);
}