复制 #include "main.h"#include "oled/oled.h"#include "oled/codetab.h"extern I2C_HandleTypeDef hi2c2;void I2C_WriteByte(uint8_t addr, uint8_t dat){uint8_t temp[2];temp[0] = dat;temp[1] = dat;HAL_I2C_Mem_Write(&hi2c2,OLED_ADDRESS,addr,I2C_MEMADD_SIZE_8BIT,temp,1,10);}...
上述代码中 OLED 的 I2C 地址是 0x3C,不同厂家的产品地址可能预设不一样,具体参考厂家的说明书。或者也可以通过 I2C.scan()来获取设备地址。sda和scl的引脚请根据你实际的连接来修改。 I2C构造函数 i2c = machine.I2C(scl,sda) 构建 I2C 对象。scl:时钟引脚;sda:数据引脚。 使用方法 *i2c.scan() 扫描 I2C...
{printf("%s, %s, %d: LzI2cWrite failed(%d)!\n", __FILE__, __func__, __LINE__, ret); } } 配置SSD1306启动 LOS_Msleep(200);Oled_WR_Byte(0xAE, OLED_CMD); //--displayoffOled_WR_Byte(0x00, OLED_CMD); //---set low column addressOled_WR_Byte(0x10, OLED_CMD); //---...
hi2c3; //HAL库使用,指定硬件IIC接口 # /*OLED从机地址*/#define OLED_ADDRESS 0x3C << 1 // 0x是OLED的7位地址,左移1位位做写位变成0x78 /I2C超时/ #define OLED_I2C_TIMEOUT10 /I2C用的延时时间下面数值为170MHz主频要延时的值如果
0xc0上下反置 0xc8正常oled_i2c_wr_byte(0xA6, OLED_CMD); //--set normal displayoled_i2c_wr_...
voidOled_Address(u8row,u8col){OLED_Send_Command(0xB0+row);OLED_Send_Command(0X10+((col&0xf0)>>4));//高列地址OLED_Send_Command(0X00+(col&0x0f));} 根据ASCII_8X16字符表显示英文和数字字符: voidOled_Display_Char(u8page,u8col,charch){u8loca=ch-' ';u8i=0;//页地址Oled_Address(page...
# between I2C and SPI implementations (I2C needs an extra byte). self.poweron() self.init_display() def init_display(self): for cmd in ( SET_DISP | 0x00, # off # address setting SET_MEM_ADDR, 0x00, # horizontal # resolution and layout ...
Zero i2c oled使用指南 一、硬件连接# 一般市面上买到的单色oled屏幕模块一般都是同时支持spi和i2c接口的,而默认一般都是spi接口模式,需要根据说明书调整模模块上电阻的位置来转换到i2c模式。我手中这个模块一般比较常见,分辨率是128*64,需要焊接R1和R4,注意下方那个电阻位置要短接。
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);// here the 0x3c is the I2C address, check your i2c address if u have multiple devices. display.clearDisplay(); delay(2000); } voidloop() { display.drawBitmap(0, 0, myBitmap, 128, 64, WHITE); ...