本帖最后由 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, 下载次数: 5)
|