• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

STM32+OLED顯示屏制作指針式電子鐘

01/23 10:14
3234
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

更多詳細資料請聯(lián)系.docx

共1個文件

一、硬件環(huán)境介紹

單片機:? STM32F103C8T6

RTC時鐘來源:? 使用STM32內(nèi)部RTC定時器得到時間。

顯示屏中景園0.96寸 SPI接口的OLED顯示屏

編程軟件keil5

二、實現(xiàn)效果圖與代碼技術(shù)部分介紹

2.1 實現(xiàn)的效果圖

2.2?代碼技術(shù)部分介紹

核心代碼內(nèi)容里分為以下幾個部分:

1. RTC時鐘代碼部分:該電子鐘使用的是STM32內(nèi)部RTC實時時鐘,需要編寫RTC初始化代碼。

2. 電子鐘界面邏輯代碼部分:電子鐘的界面儀表盤畫面更新是在RTC秒中斷里調(diào)用,實現(xiàn)時間指針的更新。

3. OLED驅(qū)動代碼部分:編寫OLED驅(qū)動代碼,編寫常用的OLED接口函數(shù),比如:字符串顯示,畫點,劃線等。

OLED在程序的驅(qū)動方式采用顯存的方式驅(qū)動,定義一個顯存數(shù)組,程序里的所有邏輯代碼先繪制在顯存數(shù)組里,然后再刷新到OLED顯示屏上。

三、核心代碼

完整工程源碼下載地址:?https://download.csdn.net/download/xiaolong1126626497/15804479

?3.1 OLED顯示屏驅(qū)動代碼

(1).? oled.c

#include "oled.h"
/*
函數(shù)功能: 初始化OLED顯示屏硬件
硬件連接:
D0--PB14--時鐘線
D1--PB13--數(shù)據(jù)線
RES-PB12-復(fù)位腳
DC--PB1--命令數(shù)據(jù)選擇腳
CS--PA7--片選
*/
void OLED_Init(void)
{
    /*1. 開時鐘*/
    RCC->APB2ENR|=1<<2; //PA
    RCC->APB2ENR|=1<<3; //PB
    /*2. 配置GPIO口模式*/
    GPIOB->CRL&=0xFFFFFF0F;
    GPIOB->CRL|=0x00000030;
    GPIOB->CRH&=0xF000FFFF;
    GPIOB->CRH|=0x03330000;
    GPIOA->CRL&=0x0FFFFFFF;
    GPIOA->CRL|=0x30000000;
    /*配置默認電平*/
    OLED_CS=1;
    OLED_SCK=1;
    
    /*OLED顯示屏驅(qū)動代碼*/
    OLED_RES=1;
    delay_ms(1000);
    OLED_RES=0;
    delay_ms(1000);
    OLED_RES=1;
    delay_ms(1000);
    OLED_SPI_WriteOneByte(0xAE,OLED_WRITE_CMD);
    
    OLED_SPI_WriteOneByte(0x00,OLED_WRITE_CMD);
    OLED_SPI_WriteOneByte(0x10,OLED_WRITE_CMD);
    
    OLED_SPI_WriteOneByte(0x40,OLED_WRITE_CMD);
    
    OLED_SPI_WriteOneByte(0xB0,OLED_WRITE_CMD);
    
    OLED_SPI_WriteOneByte(0x81,OLED_WRITE_CMD);
    OLED_SPI_WriteOneByte(0xCF,OLED_WRITE_CMD);
    
    OLED_SPI_WriteOneByte(0xA1,OLED_WRITE_CMD);
    
    OLED_SPI_WriteOneByte(0xA6,OLED_WRITE_CMD);
    
    OLED_SPI_WriteOneByte(0xA8,OLED_WRITE_CMD);
    OLED_SPI_WriteOneByte(0x3F,OLED_WRITE_CMD);
    
    OLED_SPI_WriteOneByte(0xC8,OLED_WRITE_CMD);
    
    OLED_SPI_WriteOneByte(0xD3,OLED_WRITE_CMD);
    OLED_SPI_WriteOneByte(0x00,OLED_WRITE_CMD);
    
    OLED_SPI_WriteOneByte(0xD5,OLED_WRITE_CMD);
    OLED_SPI_WriteOneByte(0x80,OLED_WRITE_CMD);
    
    OLED_SPI_WriteOneByte(0xD9,OLED_WRITE_CMD);
    OLED_SPI_WriteOneByte(0xF1,OLED_WRITE_CMD);
    
    OLED_SPI_WriteOneByte(0xDA,OLED_WRITE_CMD);
    OLED_SPI_WriteOneByte(0x12,OLED_WRITE_CMD);
    
    OLED_SPI_WriteOneByte(0xDB,OLED_WRITE_CMD);
    OLED_SPI_WriteOneByte(0x30,OLED_WRITE_CMD);
    
    OLED_SPI_WriteOneByte(0x8D,OLED_WRITE_CMD);
    OLED_SPI_WriteOneByte(0x14,OLED_WRITE_CMD);
    
    OLED_SPI_WriteOneByte(0xAF,OLED_WRITE_CMD);
}

/*
函數(shù)功能: SPI底層發(fā)送一個字節(jié)的函數(shù)
函數(shù)參數(shù):data 表示發(fā)送的數(shù)據(jù)  flag表示發(fā)送命令還是數(shù)據(jù)(0表示命令 1表示數(shù)據(jù))
*/
void OLED_SPI_WriteOneByte(u8 data,u8 flag)
{
    u8 i;
    OLED_DC=flag; //區(qū)分發(fā)送數(shù)據(jù)還是命令
    OLED_CS=0;  //選中OLED顯示屏
    for(i=0;i<8;i++)
    {
        OLED_SCK=0; //表示發(fā)送數(shù)據(jù)
        if(data&0x80) //先發(fā)高位
        {
            OLED_MOSI=1;
        }
        else 
        {
            OLED_MOSI=0;
        }
        data<<=1;
        OLED_SCK=1; //表示發(fā)送完畢
    }
    OLED_CS=1;  //取消選中OLED顯示屏
}

/*
函數(shù)功能: OLED清屏函數(shù)
函數(shù)參數(shù): data=0xFF 表示全亮   data=0x00 表示全滅
*/
void OLED_Clear(u8 data)
{
    memset(OLED_GRAM,data,sizeof(OLED_GRAM));
}

/*
函數(shù)功能: 設(shè)置光標(biāo)的位置
函數(shù)參數(shù):
u8 x 橫向坐標(biāo)--列地址(0~127)
u8 y 縱坐標(biāo)--頁地址(0~7)
*/
void OLED_SetPos(u8 x,u8 y)
{
    OLED_SPI_WriteOneByte(0xB0+y,OLED_WRITE_CMD); //設(shè)置頁地址
    OLED_SPI_WriteOneByte(((x&0xF0)>>4)|0x10,OLED_WRITE_CMD); //設(shè)置上列地址
    OLED_SPI_WriteOneByte((x&0x0F)|0x00,OLED_WRITE_CMD); //設(shè)置下列地址
}

/*
函數(shù)功能: 顯示數(shù)據(jù)---取模
取模方式:橫向取模
*/
void OLED_DisplayData(u8 x,u8 y,u8 w,u8 h,u8 *p)
{
    u8 i,j,data;
    u8 x0=x;
    for(i=0;i<w/8*h;i++)
    {
        data=p[i];
        for(j=0;j<8;j++)
        {
            if(data&0x80)
            {
                OLED_DisplayPoint(x0,y,1); //畫前景色--開燈
            }
            else
            {
                OLED_DisplayPoint(x0,y,0); //畫背景色--關(guān)燈
            }
            x0++;
            data<<=1;
        }
        
        //可以換行
        if(x0-x==w)
        {
            x0=x; //橫坐標(biāo)歸位
            y++;  //換行
        }
    }
}

u8 OLED_GRAM[8][128]; //8行128列---->8頁128列

/*
函數(shù)功能: 畫點函數(shù)
函數(shù)參數(shù):
u8 x 橫坐標(biāo) 0~127
u8 y 縱坐標(biāo) 0~63
u8 c 顯示值(0滅  1亮)
*/
void OLED_DisplayPoint(u8 x,u8 y,u8 c)
{
    u8 page=y/8;//0~7
    y=y%8;
    if(c)
    {
       OLED_GRAM[page][x]|=1<<y; 
    }
    else
    {
       OLED_GRAM[page][x]&=~(1<<y);
    } 
}

/*
函數(shù)功能: OLED顯示屏數(shù)據(jù)寫函數(shù)
將顯存數(shù)組里的所有數(shù)據(jù)寫到OLED顯示屏
*/
void OLED_WriteGRAM(void)
{
  u8 i,j;
    for(i=0;i<8;i++)
    {
        OLED_SPI_WriteOneByte(0xB0+i,OLED_WRITE_CMD); //設(shè)置頁地址
        OLED_SPI_WriteOneByte(0x10,OLED_WRITE_CMD); //設(shè)置上列地址
        OLED_SPI_WriteOneByte(0x00,OLED_WRITE_CMD); //設(shè)置下列地址
        for(j=0;j<128;j++)
        {
            OLED_SPI_WriteOneByte(OLED_GRAM[i][j],OLED_WRITE_DAT);
        }
    } 
}


/*---------------------------以下是顯示屏相關(guān)的圖形繪制算法--------------------------------------------*/

