0.96寸OLED显示 图片

今天来讲解一下STM32驱动OLED显示图片,本次教程分为两部分:
1、BMP图片制作
2、程序讲解与调用

1、BMP图片制作(取模)

BMP图片取模讲解两种方式:自己画图、普通图片制作。

1)自己画图

自己画图我们首先做一张白纸图片,例如截一张白色的电脑图片

点击文件–>属性 保存为黑白(因为使用的是单色的OLED),大小最大为128*64

然后就可以利用画图软件自由发挥绘画的内容了(提示如果转换为黑白图片后全黑可以利用画图软件画为白色)

最后另保存为BMP格式

2)普通图片制作

任意一张图片(最好是颜色少,有大面积白色的图片)调整图片像素大小

另存为BMP图片

3)图片取模

打开软件PCtoLCD完美版
导入我们制作的图片

设置字模选项,注意图中画圈部分,不要设置错误,不然会出现显示不正常现象,等会我们制作一个设置错误导致显示不正常的例子
行前缀和后缀不要“{”、“}”,不然会生成二维数组,对数组调用产生麻烦

下面是上传程序显示效果

下面演示一下错误设置字模选项出现的结果

下面是错误设置出现的现象,图片显示完全错位

也可以在取模软件制作图片,在图中画圈部分按住鼠标左键可以选择屏幕点亮部分,右键可以将点亮部分擦除
擦除前

擦除后


这两只企鹅转换后的造型,实在是有些搞笑啊。。。

2、程序讲解与调用

程序就不废话了,直接上程序
图库:
在这里插入图片描述
绘图:

//显示图片(通过改变索引值和图片对应的像素可以显示不同像素的图片)
//x,y:图片的起点坐标
//px,py:图片的像素(与实际取模的图片像素一致)
//index:图片索引
void OLED_ShowBMP(u8 x, u8 y, u8 px, u8 py, u8 index, u8 mode)
{
    u8 temp,t1;
    u16 j,i;
    u8 y0=y;
    
    i = (px/2)*(py/4);
 
    for(j = 0; j < i;j++)
    {
        temp = Image[index][j];    //调用图片                          
        for(t1=0;t1<8;t1++)
        {
            if(temp&0x80)OLED_DrawPoint(x,y,mode);
            else OLED_DrawPoint(x,y,!mode);
            temp<<= 1;
            y++;
            if((y-y0) == py)
            {
                y=y0;
                x++;
                break;
            }
        }
    }
}

主函数调用:

	 OLED_ShowBMP(0, 0, 128, 64, 6, 1);// 	  
	 OLED_Refresh_Gram();//更新显示到OLED	 
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页