精华内容
下载资源
问答
  • OLED显示图片.zip

    2019-09-04 15:00:26
    OLED显示图片stm32可直接使用也可拿做移植使用非常好用
  • 0.96 oled显示图片

    千次阅读 2020-10-18 10:30:10
    oled显示图片 之前用oled显示了汉字,字符和数字,此篇简单介绍如何用oled显示图片 0.96寸OLED 0.96寸的oled只能显示单色,并且像素不大于12864的图片,因此适合自己需求的图片不好找。所以我们需要借助其他软件制作...

    oled显示图片

    之前用oled显示了汉字,字符和数字,此篇简单介绍如何用oled显示图片
    0.96寸OLED
    0.96寸的oled只能显示单色,并且像素不大于12864的图片,因此适合自己需求的图片不好找。所以我们需要借助其他软件制作符合要求的图片。这里我用到了Image2Lcd和PCtoLCD2002两款软件。
    1.Image2Lcd
    打开软件,点击打开选择图片
    在这里插入图片描述
    输出数据类型:BMP格式(
    .bmp)
    扫描方式:水平扫描
    输出灰度:单色
    在左下角可以看到图片的输入宽、高是1024,所以要修改宽高到128x64范围内
    点击保存
    2.PCtoLCD2002
    打开软件,模式选择为图形模式,打开刚刚从Image2Lcd导出的BMP图片
    在这里插入图片描述
    点开设置,设置格式。此处设置格式时要根据自己的oled进行设置,不同厂家生产的oled会略有差异
    最后点击生成字模即可
    在这里插入图片描述
    取模成功后就要程序代码的编写
    (本人使用的oled是用iic通信的)
    1.在工程中添加一个bmp.h文件
    创建一个数组,把图片的取模数据放到数组中
    2.主函数的编写
    这是oled.c文件中显示图片的函数(买oled时,从售后那里白嫖来的程序)

    //x0,y0:起点坐标
    //x1,y1:终点坐标
    //BMP[]:要写入的图片数组
    void OLED_ShowPicture(u8 x0,u8 y0,u8 x1,u8 y1,u8 BMP[])
    {
    	u32 j=0;
    	u8 x=0,y=0;
    	if(y%8==0)y=0;
    	else y+=1;
    	for(y=y0;y<y1;y++)
    	 {
    		 OLED_WR_BP(x0,y);
    		 for(x=x0;x<x1;x++)
    		 {
    			 OLED_WR_Byte(BMP[j],OLED_DATA);
    			 j++;
         }
    	 }
    	 
    }
    

    有了图片显示的函数,在主函数中直接调用即可,最后更新显示到oled
    具体的过程就是如此,但是我遇到了几个问题还没有解决
    1.keil5软件报错
    引进数组调用函数后,编译工程出现报错:expected a “;”,定位到报错出发现也并没有缺少“;”。后来以为是中英输入法错了,删掉重新写一次,还是报错。网上各种搜也没有结果。最后在同伴的帮助下,发现在函数定义前加上“;”就解决了,应该是一个bug,总之是很奇怪。
    2.图像显示闪烁
    下载程序后,发现oled上的图像总是在很窄的范围内不停的闪烁。我的第一反应是图像的宽度设置不对,回到程序中增加了图像显示的终点坐标。重新下载后又出现了新问题,图像显示一下就消失了。当给板子断电再重新上电后,图像仍然是闪一下就显示,然后不显示了。目前这个问题我还没有弄明白是什么原因,也没找到解决方法。只能接下来继续找找了。

    本人小白一个,文中如有错误还请见谅。

    展开全文
  • 0.96寸OLED显示 图片

    千次阅读 2020-03-09 19:13:47
    今天来讲解一下STM32驱动OLED显示图片,本次教程分为两部分: 1、BMP图片制作 2、程序讲解与调用 1、BMP图片制作(取模) BMP图片取模讲解两种方式:自己画图、普通图片制作。 1)自己画图 自己画图我们首先做一张...

    今天来讲解一下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	 
    
    展开全文
  • 51单片机 IIC OLED显示图片

    千次阅读 2020-04-28 22:46:18
    51单片机 IIC OLED显示图片 新手上路,欢迎大家交流学习

    51单片机 IIC OLED

    显示动态图片
    新手上路,欢迎大家交流学习,尽量持续更新。
    main.c文件

    /*******************************************************************************
    * 
    *******************************************************************************/
    
    #include <reg52.h>
    #include "iic.h"
    #include "oled.h"
    
    /*******************************************************************************
    * 函 数 名         : Delay_1ms(unsigned int Del_1ms)
    * 函数功能		   : 1ms延时函数
    * 输    入         : Del_1ms
    * 输    出         : 无
    *******************************************************************************/
    
    void Delay_1ms(unsigned int Del_1ms)		//T = 1ms * Del_1ms
    {
    	unsigned char j;
    	while(Del_1ms--)
    	{	
    		for(j=0;j<123;j++);
    	}
    }
    
    /***********************Picture Code*******************************/
    unsigned char code BMP1[] =
    {//熊猫人合掌
    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,0x80,0xC0,0xC0,0xE0,0xE0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xE0,0xE0,0xC0,0xC0,
    0x80,0x80,0x80,0x80,0x80,0x80,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,
    0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x80,0x80,0x00,0x00,
    0x00,0x80,0x80,0x80,0x80,0xC0,0xC0,0xC0,0xC0,0x80,0x80,0x80,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,
    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,0x7C,
    0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,0x1F,
    0x0F,0x07,0x03,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x03,0x03,0x07,0x07,
    0x0F,0x1F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,
    0xE0,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,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,
    0x03,0x07,0x0F,0x1F,0x1F,0xBF,0xFF,0xFF,0x7F,0x0F,0x03,0x01,0x00,0x00,0xF0,0xF8,
    0xF8,0xF0,0xF0,0xE0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,
    0xF0,0xF0,0xF0,0xF0,0xE0,0xF0,0xF8,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF8,0xF8,
    0xF8,0xF8,0xF8,0x70,0x01,0x03,0x0F,0x7F,0xFF,0xFF,0xFF,0x7F,0x7F,0x3F,0x1F,0x0F,
    0x07,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,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,
    0x80,0x80,0x80,0xF8,0xFE,0xFF,0xE7,0xF0,0xF0,0xF8,0xF8,0xFC,0xFC,0xFC,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0xBF,0x8F,0xE7,0xE6,
    0xF7,0x77,0x7F,0x7B,0x61,0x4F,0x9F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFC,0xFC,0xFC,0xF8,0xF0,0xF1,0xFF,0xFF,0xF0,0x80,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,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,0xE0,0xFE,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,0x0F,0x37,0x1F,0xFF,0xFF,0xEF,0xEF,0xE7,0xEB,0xEB,
    0xE9,0xE7,0xE7,0xE7,0xEF,0xDF,0xCE,0xCE,0xCE,0xCE,0xEF,0xDF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xDF,0xC3,0xC0,0xC0,0xC0,0x80,0x80,0x80,0x81,0x03,0x03,0x0F,0x0E,0x0E,0x8E,
    0x9E,0x9E,0x9E,0x9E,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0xDC,0xCC,0xC0,0xC0,0xE3,0xE7,
    0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x07,0x07,
    0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,
    0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,
    0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,
    0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,
    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,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,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,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,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    };
    
    unsigned char code BMP2[] =
    {
    	//熊猫人开掌
    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,0x80,0x80,0x80,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,
    0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
    0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x80,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,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,
    0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x1F,
    0x1F,0x0F,0x07,0x07,0x03,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x03,0x03,0x07,0x07,0x07,
    0x0E,0x0E,0x1F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,
    0xFC,0xF8,0xC0,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,0xE0,0xE0,0xF0,0xF0,0xF0,0xF0,0xE0,0xC0,0x80,0xC0,0xC0,0xC0,
    0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x01,0x07,0x0F,0x1F,0x3F,0xBF,0xFF,0xFF,0xFF,0x3F,0x0F,0x07,0x03,0x01,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xE0,0xF0,0xF0,0xF0,0xF0,0xF0,0x70,
    0x70,0x70,0xF0,0xE0,0xE0,0xC0,0x00,0x00,0xC0,0xE0,0xE0,0xE0,0xF0,0xF0,0xF0,0x70,
    0x70,0xF0,0xF0,0xF0,0xC1,0x01,0x07,0x1F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,
    0x3F,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0x80,0x80,0xE0,0xF0,0xF0,
    0xF0,0xF0,0xF0,0xE0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xF8,0xF0,0xF0,0xE0,0xC0,0xC0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0xC0,0xF8,0xFE,0xFF,0x3F,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x03,0x07,0x07,0x07,0x86,
    0xC6,0xC6,0x07,0x07,0x07,0x01,0x00,0x00,0x01,0x03,0x07,0x07,0x07,0x07,0x07,0x06,
    0x06,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x7F,0xFF,0xFF,0xE0,0x00,0x00,
    0x00,0x80,0x80,0xC0,0xE0,0xE0,0xF0,0xF0,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0F,0x1F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,
    0xFE,0xFF,0xFF,0xFF,0xFF,0xF3,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3C,0x7E,0xFF,0xEF,0xCF,0xC3,
    0xC3,0xC1,0xC2,0xC6,0xCE,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0xC6,0xC2,0xC0,0xCF,0x3F,
    0x1F,0x0F,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFE,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,
    0x1F,0x0F,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x0F,0x1F,
    0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,0xF8,0xF8,0xF0,0xE0,0xE0,
    0xC0,0xC0,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x03,
    0x07,0x0F,0x0F,0x1D,0x1D,0x39,0x39,0x39,0xB9,0xB9,0xB9,0xB9,0x99,0x99,0x99,0xDF,
    0xCF,0xC6,0xE0,0xE0,0xE0,0xF0,0xF0,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x1F,0x0F,0x03,0x01,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,0x01,0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,
    0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,
    0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x07,0x07,0x07,
    0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,
    0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,
    0x07,0x07,0x07,0x07,0x07,0x07,0x03,0x01,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,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,
    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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    };
    /*******************************************************************************
    * 函 数 名         : main
    * 函数功能		   : 主函数
    * 输    入         : 无
    * 输    出         : 无
    *******************************************************************************/
    void main(void)
    {
    	OLED_Init();
    	Delay_1ms(5);
    	while(1)
    	{
    		OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP1);//熊猫人合掌
    		Delay_1ms(150);
    		OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP2);//熊猫人开掌
    		Delay_1ms(150);
    //		Delay_1ms(200);
    	}
    }
    
    

    oled.c文件

    #include "oled.h"
    /*******************************************************************************
    * 函 数 名         : OLED_Init()
    * 函数功能		   : OLED初始化函数
    * 输    入         : 无
    * 输    出         : 无
    *******************************************************************************/
    void OLED_Init()
    {
    	Write_IIC_Command(0xAE);//display off
    	Write_IIC_Command(0x20);//Set Memory Addressing Mode	
    	Write_IIC_Command(0x10);//00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
    	Write_IIC_Command(0xb0);//Set Page Start Address for Page Addressing Mode,0-7
    	Write_IIC_Command(0xc8);//Set COM Output Scan Direction
    	Write_IIC_Command(0x00);//---set low column address
    	Write_IIC_Command(0x10);//---set high column address
    	Write_IIC_Command(0x40);//--set start line address
    	Write_IIC_Command(0x81);//--set contrast control register
    	Write_IIC_Command(0xff);//亮度调节 0x00~0xff
    	Write_IIC_Command(0xa1);//--set segment re-map 0 to 127
    	Write_IIC_Command(0xa6);//--set normal display
    	Write_IIC_Command(0xa8);//--set multiplex ratio(1 to 64)
    	Write_IIC_Command(0x3F);//
    	Write_IIC_Command(0xa4);//0xa4,Output follows RAM content;0xa5,Output ignores RAM content
    	Write_IIC_Command(0xd3);//-set display offset
    	Write_IIC_Command(0x00);//-not offset
    	Write_IIC_Command(0xd5);//--set display clock divide ratio/oscillator frequency
    	Write_IIC_Command(0xf0);//--set divide ratio
    	Write_IIC_Command(0xd9);//--set pre-charge period
    	Write_IIC_Command(0x22);//
    	Write_IIC_Command(0xda);//--set com pins hardware configuration
    	Write_IIC_Command(0x12);
    	Write_IIC_Command(0xdb);//--set vcomh
    	Write_IIC_Command(0x20);//0x20,0.77xVcc
    	Write_IIC_Command(0x8d);//--set DC-DC enable
    	Write_IIC_Command(0x14);//
    	Write_IIC_Command(0xaf);//--turn on oled panel 
    }
    /*******************************************************************************
    * 函 数 名         : OLED_SetPos(unsigned char x, unsigned char y)
    * 函数功能		   : 设置起始点坐标
    * 输    入         : 起始点坐标
    * 输    出         : 无
    *******************************************************************************/
    void OLED_SetPos(unsigned char x, unsigned char y)
    { 
    	Write_IIC_Command(0xb0+x);
    	Write_IIC_Command((y&0x0f)|0x00);//LOW
    	Write_IIC_Command(((y&0xf0)>>4)|0x10);//HIGHT
    }
    /*******************************************************************************
    * 函 数 名         : OLED_DrawBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[])
    * 函数功能		   : BMP位图函数
    * 输    入         : x0,y0 -- 起始点坐标(x0:0~127, y0:0~7); x1,y1 -- 起点对角线(结束点)的坐标(x1:1~128,y1:1~8)
    * 输    出         : 无
    *******************************************************************************/
    void OLED_DrawBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[])
    {
    	unsigned int j=0;
    	unsigned char x,y;
    	if(y1%8==0)
    		y = y1/8;
    	else
    		y = y1/8 + 1;
    	for(y=y0;y<y1;y++)
    	{
    		//OLED_SetPos(x0,y);
    		OLED_SetPos(y,x0);
    		for(x=x0;x<x1;x++)
    		{
    			Write_IIC_Data(BMP[j++]);
    		}
    	}
    }
    

    iic.c文件

    #include "iic.h"
    #include "intrins.h"
    /**********************************************
    //IIC Start
    **********************************************/
    /*******************************************************************************
    * 函 数 名         : IIC_Start()
    * 函数功能		   : IIC停止函数
    * 输    入         : 无
    * 输    出         : 无
    *******************************************************************************/
    void IIC_Start()
    {
    	SCL = 1;		
    	SDA = 1;
    	_nop_();
    	SDA = 0;
    	_nop_();
    	SCL = 0;
    }
    
    /**********************************************
    //IIC Stop
    **********************************************/
    /*******************************************************************************
    * 函 数 名         : IIC_Stop()
    * 函数功能		   : IIC停止函数
    * 输    入         : 无
    * 输    出         : 无
    *******************************************************************************/
    void IIC_Stop()
    {
    	SCL = 0;
    	SDA = 0;
    	_nop_();
    	SCL = 1;
    	SDA = 1;
    	_nop_();
    }
    /*******************************************************************************
    * 函 数 名         : Write_IIC_Byte(unsigned char IIC_Byte)
    * 函数功能		   : IIC写入字节函数
    * 输    入         : IIC_Byte
    * 输    出         : 无
    *******************************************************************************/
    void Write_IIC_Byte(unsigned char IIC_Byte)
    {
    	unsigned char i;
    	for(i=0;i<8;i++)		
    	{
    		if(IIC_Byte & 0x80)
    			SDA=1;
    		else
    			SDA=0;
    		SCL=1;
    		_nop_();
    		SCL=0;
    		_nop_();
    		IIC_Byte<<=1;
    		_nop_();
    	}
    	SDA=1;
    	SCL=1;
    	_nop_();
    	SCL=0;
    	_nop_();
    }
    /*******************************************************************************
    * 函 数 名         : Write_IIC_Command(unsigned char IIC_Command)
    * 函数功能		   : IIC写命令函数
    * 输    入         : IIC_Command
    * 输    出         : 无
    *******************************************************************************/
    void Write_IIC_Command(unsigned char IIC_Command)
    {
       IIC_Start();
       Write_IIC_Byte(0x78);            //从属地址,SA0=0
       Write_IIC_Byte(0x00);			//写入命令
       Write_IIC_Byte(IIC_Command); 
       IIC_Stop();
    }
    /*******************************************************************************
    * 函 数 名         : Write_IIC_Data(unsigned char IIC_Data)
    * 函数功能		   : IIC写数据函数
    * 输    入         : IIC_Data
    * 输    出         : 无
    *******************************************************************************/
    void Write_IIC_Data(unsigned char IIC_Data)
    {
       IIC_Start();
       Write_IIC_Byte(0x78);			
       Write_IIC_Byte(0x40);			//写入数据
       Write_IIC_Byte(IIC_Data);
       IIC_Stop();
    }
    
    

    oled.h文件

    #ifndef __OLED_H
    #define __OLED_H
    
    #include "iic.h"
    
    void OLED_Init();
    void OLED_SetPos(unsigned char x, unsigned char y);
    void OLED_DrawBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[]);
    
    
    #endif
    

    iic.h文件

    #ifndef __IIC_H
    #define __IIC_H
    
    #include <reg52.h>  //声明特殊功能寄存器
    
    /*************Pin Define***************/
    sbit SCL=P1^0;
    sbit SDA=P1^1;
    
    void IIC_Start();
    void IIC_Stop();
    void Write_IIC_Command(unsigned char IIC_Command);
    void Write_IIC_Data(unsigned char IIC_Data);
    void Write_IIC_Byte(unsigned char IIC_Byte);
    
    #endif
    
    展开全文
  • ~利用51单片机+0.96寸iic接口oled显示图片或动图

    利用51单片机+0.96寸iic接口oled显示图片或动图

    前言:之前讲过如何使用oled显示数字以及字符,但并未讲述如何显示BMP格式的图片,

    这篇将在之前的基础上加以封装一些函数用来显示图片

    硬件电路:

    • 1.led接51单片机的P2^0,点亮led用来提示系统正常运行中
    • 2.oled共VCC,GND,SCL,SDA四个引脚分别接入单片机VCC,GND,P1^7,P1^6。

    1.封装iic操作函数:

    用到的iic操作函数:

    1.1 起始时序:void I2cStart(void);

    1.2 终止时序:void I2cStop(void);

    1.3 iic写入一字节数据:unsigned char I2cSendByte(unsigned char dat);

    具体是如何封装的可查看https://linxinloningg.space/archives/51%E5%8D%95%E7%89%87%E6%9C%BAoledds18b20%E6%A3%80%E6%B5%8B%E5%B9%B6%E6%98%BE%E7%A4%BA%E6%B8%A9%E5%BA%A6%E7%AC%AC%E4%B8%80%E7%AF%87%E5%88%9D%E5%A7%8B%E5%8C%96oled%E6%98%BE%E7%A4%BA](https://linxinloningg.space/archives/51单片机oledds18b20检测并显示温度第一篇初始化oled显示)

    上面链接有详细的iic操作函数的封装分析,以及下面oled操作函数封装的分析

    2.封装oled操作函数:

    用到的oled操作函数:

    2.1 oled写命令:void oled_Write_cmd(unsigned char cmd);

    2.2 oled写数据:void oled_Write_data(unsigned char dat);

    2.3 oled清屏函数:void oled_clear(void);

    2.4 oled初始化函数:void oled_initial(void);

    3.封装显示图片的操作函数:

    3.1 设立图片显示位置的函数: void oled_setpos(unsigned char x,unsigned char y);

    3.2 图片显示函数:void oled_showpictues(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[]);

    其中设立图片显示位置的函数oled_setpos已经包含在图片显示函数 oled_showpictues中,我们只要在主函数中调用oled_showpictues即可;

    其中x0,y0为初始坐标:一般为(0,0)

    x1,y1为终止坐标:可以看做是取模的图片的大小;一般填入(128,64)或者(64,64)

    (由于0.96oled的分辨率为128*64,所以取模方式主要有两种:64*64和128*64,分别是半屏显示和全屏显示)

    在这里插入图片描述
    (这是半屏显示)

    unsigned char y1,unsigned char BMP[]是取模出来得图片数据。

    4.图片取模

    4.1 修改图片的格式以及大小:

    例:在这里插入图片描述

    选择一张图片右键选择打开方式→以画图方式打开→重新调整大小(选项在大概左上角位置)→点击像素→取消勾选保持纵横比→修改宽高为128*64或者为64*64;

    在这里插入图片描述

    最后选择另存为→以bmp格式保存。

    在这里插入图片描述

    4.2 利用Img2Lcd.exe将以上修改好的bmp图片进一步转换为二值化图片

    在这里插入图片描述

    注意如果你的图片格式大小是128*64,软件中就要选择128*64,如果是64*64,则为64*64,然后通过调节亮度和对比度是图片更清晰

    4.3 利用取模工具PCtoLCD2002.exe将图片数据取模出来

    打开软件时点击模式选择选择图片模式,点击选项配置成下图

    在这里插入图片描述

    然后打开Img2Lcd.exe生成的bmp图片

    在这里插入图片描述

    点击生成字模,将字模数据复制进数组即可。

    最后附上源代码地址:https://github.com/linxinloningg/51-Singlemicrocomputer-oled.git

    相关源码以及用到的软件都在链接上
    同时欢迎大家来我的空间踩踩
    https://linxinloningg.space/
    如果觉得对你有所帮助请给我个赞吧,这是对我创作的鼓励

    展开全文
  • OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, O...
  • OLED或其他单色屏上显示图片,为减小Flash占用,需要转换为单色的位图。 对于主控是sdd1306的oled的取模方式: 打开Image2Lcd。 按照如图左侧进行配置,将图片转换为 128x64 像素的位图。 打开导入图片,...
  • (1)修改图片尺寸 找一张J20图片,用2345看图王修改图片尺寸128像素*64像素(或者比这个范围小一点),因为我们的OLED显示屏只有128*64个像素点,这一步也可以和第二步一起用程序实现。 (2)图像二值化 所谓图像...
  • OLED显示取模图片

    千次阅读 2019-07-18 20:46:48
    OLED show_image 说明 代码开源在我的个人...代码实现oled显示自己取模的黑白像素图片图片自定义取模 打开 取模软件/ 目录下的 点阵液晶取模.exe,界面如下(软件在上述Github连接中) 点击新建图像,然后宽度...
  • OLED显示文字和图片

    千次阅读 2021-01-20 17:24:28
    OLED显示文字和图片 一、器材 一块Arduino uno板,一块OLED屏幕(IIC接口),Mixly软件 二、OLED显示文字 首先我们来完成一下接线 ...这里显示文字的方式和待会显示图片的方式是一样的,OLED上显示文字其实
  • Arduino提高篇03—OLED图片显示

    千次阅读 2019-11-04 09:10:47
    本篇介绍OLED图片显示,与字符取模类似,通过取模软件图形模式获取位图数据显示OLED屏上。
  • Arduino Uno 驱动OLED进阶 显示图片

    万次阅读 多人点赞 2016-11-30 12:31:08
    OLED实现图片显示的具体实现方法 接线方法使用IIC方式,具体请参考入门篇 Arduino 驱动OLED屏幕IIC接线方式简单入门 看看示例实现效果哈 制作一张BMP图片 首先要有一张BMP图片 自己用...
  • 图片数据转化为单片机能显示的rfb数据。能调整输出数据类型,扫描模式等。
  • OLED显示动画

    2021-02-22 11:35:30
    本文是在上一篇博客OLED显示文字和图片的基础上写的,不会OLED显示文字和图片的可以看一下上一篇博客OLED显示文字和图片 一、所需软件 GIF Movie Gear 用于调整GIF图片的大小和帧数 GIF Movie Gear 下载链接 ZHS9 ...
  • OLED显示

    千次阅读 2019-05-29 20:41:32
    最近用到了0.96寸的OLED屏,突发奇想,能不能弄个自己的二维码上去。说好就干。先上图。 下面说一下怎么做的哈: 1.首先弄一个二维码到电脑上(这里我就用的是微信收款码,截屏就行),在“草料二维码”官网上选择...
  • OLED显示

    千次阅读 2020-08-26 15:23:17
    目前单片机、机器人或者嵌入式常用的就是LCD或者OLED屏,在前面的一篇文章里已经...普遍来说,OLED显示屏的使用会比LCD显示屏麻烦一些,所以我在介绍LCD1602的时候使用用51单片机,而在这篇介绍OLED显示屏里会用STM32。
  • 0.96寸OLED显示汉字

    2020-06-25 23:21:41
    0.96寸OLED显示汉字显示汉字完整驱动程序,字库文件直接用取模软件按格式复制代码,显示汉字函数可以直接输入汉字程序会自动查找字库中的汉字显示。
  • 就是你在b站上看到的 用示波器 或者是oled显示的那个破苹果的整套图片文件。 就是你在b站上看到的 用示波器 或者是oled显示的那个破苹果的整套图片文件。 就是你在b站上看到的 用示波器 或者是oled显示的那个破...
  • OLED液晶IIC接口图片显示测试,包含字库,图片字库,取模软件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,133
精华内容 853
关键字:

oled显示图片