以下是一个示例函数的实现:```cdefine Z_OLED_COMMAND define Z_OLED_DATA void Z_OLED_Write(uint8_t Data, uint8_t command) { Z_I2C_Start(); Z_I2C_SendByte(0x78); // 发送起始信号和设备地址 Z_I2C_SendByte(command == Z_OLED_COMMAND ? 0x00 : 0x40); // 根据参数决...
1. ssd1366.h #ifndef MAIN_SSD1366_H_#define MAIN_SSD1366_H_// Following definitions are bollowed from // http://robotcantalk.blogspot.com/2015/03/interfacing-arduino-with-ssd1306-driven.html// SLA (0x3C) + WRITE_MODE (0x00) = 0x78 (0b01111000)#define OLED_I2C_ADDRESS 0x3C/...
但可能你买到的同样的驱动芯片的模块会采用其他接口. 使用I2C接口时, SSD1306允许有最多两个7位的I2C地址, 同样通过相应的IO口拉低拉高来切换, 一般默认是0x3C. 在有些模块(不是所有, 有些PCB没有预留)的背面, 可以看到I2C地址选项提示, 需要改变模块...
添加软件包很方便,如下图所示。 修改OLED的从机地址为0x78, SSD1306的默认地址是0x3C,即0x78右移一位的值。默认是7位,虽然N32G45X的硬件IIC也是使用的7为地址,但是需要提供全地址,及0x78,所以这里修改为0x78。 这里只需要修改从机地址,即可,其他都不需要在修改,对硬件IIC不适用。 代码修改 SSD1306的代码是...
SSD1306 OLED 屏幕模块配备 0.9 英寸迷你单色屏,128×32 分辨率,白光像素点。拥有极高的对比度,显示清晰极易辨识。OLED 仅使用树莓派的 I2C 和电源引脚,无需独立供电,即插即用。
def__init__(self, width, height, i2c, addr=0x3C, external_vcc=False): self.i2c=i2c self.addr=addr self.temp=bytearray(2) self.write_list=[b"\x40",None]# Co=0, D/C#=1 super().__init__(width, height, external_vcc)
0X3C 0X78 0X3D 0X7A 图形块需要传入的是7位IIC地址 图形化模块 (1)OLED初始化 SDA和SCL...
SSD1306后,接上GND,VCC,SCL,SDA四条线后,屏幕是不会自动亮起的,需要CPU写入数据驱动它显示。查阅SSD1306的手册,我们可以发现与其通信的方式。在这里我们使用的是I2C通信方式:起始信号写入芯片地址,一般为0x78或者0x7a应答信号写入控制命令(D/C#)选择数据模式... 尼克wo 2021-12-01 08:35:42 树莓派Pico上使...
I2C_SendByte(0x40); //data I2C_Ack(); I2C_SendByte(data); I2C_Ack(); I2C_Stop(); } 6.2、OLED驱动 //SSD1306初始化 void OLED_Init(void) { _delay_ms(1000); //SSD1306复位之后,默认的是页寻址方式 SSD1306_WriteCmd(0xAE);//--display off ...
SSD1306_sendCommand(0x00); //Set Memory Addressing Mode ab Horizontal addressing mode SSD1306_setFont(font8x8); } void SSD1306_setFont(const uint8_t* font) { m_font = font; m_font_width = pgm_read_byte(&m_font[0]); } void SSD1306_sendCommand(unsigned char command) ...