关于MSPM0G3507的OLED显示模块(7针OLED的显示,可以直接移植,立马用)

        简单说明一下,这个OLED程序也是移植别人的源码,在此基础之上加以修改,主要是修改了OLED的io口,和添加了一个显示负数的功能函数。一下是OLED的显示函数(初始化等等):

oled.c

#include "oled.h"
#include <string.h>
#include <math.h>
#include <stdio.h>
#include <stdarg.h>
#include "key.h"
#include "ti/driverlib/dl_gpio.h"

uint8_t OLED_DisplayBuf[8][128];

/*********************È«¾Ö±äÁ¿*/


/*Òý½ÅÅäÖÃ*********************/

/**
  * º¯    Êý£ºOLEDдD0£¨CLK£©¸ßµÍµçƽ
  * ²Î    Êý£ºÒªÐ´ÈëD0µÄµçƽֵ£¬·¶Î§£º0/1
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ±Éϲ㺯ÊýÐèҪдD0ʱ£¬´Ëº¯Êý»á±»µ÷ÓÃ
  *           Óû§ÐèÒª¸ù¾Ý²ÎÊý´«ÈëµÄÖµ£¬½«D0ÖÃΪ¸ßµçƽ»òÕߵ͵çƽ
  *           µ±²ÎÊý´«Èë0ʱ£¬ÖÃD0ΪµÍµçƽ£¬µ±²ÎÊý´«Èë1ʱ£¬ÖÃD0Ϊ¸ßµçƽ
  */
void OLED_W_D0(uint8_t BitValue)
{
	if(BitValue==1) DL_GPIO_setPins(GPIOA,DL_GPIO_PIN_8);
	if(BitValue==0) DL_GPIO_clearPins(GPIOA,DL_GPIO_PIN_8);
}
/**
  * º¯    Êý£ºOLEDдD1£¨MOSI£©¸ßµÍµçƽ
  * ²Î    Êý£ºÒªÐ´ÈëD1µÄµçƽֵ£¬·¶Î§£º0/1
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ±Éϲ㺯ÊýÐèҪдD1ʱ£¬´Ëº¯Êý»á±»µ÷ÓÃ
  *           Óû§ÐèÒª¸ù¾Ý²ÎÊý´«ÈëµÄÖµ£¬½«D1ÖÃΪ¸ßµçƽ»òÕߵ͵çƽ
  *           µ±²ÎÊý´«Èë0ʱ£¬ÖÃD1ΪµÍµçƽ£¬µ±²ÎÊý´«Èë1ʱ£¬ÖÃD1Ϊ¸ßµçƽ
  */
void OLED_W_D1(uint8_t BitValue)
{	if(BitValue==1) DL_GPIO_setPins(GPIOB,DL_GPIO_PIN_24);
	if(BitValue==0) DL_GPIO_clearPins(GPIOB,DL_GPIO_PIN_24);
}

/**
  * º¯    Êý£ºOLEDдRES¸ßµÍµçƽ
  * ²Î    Êý£ºÒªÐ´ÈëRESµÄµçƽֵ£¬·¶Î§£º0/1
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ±Éϲ㺯ÊýÐèҪдRESʱ£¬´Ëº¯Êý»á±»µ÷ÓÃ
  *           Óû§ÐèÒª¸ù¾Ý²ÎÊý´«ÈëµÄÖµ£¬½«RESÖÃΪ¸ßµçƽ»òÕߵ͵çƽ
  *           µ±²ÎÊý´«Èë0ʱ£¬ÖÃRESΪµÍµçƽ£¬µ±²ÎÊý´«Èë1ʱ£¬ÖÃRESΪ¸ßµçƽ
  */
void OLED_W_RES(uint8_t BitValue)
{
	/*¸ù¾ÝBitValueµÄÖµ£¬½«RESÖøߵçƽ»òÕߵ͵çƽ*/
	if(BitValue==1) DL_GPIO_setPins(GPIOB,DL_GPIO_PIN_9);
	if(BitValue==0) DL_GPIO_clearPins(GPIOB,DL_GPIO_PIN_9);
}

/**
  * º¯    Êý£ºOLEDдDC¸ßµÍµçƽ
  * ²Î    Êý£ºÒªÐ´ÈëDCµÄµçƽֵ£¬·¶Î§£º0/1
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ±Éϲ㺯ÊýÐèҪдDCʱ£¬´Ëº¯Êý»á±»µ÷ÓÃ
  *           Óû§ÐèÒª¸ù¾Ý²ÎÊý´«ÈëµÄÖµ£¬½«DCÖÃΪ¸ßµçƽ»òÕߵ͵çƽ
  *           µ±²ÎÊý´«Èë0ʱ£¬ÖÃDCΪµÍµçƽ£¬µ±²ÎÊý´«Èë1ʱ£¬ÖÃDCΪ¸ßµçƽ
  */
void OLED_W_DC(uint8_t BitValue)
{	if(BitValue==1) DL_GPIO_setPins(GPIOA,DL_GPIO_PIN_27);
	if(BitValue==0) DL_GPIO_clearPins(GPIOA,DL_GPIO_PIN_27);
	/*¸ù¾ÝBitValueµÄÖµ£¬½«DCÖøߵçƽ»òÕߵ͵çƽ*/

}

/**
  * º¯    Êý£ºOLEDдCS¸ßµÍµçƽ
  * ²Î    Êý£ºÒªÐ´ÈëCSµÄµçƽֵ£¬·¶Î§£º0/1
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ±Éϲ㺯ÊýÐèҪдCSʱ£¬´Ëº¯Êý»á±»µ÷ÓÃ
  *           Óû§ÐèÒª¸ù¾Ý²ÎÊý´«ÈëµÄÖµ£¬½«CSÖÃΪ¸ßµçƽ»òÕߵ͵çƽ
  *           µ±²ÎÊý´«Èë0ʱ£¬ÖÃCSΪµÍµçƽ£¬µ±²ÎÊý´«Èë1ʱ£¬ÖÃCSΪ¸ßµçƽ
  */
void OLED_W_CS(uint8_t BitValue)
{

	/*¸ù¾ÝBitValueµÄÖµ£¬½«CSÖøߵçƽ»òÕߵ͵çƽ*/

}

/**
  * º¯    Êý£ºOLEDÒý½Å³õʼ»¯
  * ²Î    Êý£ºÎÞ
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ±Éϲ㺯ÊýÐèÒª³õʼ»¯Ê±£¬´Ëº¯Êý»á±»µ÷ÓÃ
  *           Óû§ÐèÒª½«D0¡¢D1¡¢RES¡¢DCºÍCSÒý½Å³õʼ»¯ÎªÍÆÍìÊä³öģʽ
  */
void OLED_GPIO_Init(void)
{
	uint32_t i, j;
	
	/*ÔÚ³õʼ»¯Ç°£¬¼ÓÈëÊÊÁ¿ÑÓʱ£¬´ýOLED¹©µçÎȶ¨*/
//	for (i = 0; i < 1000; i ++)
//	{
//		for (j = 0; j < 1000; j ++);
//	}
	
	/*ÖÃÒý½ÅĬÈϵçƽ*/
	OLED_W_D0(0);
	OLED_W_D1(1);
	OLED_W_RES(1);
	OLED_W_DC(1);
	OLED_W_CS(1);
}

/*********************Òý½ÅÅäÖÃ*/


/*ͨÐÅЭÒé*********************/

/**
  * º¯    Êý£ºSPI·¢ËÍÒ»¸ö×Ö½Ú
  * ²Î    Êý£ºByte Òª·¢Ë͵ÄÒ»¸ö×Ö½ÚÊý¾Ý£¬·¶Î§£º0x00~0xFF
  * ·µ »Ø Öµ£ºÎÞ
  */
void OLED_SPI_SendByte(uint8_t Byte)
{
	uint8_t i;
	
	/*Ñ­»·8´Î£¬Ö÷»úÒÀ´Î·¢ËÍÊý¾ÝµÄÿһλ*/
	for (i = 0; i < 8; i++)
	{
		/*ʹÓÃÑÚÂëµÄ·½Ê½È¡³öByteµÄÖ¸¶¨Ò»Î»Êý¾Ý²¢Ð´Èëµ½D1Ïß*/
		/*Á½¸ö!µÄ×÷ÓÃÊÇ£¬ÈÃËùÓзÇÁãµÄÖµ±äΪ1*/
		OLED_W_D1(!!(Byte & (0x80 >> i)));
		OLED_W_D0(1);	//À­¸ßD0£¬´Ó»úÔÚD0ÉÏÉýÑضÁÈ¡SDA
		OLED_W_D0(0);	//À­µÍD0£¬Ö÷»ú¿ªÊ¼·¢ËÍÏÂһλÊý¾Ý
	}
}

/**
  * º¯    Êý£ºOLEDдÃüÁî
  * ²Î    Êý£ºCommand ҪдÈëµÄÃüÁîÖµ£¬·¶Î§£º0x00~0xFF
  * ·µ »Ø Öµ£ºÎÞ
  */
void OLED_WriteCommand(uint8_t Command)
{
	OLED_W_CS(0);					//À­µÍCS£¬¿ªÊ¼Í¨ÐÅ
	OLED_W_DC(0);					//À­µÍDC£¬±íʾ¼´½«·¢ËÍÃüÁî
	OLED_SPI_SendByte(Command);		//дÈëÖ¸¶¨ÃüÁî
	OLED_W_CS(1);					//À­¸ßCS£¬½áÊøͨÐÅ
}

/**
  * º¯    Êý£ºOLEDдÊý¾Ý
  * ²Î    Êý£ºData ҪдÈëÊý¾ÝµÄÆðʼµØÖ·
  * ²Î    Êý£ºCount ҪдÈëÊý¾ÝµÄÊýÁ¿
  * ·µ »Ø Öµ£ºÎÞ
  */
void OLED_WriteData(uint8_t *Data, uint8_t Count)
{
	uint8_t i;
	
	OLED_W_CS(0);					//À­µÍCS£¬¿ªÊ¼Í¨ÐÅ
	OLED_W_DC(1);					//À­¸ßDC£¬±íʾ¼´½«·¢ËÍÊý¾Ý
	/*Ñ­»·Count´Î£¬½øÐÐÁ¬ÐøµÄÊý¾ÝдÈë*/
	for (i = 0; i < Count; i ++)
	{
		OLED_SPI_SendByte(Data[i]);	//ÒÀ´Î·¢ËÍDataµÄÿһ¸öÊý¾Ý
	}
	OLED_W_CS(1);					//À­¸ßCS£¬½áÊøͨÐÅ
}

/*********************ͨÐÅЭÒé*/


/*Ó²¼þÅäÖÃ*********************/

/**
  * º¯    Êý£ºOLED³õʼ»¯
  * ²Î    Êý£ºÎÞ
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºÊ¹ÓÃÇ°£¬ÐèÒªµ÷Óô˳õʼ»¯º¯Êý
  */
