一、题目
OLED,(使用I2C2,SCL引脚为PB10, SDA引脚为PB11)编写驱动程序,可显示”Hello,World!”,“西电电赛”,“姓名+学号”。
二、一些知识
- 设置页地址与列地址:0.96寸屏幕分辨率为 128 * 64,行分为 page0 - page7 共 8 个 page,每个 page 有 8 行。
- 发送指令:0x7A 0x00 …,页地址 page0 - page7 分别为 0xB0 - 0xB7;列地址低四位为 0x0*, 高四位为 0x1*。
- 发送数据:0x7A 0x40 …
- 注意这里的是硬件 IIC(I2C2_SCL), 若用厂家中景园提供的代码是软件 IIC(用 GPIO_Output 模拟)。
三、CubeMX 配置
四、代码移植
在自己的工程下新建 HARDWARE 文件夹,在内部新建 .c / .h 文件。New Group取名为 OLED; 双击添加 oled.c、oledfont.c、oled.h文件。
使用 PCtoLCD 生成字模,添加到 oledfont.h 中。注意数据格式是 unsigned char
。
/* USER CODE BEGIN PV */
const unsigned char p1[14] = "Hello, world!";
const unsigned char p2[11] = "23009200111";
/* USER CODE END PV */
/* USER CODE BEGIN 2 */
OLED_Init();
OLED_Clear();
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
OLED_Refresh_Gram();
OLED_ShowString(0, 0, p1, 16);
OLED_ShowChinese(0, 18, 0, 16);
OLED_ShowChinese(18, 18, 1, 16);
OLED_ShowChinese(36, 18, 1, 16);
OLED_ShowChinese(54, 18, 2, 16);
OLED_ShowChinese(72, 18, 3, 16);
OLED_ShowChinese(90, 18, 4, 16);
OLED_ShowChinese(108, 18, 5, 16);
OLED_ShowString(0, 36, p2, 16);
/* USER CODE END WHILE */