OLED介绍

OLED主要参数
1、高分辨率:12864(和12864LCD相同分辨率,但该OLED屏的单位面积像素点多)。
2、广可视角度:大于160°。
3、低功耗:正常显示时0.04W。
4、宽供电范围:直流3.3V-5V。
5、工业级:工作温度范围-30°℃~70°℃。
6、体积小:28.8mm
28.5mm。
7、通信方式:lIC、SPI。
8、亮度、对比度可以通过程序指令控制。
9、OLED屏幕内部驱动芯片:SSD1306。

6针OLED如下图所示

引脚定义分别为

引脚 定义
GND 电源负
VCC 电源正3.3V-5V
SCL 时钟信号线
SDA 双向数据线
RES 复位
D/C 数据或命令切换

7针OLED如下图所示

引脚定义分别为

引脚 定义
GND 电源负
VCC 电源正3.3V-5V
D0 SPI接口为SPI时钟线
D1 SPI接口为SPI数据线
RES 复位
DC 数据或命令切换
CS 片选信号

本质上6针与7针都可以使用SPI控制,6针使用SPI通信时,默认片选引脚为选中状态,SCL为SPI时钟线,SDA为SPI数据线。

SPI相对于4针IIC通讯有着无可替代的优势,就是在显示中文字符时不需要通过输入数字的方式引导去查表,先将要显示的中文字符编码存放到一个数组当中,需要显示中文时直接打入要显示的中文即可,省去了IIC查表的麻烦。

取字模

使用OLED之前先对所需要显示的内容取字模,取字模使用三贝计算器

选项类型 选择内容
输出格式 C51
数据排列 从左到右从上到下
取模方式 横向8点左高位
黑白取反 正常
字体种类 自选
强制全角 ASCII自动转全角

程序

main.c

#include "stm32f10x.h"
#include    "system.h"
#include    "sys.h"
#include    "delay.h"
#include    "usart.h"
#include    "timer.h"
#include    "led.h"
#include    "oled.h"int main(void)
{delay_init();JTAG_Set(JTAG_SWD_DISABLE);     //关闭JTAG接口JTAG_Set(SWD_ENABLE);           //打开SWD接口 可以利用主板的SWD接口调试LED_GPIO_Config();SPI2_Init();OLED_Init();                   //初始化OLEDOLED_Clear(0);             //清屏(全黑)while(1){OLED_Test_MainPage();         //主界面显示测试OLED_Clear(0); OLED_Test_Color();            //刷屏测试OLED_Clear(0); OLED_Test_Rectangular();      //矩形绘制测试OLED_Clear(0); OLED_Test_Circle();           //圆形绘制测试OLED_Clear(0); OLED_Test_Triangle();         //三角形绘制测试OLED_Clear(0);  OLED_TEST_English();          //英文显示测试OLED_Clear(0);OLED_TEST_Number_Character(); //数字和符号显示测试OLED_Clear(0); OLED_Test_Chinese();          //中文显示测试OLED_Clear(0);
//      OLED_Test_BMP();              //BMP单色图片显示测试
//      OLED_Clear(0);
//      OLED_Test_Menu1();            //菜单1显示测试
//      OLED_Clear(0);
//      OLED_Test_Menu2();            //菜单2显示测试
//      OLED_Clear(0);}
}

oled.c