void OLED_Init(void)
{
	OLED_GPIO_Init();			//Ïȵ÷ÓõײãµÄ¶Ë¿Ú³õʼ»¯
	
	/*дÈëһϵÁеÄÃüÁ¶ÔOLED½øÐгõʼ»¯ÅäÖÃ*/
	OLED_WriteCommand(0xAE);	//ÉèÖÃÏÔʾ¿ªÆô/¹Ø±Õ£¬0xAE¹Ø±Õ£¬0xAF¿ªÆô
	
	OLED_WriteCommand(0xD5);	//ÉèÖÃÏÔʾʱÖÓ·ÖƵ±È/Õñµ´Æ÷ƵÂÊ
	OLED_WriteCommand(0x80);	//0x00~0xFF
	
	OLED_WriteCommand(0xA8);	//ÉèÖöà·¸´ÓÃÂÊ
	OLED_WriteCommand(0x3F);	//0x0E~0x3F
	
	OLED_WriteCommand(0xD3);	//ÉèÖÃÏÔʾƫÒÆ
	OLED_WriteCommand(0x00);	//0x00~0x7F
	
	OLED_WriteCommand(0x40);	//ÉèÖÃÏÔʾ¿ªÊ¼ÐУ¬0x40~0x7F
	
	OLED_WriteCommand(0xA1);	//ÉèÖÃ×óÓÒ·½Ïò£¬0xA1Õý³££¬0xA0×óÓÒ·´ÖÃ
	
	OLED_WriteCommand(0xC8);	//ÉèÖÃÉÏÏ·½Ïò£¬0xC8Õý³££¬0xC0ÉÏÏ·´ÖÃ

	OLED_WriteCommand(0xDA);	//ÉèÖÃCOMÒý½ÅÓ²¼þÅäÖÃ
	OLED_WriteCommand(0x12);
	
	OLED_WriteCommand(0x81);	//ÉèÖöԱȶÈ
	OLED_WriteCommand(0xCF);	//0x00~0xFF

	OLED_WriteCommand(0xD9);	//ÉèÖÃÔ¤³äµçÖÜÆÚ
	OLED_WriteCommand(0xF1);

	OLED_WriteCommand(0xDB);	//ÉèÖÃVCOMHÈ¡ÏûÑ¡Ôñ¼¶±ð
	OLED_WriteCommand(0x30);

	OLED_WriteCommand(0xA4);	//ÉèÖÃÕû¸öÏÔʾ´ò¿ª/¹Ø±Õ

	OLED_WriteCommand(0xA6);	//ÉèÖÃÕý³£/·´É«ÏÔʾ£¬0xA6Õý³££¬0xA7·´É«

	OLED_WriteCommand(0x8D);	//ÉèÖóäµç±Ã
	OLED_WriteCommand(0x14);

	OLED_WriteCommand(0xAF);	//¿ªÆôÏÔʾ
	
	OLED_Clear();				//Çå¿ÕÏÔ´æÊý×é
	OLED_Update();				//¸üÐÂÏÔʾ£¬ÇåÆÁ£¬·ÀÖ¹³õʼ»¯ºóδÏÔʾÄÚÈÝʱ»¨ÆÁ
}

/**
  * º¯    Êý£ºOLEDÉèÖÃÏÔʾ¹â±êλÖÃ
  * ²Î    Êý£ºPage Ö¸¶¨¹â±êËùÔÚµÄÒ³£¬·¶Î§£º0~7
  * ²Î    Êý£ºX Ö¸¶¨¹â±êËùÔÚµÄXÖá×ø±ê£¬·¶Î§£º0~127
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºOLEDĬÈϵÄYÖᣬֻÄÜ8¸öBitΪһ×éдÈ룬¼´1Ò³µÈÓÚ8¸öYÖá×ø±ê
  */
void OLED_SetCursor(uint8_t Page, uint8_t X)
{
	/*Èç¹ûʹÓô˳ÌÐòÇý¶¯1.3´çµÄOLEDÏÔʾÆÁ£¬ÔòÐèÒª½â³ý´Ë×¢ÊÍ*/
	/*ÒòΪ1.3´çµÄOLEDÇý¶¯Ð¾Æ¬£¨SH1106£©ÓÐ132ÁÐ*/
	/*ÆÁÄ»µÄÆðʼÁнÓÔÚÁ˵Ú2ÁУ¬¶ø²»ÊǵÚ0ÁÐ*/
	/*ËùÒÔÐèÒª½«X¼Ó2£¬²ÅÄÜÕý³£ÏÔʾ*/
//	X += 2;
	
	/*ͨ¹ýÖ¸ÁîÉèÖÃÒ³µØÖ·ºÍÁеØÖ·*/
	OLED_WriteCommand(0xB0 | Page);					//ÉèÖÃҳλÖÃ
	OLED_WriteCommand(0x10 | ((X & 0xF0) >> 4));	//ÉèÖÃXλÖøß4λ
	OLED_WriteCommand(0x00 | (X & 0x0F));			//ÉèÖÃXλÖõÍ4λ
}

/*********************Ó²¼þÅäÖÃ*/


/*¹¤¾ßº¯Êý*********************/

/*¹¤¾ßº¯Êý½ö¹©ÄÚ²¿²¿·Öº¯ÊýʹÓÃ*/

/**
  * º¯    Êý£º´Î·½º¯Êý
  * ²Î    Êý£ºX µ×Êý
  * ²Î    Êý£ºY Ö¸Êý
  * ·µ »Ø Öµ£ºµÈÓÚXµÄY´Î·½
  */
uint32_t OLED_Pow(uint32_t X, uint32_t Y)
{
	uint32_t Result = 1;	//½á¹ûĬÈÏΪ1
	while (Y --)			//ÀÛ³ËY´Î
	{
		Result *= X;		//ÿ´Î°ÑXÀ۳˵½½á¹ûÉÏ
	}
	return Result;
}

/**
  * º¯    Êý£ºÅжÏÖ¸¶¨µãÊÇ·ñÔÚÖ¸¶¨¶à±ßÐÎÄÚ²¿
  * ²Î    Êý£ºnvert ¶à±ßÐεĶ¥µãÊý
  * ²Î    Êý£ºvertx verty °üº¬¶à±ßÐζ¥µãµÄxºÍy×ø±êµÄÊý×é
  * ²Î    Êý£ºtestx testy ²âÊÔµãµÄXºÍy×ø±ê
  * ·µ »Ø Öµ£ºÖ¸¶¨µãÊÇ·ñÔÚÖ¸¶¨¶à±ßÐÎÄÚ²¿£¬1£ºÔÚÄÚ²¿£¬0£º²»ÔÚÄÚ²¿
  */
uint8_t OLED_pnpoly(uint8_t nvert, int16_t *vertx, int16_t *verty, int16_t testx, int16_t testy)
{
	int16_t i, j, c = 0;
	
	/*´ËËã·¨ÓÉW. Randolph FranklinÌá³ö*/
	/*²Î¿¼Á´½Ó£ºhttps://wrfranklin.org/Research/Short_Notes/pnpoly.html*/
	for (i = 0, j = nvert - 1; i < nvert; j = i++)
	{
		if (((verty[i] > testy) != (verty[j] > testy)) &&
			(testx < (vertx[j] - vertx[i]) * (testy - verty[i]) / (verty[j] - verty[i]) + vertx[i]))
		{
			c = !c;
		}
	}
	return c;
}

/**
  * º¯    Êý£ºÅжÏÖ¸¶¨µãÊÇ·ñÔÚÖ¸¶¨½Ç¶ÈÄÚ²¿
  * ²Î    Êý£ºX Y Ö¸¶¨µãµÄ×ø±ê
  * ²Î    Êý£ºStartAngle EndAngle Æðʼ½Ç¶ÈºÍÖÕÖ¹½Ç¶È£¬·¶Î§£º-180~180
  *           ˮƽÏòÓÒΪ0¶È£¬Ë®Æ½Ïò×óΪ180¶È»ò-180¶È£¬Ï·½ÎªÕýÊý£¬ÉÏ·½Îª¸ºÊý£¬Ë³Ê±ÕëÐýת
  * ·µ »Ø Öµ£ºÖ¸¶¨µãÊÇ·ñÔÚÖ¸¶¨½Ç¶ÈÄÚ²¿£¬1£ºÔÚÄÚ²¿£¬0£º²»ÔÚÄÚ²¿
  */
uint8_t OLED_IsInAngle(int16_t X, int16_t Y, int16_t StartAngle, int16_t EndAngle)
{
	int16_t PointAngle;
	PointAngle = atan2(Y, X) / 3.14 * 180;	//¼ÆËãÖ¸¶¨µãµÄ»¡¶È£¬²¢×ª»»Îª½Ç¶È±íʾ
	if (StartAngle < EndAngle)	//Æðʼ½Ç¶ÈСÓÚÖÕÖ¹½Ç¶ÈµÄÇé¿ö
	{
		/*Èç¹ûÖ¸¶¨½Ç¶ÈÔÚÆðʼÖÕÖ¹½Ç¶ÈÖ®¼ä£¬ÔòÅж¨Ö¸¶¨µãÔÚÖ¸¶¨½Ç¶È*/
		if (PointAngle >= StartAngle && PointAngle <= EndAngle)
		{
			return 1;
		}
	}
	else			//Æðʼ½Ç¶È´óÓÚÓÚÖÕÖ¹½Ç¶ÈµÄÇé¿ö
	{
		/*Èç¹ûÖ¸¶¨½Ç¶È´óÓÚÆðʼ½Ç¶È»òÕßСÓÚÖÕÖ¹½Ç¶È£¬ÔòÅж¨Ö¸¶¨µãÔÚÖ¸¶¨½Ç¶È*/
		if (PointAngle >= StartAngle || PointAngle <= EndAngle)
		{
			return 1;
		}
	}
	return 0;		//²»Âú×ãÒÔÉÏÌõ¼þ£¬ÔòÅжÏÅж¨Ö¸¶¨µã²»ÔÚÖ¸¶¨½Ç¶È
}

/*********************¹¤¾ßº¯Êý*/


/*¹¦Äܺ¯Êý*********************/

/**
  * º¯    Êý£º½«OLEDÏÔ´æÊý×é¸üе½OLEDÆÁÄ»
  * ²Î    Êý£ºÎÞ
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºËùÓеÄÏÔʾº¯Êý£¬¶¼Ö»ÊǶÔOLEDÏÔ´æÊý×é½øÐжÁд
  *           Ëæºóµ÷ÓÃOLED_Updateº¯Êý»òOLED_UpdateAreaº¯Êý
  *           ²Å»á½«ÏÔ´æÊý×éµÄÊý¾Ý·¢Ë͵½OLEDÓ²¼þ£¬½øÐÐÏÔʾ
  *           ¹Êµ÷ÓÃÏÔʾº¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_Update(void)
{
	uint8_t j;
	/*±éÀúÿһҳ*/
	for (j = 0; j < 8; j ++)
	{
		/*ÉèÖùâ±êλÖÃΪÿһҳµÄµÚÒ»ÁÐ*/
		OLED_SetCursor(j, 0);
		/*Á¬ÐøдÈë128¸öÊý¾Ý£¬½«ÏÔ´æÊý×éµÄÊý¾ÝдÈëµ½OLEDÓ²¼þ*/
		OLED_WriteData(OLED_DisplayBuf[j], 128);
	}
}

/**
  * º¯    Êý£º½«OLEDÏÔ´æÊý×鲿·Ö¸üе½OLEDÆÁÄ»
  * ²Î    Êý£ºX Ö¸¶¨ÇøÓò×óÉϽǵĺá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨ÇøÓò×óÉϽǵÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºWidth Ö¸¶¨ÇøÓòµÄ¿í¶È£¬·¶Î§£º0~128
  * ²Î    Êý£ºHeight Ö¸¶¨ÇøÓòµÄ¸ß¶È£¬·¶Î§£º0~64
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£º´Ëº¯Êý»áÖÁÉÙ¸üвÎÊýÖ¸¶¨µÄÇøÓò
  *           Èç¹û¸üÐÂÇøÓòYÖáÖ»°üº¬²¿·ÖÒ³£¬ÔòͬһҳµÄÊ£Óಿ·Ö»á¸úËæÒ»Æð¸üÐÂ
  * ˵    Ã÷£ºËùÓеÄÏÔʾº¯Êý£¬¶¼Ö»ÊǶÔOLEDÏÔ´æÊý×é½øÐжÁд
  *           Ëæºóµ÷ÓÃOLED_Updateº¯Êý»òOLED_UpdateAreaº¯Êý
  *           ²Å»á½«ÏÔ´æÊý×éµÄÊý¾Ý·¢Ë͵½OLEDÓ²¼þ£¬½øÐÐÏÔʾ
  *           ¹Êµ÷ÓÃÏÔʾº¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_UpdateArea(int16_t X, int16_t Y, uint8_t Width, uint8_t Height)
{
	int16_t j;
	int16_t Page, Page1;
	
	/*¸ºÊý×ø±êÔÚ¼ÆËãÒ³µØַʱÐèÒª¼ÓÒ»¸öÆ«ÒÆ*/
	/*(Y + Height - 1) / 8 + 1µÄÄ¿µÄÊÇ(Y + Height) / 8²¢ÏòÉÏÈ¡Õû*/
	Page = Y / 8;
	Page1 = (Y + Height - 1) / 8 + 1;
	if (Y < 0)
	{
		Page -= 1;
		Page1 -= 1;
	}
	
	/*±éÀúÖ¸¶¨ÇøÓòÉæ¼°µÄÏà¹ØÒ³*/
	for (j = Page; j < Page1; j ++)
	{
		if (X >= 0 && X <= 127 && j >= 0 && j <= 7)		//³¬³öÆÁÄ»µÄÄÚÈݲ»ÏÔʾ
		{
			/*ÉèÖùâ±êλÖÃΪÏà¹ØÒ³µÄÖ¸¶¨ÁÐ*/
			OLED_SetCursor(j, X);
			/*Á¬ÐøдÈëWidth¸öÊý¾Ý£¬½«ÏÔ´æÊý×éµÄÊý¾ÝдÈëµ½OLEDÓ²¼þ*/
			OLED_WriteData(&OLED_DisplayBuf[j][X], Width);
		}
	}
}

