STM32之0.96寸 4针 OLED显示屏(IIC协议)驱动代码(程序稳定,清晰明了)

news/2024/11/22 17:30:48/
4针 IIC OLED显示效果
4针OLED  IIC 协议显示效果

 

温馨提示:本篇博客文章仅仅是OLED屏幕的驱动代码,其余代码(温度,时间显示代码)见本人主页其它文章......

注意!!!!请拷贝整个keil工程出来再打开,在文件夹内文件路径太长keil5会打开失败!!!!

完整工程和资料包下载:https://download.csdn.net/download/qq_34885669/11640003

注意!!!!请拷贝整个keil工程出来再打开,在文件夹内文件路径太长keil5会打开失败!!!!

 

 

第一部分:IIC协议代码头文件 (iic.h)

#ifndef IIC_H
#define IIC_H
#include "delay.h"
#include "sys.h"
#include "stdio.h"
#include "usart.h"
#include "string.h"
#include "sys.h"void IIC_Init(void);
void IIC_ACK(void);
void IIC_NACK(void);
u8 IIC_wait_ACK(void);
void IIC_Start(void);
void IIC_Stop(void);
void IIC_SendByte(u8 byte);
u8 IIC_RcvByte(void);
#endif

第二部分:IIC协议代码文件 (iic.c)

#include "stm32f10x.h"
#include "iic.h"#define write 0
#define read  1
//IIC总线地址接口定义
#define SCL PAout(4)
#define SDA_OUT PAout(5)
#define SDA_IN PAin(5)
#define IIC_INPUT_MODE_SET()  {GPIOA->CRL&=0xFF0FFFFF;GPIOA->CRL|=0x00800000;}
#define IIC_OUTPUT_MODE_SET() {GPIOA->CRL&=0xFF0FFFFF;GPIOA->CRL|=0x00300000;}void IIC_Init(void)
{/*1.开时钟*/RCC->APB2ENR |= 1<<2;/*2.设置GPIO模式*/GPIOA->CRL &= 0xFF00FFFF;GPIOA->CRL |= 0x00330000;/*3.设置GPIO空闲电平*/GPIOA->ODR |= 0x3<<4;	//printf("IIC_Init OK!\n");
}	/*******************************************************************
功能:启动I2C总线,即发送I2C起始条件. SCL为高电平期间 SDA出现下降沿
********************************************************************/
void IIC_Start(void)
{IIC_OUTPUT_MODE_SET();SDA_OUT=1;SCL=1;SDA_OUT=0;SCL=0;
}/*******************************************************************
功能:结束I2C总线,即发送I2C结束条件. SCL为高电平期间 SDA出现上升沿 
********************************************************************/
void IIC_Stop(void)
{IIC_OUTPUT_MODE_SET();SDA_OUT=0;  	SCL=1;SDA_OUT=1; 
}/*主机发送ACK*/
void IIC_ACK(void)
{IIC_OUTPUT_MODE_SET();SCL=0; SDA_OUT=0;   SCL=1;                SCL=0;                        
}/*主机不发送ACK*/
void IIC_NACK(void)
{IIC_OUTPUT_MODE_SET();SCL=0;SDA_OUT=1;     SCL=1;                  SCL=0;                        
}/*主机等待从机的ACK*/
u8 IIC_wait_ACK(void)
{u8 t = 200;IIC_OUTPUT_MODE_SET();SDA_OUT=1;//8位发送完后释放数据线,准备接收应答位 SCL=0;IIC_INPUT_MODE_SET();while(SDA_IN)//等待应答{t--;DelayUs(1); if(t==0){SCL=0;return 1;}}     SCL=1;SCL=0;                return 0;	
}/*******************************************************************
字节数据发送函数               
函数原型: void  SendByte(UCHAR c);
功能:将数据c发送出去,可以是地址,也可以是数据
********************************************************************/
void  IIC_SendByte(u8 byte)
{u8  BitCnt;IIC_OUTPUT_MODE_SET();SCL=0;for(BitCnt=0;BitCnt<8;BitCnt++)//要传送的数据长度为8位{if(byte&0x80) SDA_OUT=1;//判断发送位else SDA_OUT=0; byte<<=1;SCL=1;SCL=0;}
}
/*******************************************************************字节数据接收函数               
函数原型: UCHAR  RcvByte();
功能: 用来接收从器件传来的数据  
********************************************************************/    
u8 IIC_RcvByte(void)
{u8 retc;u8 BitCnt;retc=0; IIC_INPUT_MODE_SET();//置数据线为输入方式                   for(BitCnt=0;BitCnt<8;BitCnt++){  SCL=0;	//置时钟线为低,准备接收数据位DelayUs(1);               SCL=1;	//置时钟线为高使数据线上数据有效                retc=retc<<1;if(SDA_IN) retc |=1;//读数据位,接收的数据位放入retc中 }SCL=0;    return(retc);
}

第三部分:OLED代码头文件 (oled_iic.h)