#include "oled.h"
#include "oledfont.h"//OLED显存总共分为8页
//每页8行,一行128个像素点
//OLED的显存
//存放格式如下.
//[0]0 1 2 3 ... 127 (0~7)行
//[1]0 1 2 3 ... 127 (8~15)行
//[2]0 1 2 3 ... 127 (16~23)行
//[3]0 1 2 3 ... 127 (24~31)行
//[4]0 1 2 3 ... 127 (32~39)行
//[5]0 1 2 3 ... 127 (40~47)行
//[6]0 1 2 3 ... 127 (48~55)行
//[7]0 1 2 3 ... 127 (56~63)行//数组每个bit存储OLED每个像素点的颜色值(1-亮(白色),0-灭(黑色))
//每个数组元素表示1列8个像素点,一共128列
static unsigned char OLED_buffer[1024] =
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};/******************************************************************** @name       :void OLED_Write_Byte(unsigned dat,unsigned cmd)* @date       :2022-06-22* @function   :将一个字节的内容写入OLED屏幕* @parameters :dat:要编写的内容cmd:0-写入命令1-写入数据* @retvalue   :无
********************************************************************/
void OLED_Write_Byte(unsigned dat,unsigned cmd)
{if(cmd){OLED_DC_PIN_Set();}else{OLED_DC_PIN_Clr();}OLED_CS_PIN_Clr();SPI_WriteByte(SPI2, dat);OLED_CS_PIN_Set();
}/******************************************************************** @name       :void OLED_Display_On(void)* @date       :2022-06-22* @function   :打开OLED显示* @parameters :无* @retvalue   :无
********************************************************************/
void OLED_Display_On(void)
{OLED_Write_Byte(0X8D,OLED_CMD);        //SET DCDC命令OLED_Write_Byte(0X14,OLED_CMD);     //DCDC ONOLED_Write_Byte(0XAF,OLED_CMD);        //DISPLAY ON
}/******************************************************************** @name       :void OLED_Display_Off(void)* @date       :2022-06-22* @function   :关闭OLED显示* @parameters :无* @retvalue   :无
********************************************************************/
void OLED_Display_Off(void)
{OLED_Write_Byte(0X8D,OLED_CMD);        //SET DCDC命令OLED_Write_Byte(0X10,OLED_CMD);     //DCDC OFFOLED_Write_Byte(0XAE,OLED_CMD);       //DISPLAY OFF
}/******************************************************************** @name       :void OLED_Set_Pos(unsigned char x, unsigned char y)* @date       :2022-06-22* @function   :在OLED屏幕中设置坐标* @parameters :x:x坐标y:y坐标* @retvalue   :无
********************************************************************/
void OLED_Set_Pos(unsigned char x, unsigned char y)
{OLED_Write_Byte(YLevel+y/PAGE_SIZE,OLED_CMD);OLED_Write_Byte((((x+2)&0xf0)>>4)|0x10,OLED_CMD);OLED_Write_Byte(((x+2)&0x0f),OLED_CMD);
}/******************************************************************** @name       :void OLED_Reset(void)* @date       :2022-06-22* @function   :重置OLED屏幕显示* @parameters :dat:0-显示全黑1-显示全白* @retvalue   :无
********************************************************************/
void OLED_Reset(void)
{OLED_RST_PIN_Set();delay_ms(100);OLED_RST_PIN_Clr();delay_ms(100);OLED_RST_PIN_Set();
}/******************************************************************** @name       :void OLED_Set_Pixel(unsigned char x, unsigned char y,unsigned char color)* @date       :2022-06-22* @function   :将像素值设置为RAM* @parameters :x:像素的x坐标y:像素的y坐标color:像素点的颜色值1-白色0-黑色* @retvalue   :无
********************************************************************/
void OLED_Set_Pixel(unsigned char x, unsigned char y,unsigned char color)
{if(color){OLED_buffer[(y/PAGE_SIZE)*WIDTH+x]|= (1<<(y%PAGE_SIZE))&0xff;}else{OLED_buffer[(y/PAGE_SIZE)*WIDTH+x]&= ~((1<<(y%PAGE_SIZE))&0xff);}
}/******************************************************************** @name       :void OLED_Display(void)* @date       :2022-06-22* @function   :在OLED屏幕中显示* @parameters :无* @retvalue   :无
********************************************************************/
void OLED_Display(void)
{u8 i,n;for(i=0;i<PAGE_SIZE;i++)  {  OLED_Write_Byte (YLevel+i,OLED_CMD);            //设置页地址(0~7)OLED_Write_Byte (XLevelL,OLED_CMD);               //设置显示位置—列低地址OLED_Write_Byte (XLevelH,OLED_CMD);                //设置显示位置—列高地址for(n=0;n<WIDTH;n++){OLED_Write_Byte(OLED_buffer[i*WIDTH+n],OLED_DATA);}}       //更新显示
}/******************************************************************** @name       :void OLED_Clear(unsigned dat)* @date       :2022-06-22* @function   :清除OLED屏幕显示* @parameters :dat:0-显示全黑1-显示全白* @retvalue   :无
********************************************************************/
void OLED_Clear(unsigned dat)
{unsigned int i=0;for(i=0;i<1024;i++){OLED_buffer[i]=0;}OLED_Display();if(dat){memset(OLED_buffer,0xff,sizeof(OLED_buffer));}else{memset(OLED_buffer,0,sizeof(OLED_buffer));}OLED_Display();
}/******************************************************************** @name       :void OLED_Init_GPIO(void)* @date       :2022-06-22* @function   :OLED引脚初始化* @parameters :无* @retvalue   :无
********************************************************************/
void OLED_Init_GPIO(void)
{GPIO_InitTypeDef  GPIO_InitStructure;RCC_APB2PeriphClockCmd(OLED_RST_CLK,ENABLE);              //使能端口时钟GPIO_InitStructure.GPIO_Pin = OLED_RST_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;       //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //速度50MHzGPIO_Init(OLED_RST_PORT, &GPIO_InitStructure);GPIO_SetBits(OLED_RST_PORT,OLED_RST_PIN);RCC_APB2PeriphClockCmd(OLED_DC_CLK,ENABLE);                 //使能端口时钟GPIO_InitStructure.GPIO_Pin = OLED_DC_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //速度50MHzGPIO_Init(OLED_DC_PORT, &GPIO_InitStructure);GPIO_SetBits(OLED_DC_PORT,OLED_DC_PIN);RCC_APB2PeriphClockCmd(OLED_CS_CLK,ENABLE);                    //使能端口时钟GPIO_InitStructure.GPIO_Pin = OLED_CS_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //速度50MHzGPIO_Init(OLED_CS_PORT, &GPIO_InitStructure);GPIO_SetBits(OLED_CS_PORT,OLED_CS_PIN);
}/******************************************************************** @name       :void OLED_Init(void)* @date       :2022-06-22* @function   :初始化OLED SSD1306控制IC* @parameters :无* @retvalue   :无
********************************************************************/
void OLED_Init(void)
{OLED_Init_GPIO();      //初始化GPIOdelay_ms(200);OLED_Reset();                //复位OLED/**************初始化SSD1306*****************/OLED_Write_Byte(0xAE,OLED_CMD);  /*display off*/OLED_Write_Byte(0x00,OLED_CMD);  /*set lower column address*/OLED_Write_Byte(0x10,OLED_CMD); /*set higher column address*/OLED_Write_Byte(0x40,OLED_CMD);    /*set display start line*/OLED_Write_Byte(0xB0,OLED_CMD);   /*set page address*/OLED_Write_Byte(0x81,OLED_CMD); /*contract control*/OLED_Write_Byte(0xFF,OLED_CMD); /*128*/OLED_Write_Byte(0xA1,OLED_CMD);  /*set segment remap*/OLED_Write_Byte(0xA6,OLED_CMD);    /*normal / reverse*/OLED_Write_Byte(0xA8,OLED_CMD); /*multiplex ratio*/OLED_Write_Byte(0x3F,OLED_CMD);  /*duty = 1/64*/OLED_Write_Byte(0xC8,OLED_CMD); /*Com scan direction*/OLED_Write_Byte(0xD3,OLED_CMD);   /*set display offset*/OLED_Write_Byte(0x00,OLED_CMD);OLED_Write_Byte(0xD5,OLED_CMD);    /*set osc division*/OLED_Write_Byte(0x80,OLED_CMD);OLED_Write_Byte(0xD9,OLED_CMD);  /*set pre-charge period*/OLED_Write_Byte(0XF1,OLED_CMD);OLED_Write_Byte(0xDA,OLED_CMD); /*set COM pins*/OLED_Write_Byte(0x12,OLED_CMD);OLED_Write_Byte(0xDB,OLED_CMD);  /*set vcomh*/OLED_Write_Byte(0x30,OLED_CMD);OLED_Write_Byte(0x8D,OLED_CMD); /*set charge pump disable*/OLED_Write_Byte(0x14,OLED_CMD);OLED_Write_Byte(0xAF,OLED_CMD);   /*display ON*/
}/******************************************************************** @name       :void OLED_DrawPoint(u8 x,u8 y,u8 color)* @date       :2022-06-22* @function   :在OLED屏幕中绘制点* @parameters :x:点的x坐标y:点的y坐标color:点的颜色值1-白色0-黑色* @retvalue   :无
********************************************************************/
void OLED_DrawPoint(u8 x,u8 y,u8 color)
{OLED_Set_Pixel(x,y,color);OLED_Display();
}/******************************************************************** @name       :void OLED_Fill(u8 sx,u8 sy,u8 ex,u8 ey,u8 color)* @date       :2022-06-22* @function   :填充指定区域* @parameters :sx:指定填充区域的起始x坐标sy:指定填充区域的起始y坐标ex:指定填充区域的结束x坐标ey:指定填充区域的结束y坐标color:指定区域的颜色值1-白色0-黑色* @retvalue   :无
********************************************************************/
void OLED_Fill(u8 sx,u8 sy,u8 ex,u8 ey,u8 color)
{u8 i,j;u8 width=ex-sx+1;         //得到填充的宽度u8 height=ey-sy+1;       //高度for(i=0;i<height;i++){for(j=0;j<width;j++){OLED_Set_Pixel(sx+j, sy+i,color);}}OLED_Display();
}/******************************************************************** @name       :void OLED_DrawLine(u8 x1, u8 y1, u8 x2, u8 y2,u8 color)* @date       :2022-06-22* @function   :在两点之间画一条线* @parameters :x1:线的起始x点坐标y1:线的起始y点坐标x2:线的结束x点坐标y2:线的结束y点坐标color:线条的颜色值1-白色0-黑色* @retvalue   :无
********************************************************************/
void OLED_DrawLine(u8 x1, u8 y1, u8 x2, u8 y2,u8 color)
{u16 t;int xerr=0,yerr=0,delta_x,delta_y,distance;int incx,incy,uRow,uCol;delta_x=x2-x1; //计算坐标增量delta_y=y2-y1;uRow=x1;uCol=y1;if(delta_x>0)incx=1; //设置单步方向else if(delta_x==0)incx=0;//垂直线else {incx=-1;delta_x=-delta_x;}if(delta_y>0)incy=1;else if(delta_y==0)incy=0;//水平线else{incy=-1;delta_y=-delta_y;}if( delta_x>delta_y)distance=delta_x; //选取基本增量坐标轴else distance=delta_y;for(t=0;t<=distance+1;t++ )//画线输出{OLED_Set_Pixel(uRow,uCol,color);xerr+=delta_x ;yerr+=delta_y ;if(xerr>distance){xerr-=distance;uRow+=incx;}if(yerr>distance){yerr-=distance;uCol+=incy;}}OLED_Display();
}/****************************************************************************** @name       :void OLED_DrawRectangle(u8 x1, u8 y1, u8 x2, u8 y2,u8 color)* @date       :2022-06-22* @function   :绘制矩形* @parameters :x1:矩形的起始x坐标y1:矩形的起始y坐标x2:矩形的结束x坐标y2:矩形的结束y坐标color:线条的颜色值1-白色0-黑色* @retvalue   :无
******************************************************************************/
void OLED_DrawRectangle(u8 x1, u8 y1, u8 x2, u8 y2,u8 color)
{OLED_DrawLine(x1,y1,x2,y1,color);OLED_DrawLine(x1,y1,x1,y2,color);OLED_DrawLine(x1,y2,x2,y2,color);OLED_DrawLine(x2,y1,x2,y2,color);
}/****************************************************************************** @name       :void OLED_FillRectangle(u8 x1, u8 y1, u8 x2, u8 y2,u8 color)* @date       :2022-06-22* @function   :填充矩形* @parameters :x1:填充矩形的起始x坐标y1:填充矩形的起始y坐标x2:填充矩形的结束x坐标y2:填充矩形的结束y坐标color:矩形的颜色值1-白色0-黑色* @retvalue   :无
******************************************************************************/
void OLED_FillRectangle(u8 x1, u8 y1, u8 x2, u8 y2,u8 color)
{OLED_Fill(x1,y1,x2,y2,color);
}/****************************************************************************** @name       :static void _draw_circle_8(u8 xc, u8 yc, u8 x, u8 y, u8 color)* @date       :2022-06-22* @function   :对称圆绘制算法(内部调用)* @parameters :xc:圆心的x坐标yc:圆心的y坐标x:相对于圆心的x坐标y:相对于圆心的y坐标color:圆的颜色值1-白色0-黑色* @retvalue   :无
******************************************************************************/
static void _draw_circle_8(u8 xc, u8 yc, u8 x, u8 y, u8 color)
{OLED_Set_Pixel(xc + x, yc + y, color);OLED_Set_Pixel(xc - x, yc + y, color);OLED_Set_Pixel(xc + x, yc - y, color);OLED_Set_Pixel(xc - x, yc - y, color);OLED_Set_Pixel(xc + y, yc + x, color);OLED_Set_Pixel(xc - y, yc + x, color);OLED_Set_Pixel(xc + y, yc - x, color);OLED_Set_Pixel(xc - y, yc - x, color);
}/****************************************************************************** @name       :void OLED_DrawCircle(u8 xc, u8 yc, u8 color, u8 r)* @date       :2022-06-22* @function   :在指定位置绘制指定大小的圆* @parameters :xc:圆心的x坐标yc:圆心的y坐标r:圆形半径color:圆的颜色值1-白色0-黑色* @retvalue   :无
******************************************************************************/
void OLED_DrawCircle(u8 xc, u8 yc, u8 color, u8 r)
{int x = 0, y = r,d;d = 3 - 2 * r;while (x <= y){_draw_circle_8(xc, yc, x, y, color);if (d < 0){d = d + 4 * x + 6;}else{d = d + 4 * (x - y) + 10;y--;}x++;}OLED_Display();
}/****************************************************************************** @name       :void OLED_FillCircle(u8 xc, u8 yc, u8 color, u8 r)* @date       :2022-06-22* @function   :在指定位置填充指定大小的圆* @parameters :xc:圆心的x坐标yc:圆心的y坐标r:圆形半径color:圆的颜色值1-白色0-黑色* @retvalue   :无
******************************************************************************/
void OLED_FillCircle(u8 xc, u8 yc, u8 color, u8 r)
{int x = 0, y = r, yi, d;d = 3 - 2 * r;while (x <= y){for (yi = x; yi <= y; yi++){_draw_circle_8(xc, yc, x, yi, color);}if (d < 0){d = d + 4 * x + 6;}else{d = d + 4 * (x - y) + 10;y--;}x++;}OLED_Display();
}/*********************************************************************************** @name       :void OLED_DrawTriangel(u8 x0,u8 y0,u8 x1,u8 y1,u8 x2,u8 y2,u8 color)* @date       :2022-06-22 * @function   :在指定位置绘制三角形* @parameters :x0:三角形的第一点x坐标y0:三角形的第一点y坐标x1:三角形的第二点x坐标y1:三角形的第二点y坐标x2:三角形的第三点x坐标y2:三角形的第三点y坐标color:三角形的颜色值1-白色0-黑色* @retvalue   :无
***********************************************************************************/
void OLED_DrawTriangel(u8 x0,u8 y0,u8 x1,u8 y1,u8 x2,u8 y2,u8 color)
{OLED_DrawLine(x0,y0,x1,y1,color);OLED_DrawLine(x1,y1,x2,y2,color);OLED_DrawLine(x2,y2,x0,y0,color);
}/****************************************************************************** @name       :static void _swap(u8 *a, u8 *b)* @date       :2022-06-22* @function   :交换两个号码(内部通话)* @parameters :a:第一个号码的地址b:第二个号码的地址* @retvalue   :无
******************************************************************************/
static void _swap(u8 *a, u8 *b)
{u16 tmp;tmp = *a;*a = *b;*b = tmp;
}/****************************************************************************** @name       :static void _draw_h_line(u8 x0,u8 x1,u8 y,u8 color)* @date       :2022-06-22* @function   :在显示屏中画一条水平线(内部调用)* @parameters :x0:水平线的起始x坐标x1:水平线的结束x坐标y:水平线的y坐标color:线的颜色值1-白色0-黑色* @retvalue   :无
******************************************************************************/
static void _draw_h_line(u8 x0,u8 x1,u8 y,u8 color)
{u8 i=0;for(i=x0;i<=x1;i++){OLED_Set_Pixel(i, y, color);}
}/****************************************************************************** @name       :void OLED_FillTriangel(u8 x0,u8 y0,u8 x1,u8 y1,u8 x2,u8 y2,u8 color)* @date       :2022-06-22* @function   :在指定位置填充三角形* @parameters :x0:三角形的第一点x坐标y0:三角形的第一点y坐标x1:三角形的第二点x坐标y1:三角形的第二点y坐标x2:三角形的第三点x坐标y2:三角形的第三点y坐标color:三角形的颜色值1-白色0-黑色* @retvalue   :无
******************************************************************************/
void OLED_FillTriangel(u8 x0,u8 y0,u8 x1,u8 y1,u8 x2,u8 y2,u8 color)
{u8 a, b, y, last;int dx01, dy01, dx02, dy02, dx12, dy12;long sa = 0;long sb = 0;if (y0 > y1){_swap(&y0,&y1);_swap(&x0,&x1);}if (y1 > y2){_swap(&y2,&y1);_swap(&x2,&x1);}if (y0 > y1){_swap(&y0,&y1);_swap(&x0,&x1);}if(y0 == y2){a = b = x0;if(x1 < a){a = x1;}else if(x1 > b){b = x1;}if(x2 < a){a = x2;}else if(x2 > b){b = x2;}_draw_h_line(a,b,y0,color);return;}dx01 = x1 - x0;dy01 = y1 - y0;dx02 = x2 - x0;dy02 = y2 - y0;dx12 = x2 - x1;dy12 = y2 - y1;if(y1 == y2){last = y1;}else{last = y1-1;}for(y=y0; y<=last; y++){a = x0 + sa / dy01;b = x0 + sb / dy02;sa += dx01;sb += dx02;if(a > b){_swap(&a,&b);}_draw_h_line(a,b,y,color);}sa = dx12 * (y - y1);sb = dx02 * (y - y0);for(; y<=y2; y++){a = x1 + sa / dy12;b = x0 + sb / dy02;sa += dx12;sb += dx02;if(a > b){_swap(&a,&b);}_draw_h_line(a,b,y,color);}OLED_Display();
}/****************************************************************************** @name       :void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 Char_Size,u8 mode)* @date       :2022-06-22* @function   :显示单个英文字符* @parameters :x:字符显示位置的起始x坐标y:字符显示位置的起始y坐标chr:显示字符的ascii码(0~94)Char_Size:显示字符的大小(8,16)mode:0-白底黑字1-黑底白字* @retvalue   :无
******************************************************************************/
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 Char_Size,u8 mode)
{unsigned char c=0,i=0,tmp,j=0;c=chr-' ';                                         //得到偏移后的值if(x>WIDTH-1){x=0;y=y+2;}if(Char_Size ==16){for(i=0;i<16;i++){if(mode){tmp = F8X16[c*16+i];}else{tmp = ~(F8X16[c*16+i]);}for(j=0;j<8;j++){if(tmp&(0x80>>j)){OLED_Set_Pixel(x+j, y+i,1);}else{OLED_Set_Pixel(x+j, y+i,0);}}}}else if(Char_Size==8){for(i=0;i<8;i++){if(mode){tmp = F6x8[c][i];}else{tmp = ~(F6x8[c][i]);}for(j=0;j<8;j++){if(tmp&(0x80>>j)){OLED_Set_Pixel(x+j, y+i,1);}else{OLED_Set_Pixel(x+j, y+i,0);}}}}else{return;}OLED_Display();
}/****************************************************************************** @name       :void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 Char_Size,u8 mode)* @date       :2022-06-22 * @function   :显示英文字符串* @parameters :x:英语字符串的起始x坐标y:英语字符串的起始y坐标chr:英文字符串的起始地址Char_Size:显示字符的大小mode:0-白底黑字1-黑底白字* @retvalue   :无
******************************************************************************/
void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 Char_Size,u8 mode)
{unsigned char j=0,csize;if(Char_Size == 16){csize = Char_Size/2;}else if(Char_Size == 8){csize = Char_Size/2+2;}else{return;}while (chr[j]!='\0'){OLED_ShowChar(x,y,chr[j],Char_Size,mode);x+=csize;if(x>120){x=0;y+=Char_Size;}j++;}
}/****************************************************************************** @name       :u32 mypow(u8 m,u8 n)* @date       :2022-06-22 * @function   :获取m的n次方(内部调用)* @parameters :m:the multipliern:the power* @retvalue   :m的n次方
******************************************************************************/
static u32 mypow(u8 m,u8 n)
{u32 result=1;while(n--)result*=m;return result;
}/****************************************************************************** @name       :void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 Size,u8 mode)* @date       :2022-06-22 * @function   :显示数字* @parameters :x:数字的起始x坐标y:数字的起始y坐标num:数字(0~4294967295)len:显示数字的长度Size:显示数字的大小mode:0-白底黑字1-黑底白字* @retvalue   :无
******************************************************************************/
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 Size,u8 mode)
{u8 t,temp;u8 enshow=0,csize;if(Size == 16){csize = Size/2;}else if(Size == 8){csize = Size/2+2;}else{return;}for(t=0;t<len;t++){temp=(num/mypow(10,len-t-1))%10;if(enshow==0&&t<(len-1)){if(temp==0){OLED_ShowChar(x+csize*t,y,' ',Size,mode);continue;}else enshow=1;}OLED_ShowChar(x+csize*t,y,temp+'0',Size,mode);}
}/****************************************************************************** @name       :void OLED_ShowFont16(u8 x,u8 y,u8 *s,u8 mode)* @date       :2022-06-22* @function   :显示单个16x16汉字* @parameters :x:汉字的起始x坐标y:汉字的起始y坐标s:汉字的起始地址mode:0-白底黑字1-黑底白字* @retvalue   :无
******************************************************************************/
void OLED_ShowFont16(u8 x,u8 y,u8 *s,u8 mode)
{u8 i,j,k,tmp;u16 num;num = sizeof(cfont16)/sizeof(typFNT_GB16);for(i=0;i<num;i++){if((cfont16[i].Index[0]==*s)&&(cfont16[i].Index[1]==*(s+1))){for(j=0;j<32;j++){if(mode){tmp = cfont16[i].Msk[j];}else{tmp = ~(cfont16[i].Msk[j]);}for(k=0;k<8;k++){if(tmp&(0x80>>k)){OLED_Set_Pixel(x+(j%2)*8+k, y+j/2,1);}else{OLED_Set_Pixel(x+(j%2)*8+k, y+j/2,0);}}}   break;} }OLED_Display();
}/****************************************************************************** @name       :void OLED_ShowFont24(u8 x,u8 y,u8 *s,u8 mode)* @date       :2022-06-22* @function   :显示单个24x24汉字* @parameters :x:汉字的起始x坐标y:汉字的起始y坐标s:汉字的起始地址mode:0-白底黑字1-黑底白字* @retvalue   :无
******************************************************************************/
void OLED_ShowFont24(u8 x,u8 y,u8 *s,u8 mode)
{u8 i,j,k,tmp;u16 num;num = sizeof(cfont24)/sizeof(typFNT_GB24);for(i=0;i<num;i++){if((cfont24[i].Index[0]==*s)&&(cfont24[i].Index[1]==*(s+1))){for(j=0;j<72;j++){if(mode){tmp = cfont24[i].Msk[j];}else{tmp = ~(cfont24[i].Msk[j]);}for(k=0;k<8;k++){if(tmp&(0x80>>k)){OLED_Set_Pixel(x+(j%3)*8+k, y+j/3,1);}else{OLED_Set_Pixel(x+(j%3)*8+k, y+j/3,0);}}}   break;} }OLED_Display();
}/****************************************************************************** @name       :void OLED_ShowFont32(u8 x,u8 y,u8 *s,u8 mode)* @date       :2022-06-22* @function   :显示单个32x32汉字* @parameters :x:汉字的起始x坐标y:汉字的起始y坐标s:汉字的起始地址mode:0-白底黑字1-黑底白字* @retvalue   :无
******************************************************************************/
void OLED_ShowFont32(u8 x,u8 y,u8 *s,u8 mode)
{u8 i,j,k,tmp;u16 num;num = sizeof(cfont32)/sizeof(typFNT_GB32);for(i=0;i<num;i++){if((cfont32[i].Index[0]==*s)&&(cfont32[i].Index[1]==*(s+1))){for(j=0;j<128;j++){if(mode){tmp = cfont32[i].Msk[j];}else{tmp = ~(cfont32[i].Msk[j]);}for(k=0;k<8;k++){if(tmp&(0x80>>k)){OLED_Set_Pixel(x+(j%4)*8+k, y+j/4,1);}else{OLED_Set_Pixel(x+(j%4)*8+k, y+j/4,0);}}}break;}}OLED_Display();
}/****************************************************************************** @name       :void OLED_ShowCHinese(u8 x,u8 y,u8 hsize,u8 *str,u8 mode)* @date       :2022-06-22 * @function   :显示中文字符串* @parameters :x:汉语字符串的起始x坐标y:汉语字符串的起始y坐标size:中文字符串的大小str:中文字符串的起始地址mode:0-白底黑字1-黑底白字* @retvalue   :无
******************************************************************************/
void OLED_ShowCHinese(u8 x,u8 y,u8 hsize,u8 *str,u8 mode)
{while(*str!='\0'){if(hsize == 16){OLED_ShowFont16(x,y,str,mode);}else if(hsize == 24){OLED_ShowFont24(x,y,str,mode);}else if(hsize == 32){OLED_ShowFont32(x,y,str,mode);}else{return;}x+=hsize;if(x>WIDTH-hsize){x=0;y+=hsize;}str+=2;}
}/****************************************************************************** @name       :void OLED_DrawBMP(u8 x,u8 y,u8 width, u8 height, u8 BMP[], u8 mode)* @date       :2022-06-22* @function   :显示BMP单色图片* @parameters :x:BMP单色图片的起始x坐标y:BMP单色图片的起始y坐标width:BMP单色图片的宽度height:BMP单色图片的高度BMP:BMP单色图像阵列的起始地址mode:0-白底黑字1-黑底白字* @retvalue   :无
******************************************************************************/
void OLED_DrawBMP(u8 x,u8 y,u8 width, u8 height, u8 BMP[], u8 mode)
{u8 i,j,k;u8 tmp;for(i=0;i<height;i++){for(j=0;j<(width+7)/8;j++){if(mode){tmp = BMP[i*((width+7)/8)+j];}else{tmp = ~BMP[i*((width+7)/8)+j];}for(k=0;k<8;k++){if(tmp&(0x80>>k)){OLED_Set_Pixel(x+j*8+k, y+i,1);}else{OLED_Set_Pixel(x+j*8+k, y+i,0);}}}}OLED_Display();
}/****************************************************************************** @name       :void OLED_Test_MainPage(void)* @date       :2022-06-22* @function   :绘制综合测试程序主界面* @parameters :无* @retvalue   :无
******************************************************************************/
void OLED_Test_MainPage(void)
{OLED_ShowString(28,0,"daichuangkun",16,1);                   //显示英文字符串OLED_ShowCHinese(28,20,16,"戴创昆",1);          //显示中文汉字//OLED_ShowString(40,32,"64X128",16,1);OLED_ShowString(4,48,"123456789",16,1);  //显示数字//OLED_ShowString(4,48,"www.lcdwiki.com",16,1);delay_ms(1500);delay_ms(1500);
}/****************************************************************************** @name       :void OLED_Test_Color(void)* @date       :2022-06-22* @function   :颜色填充测试(白色、黑色)* @parameters :无* @retvalue   :无
******************************************************************************/
void OLED_Test_Color(void)
{OLED_Fill(0,0,WIDTH-1,HEIGHT-1,0);OLED_ShowString(10,10,"BLACK",16,1);delay_ms(1000);OLED_Fill(0,0,WIDTH-1,HEIGHT-1,1);delay_ms(1500);
}/****************************************************************************** @name       :void OLED_Test_Rectangular(void))* @date       :2022-06-22* @function   :矩形显示和填充测试依次显示黑白矩形框,1000毫秒后,依次用黑色和白色填充矩形* @parameters :无* @retvalue   :无
******************************************************************************/
void OLED_Test_Rectangular(void)
{OLED_Fill(0,0,WIDTH/2-1,HEIGHT-1,0);OLED_Fill(WIDTH/2,0,WIDTH-1,HEIGHT-1,1);OLED_DrawRectangle(5, 5, WIDTH/2-1-5, HEIGHT-1-5,1);OLED_DrawRectangle(WIDTH/2-1+5, 5, WIDTH-1-5, HEIGHT-1-5,0);delay_ms(1000);OLED_FillRectangle(5, 5, WIDTH/2-1-5, HEIGHT-1-5,1);OLED_FillRectangle(WIDTH/2-1+5, 5, WIDTH-1-5, HEIGHT-1-5,0);delay_ms(1500);
}/****************************************************************************** @name       :void OLED_Test_Circle(void)* @date       :2022-06-22* @function   :循环显示和填充测试依次显示黑白圆形框,1000毫秒后,依次用黑色、白色填充圆形* @parameters :无* @retvalue   :无
******************************************************************************/
void OLED_Test_Circle(void)
{OLED_Fill(0,0,WIDTH/2-1,HEIGHT-1,0);OLED_Fill(WIDTH/2,0,WIDTH-1,HEIGHT-1,1);OLED_DrawCircle(WIDTH/2/2-1, HEIGHT/2-1, 1, 27);OLED_DrawCircle(WIDTH/2+WIDTH/2/2-1, HEIGHT/2-1, 0, 27);delay_ms(1000);OLED_FillCircle(WIDTH/2/2-1, HEIGHT/2-1, 1, 27);OLED_FillCircle(WIDTH/2+WIDTH/2/2-1, HEIGHT/2-1, 0, 27);delay_ms(1500);
}/****************************************************************************** @name       :void OLED_Test_Triangle(void)* @date       :2022-06-22* @function   :三角形显示和填充测试依次显示黑白三角形框,1000毫秒后,依次用黑色和白色填充三角形* @parameters :无* @retvalue   :无
******************************************************************************/
void OLED_Test_Triangle(void)
{OLED_Fill(0,0,WIDTH/2-1,HEIGHT-1,0);OLED_Fill(WIDTH/2,0,WIDTH-1,HEIGHT-1,1);OLED_DrawTriangel(5,HEIGHT-1-5,WIDTH/2/2-1,5,WIDTH/2-1-5,HEIGHT-1-5,1);OLED_DrawTriangel(WIDTH/2-1+5,HEIGHT-1-5,WIDTH/2+WIDTH/2/2-1,5,WIDTH-1-5,HEIGHT-1-5,0);delay_ms(1000);OLED_FillTriangel(5,HEIGHT-1-5,WIDTH/2/2-1,5,WIDTH/2-1-5,HEIGHT-1-5,1);OLED_FillTriangel(WIDTH/2-1+5,HEIGHT-1-5,WIDTH/2+WIDTH/2/2-1,5,WIDTH-1-5,HEIGHT-1-5,0);delay_ms(1500);
}/****************************************************************************** @name       :void OLED_TEST_English(void)* @date       :2022-06-22* @function   :英文显示测试* @parameters :无* @retvalue   :无
******************************************************************************/
void OLED_TEST_English(void)
{OLED_ShowString(0,5,"6x8:abcdefghijklmnopqrstuvwxyz",8,1);OLED_ShowString(0,25,"8x16:abcdefghijklmnopqrstuvwxyz",16,1);delay_ms(1000);OLED_ShowString(0,5,"6x8:ABCDEFGHIJKLMNOPQRSTUVWXYZ",8,1);OLED_ShowString(0,25,"8x16:ABCDEFGHIJKLMNOPQRSTUVWXYZ",16,1);delay_ms(1500);
}/****************************************************************************** @name       :void OLED_TEST_Number_Character(void) * @date       :2022-06-22* @function   :数字和字符显示测试* @parameters :无* @retvalue   :无
******************************************************************************/
void OLED_TEST_Number_Character(void)
{OLED_Fill(0,0,WIDTH-1,HEIGHT/2-1,0);OLED_ShowString(0,0,"6x8:!\"#$%&'()*+,-./:;<=>?@[]\\^_`~{}|",8,1);OLED_ShowNum(30,16,1234567890,10,8,1);delay_ms(1000);OLED_Clear(0);OLED_ShowString(0,0,"8x16:!\"#$%&'()*+,-./:;<=>?@[]\\^_`~{}|",16,1);OLED_ShowNum(40,32,1234567890,10,16,1);delay_ms(1500);OLED_Clear(0);
}/****************************************************************************** @name       :void OLED_Test_Chinese(void)* @date       :2022-06-22* @function   :中文显示测试* @parameters :无* @retvalue   :无
******************************************************************************/
void OLED_Test_Chinese(void)
{OLED_ShowString(45,0,"16x16",8,1);OLED_ShowCHinese(16,20,16,"戴创昆",1);delay_ms(1000);OLED_Clear(0);OLED_ShowString(45,0,"24x24",8,1);OLED_ShowCHinese(16,20,24,"戴创昆",1);delay_ms(1000);OLED_Clear(0);OLED_ShowString(45,0,"32x32",8,1);OLED_ShowCHinese(0,20,32,"戴创昆",1);delay_ms(1000);OLED_Clear(0);
}/****************************************************************************** @name       :void OLED_Test_BMP(void)* @date       :2022-06-22* @function   :BMP单色图片显示测试* @parameters :无* @retvalue   :无
******************************************************************************/
void OLED_Test_BMP(void)
{OLED_DrawBMP(0,0,128,64, BMP2, 1);delay_ms(1000);OLED_DrawBMP(0,0,128,64, BMP3, 1);delay_ms(1000);OLED_DrawBMP(0,0,128,64, BMP4, 1);delay_ms(1000);
}/****************************************************************************** @name       :void OLED_Test_Menu1(void)* @date       :2022-06-22* @function   :中文选择菜单显示测试* @parameters :无* @retvalue   :无
******************************************************************************/
void OLED_Test_Menu1(void)
{OLED_Fill(0,0,WIDTH-1,15,1);OLED_ShowCHinese(32,0,16,"系统设置",0);OLED_DrawCircle(10, 24, 1,6);OLED_DrawCircle(10, 24, 1,3);OLED_DrawCircle(10, 40, 1,6);OLED_DrawCircle(10, 40, 1,3);OLED_DrawCircle(10, 56, 1,6);OLED_DrawCircle(10, 56, 1,3);OLED_ShowString(20,16,"A.",16,1);OLED_ShowCHinese(36,16,16,"音量设置",1);OLED_ShowString(20,32,"B.",16,1);OLED_ShowCHinese(36,32,16,"颜色设置",1);OLED_ShowString(20,48,"C.",16,1);OLED_ShowCHinese(36,48,16,"网络设置",1);OLED_DrawRectangle(0, 0,WIDTH-1,HEIGHT-1,1);OLED_DrawLine(WIDTH-1-10, 15, WIDTH-1-10, HEIGHT-1,1);OLED_FillTriangel(WIDTH-1-9,20,WIDTH-1-5,16,WIDTH-1-1,20,1);OLED_FillTriangel(WIDTH-1-9,HEIGHT-1-5,WIDTH-1-5,HEIGHT-1-1,WIDTH-1-1,HEIGHT-1-5,1);OLED_FillCircle(10, 24, 1,3);OLED_Fill(20,16,99,31,1);OLED_ShowString(20,16,"A.",16,0);OLED_ShowCHinese(36,16,16,"音量设置",0);OLED_Fill(WIDTH-1-9,23,WIDTH-1-1,28,1);delay_ms(1500);OLED_FillCircle(10, 24, 0,3);OLED_DrawCircle(10, 24, 1,3);OLED_Fill(20,16,99,31,0);OLED_ShowString(20,16,"A.",16,1);OLED_ShowCHinese(36,16,16,"音量设置",1);OLED_Fill(WIDTH-1-9,23,WIDTH-1-1,28,0);OLED_FillCircle(10, 40, 1,3);OLED_Fill(20,32,99,47,1);OLED_ShowString(20,32,"B.",16,0);OLED_ShowCHinese(36,32,16,"颜色设置",0);OLED_Fill(WIDTH-1-9,37,WIDTH-1-1,42,1);delay_ms(1500);OLED_FillCircle(10, 40, 0,3);OLED_DrawCircle(10, 40, 1,3);OLED_Fill(20,32,99,47,0);OLED_ShowString(20,32,"B.",16,1);OLED_ShowCHinese(36,32,16,"颜色设置",1);OLED_Fill(WIDTH-1-9,37,WIDTH-1-1,42,0);OLED_FillCircle(10, 56, 1,3);OLED_Fill(20,48,99,63,1);OLED_ShowString(20,48,"C.",16,0);OLED_ShowCHinese(36,48,16,"网络设置",0);OLED_Fill(WIDTH-1-9,HEIGHT-1-13,WIDTH-1-1,HEIGHT-1-8,1);delay_ms(1500);
}/****************************************************************************** @name       :void OLED_Test_Menu2(void)* @date       :2022-06-22* @function   :英文天气界面显示测试* @parameters :无* @retvalue   :无
******************************************************************************/
void OLED_Test_Menu2(void)
{u8 i;srand(123456);OLED_DrawLine(0, 10, WIDTH-1, 10,1);OLED_DrawLine(WIDTH/2-1,11,WIDTH/2-1,HEIGHT-1,1);OLED_DrawLine(WIDTH/2-1,10+(HEIGHT-10)/2-1,WIDTH-1,10+(HEIGHT-10)/2-1,1);OLED_ShowString(0,1,"2019-08-17",8,1);OLED_ShowString(78,1,"Saturday",8,1);OLED_ShowString(14,HEIGHT-1-10,"Cloudy",8,1);OLED_ShowString(WIDTH/2-1+2,13,"TEMP",8,1);OLED_DrawCircle(WIDTH-1-19, 25, 1,2);OLED_ShowString(WIDTH-1-14,20,"C",16,1);OLED_ShowString(WIDTH/2-1+9,20,"32.5",16,1);OLED_ShowString(WIDTH/2-1+2,39,"PM2.5",8,1);OLED_ShowString(WIDTH/2-1+5,46,"90ug/m3",16,1);OLED_DrawBMP(6,16,51,32, BMP5, 1);for(i=0;i<15;i++){OLED_ShowNum(WIDTH/2-1+9,20,rand()%4,1,16,1);OLED_ShowNum(WIDTH/2-1+9+8,20,rand()%10,1,16,1);OLED_ShowNum(WIDTH/2-1+9+8+16,20,rand()%10,1,16,1);OLED_ShowNum(WIDTH/2-1+5,46,rand()%10,1,16,1);OLED_ShowNum(WIDTH/2-1+5+8,46,rand()%10,1,16,1);delay_ms(500);}
}