/*
函數(shù)功能:畫直線
參    數(shù):
x1,y1:起點坐標(biāo)
x2,y2:終點坐標(biāo) 
*/
void OLED_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2)
{
	u16 t; 
	int xerr=0,yerr=0,delta_x,delta_y,distance; 
	int incx,incy,uRow,uCol; 
	delta_x=x2-x1; //計算坐標(biāo)增量 
	delta_y=y2-y1; 
	uRow=x1; 
	uCol=y1; 
	if(delta_x>0)incx=1; //設(shè)置單步方向 
	else if(delta_x==0)incx=0;//垂直線 
	else {incx=-1;delta_x=-delta_x;} 
	if(delta_y>0)incy=1; 
	else if(delta_y==0)incy=0;//水平線 
	else{incy=-1;delta_y=-delta_y;} 
	if( delta_x>delta_y)distance=delta_x; //選取基本增量坐標(biāo)軸 
	else distance=delta_y; 
	for(t=0;t<=distance+1;t++ )//畫線輸出 
	{  
		OLED_DisplayPoint(uRow,uCol,1);//畫點 
		xerr+=delta_x ; 
		yerr+=delta_y ; 
		if(xerr>distance) 
		{ 
			xerr-=distance; 
			uRow+=incx; 
		} 
		if(yerr>distance) 
		{ 
			yerr-=distance; 
			uCol+=incy; 
		} 
	}  
}  

/*
函數(shù)功能:任意角度畫直線 
參    數(shù):
	x,y:坐標(biāo)
	du :度數(shù)
	len:半徑
	w  :線段的長度
	c  :顏色值 0或者1
例如:OLED_DrawAngleLine(60,30,45,20,20,1);//角度畫線
*/
#include <math.h>
void OLED_DrawAngleLine(u32 x,u32 y,float du,u32 len,u32 w,u8 c)
{
	int i;
	int x0,y0;
	double k=du*(3.1415926535/180);	
	for(i=len-w;i<len;i++)
	{
		x0=cos(k)*i;
		y0=sin(k)*i;
		OLED_DisplayPoint(x+x0,y+y0,c);
	}
}

/*
函數(shù)功能:任意角度畫直線 
參    數(shù):
	x,y:坐標(biāo)
	du :度數(shù)
	len :線段的長度
	c  :顏色值 0或者1
例如:OLED_DrawAngleLine(60,30,45,20,20,1);//角度畫線
*/
void OLED_DrawAngleLine2(u32 x,u32 y,int du,u32 len,u8 c)
{
	int i;
	int x0,y0;
	double k=du*(3.1415926535L/180);
   
	for(i=0;i<len;i++)
	{
		x0=cos(k)*i;
		y0=sin(k)*i;
		OLED_DisplayPoint(x+x0,y+y0,c);
	}
}

/*
函數(shù)功能:畫矩形	
參    數(shù):(x1,y1),(x2,y2):矩形的對角坐標(biāo)
*/
void OLED_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2)
{
	OLED_DrawLine(x1,y1,x2,y1);
	OLED_DrawLine(x1,y1,x1,y2);
	OLED_DrawLine(x1,y2,x2,y2);
	OLED_DrawLine(x2,y1,x2,y2);
}

/*
函數(shù)功能:在指定位置畫一個指定大小的圓
參    數(shù):
		(x,y):中心點
		r    :半徑
*/
void OLED_Circle(u16 x0,u16 y0,u8 r)
{
	int a,b;
	int di;
	a=0;b=r;	  
	di=3-(r<<1);             //判斷下個點位置的標(biāo)志
	while(a<=b)
	{
		OLED_DisplayPoint(x0+a,y0-b,1);             //5
 		OLED_DisplayPoint(x0+b,y0-a,1);             //0           
		OLED_DisplayPoint(x0+b,y0+a,1);             //4               
		OLED_DisplayPoint(x0+a,y0+b,1);             //6 
		OLED_DisplayPoint(x0-a,y0+b,1);             //1       
 		OLED_DisplayPoint(x0-b,y0+a,1);             
		OLED_DisplayPoint(x0-a,y0-b,1);             //2             
		OLED_DisplayPoint(x0-b,y0-a,1);             //7     	         
		a++;  
		if(di<0)di +=4*a+6;	//Bresenham畫圓算法   
		else
		{
			di+=10+4*(a-b);   
			b--;
		} 						    
	}
}


/*
函數(shù)功能: 在指定位置顯示一個中文
函數(shù)參數(shù): x列的起始位置(0~127)
				  y頁的起始位置(0~7)
					size表示字體寬度
					number表示要顯示的第幾個漢字(數(shù)組下標(biāo))
說明: 需要保證字體橫向尺寸和縱向是8的倍數(shù)。
*/
void OLED_ShowChineseFont(u8 x,u8 y,u8 size,u8 number)
{
		u8 i,j,x0=x;
		u8 tmp;
		for(i=0;i<size*size/8;i++)
		{
				if(size==16)tmp=ChineseFont_16_16[number][i];
				else if(size==24)tmp=ChineseFont_24_24[number][i];
				for(j=0;j<8;j++)
				{
						if(tmp&0x80)OLED_DisplayPoint(x,y,1);
						else OLED_DisplayPoint(x,y,0);
						x++;
						tmp<<=1; //繼續(xù)判斷下一位
				}
				if(x-x0==size)
				{
						y++;  //縱坐標(biāo)自增
						x=x0; //橫坐標(biāo)歸位
				}
		}
		OLED_WriteGRAM(); //將顯存里的數(shù)據(jù)刷新到OLED顯示屏
}



/*
函數(shù)功能: 在指定位置顯示一個字符串
函數(shù)參數(shù): x列的起始位置(0~127)
				  y頁的起始位置(0~7)
					h表示字體的高度(8*16,12*24  寬*高)
說明: 字模必須保證縱向是8的倍數(shù)
*/
void OLED_ShowString(u8 x,u8 y,u8 h,char *str)
{
	 u8 i,j;
	 u8 tmp;
	 u8 y0=y,x0=x;
	 while(*str!='?')
	 {
			for(i=0;i<(h/8)*(h/2);i++)
			{
					if(h==16)tmp=ASCII_8_16[*str-' '][i];
					else if(h==24)tmp=ASCII_12_24[*str-' '][i];
					for(j=0;j<8;j++)
					{
							if(tmp&0x80)OLED_DisplayPoint(x,y,1);
							else OLED_DisplayPoint(x,y,0);
							y++;
							tmp<<=1; //繼續(xù)判斷下一位
					}
					if(y-y0==h)
					{
							x++;  //橫坐標(biāo)自增
							y=y0; //縱坐標(biāo)歸位
					}
			}
			str++;//繼續(xù)顯示下一個字符串
			y=y0; //縱坐標(biāo)歸位
			if(x>=127) //判斷橫坐標(biāo)有沒有溢出
			{
					y0+=h;
					y=y0;
					x=x0; //如果填0,就是從新行0開始
			}
	 }
	 OLED_WriteGRAM(); //將顯存里的數(shù)據(jù)刷新到OLED顯示屏
}







//取模16*16的中文字體   橫向取模、高位在前
const u8 ChineseFont_16_16[][32]=
{ 
{0x00,0x00,0x00,0x00,0xFF,0xFE,0x04,0x00,0x04,0x00,0x04,0x00,0x07,0xF0,0x04,0x10,0x04,0x10,0x08,0x10,0x08,0x10,0x10,0x10,0x10,0x10,0x20,0x10,0x40,0xA0,0x80,0x40},/*"萬",0*/

{0x08,0x00,0x08,0x7C,0x08,0x44,0xFF,0x48,0x08,0x48,0x08,0x50,0x7E,0x48,0x08,0x48,0x08,0x44,0xFF,0x44,0x08,0x44,0x10,0x68,0x10,0x50,0x20,0x40,0x40,0x40,0x80,0x40},/*"邦",1*/

{0x0F,0xF0,0x08,0x10,0x08,0x10,0x0F,0xF0,0x08,0x10,0x08,0x10,0x0F,0xF0,0x04,0x00,0x08,0x00,0x1F,0xFC,0x22,0x44,0x42,0x44,0x04,0x84,0x08,0x84,0x11,0x28,0x02,0x10},/*"易",2*/

{0x01,0x00,0x21,0x08,0x21,0x08,0x3F,0xF8,0x00,0x20,0x22,0x20,0x22,0x3E,0xFF,0x42,0x22,0x94,0x22,0x10,0x3E,0x10,0x22,0x10,0x22,0x28,0x3E,0x28,0x22,0x44,0x00,0x82},/*"嵌",3*/

{0x10,0x00,0x10,0x00,0x1F,0xFC,0x20,0x80,0x20,0x80,0x40,0x80,0x1F,0xF8,0x10,0x80,0x10,0x80,0x10,0x80,0xFF,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80},/*"年",0*/

{0x00,0x00,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x01,0x00,0x11,0x00,0x1F,0xF8,0x21,0x00,0x41,0x00,0x1F,0xF0,0x01,0x00,0x01,0x00,0x7F,0xFC,0x00,0x00},/*"星",0*/

{0x22,0x00,0x22,0x7C,0x7F,0x44,0x22,0x44,0x22,0x44,0x3E,0x7C,0x22,0x44,0x22,0x44,0x3E,0x44,0x22,0x7C,0x22,0x44,0xFF,0x44,0x04,0x84,0x22,0x84,0x41,0x14,0x82,0x08},/*"期",1*/

{0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10},/*"日",6*/
		
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"一",0*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00},/*"二",1*/

{0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00},/*"三",2*/

{0x00,0x00,0x00,0x00,0x7F,0xFC,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x48,0x44,0x48,0x3C,0x50,0x04,0x60,0x04,0x40,0x04,0x7F,0xFC,0x40,0x04,0x00,0x00},/*"四",3*/

{0x00,0x00,0x7F,0xFC,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x3F,0xF0,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0xFF,0xFE,0x00,0x00},/*"五",4*/