#ifndef OLED_IIC_H
#define OLED_IIC_H
#include "stm32f10x.h"#define OLED_ON  0xFF	//亮
#define OLED_OFF 0x00	//灭
#define high 1
#define low 0
#define	Brightness	0xCF 
#define X_WIDTH 	128
#define Y_WIDTH 	64/*OLED IIC通讯相关宏定义*/
#define OLED_CMD 				0		//写命令
#define OLED_DATA 				1		//写数据
#define IIC_ADD_WC 				0x78	//IIC通讯写命令时的地址
#define IIC_ADD_WD 				0x78	//IIC通讯写数据时的地址
#define IIC_CONC 				0x00	//控制字节指定下一个字节为命令
#define IIC_COND 				0x40	//控制字节指定下一个字节为数据SS/*SSD1306 基础命令定义*/
#define SET_CONTRAST_CONTROL		        0x81	//对比度设置命令,取值范围1-255,复位值:0x7F
#define SET_DISPLAY_ON				0xAF	//开显示命令
#define SET_DISPLAY_OFF				0xAE	//关显示命令
#define ENTIRE_DISPLAY_ON_A4		        0xA4	//全局显示关闭
#define ENTIRE_DISPLAY_ON_A5		        0xA5	//全局显示开启
#define NORMAL_DISPLAY				0xA6	//给GDDRAM值为0,熄灭像素;给GDDRAM值为1,点亮像素
#define INVERSE_DISPLAY				0xA7	//给GDDRAM值为0,点亮像素;给GDDRAM值为1,熄灭像素/*SSD1306 滚动显示命令定义*/
#define HORIZONTAL_SCROLL_SETUP_RIGHT	        0x26	//向右水平移动
#define HORIZONTAL_SCROLL_SETUP_LEFT	        0x27	//向左水平移动
#define HORIZONTAL_SCROLL_SETUP_AE		0x00	//配置水平移动时,需要的虚拟字节
#define HORIZONTAL_SCROLL_SETUP_F		0xFF	//配置水平移动时,需要的虚拟字节
#define ACTIVATE_SCROLL				0x2F	//开启滚动显示功能	
#define DEACTIVATE_SCROLL			0x2E	//关闭滚动显示功能
#define SET_VERTICAL_SCROLL_AREA		0xA3	//设置垂直滚动范围命令	
#define HV_SCROLL_SRTEP_RIGHT			0x29	//向右水平移动
#define HV_SCROLL_SRTEP_LEFT			0x2A	//向左水平移动/*SSD1306 地址设置命令定义*/
#define SET_MEMORY_ADDR_MODE			0x20	//设置地址模式:0x00,列地址模式;0x01,行地址模式;0x10,页地址模式/*SSD1306 硬件配置命令定义*/
#define SET_SEGMENT_REMAP_A0			0xA0	//列地址0映射到SEG0
#define SET_SEGMENT_REMAP_A1			0xA1	//列地址0映射到SEG127
#define SET_MULTIPLEX_RATIO			0xA8	//设置驱动路数
#define SET_COM_SCAN_DIRECTION_C0		0xC0	//扫描方向从COM0-->COM[N-1]
#define SET_COM_SCAN_DIRECTION_C8		0xC8	//扫描方向从COM[N-1]-->COM0
#define SET_DISPLAY_OFFSET			0xD3	//设置行显示偏移
#define SET_COM_PINS_CONFIG			0xDA	//设置COM硬件引脚配置命令/*SSD1306 显示时钟和驱动相关命令定义*/
#define SET_DISPLAY_CLOCK			0xD5	//设置时钟分频因子、振荡频率
#define SET_PRECHARGE_PERIOD			0xD9	//设置预充电周期
#define SET_VCOMH_DESELECT_L			0xDB	//设置VCOMH电源倍率
#define CHARGE_PUMP_SET				0x8D	//电荷泵设置/*显示字符类型定义*/
#define TYPE_12X06			        0x01	//显示12*06字符
#define TYPE_16X08			        0x02	//显示16*08字符
#define TYPE_16X16			        0x03	//显示16*16字符extern u8 Old_Menu_Page;
extern u8 Display_Fleg;
extern u8 OLED_GRAM[8][128];
extern u8 Menu_Page;
extern u8 Display_Fleg;
extern u8 Data_buff[25];void OLED_WR_Byte(u8 dat,u8 cmd);
void OLED_Display_On(void);
void OLED_Display_Off(void);
void OLED_Clear(void); 
void OLED_Init(void);
void OLED_Draw_Point(u8 x,u8 y,u8 c);
void OLED_Refresh_Screen(void);
void LCD_ShowFont(u32 x,u32 y,u32 w,u32 h,u8 *p);
void OLED_SetCursorAddrese(u8 x,u8 y);
void OLED_PageClear(u8 page);
void OLED_DisplayString(u8 x,u8 y,u8 width,u8 height,u8 *str);
u8 Oled_Display(u8 x ,u8 y ,u8 width , u8 height);
void OLED_Menu_Display(void);#endif

第四部分:OLED代码文件 (oled_iic.c)