oled.h

#ifndef __OLED_H
#define __OLED_H        #include "sys.h"
#include "stdlib.h"
#include "string.h"
#include "delay.h"
#include "spi2.h"//--------------OLED参数定义---------------------
#define PAGE_SIZE           8
#define XLevelL             0x00
#define XLevelH             0x10
#define YLevel              0xB0
#define Brightness      0xFF
#define WIDTH                   128
#define HEIGHT              64  //-------------写命令和数据定义-------------------
#define OLED_CMD            0       //写命令
#define OLED_DATA           1       //写数据 //-----------------OLED端口定义----------------#define OLED_RST_PIN       GPIO_Pin_8                          //复位信号
#define OLED_RST_PORT       GPIOA                                       //复位信号
#define OLED_RST_CLK        RCC_APB2Periph_GPIOA        //复位信号#define OLED_DC_PIN           GPIO_Pin_11                         //数据/命令控制信号
#define OLED_DC_PORT        GPIOA                                       //数据/命令控制信号
#define OLED_DC_CLK         RCC_APB2Periph_GPIOA        //数据/命令控制信号#define OLED_CS_PIN          GPIO_Pin_12                         //片选信号
#define OLED_CS_PORT        GPIOA                                       //片选信号
#define OLED_CS_CLK         RCC_APB2Periph_GPIOA        //片选信号//-----------------OLED端口操作定义----------------#define OLED_RST_PIN_Clr()   GPIO_ResetBits(OLED_RST_PORT,OLED_RST_PIN)
#define OLED_RST_PIN_Set()  GPIO_SetBits    (OLED_RST_PORT,OLED_RST_PIN)#define OLED_DC_PIN_Clr()       GPIO_ResetBits(OLED_DC_PORT,OLED_DC_PIN)
#define OLED_DC_PIN_Set()       GPIO_SetBits    (OLED_DC_PORT,OLED_DC_PIN)#define OLED_CS_PIN_Clr()     GPIO_ResetBits(OLED_CS_PORT,OLED_CS_PIN)
#define OLED_CS_PIN_Set()       GPIO_SetBits    (OLED_CS_PORT,OLED_CS_PIN)void OLED_Write_Byte(unsigned dat,unsigned cmd);                                                      //将一个字节的内容写入OLED屏幕
void OLED_Display_On(void);                                                                                                 //打开OLED显示
void OLED_Display_Off(void);                                                                                                //关闭OLED显示
void OLED_Set_Pos(unsigned char x, unsigned char y);                                                //在OLED屏幕中设置坐标
void OLED_Reset(void);                                                                                                          //重置OLED屏幕显示
void OLED_Set_Pixel(unsigned char x, unsigned char y,unsigned char color);  //将像素值设置为RAM
void OLED_Display(void);                                                                                                        //在OLED屏幕中显示
void OLED_Clear(unsigned dat);                                                                                          //清除OLED屏幕显示
void OLED_Init_GPIO(void);                                                                                                  //OLED引脚初始化
void OLED_Init(void);                                                                                                               //初始化OLED SSD1306控制ICvoid OLED_DrawPoint(u8 x, u8 y, u8 color);                                                                 //在OLED屏幕中绘制点
void OLED_Fill(u8 sx,u8 sy,u8 ex,u8 ey,u8 color);                                                       //填充指定区域
void OLED_DrawLine(u8 x1, u8 y1, u8 x2, u8 y2,u8 color);                                        //在两点之间画一条线
void OLED_DrawRectangle(u8 x1, u8 y1, u8 x2, u8 y2,u8 color);                               //绘制矩形
void OLED_FillRectangle(u8 x1, u8 y1, u8 x2, u8 y2,u8 color);                               //填充矩形
void OLED_DrawCircle(u8 xc, u8 yc, u8 color, u8 r);                                                 //在指定位置绘制指定大小的圆
void OLED_FillCircle(u8 xc, u8 yc, u8 color, u8 r);                                                 //在指定位置填充指定大小的圆
void OLED_DrawTriangel(u8 x0,u8 y0,u8 x1,u8 y1,u8 x2,u8 y2,u8 color);               //在指定位置绘制三角形
void OLED_FillTriangel(u8 x0,u8 y0,u8 x1,u8 y1,u8 x2,u8 y2,u8 color);               //在指定位置填充三角形
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 Char_Size,u8 mode);                                  //显示单个英文字符
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 Size,u8 mode);                                //显示英文字符串
void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 Char_Size,u8 mode);                               //显示数字
void OLED_ShowFont16(u8 x,u8 y,u8 *s,u8 mode);                                                          //显示单个16x16汉字
void OLED_ShowFont24(u8 x,u8 y,u8 *s,u8 mode);                                                          //显示单个24x24汉字
void OLED_ShowFont32(u8 x,u8 y,u8 *s,u8 mode);                                                          //显示单个32x32汉字
void OLED_ShowCHinese(u8 x,u8 y,u8 hsize,u8 *str,u8 mode);                                  //显示中文字符串
void OLED_DrawBMP(u8 x,u8 y,u8 width, u8 height, u8 BMP[], u8 mode);                //显示BMP单色图片void OLED_Test_MainPage(void);                                                                                           //绘制综合测试程序主界面
void OLED_Test_Color(void);                                                                                                 //颜色填充测试(白色、黑色)
void OLED_Test_Rectangular(void);                                                                                       //矩形显示和填充测试
void OLED_Test_Circle(void);                                                                                                //循环显示和填充测试依次显示黑白圆形框,1000毫秒后,依次用黑色、白色填充圆形
void OLED_Test_Triangle(void);                                                                                          //三角形显示和填充测试依次显示黑白三角形框,1000毫秒后,依次用黑色和白色填充三角形
void OLED_TEST_English(void);                                                                                               //英文显示测试
void OLED_TEST_Number_Character(void);                                                                          //数字和字符显示测试
void OLED_Test_Chinese(void);                                                                                               //中文显示测试
void OLED_Test_BMP(void);                                                                                                       //BMP单色图片显示测试
void OLED_Test_Menu1(void);                                                                                                 //中文选择菜单显示测试
void OLED_Test_Menu2(void);                                                                                                 //英文天气界面显示测试#endif

