STM32实现硬件IIC驱动OLED屏幕显示

STM32——硬件IIC驱动OLED屏幕显示

  • OLED屏幕
  • OLED屏幕特点
  • OLED屏幕接线说明
  • OLED屏幕显存
  • OLED屏幕原理
  • OLED屏幕常用指令
  • OLED屏幕字模软件的使用
  • 写命令
  • 写数据
  • OLED 初始化(厂家提供的代码)
  • 设置起点坐标
  • 全屏填充
  • 清屏
  • OLED 打开
  • OLED 关闭
  • 显示字符串
  • 显示中文
  • 显示黑白图片
  • 整合
  • oled.c
  • oled.h
  • main.c
  • codetab.h
  • OLED屏幕

    OLED即有机发光管(Organic Light-Emitting Diode,OLED)。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低功耗、极高反应速度、可用于绕曲性面板、使用温度范围广、构造及制程简单等有点,被认为是下一代的平面显示屏新兴应用技术。

    OLED显示和传统的LCD显示不同,其可以自发光,所以不需要背光灯,这使得OLED显示屏相对于LCD显示屏尺寸更薄,同时显示效果更优。

    常用的OLED屏幕有蓝色、黄色、白色等几种。屏的大小为0.96寸像素点为128*64,所以我们称为0.96oled屏或者12864屏。

    OLED屏幕特点

    1. 模块尺寸:23.7 *23.8mm
    2. 电源电压:3.3-5.5V
    3. 驱动芯片:SSD1306
    4. 测试平台:提供 k60/k10,9s12XS128,51,stm32,stm8等单片机。

    OLED屏幕接线说明

    OLED屏幕显存

    OLED本身是没有显存的,他的现存是依赖SSD1306提供的,而SSD1306提供一块显存。
    SSD1306显存总共为128*64bit大小,SSD1306将这些显存分成了8页每页包含了128个字节

    0.96寸的oled又叫12864显示屏,分辨率为128*64(这么多个像素点),由128列,64行组成,其中64行又被分为8页,每页8行

    OLED屏幕原理

    STM32内部建立一个缓存(共128*8个字节),每次修改的时候,只是修改STM32上的缓存(实际上就是SRAM),修改完后一次性把STM32上的缓存数据写入到OLED的GRAM。

    这个方法也有坏处,对于SRAM很小的单片机(51系列)就比较麻烦。

    OLED屏幕常用指令

    命令0X81:设置对比度。包含两个字节,第一个0X81为命令,随后方法是的一个字节要设置这个对比度,值越大屏幕越亮。

    命令0XAE/0XAF0XAE为关闭显示命令,0XAF为开启显示命令

    命令0X8D:包含两个字节,第一个为命令字,第二个为设置值,第二个字节的BIT2表示电荷泵的开关状态,A2该位为1(0x14)开启电荷泵为0(0x10)则关闭。模块初始化的时候,这个必须要开启,否则看不到屏幕显示。

    命令0XB0~B7:用于设置页地址,其低三位的值对应GRAM页地址。

    命令0X00~0X0F:用于设置显示时的起始列地址低四位。

    命令0X10~0X1F:用于设置显示时的起始列地址高四位。

    OLED屏幕字模软件的使用

    OLED点阵的点亮方式,举个显示”P”的例子,最左边位最高位P7。

    这个图画错了从下到上应该是8个点,他画了9个点。从下至上第2个点开始。

    1. 可以看出,要想显示”P”,首先写入0x1f,则显示一个竖杠,之后控制器自动水平移动到下一列。

    2. 再写入0X05,则出现两个小横杆,这个两个横杆就是0X05中0000 0101中两个1所处的位置,写完第二列后,控制器自动跳到第三列.

    3. 再写入0X07,第四列写入0X00后,P就显示出来了。这也说明,即使你只想再一列的最上端显示一个小点,即写入0X01。

    4. 即你不能一次性控制一个点阵,只能一次性控制八位点阵,即一列点阵。这也决定了字模选择的取模方式为“列行式”。

    写命令

    void WriteCmd(unsigned char I2C_Command)
    {
    	I2C_WriteByte(0x00,I2C_Command);//从0x00开始写指令
    }
    

    写数据

    void WriteData(unsigned char I2C_Data)
    {
    	I2C_WriteByte(0x40,I2C_Data);//从0x40开始写数据
    }
    

    OLED 初始化(厂家提供的代码)

    void OLED_Init(void)
    {
    		delay_ms(100);
    		WriteCmd(0xAE); //display off
    		WriteCmd(0x20);	//Set Memory Addressing Mode	
    		WriteCmd(0x10);	//00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
    		WriteCmd(0xb0);	//Set Page Start Address for Page Addressing Mode,0-7
    		WriteCmd(0xc8);	//Set COM Output Scan Direction
    		WriteCmd(0x00); //---set low column address
    		WriteCmd(0x10); //---set high column address
    		WriteCmd(0x40); //--set start line address
    		WriteCmd(0x81); //--set contrast control register
    		WriteCmd(0xff); //áá?èμ÷?ú 0x00~0xff
    		WriteCmd(0xa1); //--set segment re-map 0 to 127
    		WriteCmd(0xa6); //--set normal display
    		WriteCmd(0xa8); //--set multiplex ratio(1 to 64)
    		WriteCmd(0x3F); //
    		WriteCmd(0xa4); //0xa4,Output follows RAM content;0xa5,Output ignores RAM content
    		WriteCmd(0xd3); //-set display offset
    		WriteCmd(0x00); //-not offset
    		WriteCmd(0xd5); //--set display clock divide ratio/oscillator frequency
    		WriteCmd(0xf0); //--set divide ratio
    		WriteCmd(0xd9); //--set pre-charge period
    		WriteCmd(0x22); //
    		WriteCmd(0xda); //--set com pins hardware configuration
    		WriteCmd(0x12);
    		WriteCmd(0xdb); //--set vcomh
    		WriteCmd(0x20); //0x20,0.77xVcc
    		WriteCmd(0x8d); //--set DC-DC enable
    		WriteCmd(0x14); //
    		WriteCmd(0xaf); //--turn on oled panel
    }
    

    设置起点坐标

    void OLED_setPos(unsigned char x,unsigned char y)
    {
    	WriteCmd(0xb0+y);               //设置页 0xB0代表页为第0页
    	WriteCmd( (x&0xf0) >>4 | 0x10); //设置列 高四位 获取高四位数据右移动4位并保存,且让第5位为1
    	WriteCmd( (x&0x0f) | 0x01);     //设置列 低四位 保留最后一位数据,并让最后一位数据置1
    }
    

    全屏填充

    //全屏处理函数
    void OLED_FILL(unsigned char Fill_data)
    {
    	unsigned char m,n;
    	
    	WriteCmd(0xb0+m); //设置页,b0 第0页,+m 偏移页数
    	WriteCmd(0x00);   //设置列的低四位地址
    	WriteCmd(0x10);   //设置列的高四位地址,具体效果可查看oled指令表
    	
    	for(m=0;m<8;m++) //页循环,有8页
    	{
    		for(n=0;n<128;n++) //列循环 有128列
    		{
    			WriteData(Fill_Data) //写数据
    		}
    	}
    }
    

    清屏

    //清屏函数,在全屏处理函数上进行的修改
    void OLED_CLS(void)
    {
    	OLED_Fill(0x00); 
    }
    

    OLED 打开

    void OLED_ON()
    {
    	WriteCmd(0XAF);//开启显示
    	WriteCmd(0X8D);//设置电荷泵
    	WriteCmd(0x14);//开启电荷泵
    }
    

    OLED 关闭

    void OLED_OFF()
    {
    	WriteCmd(0xAE);//关闭显示
    	WriteCmd(0x8D);//设置电荷泵
    	WriteCmd(0x10);//关闭电荷泵
    }
    

    显示字符串

    
     /**
      * @brief  OLED_ShowStr,显示codetab.h中的ASCII字符,有6*8和8*16可选择
      * @param  x,y:起始点坐标(x:0~127, y:0~7);
        *      ch[]:要显示的字符串; 
        *  TextSize:字符大小(1:6*8 ; 2:8*16)
        * @retval 无
    */
    
    void OLED_ShowStr(unsigned char x,unsigned char y,unsigned char ch[],unsigned int TextSize)
    {
    	unsigned char c=0,i=0,j=0;
    	
    	switch(TextSize)
    	{
    		case 1: //6x8大小的字符串
    		{
    			while(ch[j] != '\0') //遍历到字符串尾
    			{
    				c = ch[j] - 32; //字符对应的ASCII码 -32 = 从空格开始的偏移量
    				
    				if(x>126)  //即将写满这一页
    				{
    					x = 0; //回到第一列
    					y++;   //页往下翻
    				}
    				
    				OLED_setPos(x,y); //光标重新置点
    				
    				for(i=0;i<6;i++) //一个字符有6个字库数据
    				{
    					WriteData(F6x8[c][6]); //写入字库数据
    				}
    				
    				x += 6; //写完一个字符,偏移6列
    				j++; //偏移字符
    			}
    		}
    		break;
    		
    		case 2: //8x16大小的字符串
    		{
    			while(ch[j] != '\0')
    			{
    				c = ch[j] - 32; //字符对应的ASCII码 -32 = 从空格开始的偏移量
    				
    				if(x>120)
    				{
    					x = 0;
    					y++;
    				}
    				
    				OLED_SetPos(x,y); //光标重新置点
    				
    				for(i=0;i<8;i++) //一个字符有16个字库数据,上一页写一半 8
    				{
    					WriteData(F8X16[c*16+i]); //c*16 从空格开始的偏移量,+i 偏移到第i个数据
    				}
    				
    				OLED_SetPos(x,y+1); //y+1 另起一页继续写,如果没有这句话,效果直接只有字的一半
    				
    				for(i=0;i<8;i++) //下一页写一半 8
    				{
    					WriteData(F8X16[c*16+8+i]); //c*16 从空格开始的偏移量,+8 上一页偏移的8个数据,+i 偏移到第i个数据
    				}
    				
    				x += 8; //写完一个字符,偏移8列
    				j++; //偏移字符
    			}
    		}
    		break;
    	}
    }
    

    显示中文

    用 128×64取字软件(PCtoLCD2002.exe)生成数据

    128×64取字软件
    提取码:djay

    /**
      * @brief  OLED_ShowCN,显示codetab.h中的汉字,16*16点阵
      * @param  x,y:起始点坐标(x:0~127, y:0~7); 
      *           N:汉字在codetab.h中的索引
      * @retval 无
    * */
    
    void OLED_ShowCN(unsigned char x,unsigned char y,unsigned char N)
    {
    	unsigned char i = 0;
    	unsigned char addr = N*32; //汉字的地址
    	
    	OLED_SetPos(x,y); //光标重新置点
    	
    	for(i=0;i<16;i++) //一个汉字有32个字库数据,上一页写一半 16
    	{
    		WriteData(F16X16[addr]);
    		addr += 1; //地址偏移
    	}
    	
    	OLED_SetPos(x,y+1); //y+1 另起一页继续写,如果没有这句话,效果直接只有字的一半
    	
    	for(i=0;i<16;i++) //下一页写一半 16
    	{
    		WriteData(F16X16[addr]);
    		addr += 1; //地址偏移
    	}
    }
    

    显示黑白图片

    用 BMP图像转化(Image2Lcd.exe)生成数据

    BMP图像转化
    提取码:tgch

    /**
      * @brief  OLED_DrawBMP,显示BMP位图
      * @param  x0,y0:起始点坐标(x0:0~127, y0:0~7);
      *         x1,y1:起点对角线(结束点)的坐标(x1:1~128,y1:1~8)
      * @retval 无
     * */
    
    void OLED_ShowBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[])
    {
    	unsigned char x,y;
    	unsigned char j=0;
    	
    	if(y1 % 8 == 0) //分页,一页8行
    	{
    		y=y/8; //满8为1页
    	}
    	else
    	{
    		y=y/8+1; //不满8,也凑成1页
    	}
    	
    	for(y=y0;y<y1;y++)
    	{
    		OLED_SetPos(x0,y); //写完一页,光标重新回到下一页开头
    		
    		for(x=x0;x<x1;x++)
    		{
    			WriteData(BMP[j++]);
    		}
    	}
    }
    

    整合

    oled.c

    #include "oled.h"
    #include "stm32f10x.h"
    #include "SysTick.h"
    #include "codetab.h"
    
    //初始化硬件IIC引脚
    void I2C_Configuration(void)
    {
    		GPIO_InitTypeDef GPIO_InitStructure;
    		I2C_InitTypeDef I2C_InitStructure;
    		
    		RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);
    		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    		
    		//PB6——SCL PB7——SDA
    		GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_OD;
    		GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_6 | GPIO_Pin_7;
    		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    		
    		GPIO_Init(GPIOB, &GPIO_InitStructure);
    		
    		I2C_DeInit(I2C1);
    		I2C_InitStructure.I2C_Ack                 = I2C_Ack_Enable;
    		I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
    		I2C_InitStructure.I2C_ClockSpeed          = 400000;
    		I2C_InitStructure.I2C_DutyCycle           = I2C_DutyCycle_2;
    		I2C_InitStructure.I2C_Mode                = I2C_Mode_I2C;
    		I2C_InitStructure.I2C_OwnAddress1         = 0x30;
    		
    		I2C_Init(I2C1, &I2C_InitStructure);
    		I2C_Cmd(I2C1, ENABLE);
    }
    
    //向OLED寄存器地址写一个byte的数据
    void I2C_WriteByte(uint8_t addr,uint8_t data)
    {
    		while( I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY) );
    		I2C_GenerateSTART(I2C1, ENABLE);
    		
    		while( !I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT) );
    		I2C_Send7bitAddress(I2C1, OLED_ADDRESS, I2C_Direction_Transmitter);
    		
    		while( !I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED) );
    		I2C_SendData(I2C1, addr);
    		
    		while( !I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTING) );
    		I2C_SendData(I2C1, data);
    		
    		while( !I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED) );
    		I2C_GenerateSTOP(I2C1, ENABLE);
    }
    
    //写指令
    void WriteCmd(unsigned char I2C_Command)
    {
    		I2C_WriteByte(0x00,I2C_Command);
    }
    
    //写数据
    void WriteData(unsigned char I2C_Data)
    {
    		I2C_WriteByte(0x40,I2C_Data);
    }
    
    //厂家初始化代码
    void OLED_Init(void)
    {
    		delay_ms(100);
    		WriteCmd(0xAE); //display off
    		WriteCmd(0x20);	//Set Memory Addressing Mode	
    		WriteCmd(0x10);	//00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
    		WriteCmd(0xb0);	//Set Page Start Address for Page Addressing Mode,0-7
    		WriteCmd(0xc8);	//Set COM Output Scan Direction
    		WriteCmd(0x00); //---set low column address
    		WriteCmd(0x10); //---set high column address
    		WriteCmd(0x40); //--set start line address
    		WriteCmd(0x81); //--set contrast control register
    		WriteCmd(0xff); //áá?èμ÷?ú 0x00~0xff
    		WriteCmd(0xa1); //--set segment re-map 0 to 127
    		WriteCmd(0xa6); //--set normal display
    		WriteCmd(0xa8); //--set multiplex ratio(1 to 64)
    		WriteCmd(0x3F); //
    		WriteCmd(0xa4); //0xa4,Output follows RAM content;0xa5,Output ignores RAM content
    		WriteCmd(0xd3); //-set display offset
    		WriteCmd(0x00); //-not offset
    		WriteCmd(0xd5); //--set display clock divide ratio/oscillator frequency
    		WriteCmd(0xf0); //--set divide ratio
    		WriteCmd(0xd9); //--set pre-charge period
    		WriteCmd(0x22); //
    		WriteCmd(0xda); //--set com pins hardware configuration
    		WriteCmd(0x12);
    		WriteCmd(0xdb); //--set vcomh
    		WriteCmd(0x20); //0x20,0.77xVcc
    		WriteCmd(0x8d); //--set DC-DC enable
    		WriteCmd(0x14); //
    		WriteCmd(0xaf); //--turn on oled panel
    
    }
    
    //设置光标起始坐标(x,y)
    void OLED_SetPos(unsigned char x,unsigned char y)
    {
    		WriteCmd(0xb0+y);
    		WriteCmd( (x & 0xf0) >> 4 | 0x10 );
    		WriteCmd( (x & 0x0f) | 0x01 );
    }
    
    //填充整个屏幕
    void OLED_Fill(unsigned char Fill_Data)
    {
    		unsigned char m,n;
    		
    		for(m=0;m<8;m++)
    		{
    				WriteCmd(0xb0+m);
    				WriteCmd(0x00);
    				WriteCmd(0x10);
    				
    				for(n=0;n<128;n++)
    				{
    						WriteData(Fill_Data);
    				}
    		}
    }
    
    //清屏
    void OLED_CLS(void)
    {
    		OLED_Fill(0x00);
    }
    
    //将OLED从休眠中唤醒
    void OLED_ON(void)
    {
    		WriteCmd(0xAF);
    		WriteCmd(0x8D);
    		WriteCmd(0x14);
    }
    
    //让OLED休眠 -- 休眠模式下,OLED功耗不到10uA
    void OLED_OFF(void)
    {
    		WriteCmd(0xAE);
    		WriteCmd(0x8D);
    		WriteCmd(0x10);
    }
    
    void OLED_ShowStr(unsigned char x,unsigned char y,unsigned char ch[],unsigned char TextSize)
    {
    		unsigned char c = 0,i = 0,j = 0;
    		
    		switch(TextSize)
    		{
    			case 1:
    			{
    					while(ch[j] != '\0')
    					{
    							c = ch[j] - 32;
    							if(x>126)
    							{
    									x = 0;
    									y++;
    							}
    							
    							OLED_SetPos(x,y);
    							
    							for(i=0;i<6;i++)
    							{
    									WriteData(F6x8[c][i]);
    							}
    							x+=6;
    							j++;
    					}
    			}
    			break;
    			
    			case 2:
    			{
    					while(ch[j] != '\0')
    					{
    							c = ch[j] - 32;
    							
    							if(x>120)
    							{
    									x = 0;
    									y++;
    							}
    							
    							OLED_SetPos(x,y);
    							
    							for(i=0;i<8;i++)
    							{
    									WriteData(F8X16[c*16+i]);	
    							}
    							
    							OLED_SetPos(x,y+1);
    							
    							for(i=0;i<8;i++)
    							{
    									WriteData(F8X16[c*16+i+8]);
    							}
    							x+=8;
    							j++;		
    					}
    			}
    			break;
    		}
    }
    
    void OLED_ShowCN(unsigned char x,unsigned char y,unsigned char N)
    {
    		unsigned char i = 0;
    		unsigned char addr = 32*N;
    		
    		OLED_SetPos(x,y);
    		
    		for(i=0;i<16;i++)
    		{
    				WriteData(F16X16[addr]);
    				addr += 1;
    		}
    		
    		OLED_SetPos(x,y+1);
    		
    		for(i=0;i<16;i++)
    		{
    				WriteData(F16X16[addr]);
    				addr += 1;
    		}
    }
    
    void OLED_ShowBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[])
    {
    		unsigned char x,y;
    		unsigned int j = 0;
    		
    		if(y1 % 8 == 0)
    		{
    				y = y1 / 8;
    		}
    		else
    		{
    				y = y1 / 8+1;
    		}
    		
    		for(y=y0;y<y1;y++)
    		{
    				OLED_SetPos(x0,y);
    
    				for(x=x0;x<x1;x++)
    				{
    						WriteData(BMP1[j++]);
    				}
    		}
    }
    
    

    oled.h

    #ifndef _oled_h_
    #define _oled_h_
    
    #include "stm32f10x.h"
    #define OLED_ADDRESS 0x78
    
    void I2C_Configuration(void);
    void I2C_WriteByte(uint8_t addr,uint8_t data);
    void WriteCmd(unsigned char I2C_Command);
    void WriteData(unsigned char I2C_Data);
    void OLED_Init(void);
    void OLED_SetPos(unsigned char x,unsigned char y);
    void OLED_Fill(unsigned char Fill_Data);
    void OLED_CLS(void);
    void OLED_ON(void);
    void OLED_OFF(void);
    void OLED_ShowStr(unsigned char x,unsigned char y,unsigned char ch[],unsigned char TextSize);
    void OLED_ShowCN(unsigned char x,unsigned char y,unsigned char N);
    void OLED_ShowBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[]);
    
    #endif
    
    

    main.c

    #include "stm32f10x.h"
    #include "main.h"
    #include "led.h"
    #include "shake.h"
    #include "relay.h"
    #include "exti.h"
    #include "usart.h"
    #include "tim.h"
    #include "motor.h"
    #include "SysTick.h"
    #include "HC_SR04.h"
    #include "oled.h"
    
    extern const unsigned char BMP1[];
    
    int main()
    {
    //		unsigned char i=0;
    		
    		I2C_Configuration();
    		OLED_Init();
    		delay_ms(2000);
    		
    		OLED_Fill(0xFF);
    		delay_ms(2000);
    		
    		OLED_Fill(0x00);
    		delay_ms(2000);
    		
    //		OLED_ShowStr(31,2,"Hello World",1);
    //		OLED_ShowStr(21,5,"Hello World",2);
    		
    		while(1)
    		{
    				/*
    				for(i=0;i<2;i++)
    				{
    						OLED_ShowCN(6*8+i*16,0,i); //+i*16 每偏移一个汉字需要偏移16列,在屏幕中间显示两个字“哞哞”
    				}
    				*/
    				
    				OLED_ShowBMP(0,0,128,8,(unsigned char *)BMP1);
    		}
    
    }
    

    codetab.h

    unsigned char F16X16[] =
    {
    	0x00,0xFC,0x04,0x04,0xFC,0x00,0x10,0xD8,0x14,0x13,0xF0,0x14,0x18,0x30,0x00,0x00,
    	0x00,0x0F,0x04,0x04,0x0F,0x08,0x0A,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x08,0x00,//"哞",0
    
    	0x00,0xFC,0x04,0x04,0xFC,0x00,0x10,0xD8,0x14,0x13,0xF0,0x14,0x18,0x30,0x00,0x00,
    	0x00,0x0F,0x04,0x04,0x0F,0x08,0x0A,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x08,0x00,//"哞",1
    };
    
    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
    };
    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
    };
    
    unsigned char BMP1[] =
    { 
    	 0X22,0X01,0X80,0X00,0X2F,0X00,
    0XFE,0XFE,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,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,0XFE,0XFE,
    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,0XFB,0XFB,0X7B,0X9B,0XF7,0XF7,
    0XFF,0XFF,0XEF,0XEF,0XF7,0XD7,0XFF,0XBF,0X6F,0XFF,0XFF,0XDF,0XFF,0XBF,0XFF,0XFF,
    0XBF,0XFF,0XBF,0XBF,0XBF,0XFF,0XDF,0XDF,0XDF,0X9F,0XAF,0XBF,0XB7,0XBF,0XFF,0XEF,
    0X2F,0XF7,0XFB,0XFF,0XFD,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,0XFF,
    0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XC1,0XBF,0XFF,0X7F,0XFF,
    0XFF,0X7F,0X7F,0XEF,0XD7,0XAF,0XD7,0XF3,0XF3,0XF6,0XF9,0XFF,0XFF,0XFF,0XFF,0XFF,
    0XFF,0XFE,0XFC,0XFE,0XFF,0XFF,0XFD,0XF8,0X0C,0XF6,0XFE,0XFE,0XF5,0XED,0XDF,0XE7,
    0XF7,0XFB,0XF6,0XFF,0XD9,0XED,0XE9,0X1B,0X6F,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
    0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X7F,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,0XF3,0XF5,0XF7,0XF7,
    0XF7,0XF7,0XFF,0XEF,0XEF,0XFF,0XFF,0XDF,0XBF,0XBF,0X7F,0XFF,0XFF,0XC7,0X7B,0XFB,
    0XFB,0XF6,0XF6,0X0F,0X87,0X85,0X07,0X11,0X1A,0X3B,0X3F,0X79,0X7A,0XFB,0XFC,0XF7,
    0XA7,0XA7,0X6B,0XAF,0XEB,0XFA,0X94,0XE3,0XF6,0XB7,0XC7,0XD7,0X57,0X77,0XFF,0X7F,
    0XFF,0XBF,0X7F,0XF7,0X27,0XF3,0X17,0XD5,0X8F,0XCF,0X9A,0X3C,0XFE,0XFF,0XFE,0XF7,
    0XFF,0XFF,0XDF,0XDD,0XED,0XED,0XFB,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,0XFE,0XFF,0XFD,0XFC,
    0XFD,0XFF,0XFB,0XFB,0XFE,0XFD,0XF5,0XF7,0XF7,0XF4,0XFA,0XFB,0XFF,0XFD,0XFD,0XFF,
    0XFE,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,0XD7,0XFF,0XFF,
    0XF0,0XF6,0XFF,0XFF,0XFE,0XFE,0XF9,0XFF,0XFB,0XF9,0XF1,0XE2,0XFD,0XFF,0XF7,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,
    0X3F,0X3F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
    0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
    0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
    0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
    0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
    0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
    0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
    0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X3F,0X3F,
    };
    
    
    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32实现硬件IIC驱动OLED屏幕显示

    发表评论