/**
  * º¯    Êý£º½«OLEDÏÔ´æÊý×éÈ«²¿ÇåÁã
  * ²Î    Êý£ºÎÞ
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_Clear(void)
{
	uint8_t i, j;
	for (j = 0; j < 8; j ++)				//±éÀú8Ò³
	{
		for (i = 0; i < 128; i ++)			//±éÀú128ÁÐ
		{
			OLED_DisplayBuf[j][i] = 0x00;	//½«ÏÔ´æÊý×éÊý¾ÝÈ«²¿ÇåÁã
		}
	}
}

/**
  * º¯    Êý£º½«OLEDÏÔ´æÊý×鲿·ÖÇåÁã
  * ²Î    Êý£ºX Ö¸¶¨ÇøÓò×óÉϽǵĺá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨ÇøÓò×óÉϽǵÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºWidth Ö¸¶¨ÇøÓòµÄ¿í¶È£¬·¶Î§£º0~128
  * ²Î    Êý£ºHeight Ö¸¶¨ÇøÓòµÄ¸ß¶È£¬·¶Î§£º0~64
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_ClearArea(int16_t X, int16_t Y, uint8_t Width, uint8_t Height)
{
	int16_t i, j;
	
	for (j = Y; j < Y + Height; j ++)		//±éÀúÖ¸¶¨Ò³
	{
		for (i = X; i < X + Width; i ++)	//±éÀúÖ¸¶¨ÁÐ
		{
			if (i >= 0 && i <= 127 && j >=0 && j <= 63)				//³¬³öÆÁÄ»µÄÄÚÈݲ»ÏÔʾ
			{
				OLED_DisplayBuf[j / 8][i] &= ~(0x01 << (j % 8));	//½«ÏÔ´æÊý×éÖ¸¶¨Êý¾ÝÇåÁã
			}
		}
	}
}

/**
  * º¯    Êý£º½«OLEDÏÔ´æÊý×éÈ«²¿È¡·´
  * ²Î    Êý£ºÎÞ
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_Reverse(void)
{
	uint8_t i, j;
	for (j = 0; j < 8; j ++)				//±éÀú8Ò³
	{
		for (i = 0; i < 128; i ++)			//±éÀú128ÁÐ
		{
			OLED_DisplayBuf[j][i] ^= 0xFF;	//½«ÏÔ´æÊý×éÊý¾ÝÈ«²¿È¡·´
		}
	}
}
	
/**
  * º¯    Êý£º½«OLEDÏÔ´æÊý×鲿·ÖÈ¡·´
  * ²Î    Êý£ºX Ö¸¶¨ÇøÓò×óÉϽǵĺá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨ÇøÓò×óÉϽǵÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºWidth Ö¸¶¨ÇøÓòµÄ¿í¶È£¬·¶Î§£º0~128
  * ²Î    Êý£ºHeight Ö¸¶¨ÇøÓòµÄ¸ß¶È£¬·¶Î§£º0~64
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_ReverseArea(int16_t X, int16_t Y, uint8_t Width, uint8_t Height)
{
	int16_t i, j;
	
	for (j = Y; j < Y + Height; j ++)		//±éÀúÖ¸¶¨Ò³
	{
		for (i = X; i < X + Width; i ++)	//±éÀúÖ¸¶¨ÁÐ
		{
			if (i >= 0 && i <= 127 && j >=0 && j <= 63)			//³¬³öÆÁÄ»µÄÄÚÈݲ»ÏÔʾ
			{
				OLED_DisplayBuf[j / 8][i] ^= 0x01 << (j % 8);	//½«ÏÔ´æÊý×éÖ¸¶¨Êý¾ÝÈ¡·´
			}
		}
	}
}

/**
  * º¯    Êý£ºOLEDÏÔʾһ¸ö×Ö·û
  * ²Î    Êý£ºX Ö¸¶¨×Ö·û×óÉϽǵĺá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨×Ö·û×óÉϽǵÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºChar Ö¸¶¨ÒªÏÔʾµÄ×Ö·û£¬·¶Î§£ºASCIIÂë¿É¼û×Ö·û
  * ²Î    Êý£ºFontSize Ö¸¶¨×ÖÌå´óС
  *           ·¶Î§£ºOLED_8X16		¿í8ÏñËØ£¬¸ß16ÏñËØ
  *                 OLED_6X8		¿í6ÏñËØ£¬¸ß8ÏñËØ
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_ShowChar(int16_t X, int16_t Y, char Char, uint8_t FontSize)
{
	if (FontSize == OLED_8X16)		//×ÖÌåΪ¿í8ÏñËØ£¬¸ß16ÏñËØ
	{
		/*½«ASCII×ÖÄ£¿âOLED_F8x16µÄÖ¸¶¨Êý¾ÝÒÔ8*16µÄͼÏñ¸ñʽÏÔʾ*/
		OLED_ShowImage(X, Y, 8, 16, OLED_F8x16[Char - ' ']);
	}
	else if(FontSize == OLED_6X8)	//×ÖÌåΪ¿í6ÏñËØ£¬¸ß8ÏñËØ
	{
		/*½«ASCII×ÖÄ£¿âOLED_F6x8µÄÖ¸¶¨Êý¾ÝÒÔ6*8µÄͼÏñ¸ñʽÏÔʾ*/
		OLED_ShowImage(X, Y, 6, 8, OLED_F6x8[Char - ' ']);
	}
}

/**
  * º¯    Êý£ºOLEDÏÔʾ×Ö·û´®
  * ²Î    Êý£ºX Ö¸¶¨×Ö·û´®×óÉϽǵĺá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨×Ö·û´®×óÉϽǵÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºString Ö¸¶¨ÒªÏÔʾµÄ×Ö·û´®£¬·¶Î§£ºASCIIÂë¿É¼û×Ö·û×é³ÉµÄ×Ö·û´®
  * ²Î    Êý£ºFontSize Ö¸¶¨×ÖÌå´óС
  *           ·¶Î§£ºOLED_8X16		¿í8ÏñËØ£¬¸ß16ÏñËØ
  *                 OLED_6X8		¿í6ÏñËØ£¬¸ß8ÏñËØ
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_ShowString(int16_t X, int16_t Y, char *String, uint8_t FontSize)
{
	uint8_t i;
	for (i = 0; String[i] != '\0'; i++)		//±éÀú×Ö·û´®µÄÿ¸ö×Ö·û
	{
		/*µ÷ÓÃOLED_ShowCharº¯Êý£¬ÒÀ´ÎÏÔʾÿ¸ö×Ö·û*/
		OLED_ShowChar(X + i * FontSize, Y, String[i], FontSize);
	}
}

/**
  * º¯    Êý£ºOLEDÏÔʾÊý×Ö£¨Ê®½øÖÆ£¬ÕýÕûÊý£©
  * ²Î    Êý£ºX Ö¸¶¨Êý×Ö×óÉϽǵĺá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨Êý×Ö×óÉϽǵÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºNumber Ö¸¶¨ÒªÏÔʾµÄÊý×Ö£¬·¶Î§£º0~4294967295
  * ²Î    Êý£ºLength Ö¸¶¨Êý×ֵij¤¶È£¬·¶Î§£º0~10
  * ²Î    Êý£ºFontSize Ö¸¶¨×ÖÌå´óС
  *           ·¶Î§£ºOLED_8X16		¿í8ÏñËØ£¬¸ß16ÏñËØ
  *                 OLED_6X8		¿í6ÏñËØ£¬¸ß8ÏñËØ
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_ShowNum(int16_t X, int16_t Y, uint32_t Number, uint8_t Length, uint8_t FontSize)
{
	uint8_t i;
	for (i = 0; i < Length; i++)		//±éÀúÊý×ÖµÄÿһλ							
	{
		/*µ÷ÓÃOLED_ShowCharº¯Êý£¬ÒÀ´ÎÏÔʾÿ¸öÊý×Ö*/
		/*Number / OLED_Pow(10, Length - i - 1) % 10 ¿ÉÒÔÊ®½øÖÆÌáÈ¡Êý×ÖµÄÿһλ*/
		/*+ '0' ¿É½«Êý×Öת»»Îª×Ö·û¸ñʽ*/
		OLED_ShowChar(X + i * FontSize, Y, Number / OLED_Pow(10, Length - i - 1) % 10 + '0', FontSize);
	}
}

/**
  * º¯    Êý£ºOLEDÏÔʾÓзûºÅÊý×Ö£¨Ê®½øÖÆ£¬ÕûÊý£©
  * ²Î    Êý£ºX Ö¸¶¨Êý×Ö×óÉϽǵĺá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨Êý×Ö×óÉϽǵÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºNumber Ö¸¶¨ÒªÏÔʾµÄÊý×Ö£¬·¶Î§£º-2147483648~2147483647
  * ²Î    Êý£ºLength Ö¸¶¨Êý×ֵij¤¶È£¬·¶Î§£º0~10
  * ²Î    Êý£ºFontSize Ö¸¶¨×ÖÌå´óС
  *           ·¶Î§£ºOLED_8X16		¿í8ÏñËØ£¬¸ß16ÏñËØ
  *                 OLED_6X8		¿í6ÏñËØ£¬¸ß8ÏñËØ
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_ShowSignedNum(int16_t X, int16_t Y, int32_t Number, uint8_t Length, uint8_t FontSize)
{
	uint8_t i;
	uint32_t Number1;
	
	if (Number >= 0)						//Êý×Ö´óÓÚµÈÓÚ0
	{
		OLED_ShowChar(X, Y, '+', FontSize);	//ÏÔʾ+ºÅ
		Number1 = Number;					//Number1Ö±½ÓµÈÓÚNumber
	}
	else									//Êý×ÖСÓÚ0
	{
		OLED_ShowChar(X, Y, '-', FontSize);	//ÏÔʾ-ºÅ
		Number1 = -Number;					//Number1µÈÓÚNumberÈ¡¸º
	}
	
	for (i = 0; i < Length; i++)			//±éÀúÊý×ÖµÄÿһλ								
	{
		/*µ÷ÓÃOLED_ShowCharº¯Êý£¬ÒÀ´ÎÏÔʾÿ¸öÊý×Ö*/
		/*Number1 / OLED_Pow(10, Length - i - 1) % 10 ¿ÉÒÔÊ®½øÖÆÌáÈ¡Êý×ÖµÄÿһλ*/
		/*+ '0' ¿É½«Êý×Öת»»Îª×Ö·û¸ñʽ*/
		OLED_ShowChar(X + (i + 1) * FontSize, Y, Number1 / OLED_Pow(10, Length - i - 1) % 10 + '0', FontSize);
	}
}