spi2.c

#include "spi2.h"void SPI2_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;SPI_InitTypeDef  SPI_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,  ENABLE );  //SPI2时钟使能RCC_APB2PeriphClockCmd(SPI2_SCK_CLK, ENABLE );                    //PORTB时钟使能GPIO_InitStructure.GPIO_Pin = SPI2_SCK_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                 //PB13复用推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(SPI2_SCK_PORT, &GPIO_InitStructure);                    //初始化GPIOBRCC_APB2PeriphClockCmd(SPI2_MOSI_CLK, ENABLE );                   //PORTB时钟使能GPIO_InitStructure.GPIO_Pin = SPI2_MOSI_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                    //PB15复用推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(SPI2_MOSI_PORT, &GPIO_InitStructure);                   //初始化GPIOBSPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;           //设置SPI单向或者双向的数据模式:SPI设置为双线双向全双工SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                                                      //设置SPI工作模式:设置为主SPISPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;                                               //设置SPI的数据大小:SPI发送接收8位帧结构SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;                                                           //串行同步时钟的空闲状态为高电平SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;                                                      //串行同步时钟的第二个跳变沿(上升或下降)数据被采样SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                                                             //NSS信号由硬件(NSS管脚)还是软件(使用SSI位)管理:内部NSS信号有SSI位控制SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;           //定义波特率预分频的值:波特率预分频值为2SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;                                           //指定数据传输从MSB位还是LSB位开始:数据传输从MSB位开始SPI_InitStructure.SPI_CRCPolynomial = 7;                                                              //CRC值计算的多项式SPI_Init(SPI2, &SPI_InitStructure);                                                                         //根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器SPI_Cmd(SPI2, ENABLE);      //使能SPI外设
}//SPI 速度设置函数
//SpeedSet:
//SPI_BaudRatePrescaler_2   2分频
//SPI_BaudRatePrescaler_8   8分频
//SPI_BaudRatePrescaler_16  16分频
//SPI_BaudRatePrescaler_256 256分频
void SPI2_SetSpeed(u8 SPI_BaudRatePrescaler)
{assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler));SPI2->CR1&=0XFFC7;SPI2->CR1|=SPI_BaudRatePrescaler;     //设置SPI2速度SPI_Cmd(SPI2,ENABLE);
}//SPIx 读写一个字节
//TxData:要写入的字节
//返回值:读取到的字节
u8 SPI2_ReadWriteByte(u8 TxData)
{u8 retry=0;while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET)       //检查指定的SPI标志位设置与否:发送缓存空标志位{retry++;if(retry>200)return 0;}SPI_I2S_SendData(SPI2, TxData);      //通过外设SPIx发送一个数据retry=0;while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET)      //检查指定的SPI标志位设置与否:接受缓存非空标志位{retry++;if(retry>200)return 0;}return SPI_I2S_ReceiveData(SPI2);       //返回通过SPIx最近接收的数据
}/****************************************************************************** @name       :u8 SPI_WriteByte(SPI_TypeDef* SPIx,u8 Byte)* @date       :2022-06-22* @function   :使用STM32的硬件SPI写入一个字节的数据* @parameters :SPIx:SPI类型,x表示1,2,3Byte:要写入的数据* @retvalue   :总线接收的数据
******************************************************************************/
u8 SPI_WriteByte(SPI_TypeDef* SPIx,u8 Byte)
{/* Loop while DR register in not emplty */while (SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_TXE) == RESET);/* Send byte through the SPI1 peripheral */SPI_I2S_SendData(SPIx, Byte);/* Wait to receive a byte */while (SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_RXNE) == RESET);/* Return the byte read from the SPI bus */return SPI_I2S_ReceiveData(SPIx);
}

