Proteus仿真arduino uno + OLED图片显示

Proteus仿真arduino uno + OLED显示

  • 🎞Proteus仿真图:

在这里插入图片描述

📑所需库

  • 🌿libraries\Adafruit_GFX_Library
  • 🌿Adafruit_BusIO
  • 🌿Adafruit_SSD1306

🏳‍🌈注意事项

  • 🌴首次安装Adafruit_SSD1306并使用,需要修改Adafruit_SSD1306.h宏定义:(默认选择的是128X32)
1
2
3
4
5
6
#define SSD1306\_128\_64 ///< DEPRECTAED: old way to specify 128x64 screen
//#define SSD1306\_128\_32 ///< DEPRECATED: old way to specify 128x32 screen
//#define SSD1306\_96\_16 ///< DEPRECATED: old way to specify 96x16 screen
// This establishes the screen dimensions in old Adafruit\_SSD1306 sketches
// (NEW CODE SHOULD IGNORE THIS, USE THE CONSTRUCTORS THAT ACCEPT WIDTH

  • 🌿仿真使用带Bootloader的Hex文件:with_bootloader.standard.hex
  • 🌿仿真中的I2C地址为0x3d

📝程序代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82

#include <SPI.h>
#include <Wire.h>
#include <Adafruit\_GFX.h>
#include <Adafruit\_SSD1306.h>

#define OLED\_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

static const unsigned char PROGMEM logo[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF8,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0x00,0x00,0xFF,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0x00,0x1F,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,
0x00,0x3F,0xFF,0xC3,0xF0,0x00,0x03,0x80,0x0F,0xC0,0x00,0x00,0x00,0x7F,0xFF,0xFE,
0x00,0x00,0x00,0x70,0x3F,0xF8,0x00,0x00,0x00,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x1C,
0xFF,0xFC,0x00,0x00,0x00,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x07,0xFF,0xFE,0x00,0x00,
0x00,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x01,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x80,
0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,
0x7F,0xFF,0x80,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0x80,0x00,
0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0x80,0x00,0x00,0xFF,0xFC,0x00,
0x00,0x00,0x00,0x00,0x1F,0xFF,0x80,0x00,0x00,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,
0x0F,0xFF,0xC0,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xC0,0x00,
0x00,0xFF,0xF0,0x00,0x00,0x00,0x7C,0x00,0x07,0xFF,0xC0,0x00,0x00,0xFF,0xE0,0x00,
0x00,0x00,0x7F,0x00,0x07,0xFF,0xC0,0x00,0x00,0x7F,0xE0,0x00,0x7F,0x00,0x3F,0xC0,
0x03,0xFF,0x80,0x00,0x00,0x3F,0xC0,0x03,0xFF,0x80,0x00,0xC0,0x03,0xFF,0x80,0x00,
0x00,0x3F,0x80,0x0F,0xFF,0xC0,0x00,0x00,0x01,0xFF,0x00,0x00,0x00,0x1F,0x80,0x0F,
0x03,0xE0,0x00,0x00,0x01,0xFF,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x80,0x00,0x00,
0x00,0xFE,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,
0x00,0x01,0x00,0x00,0x3E,0x00,0x3F,0x00,0x00,0xF8,0x00,0x00,0x00,0x01,0x00,0x00,
0xFE,0x00,0x0F,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x03,0xFC,0x00,0x0C,0x00,
0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x40,0x00,0x00,
0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x04,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x20,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x08,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x18,0x00,0x00,0x01,0x00,0x01,0x00,
0x00,0x30,0x00,0x00,0x00,0x10,0x00,0x00,0x07,0x00,0x01,0x00,0x00,0x10,0x00,0x00,
0x00,0x10,0x00,0x00,0x06,0x4F,0x18,0x80,0x00,0x10,0x00,0x00,0x00,0x30,0x00,0x00,
0x00,0xFF,0xF0,0x00,0x00,0x10,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x3F,0xC0,0x00,
0x00,0x18,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x18,0x00,0x00,
0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x03,0xE0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x0F,0xFC,0x00,
0x00,0x1E,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x7F,0xFE,0x00,0x00,0x1F,0x00,0x00,
0x07,0xF0,0x00,0x00,0x00,0xF8,0x0E,0x00,0x00,0x1F,0x00,0x00,0x07,0xF8,0x00,0x00,
0x00,0xFE,0xFE,0x00,0x00,0x1F,0x80,0x00,0x07,0xF8,0x00,0x00,0x00,0xFF,0xDC,0x00,
0x00,0x3F,0x80,0x00,0x07,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x3F,0xC0,0x00,
0x07,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xE0,0x00,0x07,0xFE,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3F,0xE0,0x00,0x07,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x7F,0xE0,0x00,0x07,0xFF,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xFF,0xF0,0x00,
0x07,0xFF,0xC0,0x00,0x00,0x1F,0xF0,0x00,0x01,0xFF,0xF0,0x00,0x07,0xFF,0xE0,0x00,
0x00,0x07,0xF0,0x00,0x03,0xFF,0xF0,0x00,0x07,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,
0x07,0xFF,0xF0,0x00,0x07,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF0,0x00,
0x07,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF0,0x00,0x07,0xFF,0xFF,0x00,
0x00,0x00,0x00,0x00,0xFF,0xFF,0xF0,0x00,0x07,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x07,
0xFF,0xFF,0xF0,0x00,0x07,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xF0,0x00,
0x07,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xF0,0x00,0x07,0xFF,0xFF,0xFF,
0xF0,0x07,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xF0,0x00

};

#if (SSD1306\_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit\_SSD1306.h!");
#endif

void setup() {
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3D);
display.clearDisplay();
}

void loop() {
display.drawBitmap(0, 0, logo, 89, 63, 1); //在坐标X0,Y0的位置开始显示图片
//128是取模软件显示的宽度
//64是取模软件显示的高度
display.display(); //把缓存的都显示
delay(1);

display.clearDisplay(); //清除屏幕
}

  • 🌿编译信息:
1
2
3
4
5
6
7
8
9
使用 1.0  版本的库 SPI 在文件夹: C:\Users\Administrator\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\SPI 
使用 1.0 版本的库 Wire 在文件夹: C:\Users\Administrator\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\Wire
使用 1.11.5 版本的库 Adafruit_GFX_Library 在文件夹: C:\Users\Administrator\Documents\Arduino\libraries\Adafruit_GFX_Library
使用 1.14.1 版本的库 Adafruit_BusIO 在文件夹: C:\Users\Administrator\Documents\Arduino\libraries\Adafruit_BusIO
使用 2.5.7 版本的库 Adafruit_SSD1306 在文件夹: C:\Users\Administrator\Documents\Arduino\libraries\Adafruit_SSD1306
"C:\\Users\\Administrator\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-size" -A "d:\\arduino\\MyHexDir/Picture\_display.ino.elf"
项目使用了 14638 字节,占用了 (45%) 程序存储空间。最大为 32256 字节。
全局变量使用了519字节,(25%)的动态内存,余留1529字节局部变量。最大为2048字节。

📚程序源码和仿真资源

  • 🔖基于Proteus8.12平台
1
2
3
链接: https://pan.baidu.com/s/1JMhfpFPVJC-lVsVe2kdsJA
提取码: gy6e