/**
  * º¯    Êý£ºOLEDÏÔʾʮÁù½øÖÆÊý×Ö£¨Ê®Áù½øÖÆ£¬ÕýÕûÊý£©
  * ²Î    Êý£ºX Ö¸¶¨Êý×Ö×óÉϽǵĺá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨Êý×Ö×óÉϽǵÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºNumber Ö¸¶¨ÒªÏÔʾµÄÊý×Ö£¬·¶Î§£º0x00000000~0xFFFFFFFF
  * ²Î    Êý£ºLength Ö¸¶¨Êý×ֵij¤¶È£¬·¶Î§£º0~8
  * ²Î    Êý£ºFontSize Ö¸¶¨×ÖÌå´óС
  *           ·¶Î§£ºOLED_8X16		¿í8ÏñËØ£¬¸ß16ÏñËØ
  *                 OLED_6X8		¿í6ÏñËØ£¬¸ß8ÏñËØ
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_ShowHexNum(int16_t X, int16_t Y, uint32_t Number, uint8_t Length, uint8_t FontSize)
{
	uint8_t i, SingleNumber;
	for (i = 0; i < Length; i++)		//±éÀúÊý×ÖµÄÿһλ
	{
		/*ÒÔÊ®Áù½øÖÆÌáÈ¡Êý×ÖµÄÿһλ*/
		SingleNumber = Number / OLED_Pow(16, Length - i - 1) % 16;
		
		if (SingleNumber < 10)			//µ¥¸öÊý×ÖСÓÚ10
		{
			/*µ÷ÓÃOLED_ShowCharº¯Êý£¬ÏÔʾ´ËÊý×Ö*/
			/*+ '0' ¿É½«Êý×Öת»»Îª×Ö·û¸ñʽ*/
			OLED_ShowChar(X + i * FontSize, Y, SingleNumber + '0', FontSize);
		}
		else							//µ¥¸öÊý×Ö´óÓÚ10
		{
			/*µ÷ÓÃOLED_ShowCharº¯Êý£¬ÏÔʾ´ËÊý×Ö*/
			/*+ 'A' ¿É½«Êý×Öת»»Îª´ÓA¿ªÊ¼µÄÊ®Áù½øÖÆ×Ö·û*/
			OLED_ShowChar(X + i * FontSize, Y, SingleNumber - 10 + 'A', FontSize);
		}
	}
}

/**
  * º¯    Êý£ºOLEDÏÔʾ¶þ½øÖÆÊý×Ö£¨¶þ½øÖÆ£¬ÕýÕûÊý£©
  * ²Î    Êý£ºX Ö¸¶¨Êý×Ö×óÉϽǵĺá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨Êý×Ö×óÉϽǵÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºNumber Ö¸¶¨ÒªÏÔʾµÄÊý×Ö£¬·¶Î§£º0x00000000~0xFFFFFFFF
  * ²Î    Êý£ºLength Ö¸¶¨Êý×ֵij¤¶È£¬·¶Î§£º0~16
  * ²Î    Êý£ºFontSize Ö¸¶¨×ÖÌå´óС
  *           ·¶Î§£ºOLED_8X16		¿í8ÏñËØ£¬¸ß16ÏñËØ
  *                 OLED_6X8		¿í6ÏñËØ£¬¸ß8ÏñËØ
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_ShowBinNum(int16_t X, int16_t Y, uint32_t Number, uint8_t Length, uint8_t FontSize)
{
	uint8_t i;
	for (i = 0; i < Length; i++)		//±éÀúÊý×ÖµÄÿһλ	
	{
		/*µ÷ÓÃOLED_ShowCharº¯Êý£¬ÒÀ´ÎÏÔʾÿ¸öÊý×Ö*/
		/*Number / OLED_Pow(2, Length - i - 1) % 2 ¿ÉÒÔ¶þ½øÖÆÌáÈ¡Êý×ÖµÄÿһλ*/
		/*+ '0' ¿É½«Êý×Öת»»Îª×Ö·û¸ñʽ*/
		OLED_ShowChar(X + i * FontSize, Y, Number / OLED_Pow(2, Length - i - 1) % 2 + '0', FontSize);
	}
}

/**
  * º¯    Êý£ºOLEDÏÔʾ¸¡µãÊý×Ö£¨Ê®½øÖÆ£¬Ð¡Êý£©
  * ²Î    Êý£ºX Ö¸¶¨Êý×Ö×óÉϽǵĺá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨Êý×Ö×óÉϽǵÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºNumber Ö¸¶¨ÒªÏÔʾµÄÊý×Ö£¬·¶Î§£º-4294967295.0~4294967295.0
  * ²Î    Êý£ºIntLength Ö¸¶¨Êý×ÖµÄÕûÊý볤¶È£¬·¶Î§£º0~10
  * ²Î    Êý£ºFraLength Ö¸¶¨Êý×ÖµÄСÊý볤¶È£¬·¶Î§£º0~9£¬Ð¡Êý½øÐÐËÄÉáÎåÈëÏÔʾ
  * ²Î    Êý£ºFontSize Ö¸¶¨×ÖÌå´óС
  *           ·¶Î§£ºOLED_8X16		¿í8ÏñËØ£¬¸ß16ÏñËØ
  *                 OLED_6X8		¿í6ÏñËØ£¬¸ß8ÏñËØ
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_ShowFloatNum(int16_t X, int16_t Y, double Number, uint8_t IntLength, uint8_t FraLength, uint8_t FontSize)
{
	uint32_t PowNum, IntNum, FraNum;
	
	if (Number >= 0)						//Êý×Ö´óÓÚµÈÓÚ0
	{
		OLED_ShowChar(X, Y, '+', FontSize);	//ÏÔʾ+ºÅ
	}
	else									//Êý×ÖСÓÚ0
	{
		OLED_ShowChar(X, Y, '-', FontSize);	//ÏÔʾ-ºÅ
		Number = -Number;					//NumberÈ¡¸º
	}
	
	/*ÌáÈ¡ÕûÊý²¿·ÖºÍСÊý²¿·Ö*/
	IntNum = Number;						//Ö±½Ó¸³Öµ¸øÕûÐͱäÁ¿£¬ÌáÈ¡ÕûÊý
	Number -= IntNum;						//½«NumberµÄÕûÊý¼õµô£¬·ÀÖ¹Ö®ºó½«Ð¡Êý³Ëµ½ÕûÊýʱÒòÊý¹ý´óÔì³É´íÎó
	PowNum = OLED_Pow(10, FraLength);		//¸ù¾ÝÖ¸¶¨Ð¡ÊýµÄλÊý£¬È·¶¨³ËÊý
	FraNum = round(Number * PowNum);		//½«Ð¡Êý³Ëµ½ÕûÊý£¬Í¬Ê±ËÄÉáÎåÈ룬±ÜÃâÏÔʾÎó²î
	IntNum += FraNum / PowNum;				//ÈôËÄÉáÎåÈëÔì³ÉÁ˽ø룬ÔòÐèÒªÔÙ¼Ó¸øÕûÊý
	
	/*ÏÔʾÕûÊý²¿·Ö*/
	OLED_ShowNum(X + FontSize, Y, IntNum, IntLength, FontSize);
	
	/*ÏÔʾСÊýµã*/
	OLED_ShowChar(X + (IntLength + 1) * FontSize, Y, '.', FontSize);
	
	/*ÏÔʾСÊý²¿·Ö*/
	OLED_ShowNum(X + (IntLength + 2) * FontSize, Y, FraNum, FraLength, FontSize);
}

/**
  * º¯    Êý£ºOLEDÏÔʾºº×Ö´®
  * ²Î    Êý£ºX Ö¸¶¨ºº×Ö´®×óÉϽǵĺá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨ºº×Ö´®×óÉϽǵÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºChinese Ö¸¶¨ÒªÏÔʾµÄºº×Ö´®£¬·¶Î§£º±ØÐëÈ«²¿Îªºº×Ö»òÕßÈ«½Ç×Ö·û£¬²»Òª¼ÓÈëÈκΰë½Ç×Ö·û
  *           ÏÔʾµÄºº×ÖÐèÒªÔÚOLED_Data.cÀïµÄOLED_CF16x16Êý×鶨Òå
  *           δÕÒµ½Ö¸¶¨ºº×Öʱ£¬»áÏÔʾĬÈÏͼÐΣ¨Ò»¸ö·½¿ò£¬ÄÚ²¿Ò»¸öÎʺţ©
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_ShowChinese(int16_t X, int16_t Y, char *Chinese)
{
	uint8_t pChinese = 0;
	uint8_t pIndex;
	uint8_t i;
	char SingleChinese[OLED_CHN_CHAR_WIDTH + 1] = {0};
	
	for (i = 0; Chinese[i] != '\0'; i ++)		//±éÀúºº×Ö´®
	{
		SingleChinese[pChinese] = Chinese[i];	//ÌáÈ¡ºº×Ö´®Êý¾Ýµ½µ¥¸öºº×ÖÊý×é
		pChinese ++;							//¼Æ´Î×ÔÔö
		
		/*µ±ÌáÈ¡´ÎÊýµ½´ïOLED_CHN_CHAR_WIDTHʱ£¬¼´´ú±íÌáÈ¡µ½ÁËÒ»¸öÍêÕûµÄºº×Ö*/
		if (pChinese >= OLED_CHN_CHAR_WIDTH)
		{
			pChinese = 0;		//¼Æ´Î¹éÁã
			
			/*±éÀúÕû¸öºº×Ö×ÖÄ£¿â£¬Ñ°ÕÒÆ¥ÅäµÄºº×Ö*/
			/*Èç¹ûÕÒµ½×îºóÒ»¸öºº×Ö£¨¶¨ÒåΪ¿Õ×Ö·û´®£©£¬Ôò±íʾºº×ÖδÔÚ×ÖÄ£¿â¶¨Ò壬ֹͣѰÕÒ*/
			for (pIndex = 0; strcmp(OLED_CF16x16[pIndex].Index, "") != 0; pIndex ++)
			{
				/*ÕÒµ½Æ¥ÅäµÄºº×Ö*/
				if (strcmp(OLED_CF16x16[pIndex].Index, SingleChinese) == 0)
				{
					break;		//Ìø³öÑ­»·£¬´ËʱpIndexµÄֵΪָ¶¨ºº×ÖµÄË÷Òý
				}
			}
			
			/*½«ºº×Ö×ÖÄ£¿âOLED_CF16x16µÄÖ¸¶¨Êý¾ÝÒÔ16*16µÄͼÏñ¸ñʽÏÔʾ*/
			OLED_ShowImage(X + ((i + 1) / OLED_CHN_CHAR_WIDTH - 1) * 16, Y, 16, 16, OLED_CF16x16[pIndex].Data);
		}
	}
}

/**
  * º¯    Êý£ºOLEDÏÔʾͼÏñ
  * ²Î    Êý£ºX Ö¸¶¨Í¼Ïñ×óÉϽǵĺá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨Í¼Ïñ×óÉϽǵÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºWidth Ö¸¶¨Í¼ÏñµÄ¿í¶È£¬·¶Î§£º0~128
  * ²Î    Êý£ºHeight Ö¸¶¨Í¼ÏñµÄ¸ß¶È£¬·¶Î§£º0~64
  * ²Î    Êý£ºImage Ö¸¶¨ÒªÏÔʾµÄͼÏñ
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_ShowImage(int16_t X, int16_t Y, uint8_t Width, uint8_t Height, const uint8_t *Image)
{
	uint8_t i = 0, j = 0;
	int16_t Page, Shift;
	
	/*½«Í¼ÏñËùÔÚÇøÓòÇå¿Õ*/
	OLED_ClearArea(X, Y, Width, Height);
	
	/*±éÀúÖ¸¶¨Í¼ÏñÉæ¼°µÄÏà¹ØÒ³*/
	/*(Height - 1) / 8 + 1µÄÄ¿µÄÊÇHeight / 8²¢ÏòÉÏÈ¡Õû*/
	for (j = 0; j < (Height - 1) / 8 + 1; j ++)
	{
		/*±éÀúÖ¸¶¨Í¼ÏñÉæ¼°µÄÏà¹ØÁÐ*/
		for (i = 0; i < Width; i ++)
		{
			if (X + i >= 0 && X + i <= 127)		//³¬³öÆÁÄ»µÄÄÚÈݲ»ÏÔʾ
			{
				/*¸ºÊý×ø±êÔÚ¼ÆËãÒ³µØÖ·ºÍÒÆλʱÐèÒª¼ÓÒ»¸öÆ«ÒÆ*/
				Page = Y / 8;
				Shift = Y % 8;
				if (Y < 0)
				{
					Page -= 1;
					Shift += 8;
				}
				
				if (Page + j >= 0 && Page + j <= 7)		//³¬³öÆÁÄ»µÄÄÚÈݲ»ÏÔʾ
				{
					/*ÏÔʾͼÏñÔÚµ±Ç°Ò³µÄÄÚÈÝ*/
					OLED_DisplayBuf[Page + j][X + i] |= Image[j * Width + i] << (Shift);
				}
				
				if (Page + j + 1 >= 0 && Page + j + 1 <= 7)		//³¬³öÆÁÄ»µÄÄÚÈݲ»ÏÔʾ
				{					
					/*ÏÔʾͼÏñÔÚÏÂÒ»Ò³µÄÄÚÈÝ*/
					OLED_DisplayBuf[Page + j + 1][X + i] |= Image[j * Width + i] >> (8 - Shift);
				}
			}
		}
	}
}

