STC8H8K64,使用0.96寸oled屏幕. 进行硬件iic和硬件spi驱动(spi开启DMA)---(代码)

第一步:先配置好引脚(iiic驱动)或者(spi驱动)

上面这个变量,用来选择 用 iic 还是spi

cpp 复制代码
/******************** IO配置函数 **************************/
void	GPIO_config(void)
{
	
		////准双向口  用来当做led闪烁用
		P3_MODE_IO_PU(GPIO_Pin_1);
	
		if( oled_is_spi_mode==0 )//选择iic 驱动 oled
		{
			// 1. 先配置 GPIO 为开漏输出(OD)+ 内部上拉   iic使用    oled屏幕iic用
			P1_MODE_OUT_OD( GPIO_Pin_4 | GPIO_Pin_5 )  // P1.5(SDA), P1.4(SCL)
			
		}else			//选择spi 驱动 oled
		{
				////准双向口  
				P5_MODE_IO_PU(GPIO_Pin_4); 	//片选cs
			
					////准双向口  
					//P1^6;//复位
					//P1^7;//数据/命令控制
					//P1^3;//MOSI 数据输出
					//P1^5;//时钟
				P1_MODE_IO_PU( GPIO_Pin_3 |  GPIO_Pin_5  |  GPIO_Pin_6 |  GPIO_Pin_7 );
			
		}
		
		//p32是  //高阻输入  因为p32是外部引脚中断0口,有上升下降沿都中断功能.   只有p32和p33有,  别的外部中断只有下降沿中断
		P3_MODE_IN_HIZ(GPIO_Pin_2);

}

第二步:初始化 iic 和 spi (时钟速度都不要太快了,SPI超过10M不稳定. iic的话慢很多)

cpp 复制代码
/****************  I2C初始化函数 *****************/
void	I2C_config(void)
{
	
	
	
	I2C_InitTypeDef		I2C_InitStructure;
	
	I2C_InitStructure.I2C_Mode      = I2C_Mode_Master;	//主从选择   I2C_Mode_Master, I2C_Mode_Slave
	I2C_InitStructure.I2C_Enable    = ENABLE;			//I2C功能使能,   ENABLE, DISABLE
	I2C_InitStructure.I2C_MS_WDTA   = DISABLE;			//主机使能自动发送,  ENABLE, DISABLE
	I2C_InitStructure.I2C_Speed     = 0;				//总线速度=Fosc/2/(Speed*2+4),      0~63
	I2C_Init(&I2C_InitStructure);
	
	//NVIC_I2C_Init(I2C_Mode_Master,DISABLE,Priority_0);	//主从模式, I2C_Mode_Master, I2C_Mode_Slave; 中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3

	I2C_SW(I2C_P14_P15);					//I2C_P14_P15,I2C_P24_P25,I2C_P33_P32
	
	    // 5. 延时等待稳定
    delay_ms(100);
}



/****************  SPI初始化函数 *****************/
void	SPI_config(void)
{
	SPI_InitTypeDef		SPI_InitStructure;

	SPI_InitStructure.SPI_Enable    = ENABLE;				//SPI启动    ENABLE, DISABLE
	SPI_InitStructure.SPI_SSIG      = ENABLE;				//片选位     ENABLE, DISABLE
	SPI_InitStructure.SPI_FirstBit  = SPI_MSB;				//移位方向   SPI_MSB, SPI_LSB
	SPI_InitStructure.SPI_Mode      = SPI_Mode_Master;		//主从选择   SPI_Mode_Master, SPI_Mode_Slave
	SPI_InitStructure.SPI_CPOL      = SPI_CPOL_Low;			//时钟相位   SPI_CPOL_High,   SPI_CPOL_Low
	SPI_InitStructure.SPI_CPHA      = SPI_CPHA_1Edge;		//数据边沿   SPI_CPHA_1Edge,  SPI_CPHA_2Edge
	SPI_InitStructure.SPI_Speed     = SPI_Speed_4;			//SPI速度    SPI_Speed_4,SPI_Speed_16,SPI_Speed_64,SPI_Speed_2/SPI_Speed_32
	SPI_Init(&SPI_InitStructure);
	
	NVIC_SPI_Init(ENABLE,Priority_3);		//中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
	
	SPI_SW(SPI_P12_P13_P14_P15);	//SPI_P12_P13_P14_P15,SPI_P22_P23_P24_P25,SPI_P54_P40_P41_P43,SPI_P35_P34_P33_P32
	//SPI_SS = 1;
}

第三步:导入oled的库函数

, 下面这段代码保存为 oled.c

cpp 复制代码
#include	"STC8G_H_I2C.h"
#include "oled.h"
#include "oledfont.h"  	
#include <string.h> // 需要包含头文件
#include	"STC8G_H_SPI.h"
#include	"STC8G_H_Delay.h"

//选择是否用spi  还是  iic   驱动
u8 xdata oled_is_spi_mode = 1;  // false=I2C, true=SPI(xdata 表示存储在外部RAM)




//u16 FONT_DATA_size = FONT_DATA_SIZE;



/**********************************************
// IIC Write Data
**********************************************/
void Write_IIC_Data(unsigned char IIC_Data)
{
//   IIC_Start();
//   Write_IIC_Byte(IIC_SLAVE_ADDR);			//D/C#=0; R/W#=0
//	IIC_Wait_Ack();	
//   Write_IIC_Byte(0x40);			//write data
//	IIC_Wait_Ack();	
//   Write_IIC_Byte(IIC_Data);
//	IIC_Wait_Ack();	
//   IIC_Stop();
//	
	I2C_WriteNbyte( IIC_SLAVE_ADDR ,  0x40 , &IIC_Data  ,1 );
	
	
}

/**********************************************
// IIC Write Command
**********************************************/
void Write_IIC_Command(unsigned char IIC_Command)
{
//   IIC_Start();
//   Write_IIC_Byte(IIC_SLAVE_ADDR);            //Slave address,SA0=0
//	IIC_Wait_Ack();	
//   Write_IIC_Byte(0x00);			//write command
//	IIC_Wait_Ack();	
//   Write_IIC_Byte(IIC_Command); 
//	IIC_Wait_Ack();	
//   IIC_Stop();
	
		I2C_WriteNbyte( IIC_SLAVE_ADDR ,  0x00 , &IIC_Command  ,1 );
}


void OLED_WR_Byte(unsigned dat,unsigned cmd)
{
	
		//u8 i;		
		if( oled_is_spi_mode == 0 )//使用IIC来驱动oled屏幕
		{
				if(cmd)
						{

				 Write_IIC_Data(dat);
				 
					}
				else {
				 Write_IIC_Command(dat);
					
				}
		}
		else//使用  spi  驱动oled屏幕
		{
				
					if(cmd)
					{
						OLED_DC_Set();//发送数据模式
					}
					else 
					{
						OLED_DC_Clr();//发送命令模式
					}
					
					OLED_CS_Clr();
					
					SPI_WriteByte(dat);			 		  
					
					OLED_CS_Set();
					OLED_DC_Set();   
		
		
		
		
		}
		

}