spi2.h

#ifndef __SPI2_H
#define __SPI2_H#include "sys.h"
#include "oled.h"//--------------SPI端口操作定义---------------------#define SPI2_SCK_PIN       GPIO_Pin_13                         //时钟信号
#define SPI2_SCK_PORT       GPIOB                                       //时钟信号
#define SPI2_SCK_CLK        RCC_APB2Periph_GPIOB        //时钟信号#define SPI2_MOSI_PIN     GPIO_Pin_15                         //数据发送信号
#define SPI2_MOSI_PORT  GPIOB                                       //数据发送信号
#define SPI2_MOSI_CLK       RCC_APB2Periph_GPIOB        //数据发送信号#define SPI2_SCK_PIN_SET()      GPIO_SetBits    (SPI2_SCK_PORT,SPI2_SCK_PIN)
#define SPI2_SCK_PIN_CLR()      GPIO_ResetBits(SPI2_SCK_PORT,SPI2_SCK_PIN)#define   SPI2_MOSI_PIN_SET()     GPIO_SetBits    (SPI2_MOSI_PORT,SPI2_MOSI_PIN)
#define SPI2_MOSI_PIN_CLR()     GPIO_ResetBits(SPI2_MOSI_PORT,SPI2_MOSI_PIN)void SPI2_Init(void);                                                   //初始化SPI口
void SPI2_SetSpeed(u8 SpeedSet);                            //设置SPI速度
u8 SPI2_ReadWriteByte(u8 TxData);                           //SPI总线读写一个字节
u8 SPI_WriteByte(SPI_TypeDef* SPIx,u8 Byte);    //使用STM32的硬件SPI写入一个字节的数据#endif

oledfont.h