/**
  * º¯    Êý£ºOLEDʹÓÃprintfº¯Êý´òÓ¡¸ñʽ»¯×Ö·û´®
  * ²Î    Êý£ºX Ö¸¶¨¸ñʽ»¯×Ö·û´®×óÉϽǵĺá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨¸ñʽ»¯×Ö·û´®×óÉϽǵÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºFontSize Ö¸¶¨×ÖÌå´óС
  *           ·¶Î§£ºOLED_8X16		¿í8ÏñËØ£¬¸ß16ÏñËØ
  *                 OLED_6X8		¿í6ÏñËØ£¬¸ß8ÏñËØ
  * ²Î    Êý£ºformat Ö¸¶¨ÒªÏÔʾµÄ¸ñʽ»¯×Ö·û´®£¬·¶Î§£ºASCIIÂë¿É¼û×Ö·û×é³ÉµÄ×Ö·û´®
  * ²Î    Êý£º... ¸ñʽ»¯×Ö·û´®²ÎÊýÁбí
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_Printf(int16_t X, int16_t Y, uint8_t FontSize, char *format, ...)
{
	char String[256];						//¶¨Òå×Ö·ûÊý×é
	va_list arg;							//¶¨Òå¿É±ä²ÎÊýÁбíÊý¾ÝÀàÐ͵ıäÁ¿arg
	va_start(arg, format);					//´Óformat¿ªÊ¼£¬½ÓÊÕ²ÎÊýÁÐ±íµ½arg±äÁ¿
	vsprintf(String, format, arg);			//ʹÓÃvsprintf´òÓ¡¸ñʽ»¯×Ö·û´®ºÍ²ÎÊýÁÐ±íµ½×Ö·ûÊý×éÖÐ
	va_end(arg);							//½áÊø±äÁ¿arg
	OLED_ShowString(X, Y, String, FontSize);//OLEDÏÔʾ×Ö·ûÊý×飨×Ö·û´®£©
}

/**
  * º¯    Êý£ºOLEDÔÚÖ¸¶¨Î»Öû­Ò»¸öµã
  * ²Î    Êý£ºX Ö¸¶¨µãµÄºá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨µãµÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_DrawPoint(int16_t X, int16_t Y)
{
	if (X >= 0 && X <= 127 && Y >=0 && Y <= 63)		//³¬³öÆÁÄ»µÄÄÚÈݲ»ÏÔʾ
	{
		/*½«ÏÔ´æÊý×éÖ¸¶¨Î»ÖõÄÒ»¸öBitÊý¾ÝÖÃ1*/
		OLED_DisplayBuf[Y / 8][X] |= 0x01 << (Y % 8);
	}
}

/**
  * º¯    Êý£ºOLED»ñÈ¡Ö¸¶¨Î»ÖõãµÄÖµ
  * ²Î    Êý£ºX Ö¸¶¨µãµÄºá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨µãµÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ·µ »Ø Öµ£ºÖ¸¶¨Î»ÖõãÊÇ·ñ´¦ÓÚµãÁÁ״̬£¬1£ºµãÁÁ£¬0£ºÏ¨Ãð
  */
uint8_t OLED_GetPoint(int16_t X, int16_t Y)
{
	if (X >= 0 && X <= 127 && Y >=0 && Y <= 63)		//³¬³öÆÁÄ»µÄÄÚÈݲ»¶ÁÈ¡
	{
		/*ÅжÏÖ¸¶¨Î»ÖõÄÊý¾Ý*/
		if (OLED_DisplayBuf[Y / 8][X] & 0x01 << (Y % 8))
		{
			return 1;	//Ϊ1£¬·µ»Ø1
		}
	}
	
	return 0;		//·ñÔò£¬·µ»Ø0
}

/**
  * º¯    Êý£ºOLED»­Ïß
  * ²Î    Êý£ºX0 Ö¸¶¨Ò»¸ö¶ËµãµÄºá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY0 Ö¸¶¨Ò»¸ö¶ËµãµÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºX1 Ö¸¶¨ÁíÒ»¸ö¶ËµãµÄºá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY1 Ö¸¶¨ÁíÒ»¸ö¶ËµãµÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_DrawLine(int16_t X0, int16_t Y0, int16_t X1, int16_t Y1)
{
	int16_t x, y, dx, dy, d, incrE, incrNE, temp;
	int16_t x0 = X0, y0 = Y0, x1 = X1, y1 = Y1;
	uint8_t yflag = 0, xyflag = 0;
	
	if (y0 == y1)		//ºáÏßµ¥¶À´¦Àí
	{
		/*0ºÅµãX×ø±ê´óÓÚ1ºÅµãX×ø±ê£¬Ôò½»»»Á½µãX×ø±ê*/
		if (x0 > x1) {temp = x0; x0 = x1; x1 = temp;}
		
		/*±éÀúX×ø±ê*/
		for (x = x0; x <= x1; x ++)
		{
			OLED_DrawPoint(x, y0);	//ÒÀ´Î»­µã
		}
	}
	else if (x0 == x1)	//ÊúÏßµ¥¶À´¦Àí
	{
		/*0ºÅµãY×ø±ê´óÓÚ1ºÅµãY×ø±ê£¬Ôò½»»»Á½µãY×ø±ê*/
		if (y0 > y1) {temp = y0; y0 = y1; y1 = temp;}
		
		/*±éÀúY×ø±ê*/
		for (y = y0; y <= y1; y ++)
		{
			OLED_DrawPoint(x0, y);	//ÒÀ´Î»­µã
		}
	}
	else				//бÏß
	{
		/*ʹÓÃBresenhamËã·¨»­Ö±Ïߣ¬¿ÉÒÔ±ÜÃâºÄʱµÄ¸¡µãÔËË㣬ЧÂʸü¸ß*/
		/*²Î¿¼Îĵµ£ºhttps://www.cs.montana.edu/courses/spring2009/425/dslectures/Bresenham.pdf*/
		/*²Î¿¼½Ì³Ì£ºhttps://www.bilibili.com/video/BV1364y1d7Lo*/
		
		if (x0 > x1)	//0ºÅµãX×ø±ê´óÓÚ1ºÅµãX×ø±ê
		{
			/*½»»»Á½µã×ø±ê*/
			/*½»»»ºó²»Ó°Ïì»­Ïߣ¬µ«ÊÇ»­Ïß·½ÏòÓɵÚÒ»¡¢¶þ¡¢Èý¡¢ËÄÏóÏÞ±äΪµÚÒ»¡¢ËÄÏóÏÞ*/
			temp = x0; x0 = x1; x1 = temp;
			temp = y0; y0 = y1; y1 = temp;
		}
		
		if (y0 > y1)	//0ºÅµãY×ø±ê´óÓÚ1ºÅµãY×ø±ê
		{
			/*½«Y×ø±êÈ¡¸º*/
			/*È¡¸ººóÓ°Ïì»­Ïߣ¬µ«ÊÇ»­Ïß·½ÏòÓɵÚÒ»¡¢ËÄÏóÏÞ±äΪµÚÒ»ÏóÏÞ*/
			y0 = -y0;
			y1 = -y1;
			
			/*Öñê־λyflag£¬¼Çסµ±Ç°±ä»»£¬ÔÚºóÐøʵ¼Ê»­Ïßʱ£¬ÔÙ½«×ø±ê»»»ØÀ´*/
			yflag = 1;
		}
		
		if (y1 - y0 > x1 - x0)	//»­ÏßбÂÊ´óÓÚ1
		{
			/*½«X×ø±êÓëY×ø±ê»¥»»*/
			/*»¥»»ºóÓ°Ïì»­Ïߣ¬µ«ÊÇ»­Ïß·½ÏòÓɵÚÒ»ÏóÏÞ0~90¶È·¶Î§±äΪµÚÒ»ÏóÏÞ0~45¶È·¶Î§*/
			temp = x0; x0 = y0; y0 = temp;
			temp = x1; x1 = y1; y1 = temp;
			
			/*Öñê־λxyflag£¬¼Çסµ±Ç°±ä»»£¬ÔÚºóÐøʵ¼Ê»­Ïßʱ£¬ÔÙ½«×ø±ê»»»ØÀ´*/
			xyflag = 1;
		}
		
		/*ÒÔÏÂΪBresenhamËã·¨»­Ö±Ïß*/
		/*Ëã·¨ÒªÇ󣬻­Ïß·½Ïò±ØÐëΪµÚÒ»ÏóÏÞ0~45¶È·¶Î§*/
		dx = x1 - x0;
		dy = y1 - y0;
		incrE = 2 * dy;
		incrNE = 2 * (dy - dx);
		d = 2 * dy - dx;
		x = x0;
		y = y0;
		
		/*»­Æðʼµã£¬Í¬Ê±Åжϱê־룬½«×ø±ê»»»ØÀ´*/
		if (yflag && xyflag){OLED_DrawPoint(y, -x);}
		else if (yflag)		{OLED_DrawPoint(x, -y);}
		else if (xyflag)	{OLED_DrawPoint(y, x);}
		else				{OLED_DrawPoint(x, y);}
		
		while (x < x1)		//±éÀúXÖáµÄÿ¸öµã
		{
			x ++;
			if (d < 0)		//ÏÂÒ»¸öµãÔÚµ±Ç°µã¶«·½
			{
				d += incrE;
			}
			else			//ÏÂÒ»¸öµãÔÚµ±Ç°µã¶«±±·½
			{
				y ++;
				d += incrNE;
			}
			
			/*»­Ã¿Ò»¸öµã£¬Í¬Ê±Åжϱê־룬½«×ø±ê»»»ØÀ´*/
			if (yflag && xyflag){OLED_DrawPoint(y, -x);}
			else if (yflag)		{OLED_DrawPoint(x, -y);}
			else if (xyflag)	{OLED_DrawPoint(y, x);}
			else				{OLED_DrawPoint(x, y);}
		}	
	}
}

/**
  * º¯    Êý£ºOLED¾ØÐÎ
  * ²Î    Êý£ºX Ö¸¶¨¾ØÐÎ×óÉϽǵĺá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨¾ØÐÎ×óÉϽǵÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºWidth Ö¸¶¨¾ØÐεĿí¶È£¬·¶Î§£º0~128
  * ²Î    Êý£ºHeight Ö¸¶¨¾ØÐεĸ߶ȣ¬·¶Î§£º0~64
  * ²Î    Êý£ºIsFilled Ö¸¶¨¾ØÐÎÊÇ·ñÌî³ä
  *           ·¶Î§£ºOLED_UNFILLED		²»Ìî³ä
  *                 OLED_FILLED			Ìî³ä
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_DrawRectangle(int16_t X, int16_t Y, uint8_t Width, uint8_t Height, uint8_t IsFilled)
{
	int16_t i, j;
	if (!IsFilled)		//Ö¸¶¨¾ØÐβ»Ìî³ä
	{
		/*±éÀúÉÏÏÂX×ø±ê£¬»­¾ØÐÎÉÏÏÂÁ½ÌõÏß*/
		for (i = X; i < X + Width; i ++)
		{
			OLED_DrawPoint(i, Y);
			OLED_DrawPoint(i, Y + Height - 1);
		}
		/*±éÀú×óÓÒY×ø±ê£¬»­¾ØÐÎ×óÓÒÁ½ÌõÏß*/
		for (i = Y; i < Y + Height; i ++)
		{
			OLED_DrawPoint(X, i);
			OLED_DrawPoint(X + Width - 1, i);
		}
	}
	else				//Ö¸¶¨¾ØÐÎÌî³ä
	{
		/*±éÀúX×ø±ê*/
		for (i = X; i < X + Width; i ++)
		{
			/*±éÀúY×ø±ê*/
			for (j = Y; j < Y + Height; j ++)
			{
				/*ÔÚÖ¸¶¨ÇøÓò»­µã£¬Ìî³äÂú¾ØÐÎ*/
				OLED_DrawPoint(i, j);
			}
		}
	}
}