{0x02,0x00,0x01,0x00,0x00,0x80,0x00,0x80,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x04,0x40,0x04,0x20,0x08,0x10,0x08,0x08,0x10,0x08,0x20,0x04,0x40,0x04,0x00,0x00},/*"六",5*/


};


//取模24*24的中文字體   橫向取模、高位在前
const u8 ChineseFont_24_24[][24*24/8]=
{
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x3F,0xFF,0xFC,0x00,0x60,0x00,0x00,0x60,0x00,0x00,0x60,0x00,0x00,0x60,0x00,0x00,0x7F,0xF0,0x00,0x60,0x30,0x00,0x40,0x30,0x00,0xC0,0x30,0x00,0xC0,0x30,0x00,0x80,0x20,0x01,0x80,0x20,0x01,0x00,0x20,0x03,0x00,0x20,0x02,0x00,0x60,0x04,0x00,0x60,0x08,0x07,0xE0,0x10,0x01,0xC0,0x20,0x01,0x00,0x00,0x00,0x00},/*"萬",0*/

{0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x02,0x00,0x01,0x03,0xFC,0x01,0x03,0x0C,0x3F,0xFF,0x08,0x01,0x03,0x08,0x01,0x03,0x10,0x01,0x13,0x10,0x3F,0xFB,0x20,0x01,0x03,0x20,0x01,0x03,0x20,0x01,0x03,0x10,0x01,0x03,0x08,0x7F,0xFF,0x0C,0x03,0x03,0x04,0x03,0x03,0x04,0x02,0x03,0x0C,0x06,0x03,0x3C,0x04,0x03,0x10,0x08,0x03,0x00,0x30,0x03,0x00,0x40,0x02,0x00,0x00,0x00,0x00},/*"邦",1*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xC0,0x03,0x00,0x40,0x03,0x00,0x40,0x03,0x00,0x40,0x03,0xFF,0xC0,0x03,0x00,0x40,0x03,0x00,0x40,0x03,0xFF,0xC0,0x03,0xC0,0x40,0x01,0x80,0x00,0x01,0xFF,0xF8,0x03,0x31,0x18,0x04,0x23,0x10,0x08,0x62,0x10,0x10,0xC6,0x10,0x01,0x84,0x10,0x02,0x0C,0x30,0x0C,0x18,0x20,0x00,0x62,0x20,0x01,0x81,0xE0,0x06,0x00,0x80,0x00,0x00,0x00},/*"易",2*/

{0x00,0x00,0x00,0x00,0x18,0x00,0x0C,0x10,0x30,0x08,0x10,0x30,0x08,0x10,0x30,0x0F,0xFF,0xF0,0x08,0x00,0x30,0x08,0x41,0x00,0x0C,0x61,0x00,0x08,0x43,0x00,0x7F,0xFB,0xFC,0x08,0x42,0x08,0x08,0x44,0x90,0x08,0x49,0x90,0x0F,0xC9,0x80,0x08,0x41,0x40,0x08,0x41,0x40,0x08,0x41,0x40,0x08,0x42,0x20,0x0F,0xC6,0x30,0x08,0x4C,0x18,0x08,0x50,0x0E,0x00,0x20,0x00,0x00,0x00,0x00},/*"嵌",3*/


};

/*
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~
*/