#include "delay.h"
#include "oled_iic.h"
#include "word.h"
#include "string.h"
#include "math.h"
#include "DS18B20.h"
#include "key.h"
#include "DS1302.h"
#include "iic.h"u8 OLED_GRAM[8][128];/*定义OLED显存数组*//*
函数功能: 向SSD1106写入一个字节
函数参数: dat:要写入的数据/命令cmd:数据/命令标志  0表示命令  1表示数据
*/
void OLED_WR_Byte(u8 dat,u8 cmd)
{IIC_Start();								//开始传输IIC_SendByte(0x78);					//传输地址IIC_wait_ACK();							//接收1306返回的确认信号if(cmd) IIC_SendByte(0x40);	//发送控制字节,写数据else IIC_SendByte(0x00);		//发送控制字节,写命令	IIC_wait_ACK();							//接收1306返回的确认信号IIC_SendByte(dat);					//发送数据字节IIC_wait_ACK();							//接收1306返回的确认信号IIC_Stop();									//结束传输
}/*********************OLED初始化************************************/
void OLED_Init(void)
{IIC_Init();DelayMs(500);								//初始化之前的延时很重要!OLED_WR_Byte(0xAE,OLED_CMD); //关闭显示OLED_WR_Byte(0x00,OLED_CMD);//设置低列地址OLED_WR_Byte(0x10,OLED_CMD);//设置高列地址OLED_WR_Byte(0x40,OLED_CMD);//设置起始行地址,集映射RAM显示起始行(0x00~0x3F)OLED_WR_Byte(0x81,OLED_CMD);//设置对比度控制寄存器OLED_WR_Byte(0xCF,OLED_CMD);//设置SEG输出电流亮度OLED_WR_Byte(0xA1,OLED_CMD);//段重定义设置,bit0:0,0->0;1,0->127; 0xa0左右反置 0xa1正常OLED_WR_Byte(0xC8,OLED_CMD);//设置COM扫描方向;bit3:0,普通模式;1,重定义模式 COM[N-1]->COM0;N:驱动路数   0xc0上下反置 0xc8正常OLED_WR_Byte(0xA6,OLED_CMD);//设置正常显示(设置显示方式;bit0:1,反相显示;0,正常显示	)OLED_WR_Byte(0xA8,OLED_CMD);//设置驱动路数 设置多路复用比(1比64)OLED_WR_Byte(0x3F,OLED_CMD);//1/64 duty(默认0X3F(1/64))OLED_WR_Byte(0xD3,OLED_CMD);//设置显示偏移位移映射RAM计数器(0x00~0x3F)OLED_WR_Byte(0x00,OLED_CMD);//-not offsetOLED_WR_Byte(0xD5,OLED_CMD);//设置显示时钟分频比/振荡器频率OLED_WR_Byte(0x80,OLED_CMD);//设置分频比,设置时钟为100帧/秒OLED_WR_Byte(0xD9,OLED_CMD);//设置预充电周期OLED_WR_Byte(0xF1,OLED_CMD);//设置预充15个时钟,放电1个时钟([3:0],PHASE 1;[7:4],PHASE 2;)OLED_WR_Byte(0xDA,OLED_CMD);//设置COM硬件引脚配置OLED_WR_Byte(0x12,OLED_CMD);//[5:4]配置OLED_WR_Byte(0xDB,OLED_CMD);//设置VCOMH 电压倍率OLED_WR_Byte(0x40,OLED_CMD);//Set VCOM 释放电压([6:4] 000,0.65*vcc;001,0.77*vcc;011,0.83*vcc;)OLED_WR_Byte(0x20,OLED_CMD);//设置页面寻址模式(0x00/0x01/0x02)OLED_WR_Byte(0x02,OLED_CMD);//[1:0],00,列地址模式;01,行地址模式;10,页地址模式;默认10;OLED_WR_Byte(0x8D,OLED_CMD);//设置充电泵启用/禁用OLED_WR_Byte(0x14,OLED_CMD);//设置(0x10禁用,0x14启用)OLED_WR_Byte(0xA4,OLED_CMD);// 全局显示开启;bit0:1,开启;0,关闭;(白屏/黑屏) (0xa4/0xa5)OLED_WR_Byte(0xA6,OLED_CMD);// 设置显示方式;bit0:1,反相显示;0,正常显示 (0xa6/a7) OLED_WR_Byte(0xAF,OLED_CMD);//开启显示	OLED_Clear();OLED_SetCursorAddrese(0,0);//printf("OLED Init OK !\n");
}
/*函数功能:开启OLED显示 */
void OLED_Display_On(void)
{OLED_WR_Byte(0X8D,OLED_CMD);  //SET DCDC命令(设置电荷泵)OLED_WR_Byte(0X14,OLED_CMD);  //DCDC ON (开启电荷泵)OLED_WR_Byte(0XAF,OLED_CMD);  //DISPLAY ON(OLED唤醒)
}
/*函数功能:关闭OLED显示*/ void OLED_Display_Off(void)
{OLED_WR_Byte(0X8D,OLED_CMD);  //SET DCDC命令 (设置电荷泵)OLED_WR_Byte(0X10,OLED_CMD);  //DCDC OFF (关闭电荷泵)OLED_WR_Byte(0XAE,OLED_CMD);  //DISPLAY OFF (OLED休眠)
}/*
函数功能:清屏函数,清完屏,整个屏幕是黑色的!  
说明: 清屏就是向OLED里写0对于OLED屏,0就不显示,1才会在屏幕上显示出来一个点
*/
void OLED_Clear(void)  
{  u8 i,n;  for(i=0;i<8;i++){OLED_WR_Byte(0xB0+i,OLED_CMD);//设置页地址(0~7)OLED_WR_Byte(0x00,OLED_CMD);  //设置显示位置―列低地址OLED_WR_Byte(0x10,OLED_CMD);  //设置显示位置―列高地址 for(n=0;n<128;n++){OLED_WR_Byte(0x00,OLED_DATA);}}
}
/*
函数功能:在显存数组上画一个点
函数参数:x,y为点的横纵坐标   c为这个点的亮灭(1亮0灭)
参数范围:x 0~128  y 0~8 
每一个数据是 低位在前,高位在后
*/
void OLED_Draw_Point(u8 x,u8 y,u8 c)
{u8 page,addr;page = y/8; //显存的页地址addr = y%8; //显存的一个字节数据中c所在的位置 if(c) OLED_GRAM[page][x] |= 1<<addr;else  OLED_GRAM[page][x] &= ~(1<<addr);
}/*
函数功能: 设置光标位置
函数参数: x列的起始位置(0~127)y页的起始位置(0~7)
比如: 0x8  高4位0000   低4位1000 
*/
void OLED_SetCursorAddrese(u8 x,u8 y)
{OLED_WR_Byte(0xB0+y,OLED_CMD); 					//设置页地址//第6列显示数据  6被分成2个4位(高位和低位)。OLED_WR_Byte((x&0xF0)>>4|0x10,OLED_CMD);//设置列高起始地址(半字节)OLED_WR_Byte((x&0x0F)|0x00,OLED_CMD);   //设置列低起始地址(半字节)			
}
/*****************************************************
** 函数名称:OLED_VerticalDisplay
** 函数功能:实现OLED垂直滚动范围配置
** 参    数:1.toprow:设置滚动起始行
**           2.scrollrow:设置滚动行数
**           注意:toprow+scrollrow<64
** 函数返回:无
******************************************************/
void OLED_VerticalDisplay(u8 toprow,u8 scrollrow)
{OLED_WR_Byte(SET_VERTICAL_SCROLL_AREA,OLED_CMD);OLED_WR_Byte(toprow,OLED_CMD);OLED_WR_Byte(scrollrow,OLED_CMD);
}/*****************************************************
** 函数名称:OledScrollStop
** 函数功能:关闭滚屏功能
******************************************************/ 
void OledScrollStop(void)
{OLED_WR_Byte(DEACTIVATE_SCROLL,OLED_CMD);
}/*
函数功能: 按页清屏 (0~7)
*/
void OLED_PageClear(u8 page)
{u8 j;OLED_WR_Byte(0xB0+page,OLED_CMD); //设置页地址OLED_WR_Byte(0x10,OLED_CMD);      //设置列高起始地址(半字节)OLED_WR_Byte(0x00,OLED_CMD);      //设置列低起始地址(半字节)for(j=0;j<128;j++){OLED_WR_Byte(0,OLED_DATA); //写数据}
}/*
函数功能:更新显存到OLED屏幕上*/
void OLED_Refresh_Screen(void)
{u8 page,list;  //定义页地址和列地址for(page=0;page<8;page++){OLED_WR_Byte(0xB0+page,OLED_CMD); //设置页地址(0~7)OLED_WR_Byte(0x00,OLED_CMD);      //设置显示位置―列低地址OLED_WR_Byte(0x10,OLED_CMD);      //设置显示位置―列高地址 for(list=0;list<128;list++){OLED_WR_Byte(OLED_GRAM[page][list],OLED_DATA);}}memset(OLED_GRAM,0,sizeof(OLED_GRAM));	/*清空显存数组*/
}u8 Oled_Display(u8 x ,u8 y ,u8 width , u8 height)
{u8 i,j;if(width>128) width=128;if(height>64) height=64;/*1. OLED显示屏初始化*/OLED_Clear();	//清屏for(i=0;i<height/8;i++){OLED_WR_Byte(0xB0+i,OLED_CMD); //设置页地址(0~7)OLED_WR_Byte(0x00,OLED_CMD);      //设置显示位置―列低地址OLED_WR_Byte(0x10,OLED_CMD);      //设置显示位置―列高地址 for(j=0;j<width;j++){ 
//			OLED_WR_Byte(BMP[i][j],OLED_DATA);}}DelayMs(10);return 0;
}void OLED_DisplayString(u8 x,u8 y,u8 width,u8 height,u8 *str)
{u8 addr=0,i;u16 font=0;while(*str!='\0') //连续显示{//取模从空格开始的,计算下标//写8*16ASCII字符的上半部分if(*str >= ' '&& *str <= '~') //显示英文{addr=*str-' '; //取模从空格开始的,计算下标//写8*16ASCII字符的上半部分OLED_SetCursorAddrese(x,y); //设置光标的位置for(i=0;i<width/2;i++)      //横向写width列{OLED_WR_Byte(ASCII_8_16[addr][i],OLED_DATA); }//写8*16ASCII字符的下半部分OLED_SetCursorAddrese(x,y+1); //设置光标的位置for(i=0;i<width/2;i++)        //横向写width列{OLED_WR_Byte(ASCII_8_16[addr][i+width/2],OLED_DATA); }str++;//继续显示下一个字符x+=width/2; //在下一个位置继续显示数据			}else //显示中文{OLED_SetCursorAddrese(x,y); //设置光标的位置font=((*str)<<8)+(*(str+1));switch(font){case 0xCEC2:addr=0;break;//温case 0xCAAA:addr=1;break;//湿case 0xB6C8:addr=2;break;//度case 0xCAFD:addr=3;break;//数case 0xBEDD:addr=4;break;//据case 0xB3C9:addr=5;break;//成case 0xB9A6:addr=6;break;//功case 0xB7A2:addr=7;break;//发case 0xCBCD:addr=8;break;//送case 0xC1AC:addr=9;break;//连case 0xBDD3:addr=10;break;//接case 0xB7FE:addr=11;break;//服case 0xCEF1:addr=12;break;//务case 0xC6F7:addr=13;break;//器case 0xC9CF:addr=14;break;//上case 0xCFC2:addr=15;break;//下case 0xCFDE:addr=16;break;//限case 0xD6B5:addr=17;break;//值case 0xC9E8:addr=18;break;//设case 0xD6C3:addr=19;break;//置case 0xB4AB:addr=20;break;//传case 0xD6DC:addr=21;break;//周case 0xC6DA:addr=22;break;//期case 0xBFD8:addr=23;break;//控case 0xD6C6:addr=24;break;//制case 0xB2CE:addr=25;break;//参case 0xD7DC:addr=26;break;//总case 0xB1ED:addr=27;break;//表case 0xB1B8:addr=28;break;//备case 0xCDF8:addr=29;break;//网case 0xC2E7:addr=30;break;//络case 0xD0C5:addr=31;break;//信case 0xCFA2:addr=32;break;//息case 0xCAA7:addr=33;break;//失case 0xB0DC:addr=34;break;//败case 0xB1A3:addr=35;break;//保case 0xB4E6:addr=36;break;//存case 0xB9FD:addr=37;break;//过case 0xB8DF:addr=38;break;//高case 0xA1E6:addr=39;break;//℃case 0xD0C7:addr=40;break;//星case 0xC8D5:addr=42;break;//日case 0xD2BB:addr=43;break;//一case 0xB6FE:addr=44;break;//二case 0xC8FD:addr=45;break;//三case 0xCBC4:addr=46;break;//四case 0xCEE5:addr=47;break;//五case 0xC1F9:addr=48;break;//六case 0xC4EA:addr=49;break;//年case 0xD4C2:addr=50;break;//月default : break;}for(i=0;i<width;i++) //横向写width列{OLED_WR_Byte(ChineseFont_16_16[addr][i],OLED_DATA); }//写8*16ASCII字符的下半部分OLED_SetCursorAddrese(x,y+1); //设置光标的位置for(i=0;i<width;i++)          //横向写width列{OLED_WR_Byte(ChineseFont_16_16[addr][i+width],OLED_DATA); }str+=2;//继续显示下一个字符x+=width; //在下一个位置继续显示数据}}
}
void OLED_Menu_Display()
{OLED_DisplayString(0,0,16,16,"OLED 参数设置");OLED_DisplayString(0,2,16,16,"Do you konwn ?");OLED_DisplayString(0,4,16,16,"I LOVE YOU !");OLED_DisplayString(0,6,16,16,"I'm so sorry !!!");
}

第五部分:字库代码头文件(word.h)

#ifndef WORD_H
#define WORD_H
#include "stm32f10x.h"
#include "stdio.h"
extern const unsigned char ChineseFont_128_64[][128];
extern const unsigned char font_6[];
extern const u8 ASCII_8_16[][16];
extern const u8 ChineseFont_16_16[][32];
extern unsigned char  F16x16[];
extern const unsigned char F6x8[][6];
extern const unsigned char F8X16[];
extern unsigned char BMP1[];
extern unsigned char BMP2[];
#endif

第六部分:字库代码文件(word.c)

#include "word.h"// ASCII编码8*16英文字符
const u8 ASCII_8_16[][16]=
{
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
{0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x00},/*"!",1*/
{0x00,0x10,0x0C,0x02,0x10,0x0C,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/
{0x00,0x40,0xC0,0x78,0x40,0xC0,0x78,0x00,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x00},/*"#",3*/
{0x00,0x70,0x88,0x88,0xFC,0x08,0x30,0x00,0x00,0x18,0x20,0x20,0xFF,0x21,0x1E,0x00},/*"$",4*/
{0xF0,0x08,0xF0,0x80,0x60,0x18,0x00,0x00,0x00,0x31,0x0C,0x03,0x1E,0x21,0x1E,0x00},/*"%",5*/
{0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x2C,0x19,0x27,0x21,0x10},/*"&",6*/
{0x00,0x12,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/
{0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00},/*"(",8*/
{0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00},/*")",9*/
{0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00},/*"*",10*/
{0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x0F,0x01,0x01,0x01},/*"+",11*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x70,0x00,0x00,0x00,0x00,0x00},/*",",12*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00},/*"-",13*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00},/*".",14*/
{0x00,0x00,0x00,0x00,0xC0,0x38,0x04,0x00,0x00,0x60,0x18,0x07,0x00,0x00,0x00,0x00},/*"/",15*/
{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},/*"0",16*/
{0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00},/*"1",17*/
{0x00,0x70,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},/*"2",18*/
{0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x18,0x20,0x21,0x21,0x22,0x1C,0x00},/*"3",19*/
{0x00,0x00,0x80,0x40,0x30,0xF8,0x00,0x00,0x00,0x06,0x05,0x24,0x24,0x3F,0x24,0x24},/*"4",20*/
{0x00,0xF8,0x88,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x20,0x20,0x20,0x11,0x0E,0x00},/*"5",21*/
{0x00,0xE0,0x10,0x88,0x88,0x90,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00},/*"6",22*/
{0x00,0x18,0x08,0x08,0x88,0x68,0x18,0x00,0x00,0x00,0x00,0x3E,0x01,0x00,0x00,0x00},/*"7",23*/
{0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00},/*"8",24*/
{0x00,0xF0,0x08,0x08,0x08,0x10,0xE0,0x00,0x00,0x01,0x12,0x22,0x22,0x11,0x0F,0x00},/*"9",25*/
{0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00},/*":",26*/
{0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00},/*";",27*/
{0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00},/*"<",28*/
{0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x00},/*"=",29*/
{0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00},/*">",30*/
{0x00,0x70,0x48,0x08,0x08,0x88,0x70,0x00,0x00,0x00,0x00,0x30,0x37,0x00,0x00,0x00},/*"?",31*/
{0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x28,0x2F,0x28,0x17,0x00},/*"@",32*/
{0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20},/*"A",33*/
{0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00},/*"B",34*/
{0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00},/*"C",35*/
{0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00},/*"D",36*/
{0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00},/*"E",37*/
{0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00},/*"F",38*/
{0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00},/*"G",39*/
{0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20},/*"H",40*/
{0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},/*"I",41*/
{0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00},/*"J",42*/
{0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00},/*"K",43*/
{0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00},/*"L",44*/
{0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x01,0x3E,0x01,0x3F,0x20,0x00},/*"M",45*/
{0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00},/*"N",46*/
{0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00},/*"O",47*/
{0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00},/*"P",48*/
{0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x28,0x28,0x30,0x50,0x4F,0x00},/*"Q",49*/
{0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20},/*"R",50*/
{0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00},/*"S",51*/
{0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00},/*"T",52*/
{0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00},/*"U",53*/
{0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00},/*"V",54*/
{0x08,0xF8,0x00,0xF8,0x00,0xF8,0x08,0x00,0x00,0x03,0x3E,0x01,0x3E,0x03,0x00,0x00},/*"W",55*/
{0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20},/*"X",56*/
{0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00},/*"Y",57*/
{0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00},/*"Z",58*/
{0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00},/*"[",59*/
{0x00,0x04,0x38,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00},/*"\",60*/
{0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00},/*"]",61*/
{0x00,0x00,0x04,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"^",62*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80},/*"_",63*/
{0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/
{0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x19,0x24,0x24,0x12,0x3F,0x20,0x00},/*"a",65*/
{0x10,0xF0,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00},/*"b",66*/
{0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00},/*"c",67*/
{0x00,0x00,0x80,0x80,0x80,0x90,0xF0,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20},/*"d",68*/
{0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x24,0x24,0x24,0x24,0x17,0x00},/*"e",69*/
{0x00,0x80,0x80,0xE0,0x90,0x90,0x20,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},/*"f",70*/
{0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00},/*"g",71*/
{0x10,0xF0,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20},/*"h",72*/
{0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},/*"i",73*/
{0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00},/*"j",74*/
{0x10,0xF0,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x06,0x29,0x30,0x20,0x00},/*"k",75*/
{0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},/*"l",76*/
{0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F},/*"m",77*/
{0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20},/*"n",78*/
{0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00},/*"o",79*/
{0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0x91,0x20,0x20,0x11,0x0E,0x00},/*"p",80*/
{0x00,0x00,0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0x91,0xFF,0x80},/*"q",81*/
{0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00},/*"r",82*/
{0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00},/*"s",83*/
{0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x10,0x00},/*"t",84*/
{0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20},/*"u",85*/
{0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x03,0x0C,0x30,0x0C,0x03,0x00,0x00},/*"v",86*/
{0x80,0x80,0x00,0x80,0x80,0x00,0x80,0x80,0x01,0x0E,0x30,0x0C,0x07,0x38,0x06,0x01},/*"w",87*/
{0x00,0x80,0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x20,0x31,0x0E,0x2E,0x31,0x20,0x00},/*"x",88*/
{0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x81,0x86,0x78,0x18,0x06,0x01,0x00},/*"y",89*/
{0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00},/*"z",90*/
{0x00,0x00,0x00,0x00,0x00,0xFC,0x02,0x02,0x00,0x00,0x00,0x00,0x01,0x3E,0x40,0x40},/*"{",91*/
{0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00},/*"|",92*/
{0x02,0x02,0xFC,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x3E,0x01,0x00,0x00,0x00,0x00},/*"}",93*/
{0x00,0x80,0x40,0x80,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00},/*"~",94*/
};const u8 ChineseFont_16_16[][32]=
{
{0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00},/*"温",0*/
{0x10,0x60,0x02,0x8C,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,0x04,0x04,0x7E,0x01,0x44,0x48,0x50,0x7F,0x40,0x40,0x7F,0x50,0x48,0x44,0x40,0x00},/*"湿",1*/
{0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00,0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00},/*"度",2*/
{0x90,0x52,0x34,0x10,0xFF,0x10,0x34,0x52,0x80,0x70,0x8F,0x08,0x08,0xF8,0x08,0x00,0x82,0x9A,0x56,0x63,0x22,0x52,0x8E,0x00,0x80,0x40,0x33,0x0C,0x33,0x40,0x80,0x00},/*"数",3*/
{0x10,0x10,0xFF,0x10,0x90,0x00,0xFE,0x92,0x92,0x92,0xF2,0x92,0x92,0x9E,0x80,0x00,0x42,0x82,0x7F,0x01,0x80,0x60,0x1F,0x00,0xFC,0x44,0x47,0x44,0x44,0xFC,0x00,0x00},/*"据",4*/
{0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x08,0x08,0xFF,0x08,0x09,0x0A,0xC8,0x08,0x00,0x80,0x60,0x1F,0x00,0x10,0x20,0x1F,0x80,0x40,0x21,0x16,0x18,0x26,0x41,0xF8,0x00},/*"成",5*/
{0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x10,0x10,0xFF,0x10,0x10,0x10,0xF0,0x00,0x00,0x10,0x30,0x10,0x1F,0x08,0x88,0x48,0x30,0x0E,0x01,0x40,0x80,0x40,0x3F,0x00,0x00},/*"功",6*/
{0x00,0x00,0x18,0x16,0x10,0xD0,0xB8,0x97,0x90,0x90,0x90,0x92,0x94,0x10,0x00,0x00,0x00,0x20,0x10,0x8C,0x83,0x80,0x41,0x46,0x28,0x10,0x28,0x44,0x43,0x80,0x80,0x00},/*"发",7*/
{0x40,0x40,0x42,0xCC,0x00,0x88,0x89,0x8E,0x88,0xF8,0x88,0x8C,0x8B,0x88,0x80,0x00,0x00,0x40,0x20,0x1F,0x20,0x40,0x50,0x48,0x46,0x41,0x42,0x44,0x58,0x40,0x40,0x00},/*"送",8*/
{0x40,0x40,0x42,0xCC,0x00,0x04,0x44,0x64,0x5C,0x47,0xF4,0x44,0x44,0x44,0x04,0x00,0x00,0x40,0x20,0x1F,0x20,0x44,0x44,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x00},/*"连",9*/
{0x10,0x10,0x10,0xFF,0x10,0x50,0x44,0x54,0x65,0xC6,0x44,0x64,0x54,0x44,0x40,0x00,0x04,0x44,0x82,0x7F,0x01,0x82,0x82,0x4A,0x56,0x23,0x22,0x52,0x4E,0x82,0x02,0x00},/*"接",10*/
{0x00,0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0xFE,0x82,0x82,0x92,0xA2,0x9E,0x00,0x00,0x80,0x60,0x1F,0x02,0x42,0x82,0x7F,0x00,0xFF,0x40,0x2F,0x10,0x2C,0x43,0x80,0x00},/*"服",11*/
{0x00,0x00,0x90,0x88,0x4C,0x57,0xA4,0x24,0x54,0x54,0x8C,0x84,0x00,0x00,0x00,0x00,0x01,0x01,0x80,0x42,0x22,0x1A,0x07,0x02,0x42,0x82,0x42,0x3E,0x01,0x01,0x01,0x00},/*"务",12*/
{0x80,0x80,0x9E,0x92,0x92,0x92,0x9E,0xE0,0x80,0x9E,0xB2,0xD2,0x92,0x9E,0x80,0x00,0x08,0x08,0xF4,0x94,0x92,0x92,0xF1,0x00,0x01,0xF2,0x92,0x94,0x94,0xF8,0x08,0x00},/*"器",13*/
{0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00},/*"上",14*/
{0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x42,0x82,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x01,0x06,0x00,0x00,0x00},/*"下",15*/
{0x00,0xFE,0x22,0x5A,0x86,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,0x00,0xFF,0x04,0x08,0x07,0x00,0xFF,0x40,0x20,0x03,0x0C,0x14,0x22,0x41,0x40,0x00},/*"限",16*/
{0x00,0x80,0x60,0xF8,0x07,0x04,0xE4,0xA4,0xA4,0xBF,0xA4,0xA4,0xE4,0x04,0x00,0x00,0x01,0x00,0x00,0xFF,0x40,0x40,0x7F,0x4A,0x4A,0x4A,0x4A,0x4A,0x7F,0x40,0x40,0x00},/*"值",17*/
{0x40,0x40,0x42,0xCC,0x00,0x40,0xA0,0x9E,0x82,0x82,0x82,0x9E,0xA0,0x20,0x20,0x00,0x00,0x00,0x00,0x3F,0x90,0x88,0x40,0x43,0x2C,0x10,0x28,0x46,0x41,0x80,0x80,0x00},/*"设",18*/
{0x00,0x17,0x15,0xD5,0x55,0x57,0x55,0x7D,0x55,0x57,0x55,0xD5,0x15,0x17,0x00,0x00,0x40,0x40,0x40,0x7F,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0x40,0x40,0x40,0x00},/*"置",19*/
{0x00,0x80,0x60,0xF8,0x07,0x40,0x48,0x48,0xE8,0x5F,0x48,0x48,0x48,0x40,0x40,0x00,0x01,0x00,0x00,0xFF,0x00,0x00,0x02,0x0B,0x12,0x22,0xD2,0x0A,0x06,0x00,0x00,0x00},/*"传",20*/
{0x00,0x00,0xFE,0x82,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0x82,0xFE,0x00,0x00,0x00,0x80,0x60,0x1F,0x00,0x00,0x1E,0x12,0x12,0x12,0x1E,0x40,0x80,0x7F,0x00,0x00,0x00},/*"周",21*/
{0x00,0x04,0xFF,0x24,0x24,0x24,0xFF,0x04,0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0x00,0x88,0x48,0x2F,0x09,0x09,0x19,0xAF,0x48,0x30,0x0F,0x02,0x42,0x82,0x7F,0x00,0x00},/*"期",22*/
{0x10,0x10,0x10,0xFF,0x90,0x20,0x98,0x48,0x28,0x09,0x0E,0x28,0x48,0xA8,0x18,0x00,0x02,0x42,0x81,0x7F,0x00,0x40,0x40,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x40,0x00},/*"控",23*/
{0x40,0x50,0x4E,0x48,0x48,0xFF,0x48,0x48,0x48,0x40,0xF8,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x3E,0x02,0x02,0xFF,0x12,0x22,0x1E,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00},/*"制",24*/
{0x00,0x20,0x20,0xA8,0x6C,0x2A,0x39,0x28,0xA8,0x2A,0x6C,0xA8,0x20,0x20,0x00,0x00,0x02,0x82,0x81,0x90,0x92,0x4A,0x49,0x45,0x24,0x22,0x10,0x08,0x01,0x02,0x02,0x00},/*"参",25*/
{0x00,0x00,0x00,0xF1,0x12,0x14,0x10,0x10,0x10,0x14,0x12,0xF1,0x00,0x00,0x00,0x00,0x40,0x30,0x00,0x03,0x39,0x41,0x41,0x45,0x59,0x41,0x41,0x73,0x00,0x08,0x30,0x00},/*"总",26*/
{0x00,0x04,0x24,0x24,0x24,0x24,0x24,0xFF,0x24,0x24,0x24,0x24,0x24,0x04,0x00,0x00,0x21,0x21,0x11,0x09,0xFD,0x83,0x41,0x23,0x05,0x09,0x11,0x29,0x25,0x41,0x41,0x00},/*"表",27*/
{0x80,0x90,0x90,0x48,0x4C,0x57,0x24,0x24,0x24,0x54,0x4C,0x44,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0xFF,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0xFF,0x00,0x00,0x00,0x00},/*"备",28*/
{0x00,0xFE,0x02,0x22,0x42,0x82,0x72,0x02,0x22,0x42,0x82,0x72,0x02,0xFE,0x00,0x00,0x00,0xFF,0x10,0x08,0x06,0x01,0x0E,0x10,0x08,0x06,0x01,0x4E,0x80,0x7F,0x00,0x00},/*"网",29*/
{0x20,0x30,0xAC,0x63,0x30,0x20,0x10,0x18,0xA7,0x44,0xA4,0x14,0x0C,0x00,0x00,0x00,0x22,0x67,0x22,0x12,0x12,0x04,0x02,0xFD,0x44,0x44,0x44,0x45,0xFD,0x02,0x02,0x00},/*"络",30*/
{0x00,0x80,0x60,0xF8,0x07,0x00,0x04,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x04,0x00,0x01,0x00,0x00,0xFF,0x00,0x00,0x00,0xF9,0x49,0x49,0x49,0x49,0x49,0xF9,0x00,0x00},/*"信",31*/
{0x00,0x00,0x00,0xFC,0x54,0x54,0x56,0x55,0x54,0x54,0x54,0xFC,0x00,0x00,0x00,0x00,0x40,0x30,0x00,0x03,0x39,0x41,0x41,0x45,0x59,0x41,0x41,0x73,0x00,0x08,0x30,0x00},/*"息",32*/	
{0x00,0x40,0x30,0x1E,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x81,0x81,0x41,0x21,0x11,0x0D,0x03,0x01,0x03,0x0D,0x11,0x21,0x41,0x81,0x81,0x00},/*"失",33*/
{0x00,0xFE,0x02,0xFA,0x02,0xFE,0x40,0x20,0xD8,0x17,0x10,0x10,0xF0,0x10,0x10,0x00,0x80,0x47,0x30,0x0F,0x10,0x67,0x80,0x40,0x21,0x16,0x08,0x16,0x21,0x40,0x80,0x00},/*"败",34*/
{0x00,0x80,0x60,0xF8,0x07,0x00,0x3E,0x22,0x22,0xE2,0x22,0x22,0x3E,0x00,0x00,0x00,0x01,0x00,0x00,0xFF,0x20,0x11,0x09,0x05,0x03,0xFF,0x03,0x05,0x09,0x11,0x20,0x00},/*"保",35*/
{0x04,0x04,0x84,0xE4,0x1C,0x07,0x24,0x24,0x24,0x24,0xA4,0x64,0x24,0x04,0x04,0x00,0x02,0x01,0x00,0xFF,0x00,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x00},/*"存",36*/
{0x40,0x40,0x42,0xCC,0x00,0x08,0x48,0x88,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x00,0x00,0x40,0x20,0x1F,0x20,0x40,0x40,0x41,0x40,0x48,0x50,0x4F,0x40,0x40,0x40,0x00},/*"过",37*/
{0x04,0x04,0x04,0x04,0xF4,0x94,0x95,0x96,0x94,0x94,0xF4,0x04,0x04,0x04,0x04,0x00,0x00,0xFE,0x02,0x02,0x7A,0x4A,0x4A,0x4A,0x4A,0x4A,0x7A,0x02,0x82,0xFE,0x00,0x00},/*"高",38*/
{0x06,0x09,0x09,0xE6,0xF8,0x0C,0x04,0x02,0x02,0x02,0x02,0x02,0x04,0x1E,0x00,0x00,0x00,0x00,0x00,0x07,0x1F,0x30,0x20,0x40,0x40,0x40,0x40,0x40,0x20,0x10,0x00,0x00},/*"℃",39*/
{0x00,0x00,0x00,0xBE,0x2A,0x2A,0x2A,0xEA,0x2A,0x2A,0x2A,0x3E,0x00,0x00,0x00,0x00,0x00,0x44,0x42,0x49,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x49,0x41,0x40,0x00,0x00},/*"星",40*/
{0x00,0x04,0xFF,0x24,0x24,0x24,0xFF,0x04,0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0x00,0x88,0x48,0x2F,0x09,0x09,0x19,0xAF,0x48,0x30,0x0F,0x02,0x42,0x82,0x7F,0x00,0x00},/*"期",41*/
{0x00,0x00,0x00,0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x00,0x00,0x00,0x00},/*"日",42*/
{0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"一",43*/
{0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00},/*"二",44*/
{0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x04,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00},/*"三",45*/
{0x00,0xFC,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00,0x00,0x7F,0x28,0x24,0x23,0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x7F,0x00,0x00},/*"四",46*/
{0x00,0x02,0x42,0x42,0x42,0xC2,0x7E,0x42,0x42,0x42,0x42,0xC2,0x02,0x02,0x00,0x00,0x40,0x40,0x40,0x40,0x78,0x47,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x00},/*"五",47*/
{0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x2C,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x01,0x02,0x04,0x18,0x60,0x00,0x00},/*"六",48*/
{0x00,0x20,0x18,0xC7,0x44,0x44,0x44,0x44,0xFC,0x44,0x44,0x44,0x44,0x04,0x00,0x00,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00},/*"年",49*/
{0x00,0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,0x00,0x80,0x40,0x30,0x0F,0x02,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x00,0x00,0x00},/*"月",50*/
{0x00,0xF8,0x01,0x06,0x00,0xF0,0x12,0x12,0x12,0xF2,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x1F,0x11,0x11,0x11,0x1F,0x00,0x40,0x80,0x7F,0x00,0x00},/*"间",51*/
};

第七部分:主函数

#include "stm32f10x.h"
#include "usart.h"
#include "iic.h"
#include "oled_iic.h"
#include "word.h"int main(void)
{USARTx_Init(USART1,72,115200);  //串口1波特率初始化OLED_Init();  //OLED显示屏初始化while(1){OLED_Menu_Display();}	
}

 


http://www.ppmy.cn/news/562707.html

相关文章

基于STM32F103 0.96寸OLED液晶屏驱动(iic通讯)

一、概述 OLED驱动方式有8080、6800、3线/4线SPI以及IIC&#xff0c;能够显示字符、汉字的图片&#xff0c;无字库需通过取模软件获取显示内容数组。本次实验使用的是IIC通信协议&#xff0c;SSD1306驱动芯片的OLED屏。 二、实验材料 1、0.96寸OLED屏。 2、最小系统STM32F10…

STM32 —— 中景园0.96寸OLED

STM32 —— 中景园0.96寸OLED OLED&#xff0c;即有机发光二极管&#xff08; Organic Light Emitting Diode &#xff09;。 OLED 由于同时具备自发光&#xff0c;不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优…

002.合宙ESP32C3+0.96‘OLED使用(基础版)

合宙Esp32-C3驱动0.96’ OLED显示屏 一、0.96’ OLED显示原理 OLED显示屏宽128像素,高64像素,即128x64,共8192个像素 为了清晰这里以32x16进行展示 显示过程: c3将0x01写入红色方框1,按照低位在前的顺序,如图进行显示,而后一次是2/3/4/5 一个十六进制字节0x01可以确定8个像素的…

AD9361_AD9371_AD9363_AD9364 对比

参考&#xff1a;ADI官方数据手册 文章目录 AD9361特性功能框图概述应用 AD9371特性功能框图概述应用 AD9363特性功能框图概述应用 AD9364特性功能框图概述应用 AD9361 特性 集成12位DAC和ADC的RF 2 2收发器 TX频段&#xff1a;47 MHz至6.0 GHz RX频段&#xff1a;70 MHz至…

【STM32CubeMX】教程二_IIC驱动0.96oled屏幕(SSD1306)

【STM32CubeMX】教程二_IIC驱动0.96oled屏幕&#xff08;SSD1306&#xff09; 文章目录 【STM32CubeMX】教程二_IIC驱动0.96oled屏幕&#xff08;SSD1306&#xff09;前言一、IIC通讯1.IIC物理层2.IIC协议层3.STM32的 II 特性及架构3.1 软件IIC3.2 硬件IIC 4.软件IIC代码4.1 II…

Springboot 整合Flowable工作流框架搭建

我们在开发自动化办公软件时经常会遇到各种审批流程功能&#xff0c;这个使用就需要使用到工作流引擎。目前主流的工作流引擎有Activiti、Flowable、camunda&#xff0c;其中Flowable是在Activiti的基础上开发出来的&#xff0c;基于BPMN2.0协议&#xff0c;它包括 BPMN&#x…

Android音视频【四】H264硬编码

人间观察 你什么时候觉得自己好孤独 这篇我们介绍如何在Android中实现硬编码为H264&#xff0c;用camera或者其它数据来源也行&#xff0c;我们先不用camera&#xff0c;camera还是蛮复杂的&#xff08;比如前后置摄像头预览&#xff0c;yuv数据转换&#xff0c;camera2等等&am…

【树莓派不吃灰】命令篇⑨ 记录学习文件系统

目录 1. 外部存储设备1.1 分区挂载1.2 查看磁盘信息&#xff08;包括未挂载磁盘&#xff09;1.2.1 mmcblk0p01.2.2 sda1&#xff08;额外了解&#xff09; 1.3 查看UUID1.4 查看文件系统挂载情况 2. 文件系统2.1 索引式文件系统2.1.1 EXT2 文件系统&#xff08;了解&#xff09…