//坐标设置

	void OLED_Set_Pos(unsigned char x, unsigned char y) 
{ 	OLED_WR_Byte(0xb0+y,OLED_CMD);
	OLED_WR_Byte(((x&0xf0)>>4)|0x10,OLED_CMD);
	OLED_WR_Byte((x&0x0f),OLED_CMD); 
}  



//初始化SSD1306					    
void OLED_Init(void)
{ 	
	

		if( oled_is_spi_mode == 0 )//说明是要用IIC来驱动  oled屏幕
		{
						OLED_WR_Byte(0xAE,OLED_CMD);  // 关闭显示
						OLED_WR_Byte(0x00,OLED_CMD);  // 设置列地址低4位
						OLED_WR_Byte(0x10,OLED_CMD);  // 设置列地址高4位  
						OLED_WR_Byte(0x40,OLED_CMD);  // 设置起始行地址
						OLED_WR_Byte(0xB0,OLED_CMD);  // 设置页地址
						OLED_WR_Byte(0x81,OLED_CMD); // 对比度控制
						OLED_WR_Byte(1,OLED_CMD); // 设置对比度值为255(最大值)						//修改可降低功耗
				
						OLED_WR_Byte(0xA1,OLED_CMD); // 设置段重映射(水平翻转)
						OLED_WR_Byte(0xA6,OLED_CMD); // 设置正常/反相显示(正常模式)
						OLED_WR_Byte(0xA8,OLED_CMD); // 设置多路复用比率(1-64)
						OLED_WR_Byte(0x3F,OLED_CMD); // 设置1/32占空比
						OLED_WR_Byte(0xC8,OLED_CMD); // 设置COM扫描方向(反向)
						OLED_WR_Byte(0xD3,OLED_CMD); // 设置显示偏移
						OLED_WR_Byte(0x00,OLED_CMD); // 显示偏移值为0

						OLED_WR_Byte(0xD5,OLED_CMD); // 设置振荡器分频
						OLED_WR_Byte(0x80,OLED_CMD); // 分频比值

						OLED_WR_Byte(0xD8,OLED_CMD); // 关闭区域颜色模式
						OLED_WR_Byte(0x05,OLED_CMD); // 区域颜色模式设置值

						OLED_WR_Byte(0xD9,OLED_CMD); // 设置预充电周期
						OLED_WR_Byte(0xf1,OLED_CMD); // 预充电周期值														//修改可降低功耗(功耗差别不是很大)

						OLED_WR_Byte(0xDA,OLED_CMD); // 设置COM引脚配置
						OLED_WR_Byte(0x12,OLED_CMD); // COM引脚配置值

						OLED_WR_Byte(0xDB,OLED_CMD); // 设置VCOMH电压倍率
						OLED_WR_Byte(0x01,OLED_CMD); // VCOMH值																//修改可降低功耗

						OLED_WR_Byte(0x8D,OLED_CMD); // 设置电荷泵使能
						OLED_WR_Byte(0x14,OLED_CMD); // 使能电荷泵

						OLED_WR_Byte(0xAF,OLED_CMD); // 打开OLED面板显示
		}
		else//说明要用spi方式来驱动  oled屏幕
		{
		
						//oled屏幕复位引脚
					  OLED_RST_Set();
						delay_ms(100);
						OLED_RST_Clr();
						delay_ms(100);
						OLED_RST_Set(); 
		
						
		
						OLED_WR_Byte(0xAE,OLED_CMD);  // 关闭显示
						OLED_WR_Byte(0x00,OLED_CMD);  // 设置列地址低4位
						OLED_WR_Byte(0x10,OLED_CMD);  // 设置列地址高4位  
						OLED_WR_Byte(0x40,OLED_CMD);  // 设置起始行地址
						OLED_WR_Byte(0xB0,OLED_CMD);  // 设置页地址
						OLED_WR_Byte(0x81,OLED_CMD); // 对比度控制
						OLED_WR_Byte(30,OLED_CMD); // 设置对比度值为255(最大值)						//修改可降低功耗
				
						OLED_WR_Byte(0xA1,OLED_CMD); // 设置段重映射(水平翻转)
						OLED_WR_Byte(0xA6,OLED_CMD); // 设置正常/反相显示(正常模式)
						OLED_WR_Byte(0xA8,OLED_CMD); // 设置多路复用比率(1-64)
						OLED_WR_Byte(0x3F,OLED_CMD); // 设置1/32占空比
						OLED_WR_Byte(0xC8,OLED_CMD); // 设置COM扫描方向(反向)
						OLED_WR_Byte(0xD3,OLED_CMD); // 设置显示偏移
						OLED_WR_Byte(0x00,OLED_CMD); // 显示偏移值为0

						OLED_WR_Byte(0xD5,OLED_CMD); // 设置振荡器分频
						OLED_WR_Byte(0xd0,OLED_CMD); // 分频比值

						OLED_WR_Byte(0xD8,OLED_CMD); // 关闭区域颜色模式
						OLED_WR_Byte(0x05,OLED_CMD); // 区域颜色模式设置值

						OLED_WR_Byte(0xD9,OLED_CMD); // 设置预充电周期
						OLED_WR_Byte(0xff,OLED_CMD); // 预充电周期值														//修改可降低功耗(功耗差别不是很大)

						OLED_WR_Byte(0xDA,OLED_CMD); // 设置COM引脚配置
						OLED_WR_Byte(0x12,OLED_CMD); // COM引脚配置值

						OLED_WR_Byte(0xDB,OLED_CMD); // 设置VCOMH电压倍率0xDB
						OLED_WR_Byte(0x80,OLED_CMD); // VCOMH值																//修改可降低功耗

						OLED_WR_Byte(0x8D,OLED_CMD); // 设置电荷泵使能
						OLED_WR_Byte(0x14,OLED_CMD); // 使能电荷泵

						OLED_WR_Byte(0x20, OLED_CMD);  // 设置寻址模式(当前未显式设置)
						OLED_WR_Byte(0x00, OLED_CMD);  // 水平寻址模式(Horizontal Addressing Mode)  自动换行
						//OLED_WR_Byte(0x02, OLED_CMD);  // 页寻址模式(Page Addressing Mode)    不自动换行  后面数据相当于会丢失 

						//下面这3行主要是给spi的DMA用 , 但是在水平寻址模式	下,没办法发送命令定位一开始显示位置,所以后面出错后就图像乱了
						//======================()下面这3行一般不用, stc8h8k64的DMA,最多只能发送256字节,发送完毕要重新触发=============================
						// 设置起始位置(第0页第0列)     水平寻址模式			
//						OLED_WR_Byte(0x22, OLED_CMD);  // 设置页地址命令 0x22 
//						OLED_WR_Byte(0x00, OLED_CMD);   // 起始页
//						OLED_WR_Byte(0x07, OLED_CMD);   // 终止 页
						//===================================================

						OLED_WR_Byte(0xAF,OLED_CMD); // 打开OLED面板显示
						
						
						//OLED_Clear(0xf1);
					//	OLED_Set_Pos(0,0); 	
		
		
		
		
		
		}
		
			
			
			
			
			
			
			
			
			
			
			
			
			
}  








