OLED12864和TFT12864驱动程序设计

** ZigBee、NBIOT等无线通信技术交流学习,可以加入QQ技术交流群:575036716

可以到****的下载版块下载该源码包:点击打开链接


在嵌入式开发中,有时会用到显示屏,我们今天涉及的两款显示屏:OLED12864和TFT12864!

特点:

都支持SPI驱动,尺寸一样!

OLED12864只能显示单一颜色的像素点,成本低,不需要背光源,显示速度快!

TFT12864可以显示彩色,成本较高,需要背光源,显示速度慢!

OLED12864实物图

OLED12864和TFT12864驱动程序设计

TFT12864实物图:

OLED12864和TFT12864驱动程序设计

由于这两款屏幕都是基于SPI总线的,所以在程序结构设计上,我们需要设计一个通用的SPI驱动,然后适配到屏幕驱动中!

SPI驱动程序可以通过软件模拟实现,也可以使用芯片的硬件SPI,我们可以提供软件和硬件的驱动,然后通过配置的方式来选择到底是软件模拟还是硬件实现。

由于SPI存在时钟极性和时钟相位、我们最终显示屏使用时SPI时,需要基于通用的SPI驱动进行适配。

最终显示屏的驱动由4部分组成:

通用SPI驱动程序、显示屏SPI程序、显示屏驱动程序、字库!

OLED12864的驱动包括三大部分:SPI驱动、OLED12864显示、字库

*****************************************************************************************

SPI驱动API:

SPI可以通过软件模拟实现,也可以通过硬件实现,设计接口时要综合考虑。

我们的设计思路是设计一个通用的SPI驱动,然后通过适配的方式进行使用,比如下图中的SPI_Driver目录中是通用SPI驱动程序,而hal_lcd_spi.h/c是基于通用SPI驱动程序适配过来的,用于显示屏的程序!

OLED12864和TFT12864驱动程序设计

SPI驱动程序实现了软件模拟的方式,也实现了硬件SPI,其中hw_spi.h/c为硬件(Hardware)实现的SPI,sw_spi.h/c为软件(Software)模拟实现:

OLED12864和TFT12864驱动程序设计

SPI驱动较为复杂可以参考先前SPI章节结合程序进行理解,这里不做展开。

在适配程序hal_lcd_spi.h/c中,可以通过配置来选择使用软件模拟SPI驱动还是基于硬件驱动:

OLED12864和TFT12864驱动程序设计

而显示屏的引脚可以进行配置:

OLED12864和TFT12864驱动程序设计

OLED12864显示API:

1. 初始化函数,清屏函数:

void halOLED12864Init(void);

void halOLED12864ClearScreen(void);

2. 显示字符串函数,显示图片函数

void halOLED12864ShowX16(uint8 l, uint8 c, const uint8 *str);

void halOLED12864ShowPicture(uint8 x, uint8 y,

                             uint8 picWidth, uint8 picHeight,

                             const uint8 *pic);

OLED12864有64列,可以映射为8个Page(每个Page有8列);有128行!

在显示的时候,需要指定对应的Page和行。