#ifndef __OLEDFONT_H
#define __OLEDFONT_H//常用ASCII表
//偏移量32
//ASCII字符集
//偏移量32
//大小:6*8
//逐行式,顺向(高位在前)
/************************************6*8的点阵************************************/
const unsigned char F6x8[][8] =
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // sp0x10,0x10,0x10,0x10,0x00,0x10,0x00,0x00, // !0x28,0x28,0x28,0x00,0x00,0x00,0x00,0x00, // "0x28,0x28,0x7C,0x28,0x7C,0x28,0x28,0x00, // #0x10,0x3C,0x50,0x38,0x14,0x78,0x10,0x00, // $0x00,0x4C,0x2C,0x10,0x08,0x60,0x60,0x00, // %0x30,0x48,0x50,0x20,0x54,0x48,0x34,0x00, // &0x30,0x10,0x20,0x00,0x00,0x00,0x00,0x00, // '0x08,0x10,0x20,0x20,0x20,0x10,0x08,0x00, // (0x20,0x10,0x08,0x08,0x08,0x10,0x20,0x00, // )0x00,0x10,0x54,0x38,0x54,0x10,0x00,0x00, // *0x00,0x10,0x10,0x7C,0x10,0x10,0x00,0x00, // +0x00,0x00,0x00,0x00,0x00,0x18,0x08,0x10, // ,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00, // -0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00, // .0x00,0x04,0x08,0x10,0x20,0x40,0x00,0x00, // /0x38,0x44,0x4C,0x54,0x64,0x44,0x38,0x00, // 00x10,0x30,0x10,0x10,0x10,0x10,0x38,0x00, // 10x38,0x44,0x04,0x08,0x10,0x20,0x7C,0x00, // 20x7C,0x08,0x10,0x08,0x04,0x44,0x38,0x00, // 3 0x08,0x18,0x28,0x48,0x7C,0x08,0x08,0x00, // 40x7C,0x40,0x78,0x04,0x04,0x44,0x38,0x00, // 50x18,0x20,0x40,0x78,0x44,0x44,0x38,0x00, // 60x7C,0x04,0x08,0x10,0x20,0x20,0x20,0x00, // 70x38,0x44,0x44,0x38,0x44,0x44,0x38,0x00, // 80x38,0x44,0x44,0x3C,0x04,0x08,0x30,0x00, // 90x00,0x30,0x30,0x00,0x30,0x30,0x00,0x00, // :0x00,0x30,0x30,0x00,0x30,0x10,0x20,0x00, // ;0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x00, // <0x00,0x00,0x7C,0x00,0x7C,0x00,0x00,0x00, // =0x20,0x10,0x08,0x04,0x08,0x10,0x20,0x00, // >0x38,0x44,0x04,0x08,0x10,0x00,0x10,0x00, // ?0x38,0x44,0x04,0x34,0x5C,0x44,0x38,0x00, // @0x10,0x28,0x44,0x44,0x7C,0x44,0x44,0x00, // A0x78,0x44,0x44,0x78,0x44,0x44,0x78,0x00, // B0x38,0x44,0x40,0x40,0x40,0x44,0x38,0x00, // C0x70,0x48,0x44,0x44,0x44,0x48,0x70,0x00, // D0x7C,0x40,0x40,0x78,0x40,0x40,0x7C,0x00, // E0x7C,0x40,0x40,0x78,0x40,0x40,0x40,0x00, // F0x38,0x44,0x40,0x5C,0x44,0x44,0x3C,0x00, // G0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0x00, // H0x38,0x10,0x10,0x10,0x10,0x10,0x38,0x00, // I0x1C,0x08,0x08,0x08,0x08,0x48,0x30,0x00, // J0x44,0x48,0x50,0x60,0x50,0x48,0x44,0x00, // K0x40,0x40,0x40,0x40,0x40,0x40,0x7C,0x00, // L0x44,0x6C,0x54,0x54,0x44,0x44,0x44,0x00, // M0x44,0x44,0x64,0x54,0x4C,0x44,0x44,0x00, // N0x38,0x44,0x44,0x44,0x44,0x44,0x38,0x00, // O0x78,0x44,0x44,0x78,0x40,0x40,0x40,0x00, // P0x38,0x44,0x44,0x44,0x54,0x48,0x34,0x00, // Q0x78,0x44,0x44,0x78,0x50,0x48,0x44,0x00, // R0x3C,0x40,0x40,0x38,0x04,0x04,0x78,0x00, // S0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x00, // T0x44,0x44,0x44,0x44,0x44,0x44,0x38,0x00, // U0x44,0x44,0x44,0x44,0x44,0x28,0x10,0x00, // V0x44,0x44,0x44,0x54,0x54,0x54,0x28,0x00, // W0x44,0x44,0x28,0x10,0x28,0x44,0x44,0x00, // X0x44,0x44,0x44,0x28,0x10,0x10,0x10,0x00, // Y0x7C,0x04,0x08,0x10,0x20,0x40,0x7C,0x00, // Z0x38,0x20,0x20,0x20,0x20,0x20,0x38,0x00, // [0x00,0x40,0x20,0x10,0x08,0x04,0x00,0x00, // '\'0x38,0x08,0x08,0x08,0x08,0x08,0x38,0x00, // ]0x10,0x28,0x44,0x00,0x00,0x00,0x00,0x00, // ^0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00, // _0x20,0x10,0x08,0x00,0x00,0x00,0x00,0x00, // '0x00,0x00,0x38,0x04,0x3C,0x44,0x3C,0x00, // a0x40,0x40,0x58,0x64,0x44,0x44,0x78,0x00, // b0x00,0x00,0x38,0x40,0x40,0x44,0x38,0x00, // c0x04,0x04,0x34,0x4C,0x44,0x44,0x3C,0x00, // d0x00,0x00,0x38,0x44,0x7C,0x40,0x38,0x00, // e0x38,0x24,0x20,0x70,0x20,0x20,0x20,0x00, // f0x00,0x00,0x3C,0x44,0x44,0x3C,0x04,0x38, // g0x40,0x40,0x58,0x64,0x44,0x44,0x44,0x00, // h0x10,0x00,0x30,0x10,0x10,0x10,0x38,0x00, // i0x08,0x00,0x18,0x08,0x08,0x08,0x48,0x30, // j0x40,0x40,0x48,0x50,0x60,0x50,0x48,0x00, // k0x30,0x10,0x10,0x10,0x10,0x10,0x38,0x00, // l0x00,0x00,0x68,0x54,0x54,0x44,0x44,0x00, // m0x00,0x00,0x58,0x64,0x44,0x44,0x44,0x00, // n0x00,0x00,0x38,0x44,0x44,0x44,0x38,0x00, // o0x00,0x00,0x58,0x64,0x64,0x58,0x40,0x40, // p0x00,0x00,0x34,0x4C,0x4C,0x34,0x04,0x04, // q0x00,0x00,0x58,0x64,0x40,0x40,0x40,0x00, // r0x00,0x00,0x3C,0x40,0x38,0x04,0x78,0x00, // s0x20,0x20,0x70,0x20,0x20,0x24,0x18,0x00, // t0x00,0x00,0x44,0x44,0x44,0x4C,0x34,0x00, // u0x00,0x00,0x44,0x44,0x44,0x28,0x10,0x00, // v0x00,0x00,0x44,0x44,0x54,0x54,0x28,0x00, // w0x00,0x00,0x44,0x28,0x10,0x28,0x44,0x00, // x0x00,0x00,0x44,0x44,0x44,0x3C,0x04,0x38, // y0x00,0x00,0x7C,0x08,0x10,0x20,0x7C,0x00, // z0x10,0x20,0x20,0x40,0x20,0x20,0x10,0x00, // {0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x00, // |0x20,0x10,0x10,0x08,0x10,0x10,0x20,0x00, // }0x00,0x00,0x00,0x20,0x54,0x08,0x00,0x00, // ~
};//常用ASCII表
//偏移量32
//ASCII字符集
//偏移量32
//大小:8*16
//逐行式,顺向(高位在前)
/****************************************8*16的点阵************************************/
const unsigned char F8X16[]=
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 00x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x18,0x18,0x00,0x00,//! 10x00,0x12,0x36,0x24,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 20x00,0x00,0x00,0x24,0x24,0x24,0xFE,0x48,0x48,0x48,0xFE,0x48,0x48,0x48,0x00,0x00,//# 30x00,0x00,0x10,0x38,0x54,0x54,0x50,0x30,0x1C,0x14,0x14,0x54,0x54,0x38,0x10,0x10,//$ 40x00,0x00,0x00,0x44,0xA4,0xA8,0xA8,0xA8,0x54,0x1A,0x2A,0x2A,0x2A,0x44,0x00,0x00,//% 50x00,0x00,0x00,0x30,0x48,0x48,0x48,0x50,0x6E,0xA4,0x94,0x88,0x89,0x76,0x00,0x00,//& 60x00,0x60,0x60,0x20,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 70x00,0x02,0x04,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x08,0x08,0x04,0x02,0x00,//( 80x00,0x40,0x20,0x10,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x10,0x20,0x40,0x00,//) 90x00,0x00,0x00,0x00,0x10,0x10,0xD6,0x38,0x38,0xD6,0x10,0x10,0x00,0x00,0x00,0x00,//* 100x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0xFE,0x10,0x10,0x10,0x10,0x00,0x00,0x00,//+ 110x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x20,0xC0,//, 120x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//- 130x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,//. 140x00,0x00,0x01,0x02,0x02,0x04,0x04,0x08,0x08,0x10,0x10,0x20,0x20,0x40,0x40,0x00,/// 150x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,//0 160x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,//1 170x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,//2 180x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00,//3 190x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00,//4 200x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00,//5 210x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00,//6 220x00,0x00,0x00,0x7E,0x42,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,//7 230x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,//8 240x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00,//9 250x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,//: 260x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x08,0x30,0x00,//; 270x00,0x00,0x00,0x02,0x04,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x00,//< 280x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,//= 290x00,0x00,0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x04,0x08,0x10,0x20,0x40,0x00,0x00,//> 300x00,0x00,0x00,0x3C,0x42,0x42,0x62,0x02,0x04,0x08,0x08,0x00,0x18,0x18,0x00,0x00,//? 310x00,0x00,0x00,0x38,0x44,0x5A,0xAA,0xAA,0xAA,0xAA,0xB4,0x42,0x44,0x38,0x00,0x00,//@ 320x00,0x00,0x00,0x10,0x10,0x18,0x28,0x28,0x24,0x3C,0x44,0x42,0x42,0xE7,0x00,0x00,//A 330x00,0x00,0x00,0xF8,0x44,0x44,0x44,0x78,0x44,0x42,0x42,0x42,0x44,0xF8,0x00,0x00,//B 340x00,0x00,0x00,0x3E,0x42,0x42,0x80,0x80,0x80,0x80,0x80,0x42,0x44,0x38,0x00,0x00,//C 350x00,0x00,0x00,0xF8,0x44,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x44,0xF8,0x00,0x00,//D 360x00,0x00,0x00,0xFE,0x42,0x48,0x48,0x78,0x48,0x48,0x40,0x42,0x42,0xFE,0x00,0x00,//E 370x00,0x00,0x00,0xFE,0x42,0x48,0x48,0x78,0x48,0x48,0x40,0x40,0x40,0xE0,0x00,0x00,//F 380x00,0x00,0x00,0x3C,0x44,0x44,0x80,0x80,0x80,0x8E,0x84,0x44,0x44,0x38,0x00,0x00,//G 390x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,//H 400x00,0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,//I 410x00,0x00,0x00,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x88,0xF0,//J 420x00,0x00,0x00,0xEE,0x44,0x48,0x50,0x70,0x50,0x48,0x48,0x44,0x44,0xEE,0x00,0x00,//K 430x00,0x00,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0xFE,0x00,0x00,//L 440x00,0x00,0x00,0xEE,0x6C,0x6C,0x6C,0x6C,0x54,0x54,0x54,0x54,0x54,0xD6,0x00,0x00,//M 450x00,0x00,0x00,0xC7,0x62,0x62,0x52,0x52,0x4A,0x4A,0x4A,0x46,0x46,0xE2,0x00,0x00,//N 460x00,0x00,0x00,0x38,0x44,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x44,0x38,0x00,0x00,//O 470x00,0x00,0x00,0xFC,0x42,0x42,0x42,0x42,0x7C,0x40,0x40,0x40,0x40,0xE0,0x00,0x00,//P 480x00,0x00,0x00,0x38,0x44,0x82,0x82,0x82,0x82,0x82,0xB2,0xCA,0x4C,0x38,0x06,0x00,//Q 490x00,0x00,0x00,0xF8,0x44,0x44,0x44,0x78,0x48,0x48,0x44,0x44,0x42,0xE3,0x00,0x00,//R 500x00,0x00,0x00,0x3E,0x42,0x42,0x40,0x20,0x18,0x04,0x02,0x42,0x42,0x7C,0x00,0x00,//S 510x00,0x00,0x00,0xFE,0x92,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00,//T 520x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,//U 530x00,0x00,0x00,0xE7,0x42,0x42,0x44,0x24,0x24,0x28,0x28,0x18,0x10,0x10,0x00,0x00,//V 540x00,0x00,0x00,0xD6,0x92,0x92,0x92,0x92,0xAA,0xAA,0x6C,0x44,0x44,0x44,0x00,0x00,//W 550x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,0x18,0x18,0x24,0x24,0x42,0xE7,0x00,0x00,//X 560x00,0x00,0x00,0xEE,0x44,0x44,0x28,0x28,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00,//Y 570x00,0x00,0x00,0x7E,0x84,0x04,0x08,0x08,0x10,0x20,0x20,0x42,0x42,0xFC,0x00,0x00,//Z 580x00,0x1E,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1E,0x00,//[ 590x00,0x00,0x40,0x40,0x20,0x20,0x10,0x10,0x08,0x04,0x04,0x02,0x02,0x02,0x01,0x01,//\ 600x00,0x78,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x78,0x00,//] 610x00,0x08,0x14,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 620x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,//_ 630x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 640x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x1E,0x22,0x42,0x42,0x3F,0x00,0x00,//a 650x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x64,0x58,0x00,0x00,//b 660x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x22,0x40,0x40,0x40,0x22,0x1C,0x00,0x00,//c 670x00,0x00,0x00,0x06,0x02,0x02,0x02,0x1E,0x22,0x42,0x42,0x42,0x26,0x1B,0x00,0x00,//d 680x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x7E,0x40,0x40,0x42,0x3C,0x00,0x00,//e 690x00,0x00,0x00,0x0F,0x11,0x10,0x10,0x7E,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,//f 700x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x44,0x44,0x38,0x40,0x3C,0x42,0x42,0x3C,//g 710x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x5C,0x62,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,//h 720x00,0x00,0x00,0x30,0x30,0x00,0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,//i 730x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x1C,0x04,0x04,0x04,0x04,0x04,0x04,0x44,0x78,//j 740x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x4E,0x48,0x50,0x68,0x48,0x44,0xEE,0x00,0x00,//k 750x00,0x00,0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,//l 760x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF6,0x49,0x49,0x49,0x49,0x49,0xED,0x00,0x00,//m 770x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0x62,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,//n 780x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,//o 790x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0x64,0x42,0x42,0x42,0x64,0x58,0x40,0xE0,//p 800x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x22,0x42,0x42,0x42,0x26,0x1A,0x02,0x07,//q 810x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEE,0x32,0x20,0x20,0x20,0x20,0xF8,0x00,0x00,//r 820x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x42,0x40,0x3C,0x02,0x42,0x7C,0x00,0x00,//s 830x00,0x00,0x00,0x00,0x00,0x10,0x10,0x7C,0x10,0x10,0x10,0x10,0x10,0x0C,0x00,0x00,//t 840x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x42,0x42,0x42,0x42,0x46,0x3B,0x00,0x00,//u 850x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x28,0x10,0x10,0x00,0x00,//v 860x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD7,0x92,0x92,0xAA,0xAA,0x44,0x44,0x00,0x00,//w 870x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6E,0x24,0x18,0x18,0x18,0x24,0x76,0x00,0x00,//x 880x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x28,0x18,0x10,0x10,0xE0,//y 890x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x44,0x08,0x10,0x10,0x22,0x7E,0x00,0x00,//z 900x00,0x03,0x04,0x04,0x04,0x04,0x04,0x08,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x00,//{ 910x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,//| 920x00,0x60,0x10,0x10,0x10,0x10,0x10,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x60,0x00,//} 930x00,0x00,0x00,0x00,0x00,0x00,0x20,0x52,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94
};typedef struct
{unsigned char Index[2];    char Msk[32];
}typFNT_GB16; /*
输出格式:C51
数据排列:从左到右从上到下
取模方式:横向8点左高位
黑白取反:正常
字体种类:[HZK1616宋体]
强制转角:ASCII自动转全角
*/
const typFNT_GB16 cfont16[] =
{"系",0x00,0xF8,0x3F,0x00,0x04,0x00,0x08,0x20,0x10,0x40,0x3F,0x80,0x01,0x00,0x06,0x10,0x18,0x08,0x7F,0xFC,0x01,0x04,0x09,0x20,0x11,0x10,0x21,0x08,0x45,0x04,0x02,0x00,"统",0x10,0x40,0x10,0x20,0x20,0x20,0x23,0xFE,0x48,0x40,0xF8,0x88,0x11,0x04,0x23,0xFE,0x40,0x92,0xF8,0x90,0x40,0x90,0x00,0x90,0x19,0x12,0xE1,0x12,0x42,0x0E,0x04,0x00,"设",0x00,0x00,0x21,0xF0,0x11,0x10,0x11,0x10,0x01,0x10,0x02,0x0E,0xF4,0x00,0x13,0xF8,0x11,0x08,0x11,0x10,0x10,0x90,0x14,0xA0,0x18,0x40,0x10,0xA0,0x03,0x18,0x0C,0x06,"置",0x7F,0xFC,0x44,0x44,0x7F,0xFC,0x01,0x00,0x7F,0xFC,0x01,0x00,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0xFF,0xFE,0x00,0x00,"音",0x02,0x00,0x01,0x00,0x3F,0xF8,0x00,0x00,0x08,0x20,0x04,0x40,0xFF,0xFE,0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,"量",0x00,0x00,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0xFF,0xFE,0x00,0x00,0x1F,0xF0,0x11,0x10,0x1F,0xF0,0x11,0x10,0x1F,0xF0,0x01,0x00,0x1F,0xF0,0x01,0x00,0x7F,0xFC,"颜",0x10,0x00,0x08,0xFE,0x7F,0x10,0x22,0x20,0x14,0x7C,0x7F,0x44,0x44,0x54,0x48,0x54,0x52,0x54,0x44,0x54,0x48,0x54,0x51,0x54,0x42,0x28,0x44,0x24,0x88,0x42,0x30,0x82,"色",0x08,0x00,0x08,0x00,0x1F,0xE0,0x20,0x20,0x40,0x40,0xBF,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x20,0x00,0x20,0x02,0x20,0x02,0x20,0x02,0x1F,0xFE,0x00,0x00,"网",0x00,0x00,0x7F,0xFC,0x40,0x04,0x40,0x04,0x42,0x14,0x52,0x94,0x4A,0x54,0x44,0x24,0x44,0x24,0x4A,0x54,0x4A,0x54,0x52,0x94,0x61,0x04,0x40,0x04,0x40,0x14,0x40,0x08,"络",0x10,0x80,0x10,0x80,0x20,0xF8,0x21,0x08,0x4B,0x10,0xFC,0xA0,0x10,0x40,0x20,0xA0,0x41,0x18,0xFA,0x06,0x45,0xF8,0x01,0x08,0x19,0x08,0xE1,0x08,0x41,0xF8,0x01,0x08,"小",0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x40,0x05,0x20,0x09,0x10,0x09,0x08,0x11,0x04,0x21,0x04,0x41,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,"星",0x00,0x08,0x3F,0xFC,0x20,0x08,0x3F,0xF8,0x20,0x08,0x3F,0xF8,0x01,0x00,0x21,0x08,0x3F,0xFC,0x21,0x00,0x41,0x10,0xBF,0xF8,0x01,0x00,0x01,0x04,0xFF,0xFE,0x00,0x00,"戴",0x08,0x20,0x7F,0x28,0x08,0x24,0xFF,0xFE,0x00,0x20,0x7F,0x20,0x49,0x24,0x7F,0x24,0x49,0x24,0x7F,0x28,0x22,0x28,0x7F,0x10,0x22,0x12,0xFF,0xAA,0x22,0x46,0x41,0x82,"创",0x08,0x04,0x08,0x04,0x14,0x04,0x12,0x24,0x21,0xA4,0x20,0xA4,0x7E,0x24,0xA2,0x24,0x22,0x24,0x2A,0x24,0x24,0x24,0x20,0x04,0x21,0x04,0x21,0x04,0x1F,0x14,0x00,0x08,"昆",0x00,0x08,0x3F,0xFC,0x20,0x08,0x20,0x08,0x3F,0xF8,0x20,0x08,0x20,0x08,0x3F,0xF8,0x00,0x80,0x20,0x84,0x24,0x98,0x3E,0xE0,0x20,0x80,0x20,0x82,0x2E,0x82,0x70,0x7E,
};
/typedef struct
{unsigned char Index[2];char Msk[72];
}typFNT_GB24;//宋体
//24*24大小
//逐行式,顺向(高位在前)
const typFNT_GB24 cfont24[] =
{"戴",0x01,0x02,0x00,0x01,0xC3,0xA0,0x01,0x9B,0x30,0x1F,0xFB,0x10,0x01,0x83,0x00,0x01,0x83,0x0C,0x7F,0xFF,0xFE,0x00,0x01,0x80,0x1F,0xF9,0x80,0x19,0x99,0x90,0x1F,0xF9,0x9C,0x19,0x99,0x98,0x1F,0xF9,0xB0,0x06,0x61,0xB0,0x06,0x69,0xB0,0x3F,0xFD,0xE0,0x06,0x60,0xE4,0x06,0x68,0xC4,0x7F,0xFC,0xC4,0x04,0x81,0xE4,0x0E,0x63,0x34,0x18,0x36,0x1C,0x30,0x04,0x0E,0x40,0x18,0x06,"创",0x02,0x00,0x00,0x03,0x80,0x08,0x03,0x80,0x0E,0x06,0x60,0x0C,0x06,0x31,0x0C,0x0C,0x19,0xCC,0x0C,0x0D,0x8C,0x18,0x0D,0x8C,0x18,0x31,0x8C,0x2F,0xF9,0x8C,0x2C,0x31,0x8C,0x4C,0x31,0x8C,0x0C,0x31,0x8C,0x0C,0x31,0x8C,0x0C,0x61,0x8C,0x0F,0xE1,0x0C,0x0C,0xC8,0x0C,0x0C,0x08,0x0C,0x0C,0x08,0x0C,0x0C,0x0C,0x0C,0x0F,0xFC,0x0C,0x07,0xF8,0xFC,0x00,0x00,0x38,0x00,0x00,0x10,"昆",0x00,0x00,0x00,0x08,0x00,0x60,0x0F,0xFF,0xF0,0x0C,0x00,0x60,0x0C,0x00,0x60,0x0C,0x00,0x60,0x0F,0xFF,0xE0,0x0C,0x00,0x60,0x0C,0x00,0x60,0x0C,0x00,0x60,0x0F,0xFF,0xE0,0x08,0x08,0x40,0x10,0x0E,0x10,0x1C,0x0C,0x38,0x18,0xCC,0x60,0x1F,0xED,0x80,0x18,0x0E,0x04,0x18,0x0C,0x04,0x18,0x0C,0x04,0x18,0x0C,0x04,0x1F,0xCC,0x06,0x3E,0x0F,0xFE,0x10,0x07,0xFC,0x00,0x00,0x00,
};
/typedef struct
{unsigned char Index[2];char Msk[128];
}typFNT_GB32;//宋体
//32*32大小
//逐行式,顺向(高位在前)
const typFNT_GB32 cfont32[] =
{"戴",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x08,0x00,0x00,0x30,0x0E,0x80,
0x00,0x30,0x8C,0x40,0x0F,0xFF,0xCC,0x70,0x00,0x30,0x0C,0x30,0x00,0x30,0x0C,0x30,
0x00,0x30,0x0C,0x18,0x3F,0xFF,0xFF,0xFC,0x08,0x00,0x4C,0x00,0x0F,0xFF,0xEC,0x00,
0x0C,0x30,0xCC,0x00,0x0C,0x30,0xCC,0x00,0x0F,0xFF,0xC4,0x38,0x0C,0x30,0xC4,0x30,
0x0C,0x30,0xC6,0x30,0x0F,0xFF,0xC6,0x70,0x0C,0x84,0xC6,0x60,0x00,0x87,0x06,0x60,
0x00,0x86,0x03,0xC0,0x0F,0xFF,0xC3,0xC0,0x00,0x86,0x03,0x80,0x00,0x86,0x21,0x82,
0x3F,0xFF,0xF3,0xC4,0x00,0x88,0x0E,0xC4,0x01,0xC6,0x04,0x64,0x03,0x03,0x08,0x3C,
0x06,0x01,0x90,0x1C,0x18,0x01,0x20,0x0C,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,/*"戴",0*/
/* (32 X 32 , 宋体 )*/"创",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x70,0x00,0x18,
0x00,0xE0,0x00,0x18,0x00,0xD8,0x00,0x18,0x01,0x8E,0x00,0x18,0x01,0x83,0x00,0x18,
0x01,0x01,0x84,0x18,0x03,0x01,0xC6,0x18,0x02,0x00,0x84,0x18,0x04,0x00,0x04,0x18,
0x0C,0x02,0x04,0x18,0x0F,0xFF,0x04,0x18,0x16,0x06,0x04,0x18,0x26,0x06,0x04,0x18,
0x46,0x06,0x04,0x18,0x06,0x06,0x04,0x18,0x06,0x06,0x04,0x18,0x06,0x06,0x04,0x18,
0x06,0x06,0x04,0x18,0x06,0x3C,0x04,0x18,0x06,0x18,0x04,0x18,0x06,0x00,0x40,0x18,
0x06,0x00,0x40,0x18,0x06,0x00,0x40,0x18,0x06,0x00,0x40,0x18,0x02,0x00,0xC0,0x18,
0x03,0xFF,0xE3,0xF8,0x03,0xFF,0xC0,0xF0,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,/*"创",1*/
/* (32 X 32 , 宋体 )*/"昆",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
0x01,0xFF,0xFF,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,
0x01,0x80,0x01,0x80,0x01,0xFF,0xFF,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,
0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xFF,0xFF,0x80,0x01,0x80,0x01,0x80,
0x00,0x00,0x40,0x00,0x03,0x00,0x70,0x00,0x03,0x00,0x60,0x20,0x03,0x00,0x60,0x70,
0x03,0x04,0x61,0xC0,0x03,0xFE,0x63,0x00,0x03,0x00,0x7C,0x00,0x03,0x00,0x60,0x08,
0x03,0x00,0x60,0x08,0x03,0x00,0x60,0x08,0x03,0x01,0x60,0x08,0x03,0x1E,0x60,0x0C,
0x03,0xE0,0x77,0xFC,0x07,0x80,0x7F,0xFC,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"昆",2*/
/* (32 X 32 , 宋体 )*/
};
/unsigned char BMP2[] =
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xE0,0x03,0x91,0x1C,0x38,0x18,0x00,0x70,0x00,0xFF,0xFC,0x00,0x07,0xFF,0xFE,0x66,0x60,0x04,0x5B,0x22,0x44,0x14,0x01,0x8C,0x01,0x7F,0xFA,0x00,0x04,0x00,0x02,0x36,0xC0,0x08,0x15,0x40,0x80,0x52,0x02,0x02,0x01,0xBF,0xF6,0x00,0x3D,0xB6,0xDA,0x1F,0x80,0x88,0x11,0x40,0x80,0x34,0x04,0x71,0x01,0xDF,0xEE,0x00,0x25,0xB6,0xDA,0x0F,0x02,0x88,0x11,0x40,0x80,0x18,0x00,0x88,0x01,0xE0,0x1E,0x00,0x25,0xB6,0xDA,0x06,0x0A,0x88,0x11,0x40,0x80,0x34,0x01,0x04,0x01,0xDF,0xEE,0x00,0x25,0xB6,0xDA,0x06,0x2A,0x88,0x11,0x40,0x80,0x52,0x00,0x20,0x01,0xBF,0xF6,0x00,0x3D,0xB6,0xDA,0x06,0xAA,0x84,0x51,0x22,0x44,0x14,0x00,0x70,0x01,0x7F,0xFA,0x00,0x04,0x00,0x02,0x06,0xAA,0x83,0x91,0x1C,0x38,0x18,0x00,0x20,0x00,0xFF,0xFC,0x00,0x07,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x1F,0xFC,0x00,0x3F,0xFC,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x3F,0xFE,0x00,0x7F,0xFC,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x30,0x06,0x00,0x60,0x00,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x30,0x06,0x00,0x60,0x00,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x06,0x00,0x60,0x00,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x30,0x06,0x18,0x60,0x00,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC3,0x30,0x06,0x18,0x7F,0xFC,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x30,0x06,0x00,0x7F,0xFC,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x3F,0xFE,0x00,0x00,0x0C,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x3F,0xFE,0x00,0x00,0x0C,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x30,0x06,0x00,0x00,0x0C,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x30,0x06,0x18,0x00,0x0C,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x30,0x06,0x18,0x00,0x0C,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x30,0x06,0x00,0x00,0x0C,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x30,0x06,0x00,0x60,0x0C,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x30,0x06,0x00,0x60,0x0C,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x3F,0xFE,0x00,0x7F,0xFC,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x1F,0xFC,0x00,0x3F,0xF8,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF9,0xE3,0x0F,0x00,0xF1,0xE0,0x1E,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x0A,0x15,0x10,0x81,0x0A,0x10,0x21,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x11,0x10,0x81,0x0A,0x00,0x21,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x11,0x1F,0x81,0x0B,0xE0,0x21,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x11,0x10,0x81,0x0A,0x10,0x21,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x11,0x10,0x99,0x0A,0x13,0x21,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xF9,0xE7,0xCF,0x18,0xF1,0xE3,0x1E,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x1C,0x41,0x41,0x00,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x82,0x7C,0x82,0x63,0x22,0x61,0x41,0x00,0x00,0x00,0x00,0xF1,0x00,0x00,0x00,0x00,0xC6,0x82,0xC2,0x55,0x41,0x51,0x41,0x00,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0xAA,0x80,0xA2,0x49,0x7E,0x49,0x41,0x00,0x00,0x00,0x00,0xFD,0x00,0x00,0x00,0x00,0x92,0x7C,0x92,0x41,0x40,0x45,0x41,0x00,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x82,0x02,0x8A,0x41,0x21,0x43,0x22,0x00,0x00,0x00,0x00,0xF1,0x00,0x00,0x00,0x00,0x82,0x82,0x86,0x41,0x1E,0x41,0x1C,0x00,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x82,0x7C,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};unsigned char BMP3[] =
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xF8,0x03,0xFF,0xF8,0x03,0xC0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFE,0x03,0xFF,0xF8,0x07,0xF3,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x03,0x03,0x00,0x00,0x0F,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x01,0x83,0x00,0x00,0x1F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xC3,0x00,0x00,0x1F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xC3,0x00,0x00,0x1F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xC3,0x00,0x00,0x0F,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xC3,0x00,0x00,0x0F,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x01,0x83,0x7F,0xC0,0x07,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x03,0x03,0xFF,0xF0,0x03,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x06,0x03,0x80,0x38,0x01,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFC,0x03,0x00,0x18,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0x00,0x00,0x0C,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x01,0x80,0x00,0x0C,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xC0,0x00,0x0C,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xC0,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xC0,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xC0,0x00,0x0C,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xC0,0x00,0x0C,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xC6,0x00,0x0C,0x1E,0x38,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xC7,0x00,0x1C,0x11,0x45,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x01,0x83,0x80,0x38,0x11,0x45,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0x01,0xFF,0xF0,0x11,0x45,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFE,0x00,0x7F,0xC0,0x11,0x45,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x79,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x14,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x22,0x00,0x90,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x40,0x42,0x00,0x90,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x40,0x41,0x01,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x20,0x81,0x01,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x81,0x02,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x80,0x82,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x21,0x00,0x82,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x11,0x00,0x84,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x12,0x00,0x44,0x02,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x12,0x00,0x48,0x01,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x48,0x01,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x30,0x01,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x30,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};unsigned char BMP4[] =
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x0F,0xC0,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x1F,0xFE,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x3F,0xFF,0xFF,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x7F,0xFF,0xFF,0xFF,0xC0,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0xFF,0xFF,0xFF,0xFF,0xE0,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x03,0xFF,0xFF,0xFF,0xFF,0xE0,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x0F,0xFF,0xFF,0xFF,0xFF,0xE0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x3F,0xFF,0xFF,0xFF,0xFF,0xF0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x3C,0x3F,0xFF,0xF8,0x7F,0xF1,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x3F,0xFF,0xFF,0xFF,0xFF,0xF1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x3F,0xFF,0xFF,0xFF,0xFF,0xF3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x20,0x00,0xFF,0x00,0x07,0xF2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x0F,0xFF,0x7E,0xFF,0xFB,0xE7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x9F,0x7F,0x81,0xFD,0xFC,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xBE,0x3F,0x9D,0xF8,0xFD,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDF,0x7F,0xBC,0xFD,0xFB,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x67,0xFE,0x7E,0x7F,0xE3,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x01,0xFF,0x80,0x0F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFE,0x00,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xC7,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x01,0x83,0x80,0x61,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0xF0,0x00,0x00,0x07,0x82,0xE3,0xE1,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x1C,0x00,0x00,0x0C,0x6C,0x02,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x03,0x00,0x00,0x00,0xFE,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0xF1,0x80,0x00,0x0F,0x81,0xF7,0xC0,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x18,0x80,0x00,0x03,0xFF,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x0C,0x40,0x00,0x02,0x18,0x81,0x8C,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE1,0x84,0x40,0x00,0x02,0x18,0x81,0x8C,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC2,0x40,0x00,0x03,0xFF,0x81,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xE2,0x40,0x00,0x02,0x00,0x31,0x80,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x03,0xFF,0xF0,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xC0,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};//
//
//存储图片数据,图片大小为51*32像素
//逐行式,顺向(高位在前)
//
/
unsigned char BMP5[] =
{0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x01,0x80,0x0E,0x00,0x20,0x00,0x00,0x01,0xC0,0x00,0x00,0x70,0x00,0x00,0x00,0xC0,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x3F,0x81,0xC0,0x00,0x00,0x00,0x61,0xFF,0xF0,0x80,0x00,0x00,0x00,0x03,0xC0,0xF8,0x00,0x00,0x00,0x00,0x07,0x00,0x1C,0x00,0x00,0x00,0x00,0x1E,0x00,0x0F,0x00,0x00,0x00,0x7C,0x1C,0x00,0x03,0x1F,0x80,0x00,0x7C,0x1C,0x07,0xFF,0x1F,0x80,0x00,0x7C,0x1C,0x1F,0xFF,0x9F,0x80,0x00,0x00,0x1C,0x7C,0x03,0xF8,0x00,0x00,0x00,0x0F,0xF0,0x00,0x7C,0x00,0x00,0x03,0xFF,0x00,0x00,0x0F,0xE0,0x00,0x0F,0xF2,0x00,0x00,0x07,0xFE,0x00,0x1F,0x80,0x00,0x00,0x00,0x7F,0x80,0x3C,0x00,0x00,0x00,0x00,0x03,0x80,0x7C,0x00,0x00,0x00,0x00,0x03,0xC0,0x70,0x00,0x00,0x00,0x00,0x01,0xC0,0x70,0x00,0x00,0x00,0x00,0x01,0xC0,0x78,0x00,0x00,0x00,0x00,0x01,0xC0,0x7C,0x00,0x00,0x00,0x00,0x03,0xC0,0x3C,0x00,0x00,0x00,0x00,0x07,0x80,0x3E,0x00,0x00,0x00,0x00,0x3F,0x80,0x0F,0xE1,0xC0,0x00,0x1F,0xFC,0x00,0x03,0xFF,0xFC,0x03,0xFF,0xF0,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,
};#endif

