- #ifndef __OLED_H
- #define __OLED_H
- #include "at32f425_board.h"
- #include "stdlib.h"
- #include "stdint.h"
- #define OLED_MODE 0
- #define SIZE 8
- #define XLevelL 0x00
- #define XLevelH 0x10
- #define Max_Column 128
- #define Max_Row 64
- #define Brightness 0xFF
- #define X_WIDTH 128
- #define Y_WIDTH 64
- #define OLED_SCLK_Clr() gpio_bits_reset(GPIOB,GPIO_PINS_9)//SCL
- #define OLED_SCLK_Set() gpio_bits_set(GPIOB,GPIO_PINS_9)
- #define OLED_SDIN_Clr() gpio_bits_reset(GPIOB,GPIO_PINS_8)//SDA
- #define OLED_SDIN_Set() gpio_bits_set(GPIOB,GPIO_PINS_8)
-
- #define OLED_CMD 0
- #define OLED_DATA 1
- typedef uint32_t u32;
- typedef uint16_t u16;
- typedef uint8_t u8;
- void OLED_Init(void);
- void OLED_Clear(void);
- void OLED_ShowString(u8 x,u8 y, u8 *p,u8 Char_Size);
- void OLED_ShowCHinese(u8 x,u8 y,u8 no);
- void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[]);
- #endif
-
- #include "oled.h"
- #include "stdlib.h"
- #include "at32f425.h"
- #include "oledfont.h"
- void IIC_Start()
- {
- OLED_SCLK_Set();
- OLED_SDIN_Set();
- OLED_SDIN_Clr();
- OLED_SCLK_Clr();
- }
- void IIC_Stop()
- {
- OLED_SCLK_Set() ;
- OLED_SCLK_Clr();
- OLED_SDIN_Clr();
- OLED_SDIN_Set();
- }
- void IIC_Wait_Ack()
- {
- OLED_SCLK_Set() ;
- OLED_SCLK_Clr();
- }
- void Write_IIC_Byte(unsigned char IIC_Byte)
- {
- unsigned char i;
- unsigned char m,da;
- da=IIC_Byte;
- OLED_SCLK_Clr();
- for(i=0;i<8;i++)
- {
- m=da;
- m=m&0x80;
- if(m==0x80)
- {OLED_SDIN_Set();}
- else OLED_SDIN_Clr();
- da=da<<1;
- OLED_SCLK_Set();
- OLED_SCLK_Clr();
- }
- }
- void Write_IIC_Command(unsigned char IIC_Command)
- {
- IIC_Start();
- Write_IIC_Byte(0x78);
- IIC_Wait_Ack();
- Write_IIC_Byte(0x00);
- IIC_Wait_Ack();
- Write_IIC_Byte(IIC_Command);
- IIC_Wait_Ack();
- IIC_Stop();
- }
- void Write_IIC_Data(unsigned char IIC_Data)
- {
- IIC_Start();
- Write_IIC_Byte(0x78);
- IIC_Wait_Ack();
- Write_IIC_Byte(0x40);
- IIC_Wait_Ack();
- Write_IIC_Byte(IIC_Data);
- IIC_Wait_Ack();
- IIC_Stop();
- }
- #include "at32f425_board.h"
- #include "oled.h"
- #include "bmp.h"
- int main(void)
- {
- int i = 0;
- at32_board_init();
- OLED_Init();
- OLED_Clear();
- while(1)
- {
- OLED_Clear();
- OLED_ShowCHinese(6,0,20);//欢
- OLED_ShowCHinese(14+10,0,21);//迎
- OLED_ShowCHinese(32+10,0,22);//使
- OLED_ShowCHinese(50+10,0,23);//用
- OLED_ShowCHinese(68+10,0,24);//雅
- OLED_ShowCHinese(86+10,0,25);//特
- OLED_ShowCHinese(104+10,0,26);//力
- OLED_ShowString(16,3,"AT-START-F425",16);
- OLED_ShowString(26,6,"2022-03-06",16);
- for(i = 0; i < 3; i++)
- {
- gpio_bits_reset(GPIOC,GPIO_PINS_2);
- delay_ms(200);
- gpio_bits_set(GPIOC,GPIO_PINS_2);
- delay_ms(200);
- gpio_bits_reset(GPIOC,GPIO_PINS_3);
- delay_ms(200);
- gpio_bits_set(GPIOC,GPIO_PINS_3);
- delay_ms(200);
- gpio_bits_reset(GPIOC,GPIO_PINS_5);
- delay_ms(200);
- gpio_bits_set(GPIOC,GPIO_PINS_5);
- delay_ms(200);
- }
- for(i = 0; i < 8; i++)
- {
- gpio_bits_set(GPIOC,GPIO_PINS_2);
- gpio_bits_set(GPIOC,GPIO_PINS_3);
- gpio_bits_set(GPIOC,GPIO_PINS_5);
- delay_ms(100);
- gpio_bits_reset(GPIOC,GPIO_PINS_2);
- gpio_bits_reset(GPIOC,GPIO_PINS_3);
- gpio_bits_reset(GPIOC,GPIO_PINS_5);
- delay_ms(100);
- }
- OLED_Clear();
- OLED_DrawBMP(0,0,128,8,BMP3);
- delay_ms(1200);
- }
- }
将OLED模块直接与板上相对应的排针孔位相连,编译工程无误,点击下载按钮,便可观察到代码中所设置的中文字符与绘画的BMP图片了,如下图所示。此次分享就告一段落,咱们下期再会。