// ASCII編碼8*16英文字符  縱向取模、高位在前
const u8 ASCII_8_16[][16]=
{
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/

{0x00,0x00,0x08,0x00,0x30,0x00,0x40,0x00,0x08,0x00,0x30,0x00,0x40,0x00,0x00,0x00},/*""",2*/

{0x00,0x00,0x02,0x20,0x03,0xFC,0x1E,0x20,0x02,0x20,0x03,0xFC,0x1E,0x20,0x00,0x00},/*"#",3*/

{0x00,0x00,0x0E,0x18,0x11,0x04,0x11,0x04,0x3F,0xFF,0x10,0x84,0x0C,0x78,0x00,0x00},/*"$",4*/

{0x0F,0x00,0x10,0x8C,0x0F,0x30,0x01,0xC0,0x06,0x78,0x18,0x84,0x00,0x78,0x00,0x00},/*"%",5*/

{0x00,0x78,0x0F,0x84,0x10,0xC4,0x11,0x34,0x0E,0x98,0x00,0xE4,0x00,0x84,0x00,0x08},/*"&",6*/

{0x00,0x00,0x48,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x18,0x18,0x20,0x04,0x40,0x02,0x00,0x00},/*"(",8*/

{0x00,0x00,0x40,0x02,0x20,0x04,0x18,0x18,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00},/*")",9*/

{0x02,0x40,0x02,0x40,0x01,0x80,0x0F,0xF0,0x01,0x80,0x02,0x40,0x02,0x40,0x00,0x00},/*"*",10*/

{0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x07,0xF0,0x00,0x80,0x00,0x80,0x00,0x80},/*"+",11*/

{0x00,0x00,0x00,0x09,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*",",12*/

{0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00},/*"-",13*/

{0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*".",14*/

{0x00,0x00,0x00,0x06,0x00,0x18,0x00,0xE0,0x03,0x00,0x1C,0x00,0x20,0x00,0x00,0x00},/*"/",15*/

{0x00,0x00,0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"0",16*/

{0x00,0x00,0x00,0x00,0x08,0x04,0x08,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x00},/*"1",17*/

{0x00,0x00,0x0E,0x0C,0x10,0x14,0x10,0x24,0x10,0x44,0x10,0x84,0x0F,0x0C,0x00,0x00},/*"2",18*/

{0x00,0x00,0x0C,0x18,0x10,0x04,0x10,0x84,0x10,0x84,0x11,0x44,0x0E,0x38,0x00,0x00},/*"3",19*/

{0x00,0x00,0x00,0x60,0x01,0xA0,0x02,0x24,0x0C,0x24,0x1F,0xFC,0x00,0x24,0x00,0x24},/*"4",20*/

{0x00,0x00,0x1F,0x98,0x11,0x04,0x11,0x04,0x11,0x04,0x10,0x88,0x10,0x70,0x00,0x00},/*"5",21*/

{0x00,0x00,0x07,0xF0,0x08,0x88,0x11,0x04,0x11,0x04,0x09,0x04,0x00,0xF8,0x00,0x00},/*"6",22*/

{0x00,0x00,0x18,0x00,0x10,0x00,0x10,0x7C,0x11,0x80,0x16,0x00,0x18,0x00,0x00,0x00},/*"7",23*/

{0x00,0x00,0x0E,0x38,0x11,0x44,0x10,0x84,0x10,0x84,0x11,0x44,0x0E,0x38,0x00,0x00},/*"8",24*/

{0x00,0x00,0x0F,0x80,0x10,0x48,0x10,0x44,0x10,0x44,0x08,0x88,0x07,0xF0,0x00,0x00},/*"9",25*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x03,0x0C,0x00,0x00,0x00,0x00,0x00,0x00},/*":",26*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*";",27*/

{0x00,0x00,0x00,0x80,0x01,0x40,0x02,0x20,0x04,0x10,0x08,0x08,0x10,0x04,0x00,0x00},/*"<",28*/

{0x00,0x00,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x00},/*"=",29*/

{0x00,0x00,0x10,0x04,0x08,0x08,0x04,0x10,0x02,0x20,0x01,0x40,0x00,0x80,0x00,0x00},/*">",30*/

{0x00,0x00,0x0E,0x00,0x12,0x00,0x10,0x0C,0x10,0xEC,0x11,0x00,0x0E,0x00,0x00,0x00},/*"?",31*/

{0x03,0xE0,0x0C,0x18,0x13,0xE4,0x14,0x14,0x17,0xF4,0x08,0x14,0x07,0xE8,0x00,0x00},/*"@",32*/

{0x00,0x04,0x00,0x3C,0x03,0xC4,0x1C,0x40,0x07,0x40,0x00,0xE4,0x00,0x1C,0x00,0x04},/*"A",33*/

{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x04,0x11,0x04,0x0E,0x88,0x00,0x70,0x00,0x00},/*"B",34*/

{0x03,0xE0,0x0C,0x18,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x08,0x1C,0x10,0x00,0x00},/*"C",35*/

{0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"D",36*/

{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x04,0x17,0xC4,0x10,0x04,0x08,0x18,0x00,0x00},/*"E",37*/

{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x00,0x17,0xC0,0x10,0x00,0x08,0x00,0x00,0x00},/*"F",38*/

{0x03,0xE0,0x0C,0x18,0x10,0x04,0x10,0x04,0x10,0x44,0x1C,0x78,0x00,0x40,0x00,0x00},/*"G",39*/

{0x10,0x04,0x1F,0xFC,0x10,0x84,0x00,0x80,0x00,0x80,0x10,0x84,0x1F,0xFC,0x10,0x04},/*"H",40*/

{0x00,0x00,0x10,0x04,0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x04,0x00,0x00,0x00,0x00},/*"I",41*/

{0x00,0x03,0x00,0x01,0x10,0x01,0x10,0x01,0x1F,0xFE,0x10,0x00,0x10,0x00,0x00,0x00},/*"J",42*/

{0x10,0x04,0x1F,0xFC,0x11,0x04,0x03,0x80,0x14,0x64,0x18,0x1C,0x10,0x04,0x00,0x00},/*"K",43*/

{0x10,0x04,0x1F,0xFC,0x10,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00},/*"L",44*/

{0x10,0x04,0x1F,0xFC,0x1F,0x80,0x00,0x7C,0x1F,0x80,0x1F,0xFC,0x10,0x04,0x00,0x00},/*"M",45*/

{0x10,0x04,0x1F,0xFC,0x0C,0x04,0x03,0x00,0x00,0xE0,0x10,0x18,0x1F,0xFC,0x10,0x00},/*"N",46*/

{0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"O",47*/

{0x10,0x04,0x1F,0xFC,0x10,0x84,0x10,0x80,0x10,0x80,0x10,0x80,0x0F,0x00,0x00,0x00},/*"P",48*/

{0x07,0xF0,0x08,0x08,0x10,0x14,0x10,0x14,0x10,0x0C,0x08,0x0A,0x07,0xF2,0x00,0x00},/*"Q",49*/

{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x00,0x11,0xC0,0x11,0x30,0x0E,0x0C,0x00,0x04},/*"R",50*/

{0x00,0x00,0x0E,0x1C,0x11,0x04,0x10,0x84,0x10,0x84,0x10,0x44,0x1C,0x38,0x00,0x00},/*"S",51*/

{0x18,0x00,0x10,0x00,0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x00,0x18,0x00,0x00,0x00},/*"T",52*/

{0x10,0x00,0x1F,0xF8,0x10,0x04,0x00,0x04,0x00,0x04,0x10,0x04,0x1F,0xF8,0x10,0x00},/*"U",53*/

{0x10,0x00,0x1E,0x00,0x11,0xE0,0x00,0x1C,0x00,0x70,0x13,0x80,0x1C,0x00,0x10,0x00},/*"V",54*/

{0x10,0x00,0x1F,0xC0,0x00,0x7C,0x1F,0x80,0x00,0x7C,0x1F,0xC0,0x10,0x00,0x00,0x00},/*"W",55*/

{0x10,0x04,0x18,0x0C,0x16,0x34,0x01,0xC0,0x01,0xC0,0x16,0x34,0x18,0x0C,0x10,0x04},/*"X",56*/

{0x10,0x00,0x1C,0x00,0x13,0x04,0x00,0xFC,0x13,0x04,0x1C,0x00,0x10,0x00,0x00,0x00},/*"Y",57*/

{0x08,0x04,0x10,0x1C,0x10,0x64,0x10,0x84,0x13,0x04,0x1C,0x04,0x10,0x18,0x00,0x00},/*"Z",58*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x40,0x02,0x40,0x02,0x40,0x02,0x00,0x00},/*"[",59*/

{0x00,0x00,0x20,0x00,0x1C,0x00,0x03,0x80,0x00,0x60,0x00,0x1C,0x00,0x03,0x00,0x00},/*"",60*/

{0x00,0x00,0x40,0x02,0x40,0x02,0x40,0x02,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00},/*"]",61*/

{0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x00,0x00},/*"^",62*/

{0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01},/*"_",63*/

{0x00,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/

{0x00,0x00,0x00,0x98,0x01,0x24,0x01,0x24,0x01,0x48,0x00,0xFC,0x00,0x04,0x00,0x00},/*"a",65*/

{0x08,0x00,0x0F,0xFC,0x00,0x88,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x70,0x00,0x00},/*"b",66*/

{0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x00},/*"c",67*/

{0x00,0x00,0x00,0xF8,0x01,0x04,0x01,0x04,0x01,0x04,0x09,0x08,0x0F,0xFC,0x00,0x04},/*"d",68*/

{0x00,0x00,0x00,0xF8,0x01,0x24,0x01,0x24,0x01,0x24,0x01,0x24,0x00,0xE8,0x00,0x00},/*"e",69*/

{0x00,0x00,0x01,0x04,0x01,0x04,0x07,0xFC,0x09,0x04,0x09,0x04,0x04,0x00,0x00,0x00},/*"f",70*/

{0x00,0x00,0x00,0xD6,0x01,0x29,0x01,0x29,0x01,0x29,0x01,0xC9,0x01,0x06,0x00,0x00},/*"g",71*/

{0x08,0x04,0x0F,0xFC,0x00,0x84,0x01,0x00,0x01,0x00,0x01,0x04,0x00,0xFC,0x00,0x04},/*"h",72*/

{0x00,0x00,0x01,0x04,0x19,0x04,0x19,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00},/*"i",73*/

{0x00,0x00,0x00,0x03,0x00,0x01,0x01,0x01,0x19,0x01,0x19,0xFE,0x00,0x00,0x00,0x00},/*"j",74*/

{0x08,0x04,0x0F,0xFC,0x00,0x24,0x00,0x60,0x01,0x94,0x01,0x0C,0x01,0x04,0x00,0x00},/*"k",75*/

{0x00,0x00,0x08,0x04,0x08,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00},/*"l",76*/

{0x01,0x04,0x01,0xFC,0x01,0x04,0x01,0x00,0x01,0xFC,0x01,0x04,0x01,0x00,0x00,0xFC},/*"m",77*/

{0x01,0x04,0x01,0xFC,0x00,0x84,0x01,0x00,0x01,0x00,0x01,0x04,0x00,0xFC,0x00,0x04},/*"n",78*/

{0x00,0x00,0x00,0xF8,0x01,0x04,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0xF8,0x00,0x00},/*"o",79*/

{0x01,0x01,0x01,0xFF,0x00,0x89,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x70,0x00,0x00},/*"p",80*/

{0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x00,0x89,0x01,0xFF,0x00,0x01},/*"q",81*/

{0x01,0x04,0x01,0x04,0x01,0xFC,0x00,0x84,0x01,0x04,0x01,0x00,0x01,0x80,0x00,0x00},/*"r",82*/

{0x00,0x00,0x00,0xCC,0x01,0x24,0x01,0x24,0x01,0x24,0x01,0x24,0x01,0x98,0x00,0x00},/*"s",83*/

{0x00,0x00,0x01,0x00,0x01,0x00,0x07,0xF8,0x01,0x04,0x01,0x04,0x00,0x08,0x00,0x00},/*"t",84*/

{0x01,0x00,0x01,0xF8,0x00,0x04,0x00,0x04,0x00,0x04,0x01,0x08,0x01,0xFC,0x00,0x04},/*"u",85*/

{0x01,0x00,0x01,0xC0,0x01,0x30,0x00,0x0C,0x01,0x30,0x01,0xC0,0x01,0x00,0x00,0x00},/*"v",86*/

{0x01,0x80,0x01,0x70,0x00,0x0C,0x01,0x30,0x01,0xE0,0x00,0x1C,0x01,0x60,0x01,0x80},/*"w",87*/

{0x00,0x00,0x01,0x04,0x01,0x8C,0x01,0x70,0x00,0x74,0x01,0x8C,0x01,0x04,0x00,0x00},/*"x",88*/

{0x01,0x00,0x01,0x81,0x01,0x61,0x00,0x1E,0x00,0x18,0x01,0x60,0x01,0x80,0x01,0x00},/*"y",89*/

{0x00,0x00,0x01,0x84,0x01,0x0C,0x01,0x34,0x01,0x44,0x01,0x84,0x01,0x0C,0x00,0x00},/*"z",90*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3F,0x7C,0x40,0x02,0x40,0x02},/*"{",91*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00},/*"|",92*/

{0x40,0x02,0x40,0x02,0x3F,0x7C,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"}",93*/

{0x00,0x00,0x40,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x40,0x00,0x00,0x00},/*"~",94*/
};


//跑步圖片1
const u8 bmp_foot_18_29_1[]=
{
	// E:教學(xué)&項目開發(fā)教學(xué)Cortex-M3 教學(xué)STM32項目開發(fā)資料?5 OLED顯示屏資料軟件工具OLED屏幕_圖片素材取膜圖片OnFoot_2_1.bmp(0)
	0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xE0,0xF2,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x06,0x7F,0xFF,0xFF,0xFF,0xFF,0x06,
	0x00,0x00,0x00,0x00,0xF0,0x70,0x60,0x30,0x30,0x30,0x30,0x30,0x3E,0x3F,0x1F,0x07,0xFF,0xFE,0xF8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x1B,0x1F,0x1C,0x10,0x10
};


//跑步圖片2
const u8 bmp_foot_17_32_2[]=
{
	0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xF0,0xFF,0xFF,0xEF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0C,0x0C,0x0C,0x0C,
	0x0E,0x0C,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xDF,0xDF,0xFE,0x7C,0x78,0x20,0x00,0x00,0x00,0x60,0xF0,0xFC,0x9E,0x87,0x1F,0x1F,0x01,0x01,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00
};


/*
尺寸: 12*24 ,縱向取模、高位在前
*/
const u8 ASCII_12_24[][12*3]=
{
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xEE,0x38,0x0F,0xF0,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x06,0x00,0x00,0x0C,0x00,0x00,0x38,0x00,0x00,0x31,0x00,0x00,0x06,0x00,0x00,0x0C,0x00,0x00,0x38,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00},/*""",2*/

{0x00,0x00,0x00,0x00,0xC1,0x80,0x00,0xC1,0xF8,0x00,0xFF,0x80,0x0F,0xC1,0x80,0x00,0xC1,0x80,0x00,0xC1,0x80,0x00,0xC1,0x80,0x00,0xDF,0xF8,0x0F,0xE1,0x80,0x00,0xC1,0x80,0x00,0x00,0x00},/*"#",3*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0xE0,0x03,0xE0,0xF0,0x06,0x30,0x48,0x04,0x18,0x08,0x1F,0xFF,0xFE,0x04,0x8E,0x08,0x07,0x87,0xF0,0x03,0x81,0xE0,0x00,0x00,0x00,0x00,0x00,0x00},/*"$",4*/

{0x03,0xE0,0x00,0x0C,0x18,0x00,0x08,0x08,0x18,0x0C,0x18,0xE0,0x03,0xF3,0x00,0x00,0x1C,0x00,0x00,0x63,0xE0,0x03,0x8C,0x18,0x0C,0x08,0x08,0x00,0x0C,0x18,0x00,0x03,0xE0,0x00,0x00,0x00},/*"%",5*/

{0x00,0x03,0xE0,0x00,0x07,0xF0,0x07,0xE8,0x18,0x0F,0xFC,0x08,0x08,0x1F,0x08,0x0F,0xE3,0xC8,0x07,0xC0,0xF0,0x00,0x10,0x70,0x00,0x1F,0x98,0x00,0x10,0x08,0x00,0x10,0x08,0x00,0x00,0x30},/*"&",6*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x00,0x00,0x32,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x01,0x80,0xC0,0x06,0x00,0x30,0x08,0x00,0x08,0x10,0x00,0x04,0x20,0x00,0x02,0x00,0x00,0x00},/*"(",8*/

{0x00,0x00,0x00,0x20,0x00,0x02,0x10,0x00,0x04,0x08,0x00,0x08,0x06,0x00,0x30,0x01,0x80,0xC0,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*")",9*/

{0x00,0x00,0x00,0x00,0x66,0x00,0x00,0x66,0x00,0x00,0x24,0x00,0x00,0x1C,0x00,0x00,0x08,0x00,0x03,0xFF,0xC0,0x01,0x18,0x00,0x00,0x3C,0x00,0x00,0x24,0x00,0x00,0x66,0x00,0x00,0x66,0x00},/*"*",10*/

{0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x01,0xFF,0xC0,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00},/*"+",11*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x00,0x00,0x32,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*",",12*/

{0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x00,0x00},/*"-",13*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*".",14*/

{0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x1C,0x00,0x00,0x70,0x00,0x01,0x80,0x00,0x0E,0x00,0x00,0x38,0x00,0x00,0xC0,0x00,0x07,0x00,0x00,0x1C,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00},/*"/",15*/

{0x00,0x00,0x00,0x00,0x7F,0x80,0x01,0xFF,0xE0,0x03,0x80,0x70,0x06,0x00,0x18,0x04,0x00,0x08,0x04,0x00,0x08,0x06,0x00,0x18,0x03,0x80,0x70,0x01,0xFF,0xE0,0x00,0x7F,0x80,0x00,0x00,0x00},/*"0",16*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x08,0x02,0x00,0x08,0x02,0x00,0x08,0x03,0xFF,0xF8,0x07,0xFF,0xF8,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00},/*"1",17*/

{0x00,0x00,0x00,0x01,0xC0,0x18,0x02,0xC0,0x38,0x04,0x00,0x48,0x04,0x00,0x88,0x04,0x03,0x08,0x04,0x06,0x08,0x06,0x0C,0x08,0x03,0xF8,0x08,0x01,0xE0,0x78,0x00,0x00,0x00,0x00,0x00,0x00},/*"2",18*/

{0x00,0x00,0x00,0x03,0x80,0x70,0x03,0x80,0x70,0x04,0x00,0x08,0x04,0x08,0x08,0x04,0x08,0x08,0x06,0x18,0x08,0x03,0xF4,0x18,0x01,0xE7,0xF0,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00},/*"3",19*/

{0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x05,0x00,0x00,0x19,0x00,0x00,0x21,0x00,0x00,0xC1,0x08,0x01,0x01,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x00,0x01,0x08,0x00,0x01,0x08,0x00,0x01,0x00},/*"4",20*/

{0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0xFC,0xD0,0x04,0x08,0x08,0x04,0x10,0x08,0x04,0x10,0x08,0x04,0x10,0x08,0x04,0x18,0x38,0x04,0x0F,0xF0,0x04,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00},/*"5",21*/

{0x00,0x00,0x00,0x00,0x3F,0x80,0x01,0xFF,0xE0,0x03,0x84,0x30,0x02,0x08,0x18,0x04,0x10,0x08,0x04,0x10,0x08,0x04,0x10,0x08,0x07,0x18,0x10,0x03,0x0F,0xF0,0x00,0x07,0xC0,0x00,0x00,0x00},/*"6",22*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x06,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0xF8,0x04,0x07,0xF8,0x04,0x18,0x00,0x04,0xE0,0x00,0x07,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00},/*"7",23*/

{0x00,0x00,0x00,0x01,0xC1,0xE0,0x03,0xF3,0xF0,0x06,0x36,0x10,0x04,0x18,0x08,0x04,0x08,0x08,0x04,0x0C,0x08,0x04,0x0C,0x08,0x06,0x16,0x18,0x03,0xF3,0xF0,0x01,0xC1,0xE0,0x00,0x00,0x00},/*"8",24*/

{0x00,0x00,0x00,0x00,0xF8,0x00,0x03,0xFC,0x30,0x03,0x06,0x38,0x04,0x02,0x08,0x04,0x02,0x08,0x04,0x02,0x08,0x04,0x04,0x10,0x03,0x08,0xF0,0x01,0xFF,0xC0,0x00,0x7F,0x00,0x00,0x00,0x00},/*"9",25*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x00,0x38,0x38,0x00,0x38,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*":",26*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x1B,0x00,0x30,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*";",27*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x14,0x00,0x00,0x22,0x00,0x00,0x41,0x00,0x00,0x80,0x80,0x01,0x00,0x40,0x02,0x00,0x20,0x04,0x00,0x10,0x08,0x00,0x08,0x00,0x00,0x00},/*"<",28*/

{0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x22,0x00,0x00,0x22,0x00,0x00,0x22,0x00,0x00,0x22,0x00,0x00,0x22,0x00,0x00,0x22,0x00,0x00,0x22,0x00,0x00,0x22,0x00,0x00,0x22,0x00,0x00,0x00,0x00},/*"=",29*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x04,0x00,0x10,0x02,0x00,0x20,0x01,0x00,0x40,0x00,0x80,0x80,0x00,0x41,0x00,0x00,0x22,0x00,0x00,0x14,0x00,0x00,0x08,0x00,0x00,0x00,0x00},/*">",30*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x02,0x60,0x00,0x02,0x00,0x00,0x04,0x00,0x38,0x04,0x07,0x38,0x04,0x08,0x38,0x04,0x18,0x00,0x06,0x10,0x00,0x03,0xF0,0x00,0x01,0xE0,0x00},/*"?",31*/

{0x00,0x00,0x00,0x00,0x7F,0x00,0x03,0xFF,0xE0,0x07,0x00,0x70,0x04,0x1F,0x18,0x08,0xFF,0x88,0x09,0xC0,0x88,0x09,0x3F,0x88,0x05,0xE0,0x90,0x06,0x01,0x30,0x01,0xFE,0x40,0x00,0x00,0x00},/*"@",32*/

{0x00,0x00,0x08,0x00,0x00,0x38,0x00,0x01,0xC8,0x00,0x1E,0x08,0x01,0xE2,0x00,0x06,0x02,0x00,0x07,0x82,0x00,0x00,0xFA,0x00,0x00,0x0F,0x88,0x00,0x01,0xF8,0x00,0x00,0x18,0x00,0x00,0x08},/*"A",33*/

{0x00,0x00,0x00,0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x08,0x08,0x04,0x08,0x08,0x04,0x08,0x08,0x06,0x18,0x08,0x03,0xF4,0x18,0x03,0xE7,0xF0,0x00,0x01,0xE0,0x00,0x00,0x00},/*"B",34*/

{0x00,0x00,0x00,0x00,0x3F,0x80,0x01,0xFF,0xE0,0x03,0x80,0x70,0x02,0x00,0x18,0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x08,0x06,0x00,0x10,0x07,0x00,0x30,0x01,0xC0,0xC0,0x00,0x00,0x00},/*"C",35*/

{0x04,0x00,0x08,0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x08,0x02,0x00,0x10,0x03,0x80,0x70,0x01,0xFF,0xE0,0x00,0x7F,0x80,0x00,0x00,0x00},/*"D",36*/

{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x08,0x08,0x04,0x08,0x08,0x04,0x08,0x08,0x04,0x08,0x08,0x04,0x3F,0x08,0x06,0x00,0x08,0x06,0x00,0x18,0x01,0x80,0x60,0x00,0x00,0x00},/*"E",37*/

{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x08,0x08,0x04,0x08,0x08,0x04,0x08,0x00,0x04,0x08,0x00,0x04,0x3F,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00},/*"F",38*/

{0x00,0x00,0x00,0x00,0x3F,0x80,0x01,0xFF,0xE0,0x03,0x80,0x70,0x06,0x00,0x18,0x04,0x00,0x08,0x04,0x02,0x08,0x04,0x02,0x08,0x02,0x03,0xF0,0x01,0xC3,0xF0,0x00,0x02,0x00,0x00,0x02,0x00},/*"G",39*/

{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x08,0x08,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x04,0x08,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x00,0x08},/*"H",40*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00},/*"I",41*/

{0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x07,0x04,0x00,0x01,0x04,0x00,0x01,0x04,0x00,0x03,0x07,0xFF,0xFE,0x07,0xFF,0xFC,0x04,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00},/*"J",42*/

{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x0C,0x08,0x00,0x30,0x00,0x00,0x5C,0x00,0x05,0x87,0x00,0x07,0x01,0xC8,0x06,0x00,0x78,0x04,0x00,0x18,0x00,0x00,0x08,0x00,0x00,0x00},/*"K",43*/

{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x00,0x08,0x04,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x18,0x00,0x00,0x60,0x00,0x00,0x00},/*"L",44*/

{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xF0,0x08,0x00,0xFF,0x00,0x00,0x07,0xF0,0x00,0x01,0xE0,0x00,0x3E,0x00,0x03,0xC0,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x00,0x08,0x00,0x00,0x00},/*"M",45*/

{0x00,0x00,0x08,0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0x80,0x08,0x01,0xE0,0x08,0x00,0x78,0x00,0x00,0x1E,0x00,0x04,0x03,0xC0,0x04,0x00,0xF0,0x07,0xFF,0xF8,0x04,0x00,0x00,0x04,0x00,0x00},/*"N",46*/

{0x00,0x00,0x00,0x00,0x7F,0x80,0x01,0xFF,0xE0,0x03,0x80,0x70,0x06,0x00,0x18,0x04,0x00,0x08,0x04,0x00,0x08,0x06,0x00,0x18,0x03,0x00,0x30,0x01,0xFF,0xE0,0x00,0x7F,0x80,0x00,0x00,0x00},/*"O",47*/

{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x04,0x08,0x04,0x04,0x08,0x04,0x04,0x00,0x04,0x04,0x00,0x04,0x0C,0x00,0x02,0x08,0x00,0x03,0xF8,0x00,0x01,0xF0,0x00,0x00,0x00,0x00},/*"P",48*/

{0x00,0x00,0x00,0x00,0x7F,0x80,0x01,0xFF,0xE0,0x03,0x80,0x70,0x06,0x00,0x98,0x04,0x00,0x88,0x04,0x00,0xE8,0x06,0x00,0x3C,0x03,0x00,0x36,0x01,0xFF,0xE6,0x00,0x7F,0x84,0x00,0x00,0x00},/*"Q",49*/

{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x08,0x08,0x04,0x08,0x00,0x04,0x08,0x00,0x04,0x0E,0x00,0x04,0x0B,0x80,0x06,0x10,0xE0,0x03,0xF0,0x78,0x01,0xE0,0x18,0x00,0x00,0x08},/*"R",50*/

{0x00,0x00,0x00,0x01,0xE0,0xE0,0x03,0xF0,0x30,0x06,0x38,0x10,0x04,0x18,0x08,0x04,0x1C,0x08,0x04,0x0C,0x08,0x04,0x0E,0x08,0x02,0x07,0x18,0x07,0x87,0xF0,0x00,0x01,0xE0,0x00,0x00,0x00},/*"S",51*/

{0x01,0x80,0x00,0x06,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x08,0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x00,0x06,0x00,0x00,0x01,0x80,0x00},/*"T",52*/

{0x00,0x00,0x00,0x04,0x00,0x00,0x07,0xFF,0xE0,0x07,0xFF,0xF0,0x04,0x00,0x18,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x04,0x00,0x10,0x07,0xFF,0xE0,0x04,0x00,0x00,0x00,0x00,0x00},/*"U",53*/

{0x04,0x00,0x00,0x06,0x00,0x00,0x07,0xE0,0x00,0x04,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x78,0x00,0x01,0xC0,0x00,0x1E,0x00,0x05,0xE0,0x00,0x06,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00},/*"V",54*/

{0x04,0x00,0x00,0x07,0xC0,0x00,0x04,0xFF,0x00,0x00,0x03,0xF8,0x04,0x03,0xC0,0x06,0x3C,0x00,0x07,0xFC,0x00,0x04,0x0F,0xF8,0x00,0x01,0xE0,0x04,0x3E,0x00,0x07,0xC0,0x00,0x04,0x00,0x00},/*"W",55*/

{0x00,0x00,0x00,0x04,0x00,0x08,0x06,0x00,0x18,0x07,0x80,0x68,0x04,0xE1,0x80,0x00,0x3E,0x00,0x00,0x17,0x00,0x04,0x61,0xC8,0x07,0x80,0x78,0x04,0x00,0x18,0x04,0x00,0x08,0x00,0x00,0x00},/*"X",56*/

{0x04,0x00,0x00,0x06,0x00,0x00,0x07,0x80,0x00,0x04,0xF0,0x08,0x00,0x3C,0x08,0x00,0x1F,0xF8,0x00,0x07,0xF8,0x00,0x18,0x08,0x04,0x60,0x08,0x05,0x80,0x00,0x06,0x00,0x00,0x04,0x00,0x00},/*"Y",57*/

{0x00,0x00,0x00,0x01,0x80,0x08,0x07,0x00,0x38,0x06,0x00,0xE8,0x04,0x01,0x88,0x04,0x06,0x08,0x04,0x18,0x08,0x04,0x60,0x08,0x05,0xC0,0x08,0x07,0x00,0x18,0x04,0x00,0x60,0x00,0x00,0x00},/*"Z",58*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFE,0x20,0x00,0x02,0x20,0x00,0x02,0x20,0x00,0x02,0x20,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00},/*"[",59*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x03,0x00,0x00,0x00,0xE0,0x00,0x00,0x18,0x00,0x00,0x07,0x00,0x00,0x01,0xC0,0x00,0x00,0x30,0x00,0x00,0x0E,0x00,0x00,0x01,0x00,0x00,0x00},/*"",60*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x02,0x20,0x00,0x02,0x20,0x00,0x02,0x20,0x00,0x02,0x3F,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"]",61*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x20,0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"^",62*/

{0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01},/*"_",63*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/

{0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x19,0xF8,0x00,0x19,0x98,0x00,0x21,0x08,0x00,0x22,0x08,0x00,0x22,0x08,0x00,0x22,0x10,0x00,0x3F,0xF0,0x00,0x1F,0xF8,0x00,0x00,0x08,0x00,0x00,0x18},/*"a",65*/

{0x00,0x00,0x00,0x04,0x00,0x00,0x07,0xFF,0xF8,0x0F,0xFF,0xF0,0x00,0x18,0x10,0x00,0x10,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x30,0x18,0x00,0x1F,0xF0,0x00,0x0F,0xC0,0x00,0x00,0x00},/*"b",66*/

{0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x1F,0xF0,0x00,0x18,0x30,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x3C,0x08,0x00,0x1C,0x10,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00},/*"c",67*/

{0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x1F,0xF0,0x00,0x38,0x18,0x00,0x20,0x08,0x00,0x20,0x08,0x04,0x20,0x08,0x04,0x10,0x10,0x07,0xFF,0xF8,0x0F,0xFF,0xF0,0x00,0x00,0x10,0x00,0x00,0x00},/*"d",68*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x1F,0xF0,0x00,0x11,0x30,0x00,0x21,0x08,0x00,0x21,0x08,0x00,0x21,0x08,0x00,0x31,0x08,0x00,0x1F,0x10,0x00,0x07,0x20,0x00,0x00,0x00},/*"e",69*/

{0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x08,0x00,0x20,0x08,0x01,0xFF,0xF8,0x03,0xFF,0xF8,0x06,0x20,0x08,0x04,0x20,0x08,0x04,0x20,0x08,0x07,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00},/*"f",70*/

{0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x0E,0x7E,0x00,0x1F,0xF3,0x00,0x31,0xA1,0x00,0x20,0xA1,0x00,0x30,0xB1,0x00,0x3F,0xB3,0x00,0x2F,0x1E,0x00,0x30,0x1E,0x00,0x30,0x00,0x00,0x00,0x00},/*"g",71*/

{0x00,0x00,0x00,0x04,0x00,0x08,0x07,0xFF,0xF8,0x0F,0xFF,0xF8,0x00,0x10,0x08,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x1F,0xF8,0x00,0x00,0x08,0x00,0x00,0x00},/*"h",72*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x06,0x3F,0xF8,0x06,0x7F,0xF8,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00},/*"i",73*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x20,0x01,0x00,0x20,0x01,0x06,0x20,0x03,0x06,0x3F,0xFE,0x06,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"j",74*/

{0x00,0x00,0x00,0x04,0x00,0x08,0x07,0xFF,0xF8,0x0F,0xFF,0xF8,0x00,0x01,0x08,0x00,0x02,0x00,0x00,0x07,0x00,0x00,0x38,0xC8,0x00,0x20,0x78,0x00,0x20,0x18,0x00,0x00,0x08,0x00,0x00,0x00},/*"k",75*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x08,0x07,0xFF,0xF8,0x0F,0xFF,0xF8,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00},/*"l",76*/

{0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x10,0x08,0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x1F,0xF8,0x00,0x10,0x08,0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x00,0x08},/*"m",77*/

{0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x10,0x08,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x1F,0xF8,0x00,0x00,0x08,0x00,0x00,0x00},/*"n",78*/

{0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x0F,0xF0,0x00,0x18,0x30,0x00,0x30,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x30,0x08,0x00,0x18,0x30,0x00,0x0F,0xF0,0x00,0x07,0xC0,0x00,0x00,0x00},/*"o",79*/

{0x00,0x00,0x00,0x00,0x20,0x01,0x00,0x3F,0xFF,0x00,0x3F,0xFF,0x00,0x10,0x11,0x00,0x20,0x09,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x30,0x38,0x00,0x1F,0xF0,0x00,0x0F,0xC0,0x00,0x00,0x00},/*"p",80*/

{0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x1F,0xF0,0x00,0x38,0x18,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x20,0x09,0x00,0x10,0x11,0x00,0x1F,0xFF,0x00,0x3F,0xFF,0x00,0x00,0x01,0x00,0x00,0x00},/*"q",81*/

{0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x08,0x08,0x00,0x10,0x08,0x00,0x20,0x08,0x00,0x20,0x00,0x00,0x38,0x00,0x00,0x18,0x00,0x00,0x00,0x00},/*"r",82*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x78,0x00,0x1E,0x18,0x00,0x33,0x08,0x00,0x23,0x08,0x00,0x21,0x88,0x00,0x21,0x98,0x00,0x30,0xF8,0x00,0x3C,0xF0,0x00,0x00,0x00,0x00,0x00,0x00},/*"s",83*/

{0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0xFF,0xF0,0x03,0xFF,0xF8,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00},/*"t",84*/

{0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x3F,0xF0,0x00,0x7F,0xF8,0x00,0x00,0x18,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x20,0x10,0x00,0x3F,0xF8,0x00,0x7F,0xF0,0x00,0x00,0x10,0x00,0x00,0x00},/*"u",85*/

{0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x30,0x00,0x00,0x3E,0x00,0x00,0x23,0xC0,0x00,0x00,0xF8,0x00,0x00,0x30,0x00,0x01,0xC0,0x00,0x2E,0x00,0x00,0x30,0x00,0x00,0x20,0x00,0x00,0x00,0x00},/*"v",86*/

{0x00,0x20,0x00,0x00,0x38,0x00,0x00,0x2F,0x80,0x00,0x01,0xF8,0x00,0x20,0xF0,0x00,0x37,0x00,0x00,0x3F,0x00,0x00,0x21,0xF0,0x00,0x00,0xF0,0x00,0x27,0x00,0x00,0x38,0x00,0x00,0x20,0x00},/*"w",87*/

{0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x20,0x08,0x00,0x30,0x38,0x00,0x3C,0x48,0x00,0x27,0x80,0x00,0x03,0x80,0x00,0x24,0xC8,0x00,0x38,0x38,0x00,0x20,0x18,0x00,0x20,0x08,0x00,0x00,0x00},/*"x",88*/

{0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x03,0x00,0x3C,0x01,0x00,0x23,0x81,0x00,0x00,0xFE,0x00,0x00,0x70,0x00,0x23,0x80,0x00,0x3C,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x00,0x00},/*"y",89*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x18,0x00,0x20,0x78,0x00,0x20,0xC8,0x00,0x23,0x88,0x00,0x2E,0x08,0x00,0x38,0x08,0x00,0x30,0x18,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00},/*"z",90*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x14,0x00,0x1F,0xE3,0xFC,0x20,0x00,0x02,0x20,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00},/*"{",91*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"|",92*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x02,0x20,0x00,0x02,0x1F,0xE3,0xFC,0x00,0x14,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"}",93*/

{0x00,0x00,0x00,0x30,0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0x18,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00},/*"~",94*/
};

?(2). oled.h

#ifndef _OLED_H
#define _OLED_H
#include "stm32f10x.h"
#include "delay.h"
#include "sys.h"
#include <string.h>

extern const u8 ChineseFont_16_16[][32];
extern const u8 ChineseFont_24_24[][24*24/8];
extern const u8 ASCII_8_16[][16];
extern const u8 bmp_foot_18_29_1[];
extern const u8 bmp_foot_17_32_2[];
extern const u8 ASCII_12_24[][12*3];

/*
初始化OLED顯示屏硬件
硬件連接:
D0--PB14--時鐘線
D1--PB13--數(shù)據(jù)線
RES-PB12-復(fù)位腳
DC--PB1--命令數(shù)據(jù)選擇腳
CS--PA7--片選
*/
#define OLED_SCK PBout(14)
#define OLED_MOSI PBout(13)
#define OLED_RES PBout(12)
#define OLED_DC PBout(1)
#define OLED_CS PAout(7)

//定義命令
#define OLED_WRITE_CMD 0
#define OLED_WRITE_DAT 1

//函數(shù)聲明
void OLED_SPI_WriteOneByte(u8 data,u8 flag);
void OLED_Init(void);
void OLED_Clear(u8 data);
void OLED_SetPos(u8 x,u8 y);
void OLED_DisplayPoint(u8 x,u8 y,u8 c);
void OLED_DisplayData(u8 x,u8 y,u8 w,u8 h,u8 *p);
void OLED_WriteGRAM(void);

void OLED_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2); //兩點畫線
void OLED_DrawAngleLine(u32 x,u32 y,float du,u32 len,u32 w,u8 c);//角度畫線
void OLED_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2); //矩形
void OLED_Circle(u16 x0,u16 y0,u8 r); //圓
void OLED_DrawAngleLine2(u32 x,u32 y,int du,u32 len,u8 c);
void OLED_ShowString(u8 x,u8 y,u8 h,char *str);
void OLED_ShowChineseFont(u8 x,u8 y,u8 size,u8 number);

extern u8 OLED_GRAM[8][128]; //8行128列---->8頁128列
#endif

3.2 rtc驅(qū)動代碼

(1) rtc.c

#include "rtc.h"

//定義RTC標(biāo)準(zhǔn)結(jié)構(gòu)體
struct RTC_CLOCK rtc_clock; 

/*
函數(shù)功能: RTC初始化函數(shù)
*/
void RTC_Init(void)
{
	 if(BKP->DR1!=0xAB) //表示RTC第一次初始化
	 {
			//1. 備份寄存器時鐘
			RCC->APB1ENR|=1<<27; //備份時鐘接口
			RCC->APB1ENR|=1<<28; //電源時鐘接口
			PWR->CR|=1<<8; 			 //允許寫入RTC和后備寄存器
		  
		  //2. 配置RTC時鐘源
			RCC->BDCR|=1<<0;     //開啟外部32.768K時鐘
		  while(!(RCC->BDCR&1<<1)){} //等待時鐘就緒
			RCC->BDCR&=~(0x3<<8);  //清空時鐘配置
			RCC->BDCR|=0x1<<8;     //選擇外部32.768K時鐘
			
			//3. 配置RTC核心寄存器
			RCC->BDCR|=1<<15;     //開啟RTC時鐘
      while(!(RTC->CRL&1<<5)){} //判斷上一次寄存器是否寫完成
			RTC->CRL|=1<<4;  //進入配置模式
			RTC->PRLH=0;      //預(yù)分頻高位
			RTC->PRLL=0x7FFF; //32767	預(yù)分頻低位
			RTC->CNTH=0;      //計數(shù)器高位
			RTC->CNTL=0;      //計數(shù)器低位
			RTC->ALRH=0;      //鬧鐘寄存器高位
			RTC->ALRL=60;      //鬧鐘寄存器低位
			RTC->CRL&=~(1<<4);//退出配置模式	
			while(!(RTC->CRL&1<<5)){} //判斷上一次寄存器是否寫完成
			BKP->DR1=0xAB; 		//表示配置成功了	
		}

		RTC->CRH|=1<<0; //秒中斷
		RTC->CRH|=1<<1; //鬧鐘中斷
		STM32_SetPriority(RTC_IRQn,2,2); //優(yōu)先級
}

extern void Update_FrameShow(void);
/*
函數(shù)功能: RTC鬧鐘中斷服務(wù)函數(shù)
*/
void RTC_IRQHandler(void)
{
	  u32 SecCnt;
		if(RTC->CRL&1<<0)
		{
				SecCnt=RTC->CNTH<<16;//獲取高位
				SecCnt|=RTC->CNTL;   //獲取低位
				RTC_GetTime(SecCnt); //轉(zhuǎn)換標(biāo)準(zhǔn)時間
				RTC_GetWeek(SecCnt);
			 // printf("%d-%d-%d %d:%d:%d week:%dn",rtc_clock.year,rtc_clock.mon,rtc_clock.day,rtc_clock.hour,rtc_clock.min,rtc_clock.sec,rtc_clock.week);
				Update_FrameShow(); //更新顯示
				RTC->CRL&=~(1<<0); //清除秒中斷標(biāo)志位
		}
		
		if(RTC->CRL&1<<1)
		{
//				printf("鬧鐘時間到達!....n");
//			  BEEP=1;
//			  DelayMs(500);
//				BEEP=0;
				RTC->CRL&=~(1<<1); //清除鬧鐘中斷標(biāo)志位
		}
}



//閏年的月份
static int mon_r[12]={31,29,31,30,31,30,31,31,30,31,30,31};
//平年的月份
static int mon_p[12]={31,28,31,30,31,30,31,31,30,31,30,31};


/*
函數(shù)功能: 設(shè)置RTC時間
函數(shù)形參:
    u32 year;   2018
	  u32 mon;     8
	  u32 day;
		u32 hour;
		u32 min;
	  u32 sec;
*/
void RTC_SetTime(u32 year,u32 mon,u32 day,u32 hour,u32 min,u32 sec)
{
		u32 i;
	  u32 SecCnt=0; //總秒數(shù)
		/*1. 累加已經(jīng)過去的年份*/
		for(i=2017;i<year;i++)  //基準(zhǔn)年份:20170101000000
	  {
				if(RTC_GetYearState(i))
				{
						SecCnt+=366*24*60*60; //閏年一年的秒數(shù)
				}
				else
				{
						SecCnt+=365*24*60*60; //平年一年的秒數(shù)
				}
		}
		/*2. 累加過去的月份*/
		for(i=0;i<mon-1;i++)
		{
			  if(RTC_GetYearState(year))
				{
						SecCnt+=mon_r[i]*24*60*60; //閏年一月的秒數(shù)
				}
				else
				{
						SecCnt+=mon_p[i]*24*60*60; //平年一月的秒數(shù)
				}	
		}
		
		/*3. 累加過去的天數(shù)*/
		SecCnt+=(day-1)*24*60*60;
		
		/*4. 累加過去小時*/
		SecCnt+=hour*60*60;
		
		/*5. 累加過去的分鐘*/
		SecCnt+=min*60;
		
		/*6. 累加過去的秒*/
		SecCnt+=sec;
		
		/*7. 設(shè)置RTC時間*/
		RCC->APB1ENR|=1<<27; //備份時鐘接口
		RCC->APB1ENR|=1<<28; //電源時鐘接口
		PWR->CR|=1<<8; 			 //允許寫入RTC和后備寄存器
		while(!(RTC->CRL&1<<5)){} //判斷上一次寄存器是否寫完成
		RTC->CRL|=1<<4;           //進入配置模式
		RTC->CNTH=SecCnt>>16;     //計數(shù)器高位
		RTC->CNTL=SecCnt&0xFFFF;  //計數(shù)器低位
		RTC->CRL&=~(1<<4);//退出配置模式	
		while(!(RTC->CRL&1<<5)){} //判斷上一次寄存器是否寫完成
}


/*
函數(shù)功能: 獲取RTC時間
函數(shù)參數(shù): u32 sec 秒單位時間
*/
void RTC_GetTime(u32 sec)
{
		u32 i;
		rtc_clock.year=2017; //基準(zhǔn)年份
		
	  /*1. 計算當(dāng)前的年份*/
	  while(1)
		{
			  if(RTC_GetYearState(rtc_clock.year))
				{
						if(sec>=366*24*60*60) //夠一年
						{
								sec-=366*24*60*60;
								rtc_clock.year++;
						}
						else break;
				}
				else
				{
						if(sec>=365*24*60*60) //夠一年
						{
								sec-=365*24*60*60;
								rtc_clock.year++;
						}
						else break;
				}
		}
		
		/*2. 計算當(dāng)前的月份*/
		rtc_clock.mon=1;
		for(i=0;i<12;i++)
		{
				if(RTC_GetYearState(rtc_clock.year))
				{
					 	if(sec>=mon_r[i]*24*60*60)
						{
							 sec-=mon_r[i]*24*60*60;
							 rtc_clock.mon++;
						}
						else break;		
				}
				else
				{
						if(sec>=mon_p[i]*24*60*60)
						{
							 sec-=mon_p[i]*24*60*60;
							 rtc_clock.mon++;
						}
						else break;	
				}
		}
		
		/*3. 計算當(dāng)前的天數(shù)*/
		rtc_clock.day=1;
		while(1)
		{
				if(sec>=24*60*60)
				{
						sec-=24*60*60;
						rtc_clock.day++;
				}
				else break;
		}
		
		/*4. 計算當(dāng)前的小時*/
		rtc_clock.hour=0;
		while(1)
		{
				if(sec>=60*60)
				{
						sec-=60*60;
						rtc_clock.hour++;
				}
				else break;
		}
		
		/*5. 計算當(dāng)前的分鐘*/
		rtc_clock.min=0;
		while(1)
		{
				if(sec>=60)
				{
						sec-=60;
						rtc_clock.min++;
				}
				else break;
		}
		
		/*6. 計算當(dāng)前的秒*/
		rtc_clock.sec=sec;
}


/*
函數(shù)功能: 判斷年份是否是平年、閏年
返回值  : 0表示平年 1表示閏年
*/
u8 RTC_GetYearState(u32 year)
{
	 if((year%4==0&&year%100!=0)||year%400==0)
	 {
		 return 1;
	 }
	 return 0;
}


/*
函數(shù)功能: 獲取星期
*/
void RTC_GetWeek(u32 sec)
{
	u32 day1=sec/(60*60*24); //將秒單位時間轉(zhuǎn)為天數(shù)
	switch(day1%7)
	{
		case 0:
			rtc_clock.week=0;
			break;
	 	case 1:
			rtc_clock.week=1;
			break;
		case 2:
			rtc_clock.week=2;
			break;
		case 3:
			rtc_clock.week=3;
			break;
		case 4:
			rtc_clock.week=4;
			break;
		case 5:
			rtc_clock.week=5;
			break;
		case 6:
			rtc_clock.week=6;
			break;
	}
}

(2) rtc.h

#ifndef RTC_H
#define RTC_H
#include "stm32f10x.h"
#include "sys.h"
#include "usart.h"
#include "delay.h"

//定時RTC時鐘結(jié)構(gòu)體
struct RTC_CLOCK
{
		u32 year;
	  u32 mon;
	  u32 day;
		u32 hour;
		u32 min;
	  u32 sec;
		u32 week;
};
extern struct RTC_CLOCK rtc_clock; 

//函數(shù)聲明
void RTC_Init(void);
u8 RTC_GetYearState(u32 year);
void RTC_GetTime(u32 sec);
void RTC_GetWeek(u32 sec);
void RTC_SetTime(u32 year,u32 mon,u32 day,u32 hour,u32 min,u32 sec);
#endif

3.3 界面繪制部分代碼-主函數(shù)

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "key.h"
#include "usart.h"
#include <string.h>
#include "timer.h"
#include "oled.h"
#include "rtc.h"

/*
函數(shù)功能: 繪制時鐘表盤框架
*/
void DrawTimeFrame(void)
{
	u8 i;
	OLED_Circle(32,32,31);//畫外圓
	OLED_Circle(32,32,1); //畫中心圓
	//畫刻度
	for(i=0;i<60;i++)
	{
		if(i%5==0)OLED_DrawAngleLine(32,32,6*i,31,3,1);
	}
	OLED_WriteGRAM();  //刷新數(shù)據(jù)到OLED屏幕
}


/*
函數(shù)功能: 更新時間框架顯示,在RTC中斷里調(diào)用
*/
char TimeBuff[20];
void Update_FrameShow(void)
{
	/*1. 繪制秒針、分針、時針*/
	OLED_DrawAngleLine2(32,32,rtc_clock.sec*6-6-90,27,0);//清除之前的秒針
	OLED_DrawAngleLine2(32,32,rtc_clock.sec*6-90,27,1); //畫秒針
	
	OLED_DrawAngleLine2(32,32,rtc_clock.min*6-6-90,24,0);
	OLED_DrawAngleLine2(32,32,rtc_clock.min*6-90,24,1);
	
	OLED_DrawAngleLine2(32,32,rtc_clock.hour*30-6-90,21,0);
	OLED_DrawAngleLine2(32,32,rtc_clock.hour*30-90,21,1);
	
	//繪制電子鐘時間
	sprintf(TimeBuff,"%d",rtc_clock.year);
	OLED_ShowString(65,16*0,16,TimeBuff);  //年份字符串
	OLED_ShowChineseFont(66+32,16*0,16,4); //顯示年
	
	sprintf(TimeBuff,"%d/%d",rtc_clock.mon,rtc_clock.day);
	OLED_ShowString(75,16*1,16,TimeBuff); //月
	
	if(rtc_clock.sec==0)OLED_ShowString(65,16*2,16,"        ");	//清除多余的數(shù)據(jù)
	sprintf(TimeBuff,"%d:%d:%d",rtc_clock.hour,rtc_clock.min,rtc_clock.sec);
	OLED_ShowString(65,16*2,16,TimeBuff); //秒
	
	//顯示星期
	OLED_ShowChineseFont(70,16*3,16,5); //星
	OLED_ShowChineseFont(70+16,16*3,16,6); //期
	OLED_ShowChineseFont(70+32,16*3,16,rtc_clock.week+7); //具體的值
}


int main()
{
    LED_Init();
    BEEP_Init();
    KEY_Init();
    USART1_Init(115200);
    TIMER1_Init(72,20000); //超時時間20ms
    USART2_Init(9600);//串口-藍牙
    TIMER2_Init(72,20000); //超時時間20ms
    USART3_Init(115200);//串口-WIFI
    TIMER3_Init(72,20000); //超時時間20ms
    USART1_Printf("正在初始化WIFI請稍等.n");
    RTC_Init(); //RTC初始化
    OLED_Init();
    OLED_Clear(0x00); //清屏
    
    RTC_SetTime(2020,7,15,10,52,10);
    DrawTimeFrame();
    while(1)
    { 
        
    }
}

下面公眾號有全套的單片機、C語言、Linux、QT教程,歡迎關(guān)注:

  • 更多詳細資料請聯(lián)系.docx
    下載
意法半導(dǎo)體

意法半導(dǎo)體

意法半導(dǎo)體(ST)集團于1987年6月成立,是由意大利的SGS微電子公司和法國Thomson半導(dǎo)體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱改為意法半導(dǎo)體有限公司。意法半導(dǎo)體是世界最大的半導(dǎo)體公司之一,公司銷售收入在半導(dǎo)體工業(yè)五大高速增長市場之間分布均衡(五大市場占2007年銷售收入的百分比):通信(35%),消費(17%),計算機(16%),汽車(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計數(shù)據(jù),意法半導(dǎo)體是全球第五大半導(dǎo)體廠商,在很多市場居世界領(lǐng)先水平。例如,意法半導(dǎo)體是世界第一大專用模擬芯片和電源轉(zhuǎn)換芯片制造商,世界第一大工業(yè)半導(dǎo)體和機頂盒芯片供應(yīng)商,而且在分立器件、手機相機模塊和車用集成電路領(lǐng)域居世界前列.

意法半導(dǎo)體(ST)集團于1987年6月成立,是由意大利的SGS微電子公司和法國Thomson半導(dǎo)體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱改為意法半導(dǎo)體有限公司。意法半導(dǎo)體是世界最大的半導(dǎo)體公司之一,公司銷售收入在半導(dǎo)體工業(yè)五大高速增長市場之間分布均衡(五大市場占2007年銷售收入的百分比):通信(35%),消費(17%),計算機(16%),汽車(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計數(shù)據(jù),意法半導(dǎo)體是全球第五大半導(dǎo)體廠商,在很多市場居世界領(lǐng)先水平。例如,意法半導(dǎo)體是世界第一大專用模擬芯片和電源轉(zhuǎn)換芯片制造商,世界第一大工業(yè)半導(dǎo)體和機頂盒芯片供應(yīng)商,而且在分立器件、手機相機模塊和車用集成電路領(lǐng)域居世界前列.收起

查看更多

相關(guān)推薦