//清屏函数,清完屏,整个屏幕是黑色的!和没点亮一样!!!	  
void OLED_Clear(unsigned dat)  
{  
	u8 i=0,n;		  
		 u16 xdata ii;
	


		
		//OLED_Set_Pos(0,1);
		
//		// 连续写入所有数据(自动跨页)
//		for (ii = 0; ii < 1024; ii++) {
//				//OLED_WR_Byte(  IMG_DATA[ii], OLED_DATA  );
//					OLED_WR_Byte(0x00, OLED_DATA);
//		}
				//for(ii=0;ii<128;ii++) OLED_WR_Byte( 	IMG_DATA[ ii ] ,OLED_DATA); 
		
//		for(n=0;n<=255;n++)OLED_WR_Byte(dat,OLED_DATA); 
//		for(n=0;n<=255;n++)OLED_WR_Byte(dat,OLED_DATA); 
//			for(n=0;n<=255;n++)OLED_WR_Byte(dat,OLED_DATA); 
//			for(n=0;n<=255;n++)OLED_WR_Byte(dat,OLED_DATA); 
	
	
	for(i=0;i<8;i++)  
	{  
		OLED_WR_Byte (0xb0+i,OLED_CMD);    //设置页地址(0~7)
		OLED_WR_Byte (0x00,OLED_CMD);      //设置显示位置---列低地址
		OLED_WR_Byte (0x10,OLED_CMD);      //设置显示位置---列高地址   
		for(n=0;n<128;n++)OLED_WR_Byte(dat,OLED_DATA); 
	} //更新显示
}



// 查找函数:输入汉字字符串,返回在Font_Data中的下标
//输入一个char指针 自动去获取hanzi[0] hanzi[1]  
int find_font_index(const char *hanzi) {
	
		u8 i;
	
	
	    // 遍历字库数组
    for ( i = 0; i < FONT_DATA_SIZE; i++) {
        // 比较汉字编码(GB2312为2字节)
        if ( memcmp(hanzi, Font_Data[i].txt, 2 ) == 0) {
            return i; // 找到匹配,返回下标
        }
    }
	
	
	
		if( hanzi[0] < 0xa1)
		{
			    // 遍历字库数组
				for ( i = 0; i < FONT_DATA_SIZE; i++) {
        // 比较汉字编码(GB2312为2字节)
						if ( hanzi[0] == Font_Data[i].txt[0]) {
								return i; // 找到匹配,返回下标
						}
				}
		}
	

    return -1; // 未找到返回-1
}

//显示汉字 
void OLED_ShowCHinese(u8 x,u8 y,u8 no)
{      			    
	u8 t,adder=0;
	

	
		OLED_Set_Pos(x,y);	
    for(t=0;t<12;t++)
		{
				OLED_WR_Byte( Font_Data[no].dat[t] ,OLED_DATA);
				adder+=1;
     }	
		OLED_Set_Pos(x,y+1);	
    for(t=0;t<12;t++)
		{
			OLED_WR_Byte( Font_Data[no].dat[t+12] ,OLED_DATA);
			adder+=1;
		}		
		
	
	
	
	
}




//输出一串汉字

/**
 * @brief 显示汉字字符串(固定16x16像素)
 * @param x 起始x坐标 (0~127)
 * @param y 起始y坐标 (0~7,对应8行)
 * @param str 要显示的汉字字符串(GB2312编码)
 */
void OLED_ShowChineseString(u8 x, u8 y, const char *str) 
{
		u8 i;
		u8 isChinese;//用于"识别到汉字"的标志位
    u8 current_x = x;
    u8 current_y = y;
    const u8 FONT_WIDTH = 12;  // 固定字体宽度12像素
    const u8 FONT_HEIGHT = 16; // 固定字体高度16像素
    

	
    while (   str[0]!=0x00  )  //字符串的结尾就是0x00   到了这里不要再打印了
    {
        // 检查是否是汉字(GB2312编码的第一个字节范围)
       // if ((unsigned char)*str >= 0xA1 && (unsigned char)*str <= 0xF7) 
       // {
            // 查找汉字在字库中的索引
            u8 index = find_font_index(str);
            
            if (1==1) 
            {
								if( index != -1 )
								{
									// 显示找到的汉字
									OLED_ShowCHinese(current_x, current_y, index);
									
                }
								else
								{
								// 显示0的汉字
									OLED_ShowCHinese(current_x, current_y, 20);
								}
								
								
								
								//=============================如果刚才打印的是汉字,指针加2,是字符,指针加1================================================================================================
									
								isChinese=0;///用于"识别到汉字"的标志位
										    // 遍历字库数组
								for ( i = 0; i < FONT_DATA_SIZE; i++) {
										// 比较汉字编码(GB2312为2字节)
										if ( (memcmp(str, Font_Data[i].txt, 2 ) == 0  )   ) //说明识别到了汉字编码
										{
											
												isChinese=1;//用于"识别到汉字"的标志位
												break;
										}
								}
									
									
								//if( (str[0]<=95) )//说明这次显示的不是汉字,是单个字节的东西
								if(  (isChinese==1)  && ( str[1]!=0 ) )//为什么要加( str[1]!=0 ),因为如果字符串最后一个是字符那么就是一个字节,后面再跟一个结束符0x00, 这样会被识别成2个相同误判成为汉字
								{ str = str + 2;//汉字两个字节
									
								}
								else          // 字符1字节
								{ str = str + 1;
								}
						
						//=======================================================================================================================
	          
							
								
								
								
								if(isChinese==1)//用于"识别到汉字"的标志位
								{	// 更新下一个汉字的位置(每个汉字占16像素宽度)
									current_x += FONT_WIDTH;
								}else
								{
									current_x += 6;
								}
								
                
                // 如果超出屏幕宽度(128像素),换行
                if (current_x + FONT_WIDTH > 128) 
                {
                    current_x = 0;
                    current_y += 2; // 16像素高度对应2行(假设每行8像素)
                    
                    // 如果超出屏幕高度(64像素,8行),停止显示
                    if (current_y >= 8) break;
                }
                
								
	
								
								
                //continue;
            }
						
						
       // }
        
        // 如果不是汉字或未找到,则跳过1字节(ASCII字符处理)
        //str++;
    }
}












