SWM181 驱动ssd1306 I2C OLED屏幕显示
✨本案例程序可以通过修改代码中相对于的偏移地址可以兼容驱动显示SH1106 I2C 1.3寸 OLED屏幕。上面的相关篇驱动中的程序不能兼容驱动ssd1306 I2C,其实也是可以只是需要修改的内容较多,不建议这么做。
🌼所使用的开发板: 🚩没有实现通过硬件I2C点亮屏幕。 🔗1.3寸屏幕资料
链接:https:
提取码:8888
链接:https:
提取码:0 jhj
📑引脚说明
SWM181 -- - OLED I2C
PA4 -- -- -- SCL
PA5 -- -- -- SDA
⛳SH1106 和 ssd1306 I2C OLED屏幕选择代码修改位置
void OLED_Refresh ( void )
{
u8 i, n;
for ( i= 0 ; i< 8 ; i++ )
{
OLED_WR_Byte ( 0xb0 + i, OLED_CMD) ;
OLED_WR_Byte ( 0x02 , OLED_CMD) ;
OLED_WR_Byte ( 0x10 , OLED_CMD) ;
Oled_I2C_Start ( ) ;
Send_Byte ( 0x78 ) ;
I2C_WaitAck ( ) ;
Send_Byte ( 0x40 ) ;
I2C_WaitAck ( ) ;
for ( n= 0 ; n< 128 ; n++ )
{
Send_Byte ( OLED_GRAM[ n] [ i] ) ;
I2C_WaitAck ( ) ;
}
Oled_I2C_Stop ( ) ;
}
}
void OLED_Init ( void )
{
OLED_RES_Clr ( ) ;
delay_ms ( 200 ) ;
OLED_RES_Set ( ) ;
OLED_WR_Byte ( 0xAE , OLED_CMD) ;
OLED_WR_Byte ( 0x02 , OLED_CMD) ;
OLED_WR_Byte ( 0x10 , OLED_CMD) ;
OLED_WR_Byte ( 0x40 , OLED_CMD) ;
OLED_WR_Byte ( 0x81 , OLED_CMD) ;
OLED_WR_Byte ( 0xCF , OLED_CMD) ;
. . . . . . . . . . . . .
📝主程序代码
# include "SWM181.h"
# include "delay.h"
# include "oled.h"
# include "bmp.h"
void I2CMstInit ( void )
{
I2C_InitStructure I2C_initStruct;
PORT_Init ( PORTA, PIN4, FUNMUX_I2C0_SCL, 1 ) ;
PORTA-> OPEND |= ( 1 << PIN4) ;
PORTA-> PULLU |= ( 1 << PIN4) ;
PORT_Init ( PORTA, PIN5, FUNMUX_I2C0_SDA, 1 ) ;
PORTA-> OPEND |= ( 1 << PIN5) ;
PORTA-> PULLU |= ( 1 << PIN5) ;
I2C_initStruct. Master = 1 ;
I2C_initStruct. Addr7b = 1 ;
I2C_initStruct. MstClk = 10000 ;
I2C_initStruct. MstIEn = 1 ;
I2C_Init ( I2C0, & I2C_initStruct) ;
I2C_Open ( I2C0) ;
}
int main ( void )
{
u8 t= ' ' ;
SystemInit ( ) ;
GPIO_Init ( GPIOB, PIN8, 1 , 0 , 0 , 0 ) ;
GPIO_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 ) ;
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 ) ;
OLED_ShowChinese ( 16 , 0 , 0 , 24 , 1 ) ;
OLED_ShowChinese ( 24 , 20 , 0 , 32 , 1 ) ;
OLED_ShowChinese ( 64 , 0 , 0 , 64 , 1 ) ;
OLED_Refresh ( ) ;
GPIO_InvBit ( GPIOB, PIN8) ;
delay_ms ( 250 ) ; delay_ms ( 250 ) ;
OLED_Clear ( ) ;
OLED_ShowString ( 0 , 0 , ( u8* ) "ABC" , 8 , 1 ) ;
OLED_ShowString ( 0 , 8 , ( u8* ) "ABC" , 12 , 1 ) ;
OLED_ShowString ( 0 , 20 , ( u8* ) "ABC" , 16 , 1 ) ;
OLED_ShowString ( 0 , 36 , ( u8* ) "ABC" , 24 , 1 ) ;
OLED_Refresh ( ) ;
GPIO_InvBit ( GPIOB, PIN8) ;
delay_ms ( 250 ) ; delay_ms ( 250 ) ;
}
}
📚程序源码
链接: https:
提取码: 5 wq4