/**
  * º¯    Êý£ºOLEDÈý½ÇÐÎ
  * ²Î    Êý£ºX0 Ö¸¶¨µÚÒ»¸ö¶ËµãµÄºá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY0 Ö¸¶¨µÚÒ»¸ö¶ËµãµÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºX1 Ö¸¶¨µÚ¶þ¸ö¶ËµãµÄºá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY1 Ö¸¶¨µÚ¶þ¸ö¶ËµãµÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºX2 Ö¸¶¨µÚÈý¸ö¶ËµãµÄºá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY2 Ö¸¶¨µÚÈý¸ö¶ËµãµÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºIsFilled Ö¸¶¨Èý½ÇÐÎÊÇ·ñÌî³ä
  *           ·¶Î§£ºOLED_UNFILLED		²»Ìî³ä
  *                 OLED_FILLED			Ìî³ä
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_DrawTriangle(int16_t X0, int16_t Y0, int16_t X1, int16_t Y1, int16_t X2, int16_t Y2, uint8_t IsFilled)
{
	int16_t minx = X0, miny = Y0, maxx = X0, maxy = Y0;
	int16_t i, j;
	int16_t vx[] = {X0, X1, X2};
	int16_t vy[] = {Y0, Y1, Y2};
	
	if (!IsFilled)			//Ö¸¶¨Èý½ÇÐβ»Ìî³ä
	{
		/*µ÷Óû­Ïߺ¯Êý£¬½«Èý¸öµãÓÃÖ±ÏßÁ¬½Ó*/
		OLED_DrawLine(X0, Y0, X1, Y1);
		OLED_DrawLine(X0, Y0, X2, Y2);
		OLED_DrawLine(X1, Y1, X2, Y2);
	}
	else					//Ö¸¶¨Èý½ÇÐÎÌî³ä
	{
		/*ÕÒµ½Èý¸öµã×îСµÄX¡¢Y×ø±ê*/
		if (X1 < minx) {minx = X1;}
		if (X2 < minx) {minx = X2;}
		if (Y1 < miny) {miny = Y1;}
		if (Y2 < miny) {miny = Y2;}
		
		/*ÕÒµ½Èý¸öµã×î´óµÄX¡¢Y×ø±ê*/
		if (X1 > maxx) {maxx = X1;}
		if (X2 > maxx) {maxx = X2;}
		if (Y1 > maxy) {maxy = Y1;}
		if (Y2 > maxy) {maxy = Y2;}
		
		/*×îС×î´ó×ø±êÖ®¼äµÄ¾ØÐÎΪ¿ÉÄÜÐèÒªÌî³äµÄÇøÓò*/
		/*±éÀú´ËÇøÓòÖÐËùÓеĵã*/
		/*±éÀúX×ø±ê*/		
		for (i = minx; i <= maxx; i ++)
		{
			/*±éÀúY×ø±ê*/	
			for (j = miny; j <= maxy; j ++)
			{
				/*µ÷ÓÃOLED_pnpoly£¬ÅжÏÖ¸¶¨µãÊÇ·ñÔÚÖ¸¶¨Èý½ÇÐÎÖ®ÖÐ*/
				/*Èç¹ûÔÚ£¬Ôò»­µã£¬Èç¹û²»ÔÚ£¬Ôò²»×ö´¦Àí*/
				if (OLED_pnpoly(3, vx, vy, i, j)) {OLED_DrawPoint(i, j);}
			}
		}
	}
}

/**
  * º¯    Êý£ºOLED»­Ô²
  * ²Î    Êý£ºX Ö¸¶¨Ô²µÄÔ²Ðĺá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨Ô²µÄÔ²ÐÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºRadius Ö¸¶¨Ô²µÄ°ë¾¶£¬·¶Î§£º0~255
  * ²Î    Êý£ºIsFilled Ö¸¶¨Ô²ÊÇ·ñÌî³ä
  *           ·¶Î§£ºOLED_UNFILLED		²»Ìî³ä
  *                 OLED_FILLED			Ìî³ä
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_DrawCircle(int16_t X, int16_t Y, uint8_t Radius, uint8_t IsFilled)
{
	int16_t x, y, d, j;
	
	/*ʹÓÃBresenhamËã·¨»­Ô²£¬¿ÉÒÔ±ÜÃâºÄʱµÄ¸¡µãÔËË㣬ЧÂʸü¸ß*/
	/*²Î¿¼Îĵµ£ºhttps://www.cs.montana.edu/courses/spring2009/425/dslectures/Bresenham.pdf*/
	/*²Î¿¼½Ì³Ì£ºhttps://www.bilibili.com/video/BV1VM4y1u7wJ*/
	
	d = 1 - Radius;
	x = 0;
	y = Radius;
	
	/*»­Ã¿¸ö°Ë·ÖÖ®Ò»Ô²»¡µÄÆðʼµã*/
	OLED_DrawPoint(X + x, Y + y);
	OLED_DrawPoint(X - x, Y - y);
	OLED_DrawPoint(X + y, Y + x);
	OLED_DrawPoint(X - y, Y - x);
	
	if (IsFilled)		//Ö¸¶¨Ô²Ìî³ä
	{
		/*±éÀúÆðʼµãY×ø±ê*/
		for (j = -y; j < y; j ++)
		{
			/*ÔÚÖ¸¶¨ÇøÓò»­µã£¬Ìî³ä²¿·ÖÔ²*/
			OLED_DrawPoint(X, Y + j);
		}
	}
	
	while (x < y)		//±éÀúXÖáµÄÿ¸öµã
	{
		x ++;
		if (d < 0)		//ÏÂÒ»¸öµãÔÚµ±Ç°µã¶«·½
		{
			d += 2 * x + 1;
		}
		else			//ÏÂÒ»¸öµãÔÚµ±Ç°µã¶«ÄÏ·½
		{
			y --;
			d += 2 * (x - y) + 1;
		}
		
		/*»­Ã¿¸ö°Ë·ÖÖ®Ò»Ô²»¡µÄµã*/
		OLED_DrawPoint(X + x, Y + y);
		OLED_DrawPoint(X + y, Y + x);
		OLED_DrawPoint(X - x, Y - y);
		OLED_DrawPoint(X - y, Y - x);
		OLED_DrawPoint(X + x, Y - y);
		OLED_DrawPoint(X + y, Y - x);
		OLED_DrawPoint(X - x, Y + y);
		OLED_DrawPoint(X - y, Y + x);
		
		if (IsFilled)	//Ö¸¶¨Ô²Ìî³ä
		{
			/*±éÀúÖм䲿·Ö*/
			for (j = -y; j < y; j ++)
			{
				/*ÔÚÖ¸¶¨ÇøÓò»­µã£¬Ìî³ä²¿·ÖÔ²*/
				OLED_DrawPoint(X + x, Y + j);
				OLED_DrawPoint(X - x, Y + j);
			}
			
			/*±éÀúÁ½²à²¿·Ö*/
			for (j = -x; j < x; j ++)
			{
				/*ÔÚÖ¸¶¨ÇøÓò»­µã£¬Ìî³ä²¿·ÖÔ²*/
				OLED_DrawPoint(X - y, Y + j);
				OLED_DrawPoint(X + y, Y + j);
			}
		}
	}
}

/**
  * º¯    Êý£ºOLED»­ÍÖÔ²
  * ²Î    Êý£ºX Ö¸¶¨ÍÖÔ²µÄÔ²Ðĺá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨ÍÖÔ²µÄÔ²ÐÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºA Ö¸¶¨ÍÖÔ²µÄºáÏò°ëÖ᳤¶È£¬·¶Î§£º0~255
  * ²Î    Êý£ºB Ö¸¶¨ÍÖÔ²µÄ×ÝÏò°ëÖ᳤¶È£¬·¶Î§£º0~255
  * ²Î    Êý£ºIsFilled Ö¸¶¨ÍÖÔ²ÊÇ·ñÌî³ä
  *           ·¶Î§£ºOLED_UNFILLED		²»Ìî³ä
  *                 OLED_FILLED			Ìî³ä
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_DrawEllipse(int16_t X, int16_t Y, uint8_t A, uint8_t B, uint8_t IsFilled)
{
	int16_t x, y, j;
	int16_t a = A, b = B;
	float d1, d2;
	
	/*ʹÓÃBresenhamËã·¨»­ÍÖÔ²£¬¿ÉÒÔ±ÜÃⲿ·ÖºÄʱµÄ¸¡µãÔËË㣬ЧÂʸü¸ß*/
	/*²Î¿¼Á´½Ó£ºhttps://blog.csdn.net/myf_666/article/details/128167392*/
	
	x = 0;
	y = b;
	d1 = b * b + a * a * (-b + 0.5);
	
	if (IsFilled)	//Ö¸¶¨ÍÖÔ²Ìî³ä
	{
		/*±éÀúÆðʼµãY×ø±ê*/
		for (j = -y; j < y; j ++)
		{
			/*ÔÚÖ¸¶¨ÇøÓò»­µã£¬Ìî³ä²¿·ÖÍÖÔ²*/
			OLED_DrawPoint(X, Y + j);
			OLED_DrawPoint(X, Y + j);
		}
	}
	
	/*»­ÍÖÔ²»¡µÄÆðʼµã*/
	OLED_DrawPoint(X + x, Y + y);
	OLED_DrawPoint(X - x, Y - y);
	OLED_DrawPoint(X - x, Y + y);
	OLED_DrawPoint(X + x, Y - y);
	
	/*»­ÍÖÔ²Öм䲿·Ö*/
	while (b * b * (x + 1) < a * a * (y - 0.5))
	{
		if (d1 <= 0)		//ÏÂÒ»¸öµãÔÚµ±Ç°µã¶«·½
		{
			d1 += b * b * (2 * x + 3);
		}
		else				//ÏÂÒ»¸öµãÔÚµ±Ç°µã¶«ÄÏ·½
		{
			d1 += b * b * (2 * x + 3) + a * a * (-2 * y + 2);
			y --;
		}
		x ++;
		
		if (IsFilled)	//Ö¸¶¨ÍÖÔ²Ìî³ä
		{
			/*±éÀúÖм䲿·Ö*/
			for (j = -y; j < y; j ++)
			{
				/*ÔÚÖ¸¶¨ÇøÓò»­µã£¬Ìî³ä²¿·ÖÍÖÔ²*/
				OLED_DrawPoint(X + x, Y + j);
				OLED_DrawPoint(X - x, Y + j);
			}
		}
		
		/*»­ÍÖÔ²Öм䲿·ÖÔ²»¡*/
		OLED_DrawPoint(X + x, Y + y);
		OLED_DrawPoint(X - x, Y - y);
		OLED_DrawPoint(X - x, Y + y);
		OLED_DrawPoint(X + x, Y - y);
	}
	
	/*»­ÍÖÔ²Á½²à²¿·Ö*/
	d2 = b * b * (x + 0.5) * (x + 0.5) + a * a * (y - 1) * (y - 1) - a * a * b * b;
	
	while (y > 0)
	{
		if (d2 <= 0)		//ÏÂÒ»¸öµãÔÚµ±Ç°µã¶«·½
		{
			d2 += b * b * (2 * x + 2) + a * a * (-2 * y + 3);
			x ++;
			
		}
		else				//ÏÂÒ»¸öµãÔÚµ±Ç°µã¶«ÄÏ·½
		{
			d2 += a * a * (-2 * y + 3);
		}
		y --;
		
		if (IsFilled)	//Ö¸¶¨ÍÖÔ²Ìî³ä
		{
			/*±éÀúÁ½²à²¿·Ö*/
			for (j = -y; j < y; j ++)
			{
				/*ÔÚÖ¸¶¨ÇøÓò»­µã£¬Ìî³ä²¿·ÖÍÖÔ²*/
				OLED_DrawPoint(X + x, Y + j);
				OLED_DrawPoint(X - x, Y + j);
			}
		}
		
		/*»­ÍÖÔ²Á½²à²¿·ÖÔ²»¡*/
		OLED_DrawPoint(X + x, Y + y);
		OLED_DrawPoint(X - x, Y - y);
		OLED_DrawPoint(X - x, Y + y);
		OLED_DrawPoint(X + x, Y - y);
	}
}

