OLED_Driver

  • 格式:pdf
  • 大小:64.62 KB
  • 文档页数:5
u8 j;
for(j=0;j<8;j++) { OLED_GOTO(0,j); for(i=0;i<128;i++)LCD_SendByte(DATA_TYPE,0x0); }
}
//*************************************************** void display_one_char(unsigned char x,unsigned char y,unsigned char char_data) {
LCD_SendByte(COMMAND_TYPE, 0x8d); LCD_SendByte(COMMAND_TYPE, 0x14);
LCD_SendByte(COMMAND_TYPE, 0xaf); //Set Display Clock
LCD_SendByte(COMMAND_TYPE, 0xd5); LCD_SendByte(COMMAND_TYPE, 0xf0); //Set Pre-charge Period LCD_SendByte(COMMAND_TYPE, 0xd9); LCD_SendByte(COMMAND_TYPE, 0x11); //Set VCOMH Deselect Level LCD_SendByte(COMMAND_TYPE, 0xdb); LCD_SendByte(COMMAND_TYPE, 0x0); //Set Norma Display LCD_SendByte(COMMAND_TYPE, 0xa6); //Set Contrast Control LCD_SendByte(COMMAND_TYPE, 0x81); LCD_SendByte(COMMAND_TYPE, 0xff); //1-256 //Set Segment Re-map LCD_SendByte(COMMAND_TYPE, 0xa1); //Set COM Output Scan Direction LCD_SendByte(COMMAND_TYPE, 0xc8); //Set Memory Addressing Mode LCD_SendByte(COMMAND_TYPE, 0x20); LCD_SendByte(COMMAND_TYPE, 0x00); //设定显示亮度 LCD_SendByte(COMMAND_TYPE, 0x81); LCD_SendByte(COMMAND_TYPE, 0xFF); LCD_Clear(); /* Clear the LCD */ } /** * @brief Initialize the LCD * @par Parameters: * None * @retval void None * @par Required preconditions: * None * @par Functions called: * - GPIO_Init - LCD_SendByte - LCD_Clear - LCD_Backlight * @par Example: LCD_Init(); @endcode */ void LCD_Init(void) {
第2页
GPIO_InitTypeDef
OLED_Driver.c GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE); 口
//开启GPIOC端
//PC4配置为OLED模块的CMD,PC5配置为OLED模块的Reset GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5; 4、5端口 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; 输出口 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; 推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOC, &GPIO_InitStructure);
Write_Command(0xB0); /*set page address*/
Write_Command(0x81); /*contract control*/ Write_Command(0xff); /*128*/
Write_Command(0xA1); /_Init(LCD_DC_PORT, LCD_DC_PIN | LCD_RST_PIN, GPIO_MODE_OUT_PP_LOW_FAST);
GPIO_ResetBits(LCD_CS_PORT, LCD_CS_PIN); LCD_Delay(200); GPIO_SetBits(LCD_CS_PORT, LCD_CS_PIN);
第3页
OLED_Driver.c
LCD_SendByte(COMMAND_TYPE, 0xB0+y); LCD_SendByte(COMMAND_TYPE, ((x+0x02)&0x0F)); LCD_SendByte(COMMAND_TYPE, 0x10+(((x+0x02)>>4)&0x0F));
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_InitStructure);
//配置为 //配置为
第1页
OLED_Driver.c
Write_Command(0xdb); /*set vcomh*/ Write_Command(0x40);
Write_Command(0xAF); /*display ON*/
LCD_Clear(); /* Clear the LCD */ }
void LCD_SSD1306_Init(void) { ///* //Charge Pump Setting //LCD_SendByte(COMMAND_TYPE, 0xad); //LCD_SendByte(COMMAND_TYPE, 0x8b);
#else LCD_SSD1306_Init();
#endif }
//------------------设定X,Y坐标--------------------------#ifdef SH1106G void OLED_GOTO(unsigned char x,unsigned char y) //SH1106G {
GPIO_ResetBits(LCD_RST_PORT, LCD_RST_PIN); LCD_Delay(200); GPIO_SetBits(LCD_RST_PORT, LCD_RST_PIN);
#ifdef SH1106G Internal_setting(); //Init_SH1106();
OLED_Driver.c
/* OLED 驱动源文件*/ /* Includes ------------------------------------------------------------------*/ #include "OLED_Driver.h" #include "bsp_spi.h" #include "ASCII6x8.h" /* Private define ------------------------------------------------------------*/ #define STATUS_TYPE 0xFC
Write_Command(0x33); /*0X30---0X33 set VPP 9V */
Write_Command(0xC8); /*Com scan direction*/
Write_Command(0xD3); /*set display offset*/ Write_Command(0x00); /* 0x20 */
/** @addtogroup LCD_Private_Functions */
void Init_SH1106(void) { //RES=1; //delay(1000); //RES=0; //delay(1000); //RES=1; //delay(1000); Write_Command(0xAE);
} #else void OLED_GOTO(unsigned char x,unsigned char y) {
//Set Page Address //x += 0x10; //SH1106G
LCD_SendByte(COMMAND_TYPE, 0x22); LCD_SendByte(COMMAND_TYPE, y); // start LCD_SendByte(COMMAND_TYPE, 7); // end //Set Column Address
//(内部升压) /*display off*/
Write_Command(0x02); /*set lower column address*/ Write_Command(0x10); /*set higher column address*/
Write_Command(0x40); /*set display start line*/
Write_Command(0xA6); /*normal / reverse*/
Write_Command(0xA8); /*multiplex ratio*/ Write_Command(0x3F); /*duty = 1/64*/