打印
[AT32L021]

【AT-START-L021测评】模拟IIC驱动双色OLED-4

[复制链接]
113|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
trucyw|  楼主 | 2024-12-25 17:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 muyichuan2012 于 2024-12-25 18:50 编辑

大伙都有OLED,好像不来一次OLED的测试都有点不好意思
那就OLED测试水一篇吧(模拟IIC),点亮效果先来一张

21IC还是非常强大的喔
接下来看下我们的数据吧
#define OLED_CMD  0 //写命令
#define OLED_DATA 1 //写数据

//-----------------OLED端口定义----------------
#define OLED_SCL_Clr() gpio_bits_reset(GPIOB,GPIO_PINS_8)
#define OLED_SCL_Set() gpio_bits_set(GPIOB,GPIO_PINS_8)

#define OLED_SDA_Clr() gpio_bits_reset(GPIOB,GPIO_PINS_9)
#define OLED_SDA_Set() gpio_bits_set(GPIOB,GPIO_PINS_9)


上面的0/1就是字面意思(分别表示下一笔数据是cmd还是data),我们的GPIO用的是B口的8/9
//发送一个字节
//向SSD1306写入一个字节。
//mode:数据/命令标志 0,表示命令;1,表示数据;
void OLED_WR_Byte(u8 dat,u8 mode)
{
    I2C_Start();
    Send_Byte(0x78);//Slave address
    I2C_WaitAck();
    if(mode){Send_Byte(0x40);}
  else{Send_Byte(0x00);}
    I2C_WaitAck();
    Send_Byte(dat);
    I2C_WaitAck();
    I2C_Stop();
}


上面一段可以看到我们的看到//Slave address为0X78(8BIT)
        OLED_Init();//初始化OLED
        OLED_ColorTurn(0);//0正常显示,1 反色显示
        OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示

接下来就是main函数的显示内容
while(1)
  {
    OLED_ShowString1(0,0,"21ic ",16);
                for(i=0;i<6;i++)
                        OLED_ShowChinese(i*16+32,0,i+2,16);
                OLED_ShowString1(0,16,"21ic-21IC rgbLED",16);
                for(i=0;i<3;i++)
                        OLED_ShowChinese(i*16,4,i+9,16);
                        OLED_ShowString1(56,32,"AT32L021",16);
                OLED_ShowString1(0,48,"2024-12-25",16);
                at32_led_toggle(LED2);
                Delay_ms(200);
    at32_led_toggle(LED3);
    Delay_ms(200);
    at32_led_toggle(LED4);
    Delay_ms(200);

}

手机拍照有点闪,将就看吧
OLED.zip (1.61 MB)




使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

715

帖子

2

粉丝