/**
  * º¯    Êý£ºOLED»­Ô²»¡
  * ²Î    Êý£ºX Ö¸¶¨Ô²»¡µÄÔ²Ðĺá×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~127
  * ²Î    Êý£ºY Ö¸¶¨Ô²»¡µÄÔ²ÐÄ×Ý×ø±ê£¬·¶Î§£º-32768~32767£¬ÆÁÄ»ÇøÓò£º0~63
  * ²Î    Êý£ºRadius Ö¸¶¨Ô²»¡µÄ°ë¾¶£¬·¶Î§£º0~255
  * ²Î    Êý£ºStartAngle Ö¸¶¨Ô²»¡µÄÆðʼ½Ç¶È£¬·¶Î§£º-180~180
  *           ˮƽÏòÓÒΪ0¶È£¬Ë®Æ½Ïò×óΪ180¶È»ò-180¶È£¬Ï·½ÎªÕýÊý£¬ÉÏ·½Îª¸ºÊý£¬Ë³Ê±ÕëÐýת
  * ²Î    Êý£ºEndAngle Ö¸¶¨Ô²»¡µÄÖÕÖ¹½Ç¶È£¬·¶Î§£º-180~180
  *           ˮƽÏòÓÒΪ0¶È£¬Ë®Æ½Ïò×óΪ180¶È»ò-180¶È£¬Ï·½ÎªÕýÊý£¬ÉÏ·½Îª¸ºÊý£¬Ë³Ê±ÕëÐýת
  * ²Î    Êý£ºIsFilled Ö¸¶¨Ô²»¡ÊÇ·ñÌî³ä£¬Ìî³äºóΪÉÈÐÎ
  *           ·¶Î§£ºOLED_UNFILLED		²»Ìî³ä
  *                 OLED_FILLED			Ìî³ä
  * ·µ »Ø Öµ£ºÎÞ
  * ˵    Ã÷£ºµ÷Óô˺¯Êýºó£¬ÒªÏëÕæÕýµØ³ÊÏÖÔÚÆÁÄ»ÉÏ£¬»¹Ðèµ÷Óøüк¯Êý
  */
void OLED_DrawArc(int16_t X, int16_t Y, uint8_t Radius, int16_t StartAngle, int16_t EndAngle, uint8_t IsFilled)
{
	int16_t x, y, d, j;
	
	/*´Ëº¯Êý½èÓÃBresenhamËã·¨»­Ô²µÄ·½·¨*/
	
	d = 1 - Radius;
	x = 0;
	y = Radius;
	
	/*ÔÚ»­Ô²µÄÿ¸öµãʱ£¬ÅжÏÖ¸¶¨µãÊÇ·ñÔÚÖ¸¶¨½Ç¶ÈÄÚ£¬ÔÚ£¬Ôò»­µã£¬²»ÔÚ£¬Ôò²»×ö´¦Àí*/
	if (OLED_IsInAngle(x, y, StartAngle, EndAngle))	{OLED_DrawPoint(X + x, Y + y);}
	if (OLED_IsInAngle(-x, -y, StartAngle, EndAngle)) {OLED_DrawPoint(X - x, Y - y);}
	if (OLED_IsInAngle(y, x, StartAngle, EndAngle)) {OLED_DrawPoint(X + y, Y + x);}
	if (OLED_IsInAngle(-y, -x, StartAngle, EndAngle)) {OLED_DrawPoint(X - y, Y - x);}
	
	if (IsFilled)	//Ö¸¶¨Ô²»¡Ìî³ä
	{
		/*±éÀúÆðʼµãY×ø±ê*/
		for (j = -y; j < y; j ++)
		{
			/*ÔÚÌî³äÔ²µÄÿ¸öµãʱ£¬ÅжÏÖ¸¶¨µãÊÇ·ñÔÚÖ¸¶¨½Ç¶ÈÄÚ£¬ÔÚ£¬Ôò»­µã£¬²»ÔÚ£¬Ôò²»×ö´¦Àí*/
			if (OLED_IsInAngle(0, j, StartAngle, EndAngle)) {OLED_DrawPoint(X, Y + j);}
		}
	}
	
	while (x < y)		//±éÀúXÖáµÄÿ¸öµã
	{
		x ++;
		if (d < 0)		//ÏÂÒ»¸öµãÔÚµ±Ç°µã¶«·½
		{
			d += 2 * x + 1;
		}
		else			//ÏÂÒ»¸öµãÔÚµ±Ç°µã¶«ÄÏ·½
		{
			y --;
			d += 2 * (x - y) + 1;
		}
		
		/*ÔÚ»­Ô²µÄÿ¸öµãʱ£¬ÅжÏÖ¸¶¨µãÊÇ·ñÔÚÖ¸¶¨½Ç¶ÈÄÚ£¬ÔÚ£¬Ôò»­µã£¬²»ÔÚ£¬Ôò²»×ö´¦Àí*/
		if (OLED_IsInAngle(x, y, StartAngle, EndAngle)) {OLED_DrawPoint(X + x, Y + y);}
		if (OLED_IsInAngle(y, x, StartAngle, EndAngle)) {OLED_DrawPoint(X + y, Y + x);}
		if (OLED_IsInAngle(-x, -y, StartAngle, EndAngle)) {OLED_DrawPoint(X - x, Y - y);}
		if (OLED_IsInAngle(-y, -x, StartAngle, EndAngle)) {OLED_DrawPoint(X - y, Y - x);}
		if (OLED_IsInAngle(x, -y, StartAngle, EndAngle)) {OLED_DrawPoint(X + x, Y - y);}
		if (OLED_IsInAngle(y, -x, StartAngle, EndAngle)) {OLED_DrawPoint(X + y, Y - x);}
		if (OLED_IsInAngle(-x, y, StartAngle, EndAngle)) {OLED_DrawPoint(X - x, Y + y);}
		if (OLED_IsInAngle(-y, x, StartAngle, EndAngle)) {OLED_DrawPoint(X - y, Y + x);}
		
		if (IsFilled)	//Ö¸¶¨Ô²»¡Ìî³ä
		{
			/*±éÀúÖм䲿·Ö*/
			for (j = -y; j < y; j ++)
			{
				/*ÔÚÌî³äÔ²µÄÿ¸öµãʱ£¬ÅжÏÖ¸¶¨µãÊÇ·ñÔÚÖ¸¶¨½Ç¶ÈÄÚ£¬ÔÚ£¬Ôò»­µã£¬²»ÔÚ£¬Ôò²»×ö´¦Àí*/
				if (OLED_IsInAngle(x, j, StartAngle, EndAngle)) {OLED_DrawPoint(X + x, Y + j);}
				if (OLED_IsInAngle(-x, j, StartAngle, EndAngle)) {OLED_DrawPoint(X - x, Y + j);}
			}
			
			/*±éÀúÁ½²à²¿·Ö*/
			for (j = -x; j < x; j ++)
			{
				/*ÔÚÌî³äÔ²µÄÿ¸öµãʱ£¬ÅжÏÖ¸¶¨µãÊÇ·ñÔÚÖ¸¶¨½Ç¶ÈÄÚ£¬ÔÚ£¬Ôò»­µã£¬²»ÔÚ£¬Ôò²»×ö´¦Àí*/
				if (OLED_IsInAngle(-y, j, StartAngle, EndAngle)) {OLED_DrawPoint(X - y, Y + j);}
				if (OLED_IsInAngle(y, j, StartAngle, EndAngle)) {OLED_DrawPoint(X + y, Y + j);}
			}
		}
	}
}

/*********************¹¦Äܺ¯Êý*/

oled.h

#ifndef __OLED_H
#define __OLED_H

#include <stdint.h>
#include "Oled_Data.h"

/*²ÎÊýºê¶¨Òå*********************/

/*FontSize²ÎÊýÈ¡Öµ*/
/*´Ë²ÎÊýÖµ²»½öÓÃÓÚÅжϣ¬¶øÇÒÓÃÓÚ¼ÆËãºáÏò×Ö·ûÆ«ÒÆ£¬Ä¬ÈÏֵΪ×ÖÌåÏñËØ¿í¶È*/
#define OLED_8X16				8
#define OLED_6X8				6

/*IsFilled²ÎÊýÊýÖµ*/
#define OLED_UNFILLED			0
#define OLED_FILLED				1

/*********************²ÎÊýºê¶¨Òå*/


/*º¯ÊýÉùÃ÷*********************/

/*³õʼ»¯º¯Êý*/
void OLED_Init(void);

/*¸üк¯Êý*/
void OLED_Update(void);
void OLED_UpdateArea(int16_t X, int16_t Y, uint8_t Width, uint8_t Height);

/*ÏÔ´æ¿ØÖƺ¯Êý*/
void OLED_Clear(void);
void OLED_ClearArea(int16_t X, int16_t Y, uint8_t Width, uint8_t Height);
void OLED_Reverse(void);
void OLED_ReverseArea(int16_t X, int16_t Y, uint8_t Width, uint8_t Height);

/*ÏÔʾº¯Êý*/
void OLED_ShowChar(int16_t X, int16_t Y, char Char, uint8_t FontSize);
void OLED_ShowString(int16_t X, int16_t Y, char *String, uint8_t FontSize);
void OLED_ShowNum(int16_t X, int16_t Y, uint32_t Number, uint8_t Length, uint8_t FontSize);
void OLED_ShowSignedNum(int16_t X, int16_t Y, int32_t Number, uint8_t Length, uint8_t FontSize);
void OLED_ShowHexNum(int16_t X, int16_t Y, uint32_t Number, uint8_t Length, uint8_t FontSize);
void OLED_ShowBinNum(int16_t X, int16_t Y, uint32_t Number, uint8_t Length, uint8_t FontSize);
void OLED_ShowFloatNum(int16_t X, int16_t Y, double Number, uint8_t IntLength, uint8_t FraLength, uint8_t FontSize);
void OLED_ShowChinese(int16_t X, int16_t Y, char *Chinese);
void OLED_ShowImage(int16_t X, int16_t Y, uint8_t Width, uint8_t Height, const uint8_t *Image);
void OLED_Printf(int16_t X, int16_t Y, uint8_t FontSize, char *format, ...);

/*»æͼº¯Êý*/
void OLED_DrawPoint(int16_t X, int16_t Y);
uint8_t OLED_GetPoint(int16_t X, int16_t Y);
void OLED_DrawLine(int16_t X0, int16_t Y0, int16_t X1, int16_t Y1);
void OLED_DrawRectangle(int16_t X, int16_t Y, uint8_t Width, uint8_t Height, uint8_t IsFilled);
void OLED_DrawTriangle(int16_t X0, int16_t Y0, int16_t X1, int16_t Y1, int16_t X2, int16_t Y2, uint8_t IsFilled);
void OLED_DrawCircle(int16_t X, int16_t Y, uint8_t Radius, uint8_t IsFilled);
void OLED_DrawEllipse(int16_t X, int16_t Y, uint8_t A, uint8_t B, uint8_t IsFilled);
void OLED_DrawArc(int16_t X, int16_t Y, uint8_t Radius, int16_t StartAngle, int16_t EndAngle, uint8_t IsFilled);




#endif

Oled_Data.c

#include "Oled_Data.h"
/*¿í8ÏñËØ£¬¸ß16ÏñËØ*/
const uint8_t OLED_F8x16[][16] =
{
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//   0
	0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,// ! 1
	0x00,0x16,0x0E,0x00,0x16,0x0E,0x00,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
	0x00,0x00,0x00,0x16,0x0E,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,
	0x00,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,0xC0,0xC0,0x00,0x00,0x00,
	0x00,0x00,0x80,0xB0,0x70,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,0x20,0x10,0x08,0x04,0x08,0x10,0x20,
	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,0x04,0x08,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
	0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x00,
	0x00,0x20,0x3F,0x21,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,0x80,0x40,0x40,0x80,0x00,0x00,0x80,
	0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,// ~ 94
};