//在指定位置显示一个字符,包括部分字符
//x:0~127
//y:0~63
//mode:0,反白显示;1,正常显示				 
//size:选择字体 16/12 
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 Char_Size)
{      	
	unsigned char c=0,i=0;	
		c=chr-' ';//得到偏移后的值			
		if(x>Max_Column-1){x=0;y=y+2;}
		if(Char_Size ==16)
			{
			OLED_Set_Pos(x,y);	
			for(i=0;i<8;i++)
			OLED_WR_Byte(F8X16[c*16+i],OLED_DATA);
			OLED_Set_Pos(x,y+1);
			for(i=0;i<8;i++)
			OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA);
			}
			else {	
				OLED_Set_Pos(x,y);
				for(i=0;i<6;i++)
				OLED_WR_Byte(F6x8[c][i],OLED_DATA);
				
			}
}


//显示一个字符号串
//(一参数:距离最左边的像素位置) (二参数:距离最上边的字符高度倍数12/16倍) (四参数:字体大小12/16)
void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 Char_Size)
{
	unsigned char j=0;
	while (chr[j]!='\0')
	{		OLED_ShowChar(x,y,chr[j],Char_Size);
			x+=8;
		if(x>120){x=0;y+=2;}
			j++;
	}
}
//m^n函数
u32 oled_pow(u8 m,u8 n)
{
	u32 result=1;	 
	while(n--)result*=m;    
	return result;
}		

//显示2个数字
//x,y :起点坐标	 
//len :数字的位数
//size:字体大小
//mode:模式	0,填充模式;1,叠加模式
//num:数值(0~4294967295);	 		  
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size2)
{         	
	u8 t,temp;
	u8 enshow=0;						   
	for(t=0;t<len;t++)
	{
		temp=(num/oled_pow(10,len-t-1))%10;
		if(enshow==0&&t<(len-1))
		{
			if(temp==0)
			{
				OLED_ShowChar(x+(size2/2)*t,y,' ',size2);
				continue;
			}else enshow=1; 
		 	 
		}
	 	OLED_ShowChar(x+(size2/2)*t,y,temp+'0',size2); 
	}
} 

,下面这段代码保存为oledfont.h

