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

来源:互联网 发布:linux查看磁盘剩余空间 编辑:程序博客网 时间:2024/06/05 19:30

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等,这些有看过一些资料(比如正点原子的代码)但这些还需要进一步学习和总结。留着接下来看。






原创粉丝点击