SWM181 驱动SH1106 1.3寸 OLED屏幕显示
✨实测驱动的屏幕为sh1106,该工程源码不适合通过修改相关的偏移地址来适配ssd1306 I2C 0.96寸屏幕显示,实际修改后,经测试并不能电路屏幕,具体找到ssd1306驱动代码看了一下,在初始化函数中的有关指令有点不一样,但是可以使用下面资料中的ssd1306当中的驱动代码移植过来修改对应的偏移地址可以兼容驱动1.3和0.96两款屏幕。
- 🌼所使用的开发板:
🔖本想通过硬件I2C驱动的,没法点亮屏幕,只能通过软件I2C来驱动。
- 📌1.3寸屏幕资料
链接:https://pan.baidu.com/s/1IPY3meKgO1Saeu6uE_4R7g
提取码:8888
- 📍 0.96寸屏幕资料
链接:https://pan.baidu.com/s/1xy2zH8-hs-S8-_AcVtBP_g
提取码:0jhj
📑引脚说明
SWM181 --- OLED I2C
PA4 ------ SCL
PA5 ------ SDA
📝主程序代码
#include "SWM181.h"
#include "delay.h"
#include "oled.h"
#include "bmp.h"int main(void)
{ u8 t=' ';SystemInit();GPIO_Init(GPIOB, PIN8, 1, 0, 0, 0); //输出,推挽模式,接LEDGPIO_Init(GPIOA, PIN4, 1, 1, 0, 1); //输出,上拉, 开漏输出GPIO_Init(GPIOA, PIN5, 1, 1, 0, 1); //输出,上拉, 开漏输出OLED_Init();while(1){OLED_ShowPicture(0,0,128,64,BMP1,1);OLED_Refresh();GPIO_InvBit(GPIOB, PIN8);//电平反转delay_ms(250);delay_ms(250);OLED_Clear();OLED_ShowChinese(0,0,0,16,1);//中OLED_ShowChinese(18,0,1,16,1);//景OLED_ShowChinese(36,0,2,16,1);//园OLED_ShowChinese(54,0,3,16,1);//电OLED_ShowChinese(72,0,4,16,1);//子OLED_ShowChinese(90,0,5,16,1);//技OLED_ShowChinese(108,0,6,16,1);//术OLED_ShowString(8,16,(u8*)"ZHONGJINGYUAN",16,1);OLED_ShowString(20,32,(u8*)"2014/05/01",16,1);OLED_ShowString(0,48,(u8*)"ASCII:",16,1); OLED_ShowString(63,48,(u8*)"CODE:",16,1);OLED_ShowChar(48,48,t,16,1);//显示ASCII字符 t++;if(t>'~')t=' ';OLED_ShowNum(103,48,t,3,16,1);OLED_Refresh();delay_ms(250);delay_ms(250);OLED_Clear();OLED_ShowChinese(0,0,0,16,1); //16*16 中OLED_ShowChinese(16,0,0,24,1); //24*24 中OLED_ShowChinese(24,20,0,32,1);//32*32 中OLED_ShowChinese(64,0,0,64,1); //64*64 中OLED_Refresh();GPIO_InvBit(GPIOB, PIN8);//电平反转delay_ms(250);delay_ms(250);OLED_Clear();OLED_ShowString(0,0,(u8*)"ABC",8,1);//6*8 “ABC”OLED_ShowString(0,8,(u8*)"ABC",12,1);//6*12 “ABC”OLED_ShowString(0,20,(u8*)"ABC",16,1);//8*16 “ABC”OLED_ShowString(0,36,(u8*)"ABC",24,1);//12*24 “ABC”OLED_Refresh();GPIO_InvBit(GPIOB, PIN8);//电平反转delay_ms(250);delay_ms(250);OLED_ScrollDisplay(11,4,1);}
}
📚程序源码
链接: https://pan.baidu.com/s/1QSvCCAWLCSeQk4zoslRA4A
提取码: nvnj