效果






模拟SPI控制方式

模拟SPI通信主要特点是方便移植,任意IO口输出即可。

STM32F103C8T6硬件SPI控制6针/7针0.96寸OLED显示屏相关推荐

  1. 基于STM32F103C8T6的0.96寸OLED显示屏显示数据

    一.了解SPI(串行外设接口) SPI全称是Serial Perripheral Interface,也就是串行外围设备接口.SPI是Motorola公司推出的一种同步串行接口技术,是一种高速,全双工 ...

  2. 【手把手带你用pid算法控制电机】——(1)编码器电机和0.96寸OLED显示屏的使用

    目录 前言 一.需要用到的器材 二.接线说明 三.cubmx配置 3.1 时钟树 3.2 输出PWM(TIM4) 3.3 编码器模式(TIM3) 3.4 中断定时器配置(TIM1) 3.5 配置IIC ...

  3. STM32F103C8T6 0.96寸 OLED显示屏 IIC(CubeMx生成 HAL库)

    STM32F103C8T6 0.96寸 OLED显示屏 IIC(CubeMx生成 HAL库 文章目录 STM32F103C8T6 0.96寸 OLED显示屏 IIC(CubeMx生成 HAL库 一.O ...

  4. STM32 7针0.96寸OLED显示屏(硬件SPI+DMA)无需内核响应 超高刷新率!

    芯片:STM32f103c8t6 f103型号大同小异,其他芯片请根据情况修改接口和配置 使用的是7针的0.96寸OLED屏幕,黑白两色显示 以下是实物图 一.原理: 首先你要了解STM32上的AFI ...

  5. STM32F103C8T6模拟IIC控制4针0.96寸OLED显示屏

    OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD).OLE ...

  6. 【STM32】0.96寸OLED显示屏(7针SPI协议)软件模拟SPI

    Author:AXYZdong 自动化专业 工科男 有一点思考,有一点想法,有一点理性 [自制展示]2020鼠年大吉 文章目录 概述 3.1硬件设计 3.2软件设计 3.2.1编程要点 3.2.2代码 ...

  7. STM32驱动代码:STM32F4驱动7针0.96寸OLED显示字符、汉字

    STM32F4驱动7针0.96寸OLED显示字符.汉字 适用于stm32f1.stm32f4移植 工程资料链接:STM32F4驱动7针0.96寸OLED.rar 一. 代码效果 二.硬件准备 1.准备 ...

  8. 基于 SPI 协议的0.96 寸OLED显示

    目录 一. SPI 协议 1.简介 2.SPI的连接方式 3.通信过程​ 二.OLED 1.OLED原理 2.点阵编码原理与显示 三.OLED显示实验 Demo 程序 1.要求 2. OLED 显示汉 ...

  9. 基于stm32f103c8t6的电子温度计(0.96寸oled显示温度,测温用的是ds18b20传感器,可以设置温度范围,超出范围报警)小白学习记录

    1.电路图 2.实物图 3.材料简单:stm32f103c8t6一个,0.96寸oled显示屏一个,ds18b20一个,四个按键,一个蜂鸣器,usb转ttl一个(烧录用),还有面包板,杜邦线这些. 4 ...

最新文章

  1. Linux_RHEL_设置网络
  2. 唐筛的准确率这么低为什么还要做_【NT 唐筛 四维】 【唐筛结果通知】...
  3. vscode could not establish connection to linux The VS Code Server failed to start
  4. 那些上海滩的金融传奇,或许都开始于一份PPT
  5. Golang配置文件解析-oozgconf
  6. 老板喜欢动脑子工作的人
  7. PyCharm远程链接矩池云
  8. 数学建模评价类模型——模糊综合评价
  9. 谷歌浏览器访问接口无返回
  10. 基于Python的指数基金量化投资——估值数据的直接获取
  11. 目标检测概述-VOC COCO数据集 IOU AP NMS
  12. java输出hello word,新手求教如何输出helloword
  13. Python学习记录——英文名修改成标准格式
  14. Excel - 如何在 Excel 表格的一个单元格内换行?
  15. 最新论文笔记(+11):Privacy-Preserving Searchable Encryption Framework for Permissioned Blockchain Networks
  16. 损失函数-交叉熵的推导和二分类交叉熵
  17. BT3amp;spoonwep无线破解与Q3amp;spoonwep无线破解哪个容易
  18. C++判断点是否在圆上
  19. 计算机链接投影蓝屏,日立投影仪蓝屏原因及解决方法
  20. 由于计算机主板的闪烁存储器中固化了,(大学信息技术题型整理.doc

热门文章

  1. 学习全栈在线教育实战项目(尚硅谷) 第一天
  2. iOS之nib、xib及storyboard的区别
  3. bnu 33970 Ears Cutting
  4. 自动化测试在美团外卖的实践与落地
  5. vue中通过自定义指令将汉字转化为首字母大写、首字母小写、大写、小写的拼音
  6. 【三维目标检测】VoxelNet(三):模型详解
  7. 用 MAX7219 点亮 8*8点阵显示屏(倒不如说是 8*8 LED模块)
  8. cad序列号2016申请号_安装 CAD 踩坑
  9. C陷阱与缺陷--笔记
  10. Spark SQL函数总结