cpp 复制代码
#ifndef __OLEDFONT_H
#define __OLEDFONT_H 	   
//常用ASCII表
//偏移量32
//ASCII字符集
//偏移量32
//大小:12*6
/************************************6*8的点阵************************************/
const unsigned char code F6x8[][6] =		
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// sp
0x00, 0x00, 0x00, 0x2f, 0x00, 0x00,// !
0x00, 0x00, 0x07, 0x00, 0x07, 0x00,// "
0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14,// #
0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12,// $
0x00, 0x62, 0x64, 0x08, 0x13, 0x23,// %
0x00, 0x36, 0x49, 0x55, 0x22, 0x50,// &
0x00, 0x00, 0x05, 0x03, 0x00, 0x00,// '
0x00, 0x00, 0x1c, 0x22, 0x41, 0x00,// (
0x00, 0x00, 0x41, 0x22, 0x1c, 0x00,// )
0x00, 0x14, 0x08, 0x3E, 0x08, 0x14,// *
0x00, 0x08, 0x08, 0x3E, 0x08, 0x08,// +
0x00, 0x00, 0x00, 0xA0, 0x60, 0x00,// ,
0x00, 0x08, 0x08, 0x08, 0x08, 0x08,// -
0x00, 0x00, 0x60, 0x60, 0x00, 0x00,// .
0x00, 0x20, 0x10, 0x08, 0x04, 0x02,// /
0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
0x00, 0x00, 0x42, 0x7F, 0x40, 0x00,// 1
0x00, 0x42, 0x61, 0x51, 0x49, 0x46,// 2
0x00, 0x21, 0x41, 0x45, 0x4B, 0x31,// 3
0x00, 0x18, 0x14, 0x12, 0x7F, 0x10,// 4
0x00, 0x27, 0x45, 0x45, 0x45, 0x39,// 5
0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
0x00, 0x01, 0x71, 0x09, 0x05, 0x03,// 7
0x00, 0x36, 0x49, 0x49, 0x49, 0x36,// 8
0x00, 0x06, 0x49, 0x49, 0x29, 0x1E,// 9
0x00, 0x00, 0x36, 0x36, 0x00, 0x00,// :
0x00, 0x00, 0x56, 0x36, 0x00, 0x00,// ;
0x00, 0x08, 0x14, 0x22, 0x41, 0x00,// <
0x00, 0x14, 0x14, 0x14, 0x14, 0x14,// =
0x00, 0x00, 0x41, 0x22, 0x14, 0x08,// >
0x00, 0x02, 0x01, 0x51, 0x09, 0x06,// ?
0x00, 0x32, 0x49, 0x59, 0x51, 0x3E,// @
0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C,// A
0x00, 0x7F, 0x49, 0x49, 0x49, 0x36,// B
0x00, 0x3E, 0x41, 0x41, 0x41, 0x22,// C
0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C,// D
0x00, 0x7F, 0x49, 0x49, 0x49, 0x41,// E
0x00, 0x7F, 0x09, 0x09, 0x09, 0x01,// F
0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A,// G
0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F,// H
0x00, 0x00, 0x41, 0x7F, 0x41, 0x00,// I
0x00, 0x20, 0x40, 0x41, 0x3F, 0x01,// J
0x00, 0x7F, 0x08, 0x14, 0x22, 0x41,// K
0x00, 0x7F, 0x40, 0x40, 0x40, 0x40,// L
0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F,// M
0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F,// N
0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E,// O
0x00, 0x7F, 0x09, 0x09, 0x09, 0x06,// P
0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
0x00, 0x7F, 0x09, 0x19, 0x29, 0x46,// R
0x00, 0x46, 0x49, 0x49, 0x49, 0x31,// S
0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,// T
0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F,// U
0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F,// V
0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F,// W
0x00, 0x63, 0x14, 0x08, 0x14, 0x63,// X
0x00, 0x07, 0x08, 0x70, 0x08, 0x07,// Y
0x00, 0x61, 0x51, 0x49, 0x45, 0x43,// Z
0x00, 0x00, 0x7F, 0x41, 0x41, 0x00,// [
0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55,// 55
0x00, 0x00, 0x41, 0x41, 0x7F, 0x00,// ]
0x00, 0x04, 0x02, 0x01, 0x02, 0x04,// ^
0x00, 0x40, 0x40, 0x40, 0x40, 0x40,// _
0x00, 0x00, 0x01, 0x02, 0x04, 0x00,// '
0x00, 0x20, 0x54, 0x54, 0x54, 0x78,// a
0x00, 0x7F, 0x48, 0x44, 0x44, 0x38,// b
0x00, 0x38, 0x44, 0x44, 0x44, 0x20,// c
0x00, 0x38, 0x44, 0x44, 0x48, 0x7F,// d
0x00, 0x38, 0x54, 0x54, 0x54, 0x18,// e
0x00, 0x08, 0x7E, 0x09, 0x01, 0x02,// f
0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C,// g
0x00, 0x7F, 0x08, 0x04, 0x04, 0x78,// h
0x00, 0x00, 0x44, 0x7D, 0x40, 0x00,// i
0x00, 0x40, 0x80, 0x84, 0x7D, 0x00,// j
0x00, 0x7F, 0x10, 0x28, 0x44, 0x00,// k
0x00, 0x00, 0x41, 0x7F, 0x40, 0x00,// l
0x00, 0x7C, 0x04, 0x18, 0x04, 0x78,// m
0x00, 0x7C, 0x08, 0x04, 0x04, 0x78,// n
0x00, 0x38, 0x44, 0x44, 0x44, 0x38,// o
0x00, 0xFC, 0x24, 0x24, 0x24, 0x18,// p
0x00, 0x18, 0x24, 0x24, 0x18, 0xFC,// q
0x00, 0x7C, 0x08, 0x04, 0x04, 0x08,// r
0x00, 0x48, 0x54, 0x54, 0x54, 0x20,// s
0x00, 0x04, 0x3F, 0x44, 0x40, 0x20,// t
0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C,// u
0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C,// v
0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C,// w
0x00, 0x44, 0x28, 0x10, 0x28, 0x44,// x
0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C,// y
0x00, 0x44, 0x64, 0x54, 0x4C, 0x44,// z
0x14, 0x14, 0x14, 0x14, 0x14, 0x14,// horiz lines
};
/****************************************8*16的点阵************************************/
const unsigned char code 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 code Hzk[][32]={

{0x80,0x80,0x40,0x20,0x50,0x48,0x44,0xC3,0x44,0x48,0x50,0x20,0x40,0x80,0x80,0x00},
{0x00,0x40,0x40,0x44,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x40,0x00,0x00},/*"全",0*/

{0x40,0x44,0xC4,0x44,0x44,0x44,0x40,0x10,0x10,0xFF,0x10,0x10,0x10,0xF0,0x00,0x00},
{0x10,0x3C,0x13,0x10,0x14,0xB8,0x40,0x30,0x0E,0x01,0x40,0x80,0x40,0x3F,0x00,0x00},/*"动",1*/

{0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00},
{0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x7F,0x88,0x88,0x88,0x88,0x9F,0x80,0xF0,0x00},/*"电",2*/

{0x80,0x82,0x82,0x82,0x82,0x82,0x82,0xE2,0xA2,0x92,0x8A,0x86,0x82,0x80,0x80,0x00},
{0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"子",3*/

{0x10,0x10,0x10,0xFF,0x10,0x90,0x08,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x08,0x00},
{0x04,0x44,0x82,0x7F,0x01,0x80,0x80,0x40,0x43,0x2C,0x10,0x28,0x46,0x81,0x80,0x00},/*"技",4*/

{0x00,0x10,0x10,0x10,0x10,0xD0,0x30,0xFF,0x30,0xD0,0x12,0x1C,0x10,0x10,0x00,0x00},
{0x10,0x08,0x04,0x02,0x01,0x00,0x00,0xFF,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x00},/*"术",5*/

};






//=========================================================================================================================
//在stc下载软件的工具里面打开的取字库程序自动生成

//宽度12 高度16  
//扫描模式:垂直扫描,从左到右,从上到下
//储存顺序:低位在前
//自定义格式:紧凑格式3

// 定义字体数据结构
struct FONT_DATA
{
    char txt[2];
    unsigned char dat[24];
};

#define FONT_DATA_SIZE (sizeof(Font_Data) / sizeof(Font_Data[0]))  //获取 Font_Data结构体数组的元素个数:



















struct FONT_DATA code Font_Data[] =
{
  "美",0x00,0x50,0x54,0x58,0x50,0xf0,0x50,0x58,0x54,0x50,0x00,0x00,0x25,0x25,0x15,0x15, /* 0 */
       0x0d,0x07,0x0d,0x15,0x15,0x25,0x25,0x00,
  "的",0xf0,0x18,0x14,0x10,0xf0,0x40,0x20,0x9c,0x10,0x10,0xf0,0x00,0x3f,0x11,0x11,0x11, /* 1 */
       0x3f,0x00,0x00,0x00,0x23,0x20,0x1f,0x00,
  "空",0x30,0x90,0x50,0x30,0x14,0x18,0x10,0x30,0x50,0x90,0x30,0x00,0x20,0x22,0x22,0x22, /* 2 */
       0x22,0x3e,0x22,0x22,0x22,0x22,0x20,0x00,
  "调",0x44,0xc8,0x00,0x00,0xfc,0x84,0xa4,0xf4,0xa4,0x84,0xfc,0x00,0x00,0x1f,0x08,0x20, /* 3 */
       0x1f,0x00,0x0e,0x0a,0x2e,0x20,0x3f,0x00,
  "一",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01, /* 4 */
       0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
  "模",0x20,0xa0,0xfc,0x20,0x08,0xe8,0xbc,0xa8,0xbc,0xe8,0x08,0x00,0x02,0x01,0x3f,0x01, /* 5 */
       0x28,0x2b,0x1a,0x0e,0x1a,0x2b,0x28,0x00,
  "式",0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xfc,0x20,0x24,0x28,0x00,0x20,0x21,0x21,0x1f, /* 6 */
       0x11,0x11,0x10,0x03,0x0c,0x10,0x38,0x00,
  "温",0x88,0x10,0x00,0x00,0x7c,0x54,0x54,0x54,0x7c,0x00,0x00,0x00,0x10,0x09,0x24,0x3f, /* 7 */
       0x21,0x3f,0x21,0x3f,0x21,0x3f,0x20,0x00,
  "度",0x00,0xf8,0x28,0x28,0xf8,0xa8,0xac,0xa8,0xf8,0x28,0x28,0x00,0x20,0x1f,0x00,0x22, /* 8 */
       0x26,0x2a,0x12,0x12,0x2a,0x26,0x20,0x00,
  ":",0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00, /* 9 */
       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  "自",0x00,0xf0,0x90,0x90,0x98,0x94,0x90,0x90,0x90,0xf0,0x00,0x00,0x00,0x3f,0x24,0x24, /* 10 */
       0x24,0x24,0x24,0x24,0x24,0x3f,0x00,0x00,
  "动",0x40,0x48,0xc8,0x48,0x40,0x00,0x20,0xfc,0x20,0x20,0xe0,0x00,0x0c,0x0b,0x08,0x0a, /* 11 */
       0x0c,0x20,0x18,0x07,0x20,0x20,0x1f,0x00,
  "开",0x00,0x08,0x08,0xf8,0x08,0x08,0x08,0xf8,0x08,0x08,0x00,0x00,0x01,0x21,0x19,0x07, /* 12 */
       0x01,0x01,0x01,0x3f,0x01,0x01,0x01,0x00,
  "机",0x20,0xa0,0xfc,0xa0,0x00,0xf8,0x08,0x08,0xf8,0x00,0x00,0x00,0x02,0x01,0x3f,0x20, /* 13 */
       0x11,0x0f,0x00,0x00,0x1f,0x20,0x38,0x00,
  "关",0x00,0x20,0x24,0x28,0x20,0xe0,0x20,0x28,0x24,0x20,0x00,0x00,0x21,0x21,0x11,0x09, /* 14 */
       0x05,0x03,0x05,0x09,0x11,0x21,0x21,0x00,
  "闭",0x00,0xe4,0x08,0x80,0x80,0x88,0xe8,0x88,0x88,0x08,0xf8,0x00,0x00,0x3f,0x00,0x08, /* 15 */
       0x04,0x12,0x1f,0x00,0x20,0x20,0x3f,0x00,
  "制",0x60,0x58,0x50,0xfc,0x50,0x50,0x40,0xf0,0x00,0x00,0xfc,0x00,0x00,0x1f,0x01,0x3f, /* 16 */
       0x11,0x1f,0x00,0x07,0x20,0x20,0x3f,0x00,
  "冷",0x10,0x20,0x00,0x40,0x20,0x10,0x4c,0x90,0x20,0x40,0x40,0x00,0x10,0x08,0x04,0x00, /* 17 */
       0x01,0x09,0x11,0x29,0x05,0x03,0x00,0x00,
  "抽",0x20,0xfc,0x20,0x00,0xf0,0x10,0x10,0xfc,0x10,0x10,0xf0,0x00,0x22,0x3f,0x01,0x00, /* 18 */
       0x3f,0x11,0x11,0x1f,0x11,0x11,0x3f,0x00,
  "湿",0x44,0x88,0x00,0xf8,0xa8,0xa8,0xa8,0xa8,0xa8,0xf8,0x00,0x00,0x10,0x08,0x22,0x24, /* 19 */
       0x20,0x3f,0x20,0x3f,0x20,0x24,0x22,0x00,
  "热",0x90,0x90,0xfc,0x50,0x00,0x50,0xfc,0x10,0xf0,0x00,0x80,0x00,0x20,0x14,0x07,0x10, /* 20 */
       0x24,0x03,0x10,0x21,0x01,0x12,0x27,0x00,
  "通",0x44,0xc8,0x00,0xe4,0xa4,0xac,0xf4,0xb4,0xac,0xe0,0x00,0x00,0x20,0x1f,0x20,0x2f, /* 21 */
       0x22,0x22,0x2f,0x22,0x2a,0x2f,0x20,0x00,
  "风",0x00,0xf8,0x48,0x88,0x08,0x88,0x68,0x08,0xf8,0x00,0x00,0x00,0x20,0x1f,0x08,0x04, /* 22 */
       0x03,0x04,0x08,0x00,0x0f,0x10,0x3c,0x00,
  "速",0x44,0xc8,0x00,0xe8,0x28,0x28,0xfc,0x28,0x28,0xe8,0x08,0x00,0x20,0x1f,0x20,0x29, /* 23 */
       0x25,0x23,0x3f,0x23,0x25,0x29,0x20,0x00,
  "低",0x80,0x40,0xf0,0x0c,0xf8,0x88,0x88,0xf8,0x84,0x84,0x80,0x00,0x00,0x00,0x3f,0x00, /* 24 */
       0x1f,0x08,0x14,0x23,0x0c,0x10,0x3c,0x00,
  "中",0x00,0xe0,0x20,0x20,0x20,0xfc,0x20,0x20,0x20,0xe0,0x00,0x00,0x00,0x07,0x02,0x02, /* 25 */
       0x02,0x3f,0x02,0x02,0x02,0x07,0x00,0x00,
  "高",0x08,0x08,0xe8,0xa8,0xa8,0xac,0xa8,0xa8,0xe8,0x08,0x08,0x00,0x3e,0x02,0x02,0x3a, /* 26 */
       0x2a,0x2a,0x2a,0x3a,0x02,0x22,0x3e,0x00,
  "固",0xfc,0x04,0x24,0xa4,0xa4,0xfc,0xa4,0xa4,0x24,0x04,0xfc,0x00,0x3f,0x10,0x10,0x17, /* 27 */
       0x14,0x14,0x14,0x17,0x10,0x10,0x3f,0x00,
  "定",0xb0,0x90,0x90,0x90,0x94,0x98,0x90,0x90,0x90,0x90,0xb0,0x00,0x20,0x10,0x0e,0x10, /* 28 */
       0x20,0x3f,0x24,0x24,0x24,0x24,0x20,0x00,
  "未",0x80,0x90,0x90,0x90,0x90,0xfc,0x90,0x90,0x90,0x90,0x80,0x00,0x08,0x08,0x04,0x02, /* 29 */
       0x01,0x3f,0x01,0x02,0x04,0x08,0x08,0x00,
  "知",0x40,0x20,0x1c,0xf0,0x10,0x10,0x00,0xf0,0x10,0x10,0xf0,0x00,0x21,0x11,0x0d,0x03, /* 30 */
       0x05,0x19,0x01,0x1f,0x08,0x08,0x1f,0x00,
};













 u8 xdata IMG_DATA[1024] = 
{
   0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x06,0x00,0x00,
    0x06,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,
    0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,
    0x0C,0x04,0x00,0x00,0x00,0x00,0x18,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x08,
    0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x08,0x00,0x00,0x08,0x00,0x00,0x01,0x01,
    0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x80,0xC0,0xC6,0xE7,0xE7,0xF3,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x1F,0x0F,0x0F,
    0xF0,0xF0,0xFC,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFC,0xFC,0xFE,0xFE,
    0xDE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFC,0xFC,0xFE,0xFE,0x9E,0xDE,0xFE,0xFE,0xFE,
    0xFE,0xFC,0xEC,0xF0,0xFC,0xFC,0x3C,0xBC,0xFC,0xFC,0xFC,0xFC,0xF8,0xE8,0xC0,0xC0,
    0xC0,0x40,0xC0,0xE0,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xBC,0x3C,0xC4,0xFC,
    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0x3C,0xCC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,
    0xFC,0xFC,0xF8,0x98,0xD8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0x38,0x18,
    0x18,0x18,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xFE,0xFE,0xFE,0x3E,0xFE,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFB,0x7B,0xFB,0xF3,0xFB,0xF6,0xFC,0xF8,0xFC,0xEC,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xCF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xF3,0xFF,0xEF,0xFF,0xFF,0xFF,
    0xFF,0xFE,0xFF,0xFF,0xFF,0xF7,0xFB,0x9F,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
    0xFF,0xF3,0xBF,0xDF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x03,0x00,0x00,
    0x30,0xBE,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x07,0x38,0x3E,0x3F,0x3F,
    0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x7B,0x7E,0x3F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,
    0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xCF,0xCF,0xCF,
    0xEF,0xEF,0xCF,0xCF,0xCF,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xC7,
    0xDB,0xDF,0xDF,0xDF,0xDE,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xCF,0xF3,
    0xDC,0xDF,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0xBF,0xBF,0xBF,0xBD,0xBE,0x87,0xB7,0xBF,
    0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0x87,0xFF,0xBF,0xBF,
    0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xFF,0xFF,0xFF,0x1F,0x81,0x00,0x00,0xE0,0x70,
    0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x30,0x00,0x7E,0x7E,0x7E,0x7E,0x7E,
    0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x80,0xE0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,
    0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,
    0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x9F,
    0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x8F,0x8F,0x8F,
    0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0xCF,0x8F,0x8D,0x8D,0x8D,0x0F,0x07,0x8F,0xFF,
    0xFF,0xFF,0xFF,0xFF,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,0xFE,
    0xFB,0xFB,0xFB,0xFB,0xF9,0xF9,0xD9,0xD9,0xC9,0xE1,0xE1,0xF1,0xF1,0xF9,0xF9,0xF9,
    0xF9,0xFD,0xFC,0xFC,0x7C,0x7C,0x7C,0xBC,0xBC,0xBC,0x3C,0x3C,0x3E,0xBE,0x3E,0x3E,
    0xBE,0x3E,0x3E,0xBE,0xBE,0x3E,0x3E,0xBE,0xBE,0xBE,0xDE,0xBE,0xBE,0xBE,0xBE,0x3E,
    0x3E,0x9E,0x9E,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x1E,0x1E,0xDE,0xDF,0xDF,
    0xCF,0xCF,0xCF,0xCF,0xCF,0xDB,0x9B,0x3B,0x7B,0xFF,0xFF,0xF7,0xF3,0xF7,0xF7,0xE7,
    0xE7,0xE7,0xCF,0xCF,0x8F,0x0F,0x0F,0x0F,0x0F,0x07,0x03,0x03,0x01,0x84,0xF3,0xF3,
    0xF3,0xE3,0xFB,0xFB,0xFB,0xF9,0xF9,0xFD,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xEF,0xEF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xF0,0xE0,0xEC,0xCF,0xCF,0xEF,0xE9,0xEE,0xEF,0xEF,0xED,0xE7,0xE7,
    0xE7,0xE6,0xEF,0xEF,0xFF,0xEE,0xEE,0xE7,0xF7,0xF1,0xF2,0xF3,0xF3,0xF3,0xF3,0xF0,
    0xF7,0xF3,0xF3,0xF7,0xF7,0xF3,0xF3,0xF1,0xF1,0xF3,0xF3,0xF0,0xF1,0xF3,0xF3,0xF3,
    0xF3,0xF3,0xF9,0xF9,0xF9,0xF9,0xF9,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0x7F,0x7F,0x3F,0x27,0x13,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
    0x07,0x0F,0x1F,0x1F,0x7F,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0x7F,0x7F,0xFF,0xFF,0xFB,
    0xFB,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFE,0xFC,0xF8,0xFD,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0xFB,0xFB,
    0xFB,0xFB,0xF7,0xC7,0xCF,0xCF,0xCF,0xCF,0x0F,0x1F,0x1F,0x1F,0x1F,0x1F,0x8F,0x8F,
    0x8F,0x8F,0x8F,0x8F,0x8F,0x0F,0x0F,0x0F,0x0F,0x8F,0x8F,0xCF,0xC3,0xC3,0xC3,0xC3,
    0x47,0xC3,0xC3,0xC3,0xC3,0xC3,0xC9,0xC1,0xC1,0xC1,0x87,0x97,0x17,0x17,0x17,0x07,
    0x17,0x07,0x27,0xA7,0x87,0xD3,0xF1,0xD1,0xF1,0xE1,0xD1,0xF1,0x41,0x71,0x70,0x40,
    0x60,0x60,0x40,0x60,0x60,0xE4,0x64,0x64,0x00,0x00,0x00,0x18,0xE0,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x01,0xAF,0xAF,0x6F,0x4F,0x4F,0x5F,0x5F,0x3F,0x7F,0x7F,
    0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};









//=========================================================================================================================

#endif

第四步:在主函数里面调用,显示出来

cpp 复制代码
	while(1)
	{
			//	OLED_ShowString(0,1,"0.96' OLED TEST",12); //(一参数:距离最左边的像素位置) (二参数:距离最上边的字符高度倍数12/16倍) (四参数:字体大小12/16)
		//OLED_ShowString(1,0,"ASCII:",12);  
		//OLED_ShowString(63,6,"CODE:",16);  
		//OLED_ShowChar(48,6,t,16);//显示ASCII字符	   
		
		
		//(一参数:距离最左边的像素位置) (二参数:距离最上边的字符高度倍数12/16倍)
		//(三参数:要输出的数字) (四参数:要显示几位数字) (五参数:字体大小12/16)
		//OLED_ShowNum(0,6,count,3,16);//显示ASCII字符的码值 	
		
		if(meidi_receive_Signal!=0)//收到一个美的信号标志位
		{
			//OLED_ShowString(0,1,"meidi_receive_Signal==1",12); //(一参数:距离最左边的像素位置) (二参数:距离最上边的字符高度倍数12/16倍) (四参数:字体大小12/16)
					
		}
			
			//	OLED_ShowNum(0,5,strlen("肤2498萨66*萨2498萨(萨2498萨"),3,16);//显示ASCII字符的码值 	
		P31 = ~P31 ;
		
								//OLED_ShowCHinese(6,0,0);//全
		

		
		
		//=======================显示美的空调遥控信息=========================================================================================================================
		
		
		OLED_ShowChineseString(0,0,"美的空调:");//输出汉字字符串
		if(meidi_Get_Power_State(meidi_record_data_right)==1)//开机状态
		{
			OLED_ShowChineseString(60,0,"开机:");//输出汉字字符串
		}else//关机
		{
			OLED_ShowChineseString(60,0,"关闭:");//输出汉字字符串
		}//
				OLED_ShowNum(8*12,0, meidi_receive_Signal ,3,16);//显示ASCII字符的码值 	
		
		//=======
		OLED_ShowChineseString(0,2,"一一模式:");//输出汉字字符串
		switch (meidi_get_mode(meidi_record_data_right)) {  // variable 可以是整数、枚举、字符等
				case meidi_mode_auto:
						OLED_ShowChineseString(60,2,"自动:");//输出汉字字符串
						break;  // 必须的,否则会继续执行下一个 case
				case meidi_mode_cool:
						OLED_ShowChineseString(60,2,"制冷:");//输出汉字字符串
						break;
				case meidi_mode_dehumidify:
						OLED_ShowChineseString(60,2,"抽湿:");//输出汉字字符串
						break;
				case meidi_mode_heat:
						OLED_ShowChineseString(60,2,"制热:");//输出汉字字符串
						break;
				case meidi_mode_fan:
						OLED_ShowChineseString(60,2,"通风:");//输出汉字字符串
						break;
				default:
						// 当 variable 不匹配任何 case 时执行
						break;
		}
		
		
		//=======
		OLED_ShowChineseString(0,4,"一一温度:");//输出汉字字符串
		OLED_ShowNum(60,4, meidi_get_Temperature(  meidi_record_data_right) ,3,16);//显示ASCII字符的码值 	
		
		
		//=======		
		OLED_ShowChineseString(0,6,"一一风速:");//输出汉字字符串  meidi_Get_Wind_Speed
		switch ( meidi_Get_Wind_Speed(meidi_record_data_right)) {  // 假设 meidi_get_wind_speed 是获取风速的函数
    case meidi_wind_auto:
        OLED_ShowChineseString(60, 6, "自动风:");  // 显示"自动风"
        break;
    case meidi_wind_low:
        OLED_ShowChineseString(60, 6, "低风:");   // 显示"低风"
        break;
    case meidi_wind_medium:
        OLED_ShowChineseString(60, 6, "中风:");   // 显示"中风"
        break;
    case meidi_wind_high:
        OLED_ShowChineseString(60, 6, "高风:");   // 显示"高风"
        break;
    case meidi_wind_fixed:
        OLED_ShowChineseString(60, 6, "固定风:"); // 显示"固定风"
        break;
    default:
        OLED_ShowChineseString(60, 6, "未知风:"); // 默认显示"未知风"
        break;
}
		
		
		//=======================显示美的空调遥控信息=========================================================================================================================
			
		
		delay_ms(1);		// delay_ms(250);
		
						//OLED_Init();			//初始化OLED  
				//OLED_Clear(0x00); 
	}

第五步 : SPI --DMA的开启方式(dma一次最多只能发256字节这款单片机性能限制 stc32g就不会)

这是我整个工程的文件列表

cpp 复制代码
void SPI_DMA_Config(void)
{
	
//	typedef struct
//{
//	u8	DMA_Enable;				//DMA使能  	ENABLE,DISABLE
//	u8	DMA_Tx_Enable;			//DMA发送数据使能  	ENABLE,DISABLE
//	u8	DMA_Rx_Enable;			//DMA接收数据使能  	ENABLE,DISABLE
//	u16	DMA_Rx_Buffer;			//接收数据存储地址
//	u16	DMA_Tx_Buffer;			//发送数据存储地址
//	u8	DMA_Length;				//DMA传输总字节数  	(0~255) + 1, 不要超过芯片 xdata 空间上限
//	u8	DMA_AUTO_SS;			//自动控制SS脚使能  	ENABLE,DISABLE
//	u8	DMA_SS_Sel;				//自动控制SS脚选择 	SPI_SS_P12,SPI_SS_P22,SPI_SS_P74,SPI_SS_P35
//} DMA_SPI_InitTypeDef;

	DMA_SPI_InitTypeDef	DMA_SPI_InitStructure;//结构定义

		DMA_SPI_InitStructure.DMA_Enable = ENABLE ;				//DMA使能  	ENABLE,DISABLE
		DMA_SPI_InitStructure.DMA_Tx_Enable = ENABLE; 			//DMA发送数据使能  	ENABLE,DISABLE
		DMA_SPI_InitStructure.DMA_Rx_Enable = DISABLE;			//DMA接收数据使能  	ENABLE,DISABLE
		//DMA_SPI_InitStructure.DMA_Rx_Buffer;			//接收数据存储地址
		DMA_SPI_InitStructure.DMA_Tx_Buffer = (u16)(unsigned int)&IMG_DATA[0];  // 安全转换			//发送数据存储地址
		DMA_SPI_InitStructure.DMA_Length = 255;				//DMA传输总字节数  	(0~255) + 1, 不要超过芯片 xdata 空间上限
		DMA_SPI_InitStructure.DMA_AUTO_SS = DISABLE;			//自动控制SS脚使能  	ENABLE,DISABLE
		//DMA_SPI_InitStructure.DMA_SS_Sel;				//自动控制SS脚选择 	SPI_SS_P12,SPI_SS_P22,SPI_SS_P74,SPI_SS_P35
		
		DMA_SPI_Inilize(&DMA_SPI_InitStructure);
		
		
	NVIC_DMA_SPI_Init( ENABLE , Priority_0 , Priority_0  );//开启传输完毕中断
		
		
}

调用触发dma发送函数

dma发送结束之后,到dma中断里面(我这个中断里面是为了显示图片所以一直触发)(屏幕要设置成水平寻址模式 )

cpp 复制代码
//========================================================================
// 函数: DMA_ISR_Handler
// 描述: DMA中断函数.
// 参数: none.
// 返回: none.
// 版本: V1.0, 2021-05-25
//========================================================================
void DMA_ISR_Handler (void) interrupt 13
{
	// TODO: 在此处添加用户代码
	
	//----------- DMA ADC --------------
	if(DMA_ADC_STA & 0x01)	//AD转换完成
	{
		DMA_ADC_STA &= ~0x01;	//清标志位
		DmaADCFlag = 1;
	}
	
    if (DMA_SPI_STA & 0x01) //检测到spi-dma发送完成中断
		{
        DmaSPIFlag = 1;//标志位
        DMA_SPI_STA &= ~0x01;//手动清零中断标志位
			
				//=====================下面是继续=============================
				// 1. 更新地址(每次发送 256 字节)
				IMG_DATA_addr += 256;
				
				// 2. 地址回绕(1024 字节循环)
				if (IMG_DATA_addr >= 1024) {
						IMG_DATA_addr = 0;
				}
				
				//dma要发送的数据的首地址变一下   这个地址只能定义在xdata空间里面
				DMA_SPI_TXAH = ((u16)(unsigned int)&IMG_DATA[IMG_DATA_addr])>>8;
				DMA_SPI_TXAL = (u8)(((u16)(unsigned int)&IMG_DATA[IMG_DATA_addr]));
			
				DMA_SPI_TRIG_M();//dma  spi发送
				
				
    }
	

	
}

最后关于DMA在这块屏幕的使用, (不好用)

原因一 : 水平寻址模式 ,无法定位显示位置,中途干扰了显示就全乱了

原因而:这个单片机最多发256字节

这块oled的手册

https://zhuanlan.zhihu.com/p/14257150571

相关推荐
弘毅 失败的 mian2 小时前
STM32 GPIO实战:LED与按键控制
经验分享·笔记·stm32·单片机·嵌入式硬件
国科安芯3 小时前
ASP3605电源芯片的性能优化与改进思路
网络·单片机·嵌入式硬件·安全·性能优化
lzj_pxxw4 小时前
FreeRTOS_API模块综合应用篇(八)
stm32·单片机·嵌入式硬件·mcu
点灯小铭4 小时前
基于单片机的罐体压力控制器设计与实现
数据库·单片机·mongodb·毕业设计·课程设计
夜月yeyue5 小时前
多级流水线与指令预测
linux·网络·stm32·单片机·嵌入式硬件
张人玉13 小时前
C# TCP 服务端开发笔记(TcpListener/TcpClient)
stm32·单片机·嵌入式硬件
就叫飞六吧14 小时前
基于汇编实现led点灯-51单片机-stc89c52rc
嵌入式硬件·学习
宁静致远202115 小时前
仿照STM32 HAL库设计思想使用FreeRTOS实现异步非阻塞式设备驱动
stm32·嵌入式硬件
田甲18 小时前
【STM32】墨水屏驱动开发
stm32·单片机·墨水屏