我们已经完成了OLED显示屏对象类型的定义和对象初始化函数的设计。但我们的主要目标是获取对象的信息,接下来我们还要实现面向OLED显示屏的各类操作。
对于0.96英寸的OLED128x64显示屏来说,不论是采用何种接口方式,也不论是需要显示什么内容。对于我们来说,虽然在不同的接口模式下操作会有些许差别,但本质上都是向OLED写数据。
在SPI接口模式下,我们在向OLED发送数据和命令时,需要同时操作片选信号和数据命令选择信号,以表明需要操作的对象和发送的是数据还是命令。具体的操作时序如下:
在I2C接口模式下,我们在向OLED发送数据和命令时,没有片选和数据命令选择信号,所以我们需要发送从站地址以区分要操作的对象,需要发送控制字节以区分是数据还是命令。具体的操作时序如下:
根据前述对0.96英寸的OLED128x64显示屏的描述以及上述时序图,我们可以编写向OLED发送数据的函数如下:
/*向OLED发送数据*/ static void SendToOled(OledObjectType *oled,uint8_t sData,OledDCType type) { uint8_t wData[2]; if(oled->port==OLED_SPI) { oled->ChipSelcet(OLEDCS_Enable); if(type==OLEDDC_Command) { oled->DCSelcet(OLEDDC_Command); } else { oled->DCSelcet(OLEDDC_Data); } oled->Write(oled,&sData,1); oled->ChipSelcet(OLEDCS_Disable); } else { if(type==OLEDDC_Command) { wData[0]=0x00; } else { wData[0]=0x40; } wData[1]=sData; oled->Write(oled,wData,2); } } 3、驱动的使用我们已经实现了0.96英寸的OLED128x64显示屏驱动设计及实现,现在我们需要对这一驱动进行验证,基于此我们需要设计一个简单的验证应用。
3.1、声明并初始化对象使用基于对象的操作我们需要先得到这个对象,所以我们先要使用前面定义的OLED显示屏对象类型声明一个OLED显示屏对象变量,具体操作格式如下:
OledObjectType oled;