OLED(128*64)SSD1306驱动学习总结

OLCD驱动开发学习过程

1.数据手册阅读

2.代码编写


手册中

1.接口定义分为6800/8080串口、4线SIP、3线SPI、I2C

2.关于寄存器的设置


看着都是一个套路,但用起来还是要知道LCD原理,这样才会知道一些流程和刷新方式是如何进行的。

很多厂家为了应用者方便,都也将初始化和一些简单应用代码都放到了数据手册里。

比如SSD1306的初始化:

    LCD_WrCmd(0xae);//--turn off oled panel
    LCD_WrCmd(0x00);//---set low column address
    LCD_WrCmd(0x10);//---set high column address
    LCD_WrCmd(0x40);//--set start line address  Set Mapping RAM Display Start Line (0x00~0x3F)
    LCD_WrCmd(0x81);//--set contrast control register
    LCD_WrCmd(0xcf); // Set SEG Output Current Brightness
    LCD_WrCmd(0xa1);//--Set SEG/Column Mapping     0xa0左右反置 0xa1正常
    LCD_WrCmd(0xc8);//Set COM/Row Scan Direction   0xc0上下反置 0xc8正常
    LCD_WrCmd(0xa6);//--set normal display
    LCD_WrCmd(0xa8);//--set multiplex ratio(1 to 64)
    LCD_WrCmd(0x3f);//--1/64 duty
    LCD_WrCmd(0xd3);//-set display offset    Shift Mapping RAM Counter (0x00~0x3F)
    LCD_WrCmd(0x00);//-not offset
    LCD_WrCmd(0xd5);//--set display clock divide ratio/oscillator frequency
    LCD_WrCmd(0x80);//--set divide ratio, Set Clock as 100 Frames/Sec
    LCD_WrCmd(0xd9);//--set pre-charge period
    LCD_WrCmd(0xf1);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
    LCD_WrCmd(0xda);//--set com pins hardware configuration
    LCD_WrCmd(0x12);
    LCD_WrCmd(0xdb);//--set vcomh
    LCD_WrCmd(0x40);//Set VCOM Deselect Level
    LCD_WrCmd(0x20);//-Set Page Addressing Mode (0x00/0x01/0x02)
    LCD_WrCmd(0x02);//
    LCD_WrCmd(0x8d);//--set Charge Pump enable/disable
    LCD_WrCmd(0x14);//--set(0x10) disable
    LCD_WrCmd(0xa4);// Disable Entire Display On (0xa4/0xa5)
    LCD_WrCmd(0xa6);// Disable Inverse Display On (0xa6/a7) 
    LCD_WrCmd(0xaf);//--turn on oled panel

这些流程在数据手册里也都有介绍。

最后一步就是如何根据点阵来显示你想要显示的字符了,如何使用点阵字库或者说,有哪些开源的字库。这个还得再研究。


遗留问题:

1.STM32或其他一些点阵字库的使用

2.其他LCD,比如TFT LCD的一些常用的驱动器,比如ILI9341/NT35310/NT35510/SSD1963等,这些有看过一些资料(比如正点原子的代码)但这些还需要进一步学习和总结。留着接下来看。






你可能感兴趣的:(LCD驱动学习,STM32)