• GD32F303固件库开发(14)----IIC之配置OLED


    概述

    本章配置GD32F303使用IIC进行驱动SSD1306的12864OLED。
    查阅手册可以得知,PB10、PB11为I2C的接口。
    需要GD样片的可以加群申请:615061293 。

    在这里插入图片描述

    在这里插入图片描述

    视频教学

    https://www.bilibili.com/video/BV1od4y1u7t7/

    GD32F303固件库开发(14)----IIC之配置OLED

    csdn课程

    课程更加详细。
    https://download.csdn.net/course/detail/37144

    样品申请

    https://www.wjx.top/vm/wFGhGPF.aspx#

    参考文档

    GD官方文档GD32F30x_Firmware_Library_V2.1.4下面IIC的Master_transmitter&slave_receiver

    时钟使能

    /*!
        \brief      enable the peripheral clock
        \param[in]  none
        \param[out] none
        \retval     none
    */
    void rcu_config(void)
    {
        /* enable GPIOB clock */
        rcu_periph_clock_enable(RCU_GPIOB);
        /* enable I2C1 clock */
        rcu_periph_clock_enable(RCU_I2C1);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    初始化IO

    /*!
        \brief      cofigure the GPIO ports
        \param[in]  none
        \param[out] none
        \retval     none
    */
    void gpio_config(void)
    {
    
        /* connect PB10 to I2C1_SCL */
        /* connect PB11 to I2C1_SDA */
        gpio_init(GPIOB, GPIO_MODE_AF_OD, GPIO_OSPEED_50MHZ,  GPIO_PIN_10 | GPIO_PIN_11);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    IIC初始化

    /*!
        \brief      cofigure the I2C0 and I2C1 interfaces
        \param[in]  none
        \param[out] none
        \retval     none
    */
    void i2c_config(void)
    {
    
        i2c_clock_config(I2C1, 100000, I2C_DTCY_2);
        /* I2C address configure */
        i2c_mode_addr_config(I2C1, I2C_I2CMODE_ENABLE, I2C_ADDFORMAT_7BITS, 0x78);
        /* enable I2C1 */
        i2c_enable(I2C1);
        /* enable acknowledge */
        i2c_ack_config(I2C1, I2C_ACK_ENABLE);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    配置IIC接口

    /*!
        \brief      cofigure the  I2C1 interfaces
        \param[in]  none
        \param[out] none
        \retval     none
    */
    void i2c_config(void)
    {
    
        /* configure I2C1 clock */
        i2c_clock_config(I2C1, 100000, I2C_DTCY_2);
        /* configure I2C1 address */
        i2c_mode_addr_config(I2C1, I2C_I2CMODE_ENABLE, I2C_ADDFORMAT_7BITS, 0x78);
        /* enable I2C1 */
        i2c_enable(I2C1);
        /* enable acknowledge */
        i2c_ack_config(I2C1, I2C_ACK_ENABLE);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    修改IIC发送代码

    将Master_transmitter&slave_receiver的IIC发送代码进行修改

    在这里插入图片描述

    /**
      * @brief I2C1写函数
      * @param addr设备地址
      * @param pdata 数据指针
      * @param data_length 数据长度
      */
    void i2c_write(uint8_t addr, uint8_t *pdata, uint32_t data_length)
    {
        uint32_t i;
        
        /* wait until I2C bus is idle */
        while(i2c_flag_get(I2C1, I2C_FLAG_I2CBSY));//等待总线空闲
        /* send a start condition to I2C bus */
        i2c_start_on_bus(I2C1);//发送start信号
        /* wait until SBSEND bit is set */
        while(!i2c_flag_get(I2C1, I2C_FLAG_SBSEND));    //起始位是否发送
        /* send slave address to I2C bus */
        i2c_master_addressing(I2C1, addr, I2C_TRANSMITTER);//设置从机地址和执行发送操作
        /* wait until ADDSEND bit is set */
        while(!i2c_flag_get(I2C1, I2C_FLAG_ADDSEND));//主机模式下地址是否发送
        /* clear ADDSEND bit */
        i2c_flag_clear(I2C1, I2C_FLAG_ADDSEND);//清除标志位主机模式下地址是否发送
        /* wait until the transmit data buffer is empty */
        while(!i2c_flag_get(I2C1, I2C_FLAG_TBE));//发送期间I2C_DATA为空
        for(i = 0; i < data_length; i++){
            /* data transmission */
            i2c_data_transmit(I2C1, pdata[i]);//发送数据
            /* wait until the TBE bit is set */
            while(!i2c_flag_get(I2C1, I2C_FLAG_TBE));//发送期间I2C_DATA为空
        }
        /* send a stop condition to I2C bus */
        i2c_stop_on_bus(I2C1);//在I2C总线上生成停止位
        /* wait until stop condition generate */ 
        while(I2C_CTL0(I2C1)&0x0200);  //等待直到停止条件生成  
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    OLED

    查看文档可以知道地址为b0111100或者b0111101,当R/W位置写0的时候,才能进行写的操作,那么地址默认为0x78(b01111000)或者0x7A(b01111010)
    在这里插入图片描述

    参考程序

    这里使用0.96OLED显示屏_STM32F103C8_IIC_V1.0来进行移植
    在这里插入图片描述
    在这里插入图片描述
    查看工程可以知道主要是有3个文件来进行OLED的驱动,移入OLE.h .c 、oledfont.h 、 bmp.h
    移入文件之后要注意导入C文件。
    在这里插入图片描述
    记得添加路径。
    在这里插入图片描述
    删除没有用的头文件
    删除sys.h文件
    在这里插入图片描述
    删除delay.h文件
    在这里插入图片描述

    可以查看stdint.h

    在这里插入图片描述
    在oled.h中添加u8 u32定义 也可以直接修改

    typedef unsigned          char u8;
    typedef unsigned           int u32;
    
    • 1
    • 2

    在这里插入图片描述
    先把oled.h添加主程序中。
    在这里插入图片描述

    查看oled.h,可以看到IIC定义,同时也是模拟IIC,可以注释掉
    在这里插入图片描述
    查看oled.c,可以看到是模拟iic,这些都可以注释不要,我们使用的是iIC,不是模拟。
    在这里插入图片描述
    将IIC写放入oled.c中。
    记得导入#include "gd32f30x_i2c.h"头文件
    在这里插入图片描述

    记得在oled.h中申明
    要使用uint8和uint32,导入头文件#include “stdint.h”

    在这里插入图片描述
    IIC写一个字节可以修改为如下所示。
    在这里插入图片描述

    /**********************************************
    // IIC Write byte
    **********************************************/
    
    void Write_IIC_Byte(unsigned char IIC_Byte)
    {
    //	unsigned char i;
    //	unsigned char m,da;
    //	da=IIC_Byte;
    //	OLED_SCLK_Clr();
    //	for(i=0;i<8;i++)		
    //	{
    //			m=da;
    //		//	OLED_SCLK_Clr();
    //		m=m&0x80;
    //		if(m==0x80)
    //		{OLED_SDIN_Set();}
    //		else OLED_SDIN_Clr();
    //			da=da<<1;
    //		OLED_SCLK_Set();
    //		OLED_SCLK_Clr();
    //		}
    
    uint8_t byte[1] = {};	
    byte[0]=IIC_Byte;
    i2c_write(0x78,byte, 1);			
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    IIC写指令
    向0x78设备写命令0x00的IIC_Command指令。
    在这里插入图片描述

    /**********************************************
    // IIC Write Command
    **********************************************/
    void Write_IIC_Command(unsigned char IIC_Command)
    {
    //   IIC_Start();
    //   Write_IIC_Byte(0x78);            //Slave address,SA0=0
    //	IIC_Wait_Ack();	
    //   Write_IIC_Byte(0x00);			//write command
    //	IIC_Wait_Ack();	
    //   Write_IIC_Byte(IIC_Command); 
    //	IIC_Wait_Ack();	
    //   IIC_Stop();
    	
    	
    	uint8_t byte[2] = {};	
    	byte[0]	=0x00;
    	byte[1]	=IIC_Command;	
    	i2c_write(0x78,byte, 2);				
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    IIC写数据
    向0x78设备写数据0x40的IIC_Data指令。
    在这里插入图片描述

    /**********************************************
    // IIC Write Data
    **********************************************/
    void Write_IIC_Data(unsigned char IIC_Data)
    {
    //   IIC_Start();
    //   Write_IIC_Byte(0x78);			//D/C#=0; R/W#=0
    //	IIC_Wait_Ack();	
    //   Write_IIC_Byte(0x40);			//write data
    //	IIC_Wait_Ack();	
    //   Write_IIC_Byte(IIC_Data);
    //	IIC_Wait_Ack();	
    //   IIC_Stop();
    	
    	
    	uint8_t byte[2] = {};	
    	byte[0]	=0x40;
    	byte[1]	=IIC_Data;	
    	i2c_write(0x78,byte, 2);		
    	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在oled.c中,OLED_Init初始化可以注释掉gpio初始化
    在这里插入图片描述

    在oled.c中,OLED_Init初始化中有个延时800ms。
    导入
    #include “systick.h”
    可以使用delay_1ms(800);
    在这里插入图片描述

    取模

    在这里插入图片描述
    在这里插入图片描述

    在oledfont.h中放入字库
    在这里插入图片描述

    char Hzk[][32]={
    
    // 记(0) 帖(1) 年(2) 月(3) 日(4)
    
    {0x40,0x40,0x42,0xCC,0x00,0x00,0x00,0x84,0x84,0x84,0x84,0x84,0xFC,0x00,0x00,0x00},
    {0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0x3F,0x40,0x40,0x40,0x40,0x41,0x40,0x70,0x00},/*"记",0*/
    /* (16 X 16 , 宋体 )*/
    
    {0x00,0xF8,0x08,0xFF,0x08,0xF8,0x00,0x00,0x00,0x00,0xFF,0x10,0x10,0x10,0x10,0x00},
    {0x00,0x0F,0x00,0xFF,0x08,0x0F,0x00,0xFF,0x41,0x41,0x41,0x41,0x41,0xFF,0x00,0x00},/*"帖",1*/
    /* (16 X 16 , 宋体 )*/
    
    {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},/*"年",2*/
    /* (16 X 16 , 宋体 )*/
    
    {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},/*"月",3*/
    /* (16 X 16 , 宋体 )*/
    
    {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},/*"日",4*/
    /* (16 X 16 , 宋体 )*/
    
    
    
    
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    在main.c中添加显示

    			OLED_Init();			//初始化OLED  
    		OLED_Clear()  	; 
    		OLED_ShowCHinese(0,0,0);//记
    		OLED_ShowCHinese(16,0,1);//帖
    		
    		
    		OLED_ShowNum(0,2,2022,4,16);//显示ASCII字符的码值 			
    		OLED_ShowCHinese(32,2,2);//年	
    		OLED_ShowNum(48,2,9,1,16);//显示ASCII字符的码值 		
    		OLED_ShowCHinese(64,2,3);//月
    		OLED_ShowNum(80,2,10,2,16);//显示ASCII字符的码值 				
    		OLED_ShowCHinese(96,2,4);//日	
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    字体大小只有2个
    在这里插入图片描述

    显示字符

    OLED_ShowString(40,2,"ZXY",8);  
    
    • 1

    在这里插入图片描述

    图片

    在这里插入图片描述
    图片放在bmp.h中。

    #ifndef __BMP_H
    #define __BMP_H		
    
    unsigned char BMP1[]={
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x1F,0x1F,0x7F,0xFF,0xFF,
    0xFF,0xFF,0xFF,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x0F,0x0F,
    0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,
    0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC7,0xC7,0xC7,0xC4,0x04,0x04,0x04,0x07,0xFF,
    0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x80,0x80,
    0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE3,0xE3,0xE3,0xE3,0xE3,0xE3,
    0xE3,0xE3,0xE3,0xE3,0xE3,0xE3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x1F,
    0x1F,0x1F,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8F,0x8F,0x8F,
    0x8F,0x8F,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,
    0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x06,0x06,0x07,0x0F,
    0xFF,0xFF,0xFF,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0x00,0x00,
    0x00,0x00,0xF8,0xF8,0xF8,0xF8,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
    0x00,0xC7,0xC7,0xC7,0xC7,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
    0xFF,0x00,0x00,0x00,0xFF,0xFF,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
    0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x03,0x03,0x03,0xE3,0xE0,0xE0,0xE0,
    0xE0,0xE3,0xE3,0x03,0x03,0x03,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,
    0xFF,0xF0,0xF0,0xF0,0xFF,0xFF,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,
    0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF1,0xF1,0xF1,0xF1,
    0xF1,0xF1,0xF1,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*"D:\GD32F303\GD32F30x_Firmware_Library_V2.1.4_iic_oled\记帖.bmp",0*/
    /* (64 X 64 )*/
    
    };
    
    
    #endif  
    	 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    显示图片

    		delay_1ms(2000);
    		OLED_Clear();  	
    		OLED_DrawBMP(0,0,64,8,BMP1);  //图片显示(图片显示慎用,生成的字表较大,会占用较多空间,FLASH空间8K以下慎用)
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    OLED.C

    //	 
    //本程序只供学习使用,未经作者许可,不得用于其它任何用途
    //记帖Q群:615061293
    //B站视频:https://space.bilibili.com/26152390
    //CSDN:https://blog.csdn.net/qq_24312945/
    //  文 件 名   : main.c
    //  版 本 号   : v2.0
    //  作    者   : Evk123
    //  生成日期   : 2014-0101
    //  最近修改   : 
    //  功能描述   : 0.69寸OLED 接口演示例程(STM32F103ZE系列IIC)
    //              说明: 
    //              ----------------------------------------------------------------
    //              GND   电源地
    //              VCC   接5V或3.3v电源
    //              SCL   接PA5(SCL)
    //              SDA   接PA7(SDA)            
    //              ----------------------------------------------------------------
    //记帖Q群:615061293
    //All rights reserved
    //
    #include "oled.h"
    #include "stdlib.h"
    #include "oledfont.h"  	 
    
    #include "gd32f30x_i2c.h"
    #include "systick.h"
    //#include "delay.h"
    //OLED的显存
    //存放格式如下.
    //[0]0 1 2 3 ... 127	
    //[1]0 1 2 3 ... 127	
    //[2]0 1 2 3 ... 127	
    //[3]0 1 2 3 ... 127	
    //[4]0 1 2 3 ... 127	
    //[5]0 1 2 3 ... 127	
    //[6]0 1 2 3 ... 127	
    //[7]0 1 2 3 ... 127 			   
    /**********************************************
    //IIC Start
    **********************************************/
    /**********************************************
    //IIC Start
    **********************************************/
    //void IIC_Start()
    //{
    
    //	OLED_SCLK_Set() ;
    //	OLED_SDIN_Set();
    //	OLED_SDIN_Clr();
    //	OLED_SCLK_Clr();
    //}
    
    ///**********************************************
    IIC Stop
    //**********************************************/
    //void IIC_Stop()
    //{
    //OLED_SCLK_Set() ;
    	OLED_SCLK_Clr();
    //	OLED_SDIN_Clr();
    //	OLED_SDIN_Set();
    //	
    //}
    
    //void IIC_Wait_Ack()
    //{
    
    //	//GPIOB->CRH &= 0XFFF0FFFF;	//设置PB12为上拉输入模式
    //	//GPIOB->CRH |= 0x00080000;
    	OLED_SDA = 1;
    	delay_us(1);
    //	//OLED_SCL = 1;
    //	//delay_us(50000);
    ///*	while(1)
    //	{
    //		if(!OLED_SDA)				//判断是否接收到OLED 应答信号
    //		{
    //			//GPIOB->CRH &= 0XFFF0FFFF;	//设置PB12为通用推免输出模式
    //			//GPIOB->CRH |= 0x00030000;
    //			return;
    //		}
    //	}
    //*/
    //	OLED_SCLK_Set() ;
    //	OLED_SCLK_Clr();
    //}
    
    
    
    
    
    /**
      * @brief I2C1写函数
      * @param addr设备地址
      * @param pdata 数据指针
      * @param data_length 数据长度
      */
    void i2c_write(uint8_t addr, uint8_t *pdata, uint32_t data_length)
    {
        uint32_t i;
        
        /* wait until I2C bus is idle */
        while(i2c_flag_get(I2C1, I2C_FLAG_I2CBSY));//等待总线空闲
        /* send a start condition to I2C bus */
        i2c_start_on_bus(I2C1);//发送start信号
        /* wait until SBSEND bit is set */
        while(!i2c_flag_get(I2C1, I2C_FLAG_SBSEND));    //起始位是否发送
        /* send slave address to I2C bus */
        i2c_master_addressing(I2C1, addr, I2C_TRANSMITTER);//设置从机地址和执行发送操作
        /* wait until ADDSEND bit is set */
        while(!i2c_flag_get(I2C1, I2C_FLAG_ADDSEND));//主机模式下地址是否发送
        /* clear ADDSEND bit */
        i2c_flag_clear(I2C1, I2C_FLAG_ADDSEND);//清除标志位主机模式下地址是否发送
        /* wait until the transmit data buffer is empty */
        while(!i2c_flag_get(I2C1, I2C_FLAG_TBE));//发送期间I2C_DATA为空
        for(i = 0; i < data_length; i++){
            /* data transmission */
            i2c_data_transmit(I2C1, pdata[i]);//发送数据
            /* wait until the TBE bit is set */
            while(!i2c_flag_get(I2C1, I2C_FLAG_TBE));//发送期间I2C_DATA为空
        }
        /* send a stop condition to I2C bus */
        i2c_stop_on_bus(I2C1);//在I2C总线上生成停止位
        /* wait until stop condition generate */ 
        while(I2C_CTL0(I2C1)&0x0200);  //等待直到停止条件生成  
    }
    
    
    /**********************************************
    // IIC Write byte
    **********************************************/
    
    void Write_IIC_Byte(unsigned char IIC_Byte)
    {
    //	unsigned char i;
    //	unsigned char m,da;
    //	da=IIC_Byte;
    //	OLED_SCLK_Clr();
    //	for(i=0;i<8;i++)		
    //	{
    //			m=da;
    //		//	OLED_SCLK_Clr();
    //		m=m&0x80;
    //		if(m==0x80)
    //		{OLED_SDIN_Set();}
    //		else OLED_SDIN_Clr();
    //			da=da<<1;
    //		OLED_SCLK_Set();
    //		OLED_SCLK_Clr();
    //		}
    
    
    uint8_t byte[1] = {};	
    byte[0]=IIC_Byte;
    i2c_write(0x78,byte, 1);
    
    }
    
    
    
    
    /**********************************************
    // IIC Write Command
    **********************************************/
    void Write_IIC_Command(unsigned char IIC_Command)
    {
    //   IIC_Start();
    //   Write_IIC_Byte(0x78);            //Slave address,SA0=0
    //	IIC_Wait_Ack();	
    //   Write_IIC_Byte(0x00);			//write command
    //	IIC_Wait_Ack();	
    //   Write_IIC_Byte(IIC_Command); 
    //	IIC_Wait_Ack();	
    //   IIC_Stop();
    
    	uint8_t byte[2] = {};	
    	byte[0]	=0x00;
    	byte[1]	=IIC_Command;	
    	i2c_write(0x78,byte, 2);	
    
    
    
    
    }
    /**********************************************
    // IIC Write Data
    **********************************************/
    void Write_IIC_Data(unsigned char IIC_Data)
    {
    //   IIC_Start();
    //   Write_IIC_Byte(0x78);			//D/C#=0; R/W#=0
    //	IIC_Wait_Ack();	
    //   Write_IIC_Byte(0x40);			//write data
    //	IIC_Wait_Ack();	
    //   Write_IIC_Byte(IIC_Data);
    //	IIC_Wait_Ack();	
    //   IIC_Stop();
    //	 
    	 
    	uint8_t byte[2] = {};	
    	byte[0]	=0x40;
    	byte[1]	=IIC_Data;	
    	i2c_write(0x78,byte, 2);		 
    	 
    	 
    }
    void OLED_WR_Byte(unsigned dat,unsigned cmd)
    {
    	if(cmd)
    			{
    
       Write_IIC_Data(dat);
       
    		}
    	else {
       Write_IIC_Command(dat);
    		
    	}
    
    
    }
    
    
    /********************************************
    // fill_Picture
    ********************************************/
    void fill_picture(unsigned char fill_Data)
    {
    	unsigned char m,n;
    	for(m=0;m<8;m++)
    	{
    		OLED_WR_Byte(0xb0+m,0);		//page0-page1
    		OLED_WR_Byte(0x00,0);		//low column start address
    		OLED_WR_Byte(0x10,0);		//high column start address
    		for(n=0;n<128;n++)
    			{
    				OLED_WR_Byte(fill_Data,1);
    			}
    	}
    }
    
    
    /***********************Delay****************************************/
    void Delay_50ms(unsigned int Del_50ms)
    {
    	unsigned int m;
    	for(;Del_50ms>0;Del_50ms--)
    		for(m=6245;m>0;m--);
    }
    
    void Delay_1ms(unsigned int Del_1ms)
    {
    	unsigned char j;
    	while(Del_1ms--)
    	{	
    		for(j=0;j<123;j++);
    	}
    }
    
    //坐标设置
    
    	void OLED_Set_Pos(unsigned char x, unsigned char y) 
    { 	OLED_WR_Byte(0xb0+y,OLED_CMD);
    	OLED_WR_Byte(((x&0xf0)>>4)|0x10,OLED_CMD);
    	OLED_WR_Byte((x&0x0f),OLED_CMD); 
    }   	  
    //开启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显示     
    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
    }		   			 
    //清屏函数,清完屏,整个屏幕是黑色的!和没点亮一样!!!	  
    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(0,OLED_DATA); 
    	} //更新显示
    }
    void OLED_On(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(1,OLED_DATA); 
    	} //更新显示
    }
    //在指定位置显示一个字符,包括部分字符
    //x:0~127
    //y:0~63
    //mode:0,反白显示;1,正常显示				 
    //size:选择字体 16/12 
    void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 Char_Size)
    {      	
    	unsigned char c=0,i=0;	
    		c=chr-' ';//得到偏移后的值			
    		if(x>Max_Column-1){x=0;y=y+2;}
    		if(Char_Size ==16)
    			{
    			OLED_Set_Pos(x,y);	
    			for(i=0;i<8;i++)
    			OLED_WR_Byte(F8X16[c*16+i],OLED_DATA);
    			OLED_Set_Pos(x,y+1);
    			for(i=0;i<8;i++)
    			OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA);
    			}
    			else {	
    				OLED_Set_Pos(x,y);
    				for(i=0;i<6;i++)
    				OLED_WR_Byte(F6x8[c][i],OLED_DATA);
    				
    			}
    }
    //m^n函数
    u32 oled_pow(u8 m,u8 n)
    {
    	u32 result=1;	 
    	while(n--)result*=m;    
    	return result;
    }				  
    //显示2个数字
    //x,y :起点坐标	 
    //len :数字的位数
    //size:字体大小
    //mode:模式	0,填充模式;1,叠加模式
    //num:数值(0~4294967295);	 		  
    void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size2)
    {         	
    	u8 t,temp;
    	u8 enshow=0;						   
    	for(t=0;t<len;t++)
    	{
    		temp=(num/oled_pow(10,len-t-1))%10;
    		if(enshow==0&&t<(len-1))
    		{
    			if(temp==0)
    			{
    				OLED_ShowChar(x+(size2/2)*t,y,' ',size2);
    				continue;
    			}else enshow=1; 
    		 	 
    		}
    	 	OLED_ShowChar(x+(size2/2)*t,y,temp+'0',size2); 
    	}
    } 
    //显示一个字符号串
    void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 Char_Size)
    {
    	unsigned char j=0;
    	while (chr[j]!='\0')
    	{		OLED_ShowChar(x,y,chr[j],Char_Size);
    			x+=8;
    		if(x>120){x=0;y+=2;}
    			j++;
    	}
    }
    //显示汉字
    void OLED_ShowCHinese(u8 x,u8 y,u8 no)
    {      			    
    	u8 t,adder=0;
    	OLED_Set_Pos(x,y);	
        for(t=0;t<16;t++)
    		{
    				OLED_WR_Byte(Hzk[2*no][t],OLED_DATA);
    				adder+=1;
         }	
    		OLED_Set_Pos(x,y+1);	
        for(t=0;t<16;t++)
    			{	
    				OLED_WR_Byte(Hzk[2*no+1][t],OLED_DATA);
    				adder+=1;
          }					
    }
    /***********功能描述:显示显示BMP图片128×64起始点坐标(x,y),x的范围0~127,y为页的范围0~7*****************/
    void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[])
    { 	
     unsigned int j=0;
     unsigned char x,y;
      
      if(y1%8==0) y=y1/8;      
      else y=y1/8+1;
    	for(y=y0;y<y1;y++)
    	{
    		OLED_Set_Pos(x0,y);
        for(x=x0;x<x1;x++)
    	    {      
    	    	OLED_WR_Byte(BMP[j++],OLED_DATA);	    	
    	    }
    	}
    } 
    
    //初始化SSD1306					    
    void OLED_Init(void)
    { 	
     
     	 
    
     	 
    // 	GPIO_InitTypeDef  GPIO_InitStructure;
    // 	
    
    //	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	 //使能A端口时钟
    //	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_7;	 
    // 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
    //	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
    // 	GPIO_Init(GPIOA, &GPIO_InitStructure);	  //初始化GPIOD3,6
    // 	GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_7);	
    
    
    //delay_ms(800);
    delay_1ms(800);
    
    
    OLED_WR_Byte(0xAE,OLED_CMD);//--display off
    	OLED_WR_Byte(0x00,OLED_CMD);//---set low column address
    	OLED_WR_Byte(0x10,OLED_CMD);//---set high column address
    	OLED_WR_Byte(0x40,OLED_CMD);//--set start line address  
    	OLED_WR_Byte(0xB0,OLED_CMD);//--set page address
    	OLED_WR_Byte(0x81,OLED_CMD); // contract control
    	OLED_WR_Byte(0xFF,OLED_CMD);//--128   
    	OLED_WR_Byte(0xA1,OLED_CMD);//set segment remap 
    	OLED_WR_Byte(0xA6,OLED_CMD);//--normal / reverse
    	OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
    	OLED_WR_Byte(0x3F,OLED_CMD);//--1/32 duty
    	OLED_WR_Byte(0xC8,OLED_CMD);//Com scan direction
    	OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset
    	OLED_WR_Byte(0x00,OLED_CMD);//
    	
    	OLED_WR_Byte(0xD5,OLED_CMD);//set osc division
    	OLED_WR_Byte(0x80,OLED_CMD);//
    	
    	OLED_WR_Byte(0xD8,OLED_CMD);//set area color mode off
    	OLED_WR_Byte(0x05,OLED_CMD);//
    	
    	OLED_WR_Byte(0xD9,OLED_CMD);//Set Pre-Charge Period
    	OLED_WR_Byte(0xF1,OLED_CMD);//
    	
    	OLED_WR_Byte(0xDA,OLED_CMD);//set com pin configuartion
    	OLED_WR_Byte(0x12,OLED_CMD);//
    	
    	OLED_WR_Byte(0xDB,OLED_CMD);//set Vcomh
    	OLED_WR_Byte(0x30,OLED_CMD);//
    	
    	OLED_WR_Byte(0x8D,OLED_CMD);//set charge pump enable
    	OLED_WR_Byte(0x14,OLED_CMD);//
    	
    	OLED_WR_Byte(0xAF,OLED_CMD);//--turn on oled panel
    }  
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259
    • 260
    • 261
    • 262
    • 263
    • 264
    • 265
    • 266
    • 267
    • 268
    • 269
    • 270
    • 271
    • 272
    • 273
    • 274
    • 275
    • 276
    • 277
    • 278
    • 279
    • 280
    • 281
    • 282
    • 283
    • 284
    • 285
    • 286
    • 287
    • 288
    • 289
    • 290
    • 291
    • 292
    • 293
    • 294
    • 295
    • 296
    • 297
    • 298
    • 299
    • 300
    • 301
    • 302
    • 303
    • 304
    • 305
    • 306
    • 307
    • 308
    • 309
    • 310
    • 311
    • 312
    • 313
    • 314
    • 315
    • 316
    • 317
    • 318
    • 319
    • 320
    • 321
    • 322
    • 323
    • 324
    • 325
    • 326
    • 327
    • 328
    • 329
    • 330
    • 331
    • 332
    • 333
    • 334
    • 335
    • 336
    • 337
    • 338
    • 339
    • 340
    • 341
    • 342
    • 343
    • 344
    • 345
    • 346
    • 347
    • 348
    • 349
    • 350
    • 351
    • 352
    • 353
    • 354
    • 355
    • 356
    • 357
    • 358
    • 359
    • 360
    • 361
    • 362
    • 363
    • 364
    • 365
    • 366
    • 367
    • 368
    • 369
    • 370
    • 371
    • 372
    • 373
    • 374
    • 375
    • 376
    • 377
    • 378
    • 379
    • 380
    • 381
    • 382
    • 383
    • 384
    • 385
    • 386
    • 387
    • 388
    • 389
    • 390
    • 391
    • 392
    • 393
    • 394
    • 395
    • 396
    • 397
    • 398
    • 399
    • 400
    • 401
    • 402
    • 403
    • 404
    • 405
    • 406
    • 407
    • 408
    • 409
    • 410
    • 411
    • 412
    • 413
    • 414
    • 415
    • 416
    • 417
    • 418
    • 419
    • 420
    • 421
    • 422
    • 423
    • 424
    • 425
    • 426
    • 427
    • 428
    • 429
    • 430
    • 431
    • 432
    • 433
    • 434
    • 435
    • 436
    • 437
    • 438
    • 439
    • 440
    • 441
    • 442
    • 443
    • 444
    • 445
    • 446
    • 447
    • 448
    • 449
    • 450
    • 451
    • 452
    • 453
    • 454
    • 455
    • 456
    • 457
    • 458
    • 459
    • 460
    • 461
    • 462
    • 463
    • 464
    • 465
    • 466
    • 467

    OLED.h

    //	 
    //本程序只供学习使用,未经作者许可,不得用于其它任何用途
    
    //
    //  文 件 名   : main.c
    //  版 本 号   : v2.0
    //  作    者   : Evk123
    //  生成日期   : 2014-0101
    //  最近修改   : 
    //  功能描述   : 0.69寸OLED 接口演示例程(STM32F103ZE系列IIC)
    //              说明: 
    //              ----------------------------------------------------------------
    //              GND   电源地
    //              VCC   接5V或3.3v电源
    //              SCL   接PA5(SCL)
    //              SDA   接PA7(SDA)            
    //              ----------------------------------------------------------------
    //记帖Q群:615061293
    //B站视频:https://space.bilibili.com/26152390
    //CSDN:https://blog.csdn.net/qq_24312945/
    //All rights reserved
    //
    #ifndef __OLED_H
    #define __OLED_H			  	 
    //#include "sys.h"
    #include "stdlib.h"	 
    #include "stdint.h"	
       	
    #define OLED_MODE 0
    #define SIZE 8
    #define XLevelL		0x00
    #define XLevelH		0x10
    #define Max_Column	128
    #define Max_Row		64
    #define	Brightness	0xFF 
    #define X_WIDTH 	128
    #define Y_WIDTH 	64	  
    
    
    
    
      						  
    //-----------------OLED IIC端口定义----------------  					   
    
    //#define OLED_SCLK_Clr() GPIO_ResetBits(GPIOA,GPIO_Pin_5)//SCL
    //#define OLED_SCLK_Set() GPIO_SetBits(GPIOA,GPIO_Pin_5)
    
    //#define OLED_SDIN_Clr() GPIO_ResetBits(GPIOA,GPIO_Pin_7)//SDA
    //#define OLED_SDIN_Set() GPIO_SetBits(GPIOA,GPIO_Pin_7)
    
     		     
    #define OLED_CMD  0	//写命令
    #define OLED_DATA 1	//写数据
    
    
    typedef unsigned          char u8;
    typedef unsigned           int u32;
    
    //OLED控制用函数
    void OLED_WR_Byte(unsigned dat,unsigned cmd);  
    void OLED_Display_On(void);
    void OLED_Display_Off(void);	   							   		    
    void OLED_Init(void);
    void OLED_Clear(void);
    void OLED_DrawPoint(u8 x,u8 y,u8 t);
    void OLED_Fill(u8 x1,u8 y1,u8 x2,u8 y2,u8 dot);
    void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 Char_Size);
    void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size);
    void OLED_ShowString(u8 x,u8 y, u8 *p,u8 Char_Size);	 
    void OLED_Set_Pos(unsigned char x, unsigned char y);
    void OLED_ShowCHinese(u8 x,u8 y,u8 no);
    void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[]);
    void Delay_50ms(unsigned int Del_50ms);
    void Delay_1ms(unsigned int Del_1ms);
    void fill_picture(unsigned char fill_Data);
    //void Picture();
    //void IIC_Start();
    //void IIC_Stop();
    void Write_IIC_Command(unsigned char IIC_Command);
    void Write_IIC_Data(unsigned char IIC_Data);
    void Write_IIC_Byte(unsigned char IIC_Byte);
    
    //void IIC_Wait_Ack();
    
    
    
    
    void i2c_write(uint8_t addr, uint8_t *pdata, uint32_t data_length);
    
    #endif  
    	 
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95

    OLEDFONT.H

    #ifndef __OLEDFONT_H
    #define __OLEDFONT_H 	   
    //常用ASCII表
    //偏移量32
    //ASCII字符集
    //偏移量32
    //大小:12*6
    /************************************6*8的点阵************************************/
    const unsigned char F6x8[][6] =		
    {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// sp
    0x00, 0x00, 0x00, 0x2f, 0x00, 0x00,// !
    0x00, 0x00, 0x07, 0x00, 0x07, 0x00,// "
    0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14,// #
    0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12,// $
    0x00, 0x62, 0x64, 0x08, 0x13, 0x23,// %
    0x00, 0x36, 0x49, 0x55, 0x22, 0x50,// &
    0x00, 0x00, 0x05, 0x03, 0x00, 0x00,// '
    0x00, 0x00, 0x1c, 0x22, 0x41, 0x00,// (
    0x00, 0x00, 0x41, 0x22, 0x1c, 0x00,// )
    0x00, 0x14, 0x08, 0x3E, 0x08, 0x14,// *
    0x00, 0x08, 0x08, 0x3E, 0x08, 0x08,// +
    0x00, 0x00, 0x00, 0xA0, 0x60, 0x00,// ,
    0x00, 0x08, 0x08, 0x08, 0x08, 0x08,// -
    0x00, 0x00, 0x60, 0x60, 0x00, 0x00,// .
    0x00, 0x20, 0x10, 0x08, 0x04, 0x02,// /
    0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
    0x00, 0x00, 0x42, 0x7F, 0x40, 0x00,// 1
    0x00, 0x42, 0x61, 0x51, 0x49, 0x46,// 2
    0x00, 0x21, 0x41, 0x45, 0x4B, 0x31,// 3
    0x00, 0x18, 0x14, 0x12, 0x7F, 0x10,// 4
    0x00, 0x27, 0x45, 0x45, 0x45, 0x39,// 5
    0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
    0x00, 0x01, 0x71, 0x09, 0x05, 0x03,// 7
    0x00, 0x36, 0x49, 0x49, 0x49, 0x36,// 8
    0x00, 0x06, 0x49, 0x49, 0x29, 0x1E,// 9
    0x00, 0x00, 0x36, 0x36, 0x00, 0x00,// :
    0x00, 0x00, 0x56, 0x36, 0x00, 0x00,// ;
    0x00, 0x08, 0x14, 0x22, 0x41, 0x00,// <
    0x00, 0x14, 0x14, 0x14, 0x14, 0x14,// =
    0x00, 0x00, 0x41, 0x22, 0x14, 0x08,// >
    0x00, 0x02, 0x01, 0x51, 0x09, 0x06,// ?
    0x00, 0x32, 0x49, 0x59, 0x51, 0x3E,// @
    0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C,// A
    0x00, 0x7F, 0x49, 0x49, 0x49, 0x36,// B
    0x00, 0x3E, 0x41, 0x41, 0x41, 0x22,// C
    0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C,// D
    0x00, 0x7F, 0x49, 0x49, 0x49, 0x41,// E
    0x00, 0x7F, 0x09, 0x09, 0x09, 0x01,// F
    0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A,// G
    0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F,// H
    0x00, 0x00, 0x41, 0x7F, 0x41, 0x00,// I
    0x00, 0x20, 0x40, 0x41, 0x3F, 0x01,// J
    0x00, 0x7F, 0x08, 0x14, 0x22, 0x41,// K
    0x00, 0x7F, 0x40, 0x40, 0x40, 0x40,// L
    0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F,// M
    0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F,// N
    0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E,// O
    0x00, 0x7F, 0x09, 0x09, 0x09, 0x06,// P
    0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
    0x00, 0x7F, 0x09, 0x19, 0x29, 0x46,// R
    0x00, 0x46, 0x49, 0x49, 0x49, 0x31,// S
    0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,// T
    0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F,// U
    0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F,// V
    0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F,// W
    0x00, 0x63, 0x14, 0x08, 0x14, 0x63,// X
    0x00, 0x07, 0x08, 0x70, 0x08, 0x07,// Y
    0x00, 0x61, 0x51, 0x49, 0x45, 0x43,// Z
    0x00, 0x00, 0x7F, 0x41, 0x41, 0x00,// [
    0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55,// 55
    0x00, 0x00, 0x41, 0x41, 0x7F, 0x00,// ]
    0x00, 0x04, 0x02, 0x01, 0x02, 0x04,// ^
    0x00, 0x40, 0x40, 0x40, 0x40, 0x40,// _
    0x00, 0x00, 0x01, 0x02, 0x04, 0x00,// '
    0x00, 0x20, 0x54, 0x54, 0x54, 0x78,// a
    0x00, 0x7F, 0x48, 0x44, 0x44, 0x38,// b
    0x00, 0x38, 0x44, 0x44, 0x44, 0x20,// c
    0x00, 0x38, 0x44, 0x44, 0x48, 0x7F,// d
    0x00, 0x38, 0x54, 0x54, 0x54, 0x18,// e
    0x00, 0x08, 0x7E, 0x09, 0x01, 0x02,// f
    0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C,// g
    0x00, 0x7F, 0x08, 0x04, 0x04, 0x78,// h
    0x00, 0x00, 0x44, 0x7D, 0x40, 0x00,// i
    0x00, 0x40, 0x80, 0x84, 0x7D, 0x00,// j
    0x00, 0x7F, 0x10, 0x28, 0x44, 0x00,// k
    0x00, 0x00, 0x41, 0x7F, 0x40, 0x00,// l
    0x00, 0x7C, 0x04, 0x18, 0x04, 0x78,// m
    0x00, 0x7C, 0x08, 0x04, 0x04, 0x78,// n
    0x00, 0x38, 0x44, 0x44, 0x44, 0x38,// o
    0x00, 0xFC, 0x24, 0x24, 0x24, 0x18,// p
    0x00, 0x18, 0x24, 0x24, 0x18, 0xFC,// q
    0x00, 0x7C, 0x08, 0x04, 0x04, 0x08,// r
    0x00, 0x48, 0x54, 0x54, 0x54, 0x20,// s
    0x00, 0x04, 0x3F, 0x44, 0x40, 0x20,// t
    0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C,// u
    0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C,// v
    0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C,// w
    0x00, 0x44, 0x28, 0x10, 0x28, 0x44,// x
    0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C,// y
    0x00, 0x44, 0x64, 0x54, 0x4C, 0x44,// z
    0x14, 0x14, 0x14, 0x14, 0x14, 0x14,// horiz lines
    };
    /****************************************8*16的点阵************************************/
    const unsigned char F8X16[]=	  
    {
      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,0x30,0x00,0x00,0x00,//! 1
      0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 2
      0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3
      0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4
      0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5
      0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6
      0x10,0x16,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,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14
      0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15
      0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16
      0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17
      0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18
      0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19
      0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 20
      0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 21
      0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 22
      0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 23
      0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 24
      0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,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,0x80,0x60,0x00,0x00,0x00,0x00,//; 27
      0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 28
      0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 29
      0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 30
      0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31
      0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,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,0x00,0x3F,0x00,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,0x18,0x24,0x24,0x38,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
      0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,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,0x0C,0x30,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,0x02,0x04,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,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65
      0x08,0xF8,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,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68
      0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69
      0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,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
      0x08,0xF8,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
      0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75
      0x00,0x08,0x08,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,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80
      0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,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,0x00,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,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86
      0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87
      0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88
      0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,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,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91
      0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92
      0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93
      0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94
    };
    char Hzk[][32]={
    
    // 记(0) 帖(1) 年(2) 月(3) 日(4)
    
    {0x40,0x40,0x42,0xCC,0x00,0x00,0x00,0x84,0x84,0x84,0x84,0x84,0xFC,0x00,0x00,0x00},
    {0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0x3F,0x40,0x40,0x40,0x40,0x41,0x40,0x70,0x00},/*"记",0*/
    /* (16 X 16 , 宋体 )*/
    
    {0x00,0xF8,0x08,0xFF,0x08,0xF8,0x00,0x00,0x00,0x00,0xFF,0x10,0x10,0x10,0x10,0x00},
    {0x00,0x0F,0x00,0xFF,0x08,0x0F,0x00,0xFF,0x41,0x41,0x41,0x41,0x41,0xFF,0x00,0x00},/*"帖",1*/
    /* (16 X 16 , 宋体 )*/
    
    {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},/*"年",2*/
    /* (16 X 16 , 宋体 )*/
    
    {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},/*"月",3*/
    /* (16 X 16 , 宋体 )*/
    
    {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},/*"日",4*/
    /* (16 X 16 , 宋体 )*/
    
    
    };
    
    #endif
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233

    以上的代码会在Q_qun里分享。QQ_qun:615061293。
    或者关注『记帖』,持续更新文章和学习资料!
    在这里插入图片描述

  • 相关阅读:
    基于JavaSwing开发学生(选课)信息管理系统 大作业 毕业设计项目源码
    微信小程序|使用小程序制作一个核酸检测点查询工具
    企业微信获取第三方应用凭证
    电子技术课设模电模电
    TCP/IP协议网络层
    基于SpringBoot的共享单车管理系统
    Java 后端面试指南
    PMP机构哪家强?这个机构对比测评告诉你!!!
    糖尿病患者应注意避免低血糖现象的出现。
    mysql分表之后怎么平滑上线?
  • 原文地址:https://blog.csdn.net/qq_24312945/article/details/126764514