/*¿í6ÏñËØ£¬¸ß8ÏñËØ*/
const uint8_t OLED_F6x8[][6] = 
{
	0x00,0x00,0x00,0x00,0x00,0x00,//   0
	0x00,0x00,0x00,0x2F,0x00,0x00,// ! 1
	0x00,0x00,0x07,0x00,0x07,0x00,// " 2
	0x00,0x14,0x7F,0x14,0x7F,0x14,// # 3
	0x00,0x24,0x2A,0x7F,0x2A,0x12,// $ 4
	0x00,0x23,0x13,0x08,0x64,0x62,// % 5
	0x00,0x36,0x49,0x55,0x22,0x50,// & 6
	0x00,0x00,0x00,0x07,0x00,0x00,// ' 7
	0x00,0x00,0x1C,0x22,0x41,0x00,// ( 8
	0x00,0x00,0x41,0x22,0x1C,0x00,// ) 9
	0x00,0x14,0x08,0x3E,0x08,0x14,// * 10
	0x00,0x08,0x08,0x3E,0x08,0x08,// + 11
	0x00,0x00,0x00,0xA0,0x60,0x00,// , 12
	0x00,0x08,0x08,0x08,0x08,0x08,// - 13
	0x00,0x00,0x60,0x60,0x00,0x00,// . 14
	0x00,0x20,0x10,0x08,0x04,0x02,// / 15
	0x00,0x3E,0x51,0x49,0x45,0x3E,// 0 16
	0x00,0x00,0x42,0x7F,0x40,0x00,// 1 17
	0x00,0x42,0x61,0x51,0x49,0x46,// 2 18
	0x00,0x21,0x41,0x45,0x4B,0x31,// 3 19
	0x00,0x18,0x14,0x12,0x7F,0x10,// 4 20
	0x00,0x27,0x45,0x45,0x45,0x39,// 5 21
	0x00,0x3C,0x4A,0x49,0x49,0x30,// 6 22
	0x00,0x01,0x71,0x09,0x05,0x03,// 7 23
	0x00,0x36,0x49,0x49,0x49,0x36,// 8 24
	0x00,0x06,0x49,0x49,0x29,0x1E,// 9 25
	0x00,0x00,0x36,0x36,0x00,0x00,// : 26
	0x00,0x00,0x56,0x36,0x00,0x00,// ; 27
	0x00,0x08,0x14,0x22,0x41,0x00,// < 28
	0x00,0x14,0x14,0x14,0x14,0x14,// = 29
	0x00,0x00,0x41,0x22,0x14,0x08,// > 30
	0x00,0x02,0x01,0x51,0x09,0x06,// ? 31
	0x00,0x3E,0x49,0x55,0x59,0x2E,// @ 32
	0x00,0x7C,0x12,0x11,0x12,0x7C,// A 33
	0x00,0x7F,0x49,0x49,0x49,0x36,// B 34
	0x00,0x3E,0x41,0x41,0x41,0x22,// C 35
	0x00,0x7F,0x41,0x41,0x22,0x1C,// D 36
	0x00,0x7F,0x49,0x49,0x49,0x41,// E 37
	0x00,0x7F,0x09,0x09,0x09,0x01,// F 38
	0x00,0x3E,0x41,0x49,0x49,0x7A,// G 39
	0x00,0x7F,0x08,0x08,0x08,0x7F,// H 40
	0x00,0x00,0x41,0x7F,0x41,0x00,// I 41
	0x00,0x20,0x40,0x41,0x3F,0x01,// J 42
	0x00,0x7F,0x08,0x14,0x22,0x41,// K 43
	0x00,0x7F,0x40,0x40,0x40,0x40,// L 44
	0x00,0x7F,0x02,0x0C,0x02,0x7F,// M 45
	0x00,0x7F,0x04,0x08,0x10,0x7F,// N 46
	0x00,0x3E,0x41,0x41,0x41,0x3E,// O 47
	0x00,0x7F,0x09,0x09,0x09,0x06,// P 48
	0x00,0x3E,0x41,0x51,0x21,0x5E,// Q 49
	0x00,0x7F,0x09,0x19,0x29,0x46,// R 50
	0x00,0x46,0x49,0x49,0x49,0x31,// S 51
	0x00,0x01,0x01,0x7F,0x01,0x01,// T 52
	0x00,0x3F,0x40,0x40,0x40,0x3F,// U 53
	0x00,0x1F,0x20,0x40,0x20,0x1F,// V 54
	0x00,0x3F,0x40,0x38,0x40,0x3F,// W 55
	0x00,0x63,0x14,0x08,0x14,0x63,// X 56
	0x00,0x07,0x08,0x70,0x08,0x07,// Y 57
	0x00,0x61,0x51,0x49,0x45,0x43,// Z 58
	0x00,0x00,0x7F,0x41,0x41,0x00,// [ 59
	0x00,0x02,0x04,0x08,0x10,0x20,// \ 60
	0x00,0x00,0x41,0x41,0x7F,0x00,// ] 61
	0x00,0x04,0x02,0x01,0x02,0x04,// ^ 62
	0x00,0x40,0x40,0x40,0x40,0x40,// _ 63
	0x00,0x00,0x01,0x02,0x04,0x00,// ` 64
	0x00,0x20,0x54,0x54,0x54,0x78,// a 65
	0x00,0x7F,0x48,0x44,0x44,0x38,// b 66
	0x00,0x38,0x44,0x44,0x44,0x20,// c 67
	0x00,0x38,0x44,0x44,0x48,0x7F,// d 68
	0x00,0x38,0x54,0x54,0x54,0x18,// e 69
	0x00,0x08,0x7E,0x09,0x01,0x02,// f 70
	0x00,0x18,0xA4,0xA4,0xA4,0x7C,// g 71
	0x00,0x7F,0x08,0x04,0x04,0x78,// h 72
	0x00,0x00,0x44,0x7D,0x40,0x00,// i 73
	0x00,0x40,0x80,0x84,0x7D,0x00,// j 74
	0x00,0x7F,0x10,0x28,0x44,0x00,// k 75
	0x00,0x00,0x41,0x7F,0x40,0x00,// l 76
	0x00,0x7C,0x04,0x18,0x04,0x78,// m 77
	0x00,0x7C,0x08,0x04,0x04,0x78,// n 78
	0x00,0x38,0x44,0x44,0x44,0x38,// o 79
	0x00,0xFC,0x24,0x24,0x24,0x18,// p 80
	0x00,0x18,0x24,0x24,0x18,0xFC,// q 81
	0x00,0x7C,0x08,0x04,0x04,0x08,// r 82
	0x00,0x48,0x54,0x54,0x54,0x20,// s 83
	0x00,0x04,0x3F,0x44,0x40,0x20,// t 84
	0x00,0x3C,0x40,0x40,0x20,0x7C,// u 85
	0x00,0x1C,0x20,0x40,0x20,0x1C,// v 86
	0x00,0x3C,0x40,0x30,0x40,0x3C,// w 87
	0x00,0x44,0x28,0x10,0x28,0x44,// x 88
	0x00,0x1C,0xA0,0xA0,0xA0,0x7C,// y 89
	0x00,0x44,0x64,0x54,0x4C,0x44,// z 90
	0x00,0x00,0x08,0x7F,0x41,0x00,// { 91
	0x00,0x00,0x00,0x7F,0x00,0x00,// | 92
	0x00,0x00,0x41,0x7F,0x08,0x00,// } 93
	0x00,0x08,0x04,0x08,0x10,0x08,// ~ 94
};
/*********************ASCII×ÖÄ£Êý¾Ý*/


/*ºº×Ö×ÖÄ£Êý¾Ý*********************/

/*ÏàͬµÄºº×ÖÖ»ÐèÒª¶¨ÒåÒ»´Î£¬ºº×Ö²»·ÖÏȺó˳Ðò*/
/*±ØÐëÈ«²¿Îªºº×Ö»òÕßÈ«½Ç×Ö·û£¬²»Òª¼ÓÈëÈκΰë½Ç×Ö·û*/

/*¿í16ÏñËØ£¬¸ß16ÏñËØ*/
const ChineseCell_t OLED_CF16x16[] = {
	
//	"£¬",
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x58,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	
//	"¡£",
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	
//	"Äã",
	0x00,0x80,0x60,0xF8,0x07,0x40,0x20,0x18,0x0F,0x08,0xC8,0x08,0x08,0x28,0x18,0x00,
	0x01,0x00,0x00,0xFF,0x00,0x10,0x0C,0x03,0x40,0x80,0x7F,0x00,0x01,0x06,0x18,0x00,
	
//	"ºÃ",
	0x10,0x10,0xF0,0x1F,0x10,0xF0,0x00,0x80,0x82,0x82,0xE2,0x92,0x8A,0x86,0x80,0x00,
	0x40,0x22,0x15,0x08,0x16,0x61,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,
	
//	"ÊÀ",
	0x20,0x20,0x20,0xFE,0x20,0x20,0xFF,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0x00,
	0x00,0x00,0x00,0x7F,0x40,0x40,0x47,0x44,0x44,0x44,0x47,0x40,0x40,0x40,0x00,0x00,
	
//	"½ç",
	0x00,0x00,0x00,0xFE,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,0x00,
	0x08,0x08,0x04,0x84,0x62,0x1E,0x01,0x00,0x01,0xFE,0x02,0x04,0x04,0x08,0x08,0x00,
	
	/*°´ÕÕÉÏÃæµÄ¸ñʽ£¬ÔÚÕâ¸öλÖüÓÈëеĺº×ÖÊý¾Ý*/
	//...
	
	
	/*δÕÒµ½Ö¸¶¨ºº×ÖʱÏÔʾµÄĬÈÏͼÐΣ¨Ò»¸ö·½¿ò£¬ÄÚ²¿Ò»¸öÎʺţ©£¬ÇëÈ·±£ÆäλÓÚÊý×é×îĩβ*/
//	"",		
	0xFF,0x01,0x01,0x01,0x31,0x09,0x09,0x09,0x09,0x89,0x71,0x01,0x01,0x01,0x01,0xFF,
	0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x96,0x81,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,

};

/*********************ºº×Ö×ÖÄ£Êý¾Ý*/


/*ͼÏñÊý¾Ý*********************/

/*²âÊÔͼÏñ£¨Ò»¸ö·½¿ò£¬ÄÚ²¿Ò»¸ö¶þ¼«¹Ü·ûºÅ£©£¬¿í16ÏñËØ£¬¸ß16ÏñËØ*/
const uint8_t Diode[] = {
	0xFF,0x01,0x81,0x81,0x81,0xFD,0x89,0x91,0xA1,0xC1,0xFD,0x81,0x81,0x81,0x01,0xFF,
	0xFF,0x80,0x80,0x80,0x80,0x9F,0x88,0x84,0x82,0x81,0x9F,0x80,0x80,0x80,0x80,0xFF,
};

/*°´ÕÕÉÏÃæµÄ¸ñʽ£¬ÔÚÕâ¸öλÖüÓÈëеÄͼÏñÊý¾Ý*/
//...

/*********************ͼÏñÊý¾Ý*/

Oled_Data.h

#ifndef __OLED_DATA_H
#define __OLED_DATA_H

#include <stdint.h>

/*ÖÐÎÄ×Ö·û×Ö½Ú¿í¶È*/
#define OLED_CHN_CHAR_WIDTH			2		//UTF-8±àÂë¸ñʽ¸ø3£¬GB2312±àÂë¸ñʽ¸ø2

/*×ÖÄ£»ù±¾µ¥Ôª*/
typedef struct 
{
	char Index[OLED_CHN_CHAR_WIDTH + 1];	//ºº×ÖË÷Òý
	uint8_t Data[32];						//×ÖÄ£Êý¾Ý
} ChineseCell_t;

/*ASCII×ÖÄ£Êý¾ÝÉùÃ÷*/
extern const uint8_t OLED_F8x16[][16];
extern const uint8_t OLED_F6x8[][6];

/*ºº×Ö×ÖÄ£Êý¾ÝÉùÃ÷*/
extern const ChineseCell_t OLED_CF16x16[];

/*ͼÏñÊý¾ÝÉùÃ÷*/
extern const uint8_t Diode[];
/*°´ÕÕÉÏÃæµÄ¸ñʽ£¬ÔÚÕâ¸öλÖüÓÈëеÄͼÏñÊý¾ÝÉùÃ÷*/


#endif


接下来就来看一下OLED每个io口的具体配置:

在主函数中调用OLED的初始化,和在while中一直显示你所需要显示的值和不断刷新就能实时显示了:

OLED_ShowNum(60,0, right_now,3,OLED_8X16); //(right_now你要显示的值)
    OLED_Update();

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电赛张小七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值