第一步:先配置好引脚(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的手册