mmuyu 发表于 2023-9-5 22:32:56

在ch307vct6上移植0.96寸oled驱动

    通常,智能家居设备需要暂时各种信息,例如室内温度,设备状态等,通过显示屏,我们可以无需打开app,轻松了解环境数据和设备状况。因此,显示屏在智能家居上非常重要。
一般,设备数据不多,设备小型的情况下,我们可以使用小型的oled显示屏来展示数据,这次我们就使用中景园的0.96寸oled连接到单片机使用。

由于oled厂商提供的驱动是在20年前编写的,对riscv没有较好的支持,因此我们要在riscv平台使用,需要对文件进行修改。

我们可以使用与riscv较为相近的stm32的文件进行修改。

首先,我们为项目添加一个文件夹Oled,并且把oled库文件复制进去,结构如图



接下来,到项目配置里包含新建的文件夹



接下来,我们要修改oled头文件的定义,riscv已经拥有了us和ms的延时函数,因此我们要注释sys.h。由于我们使用的307系列没有gpiog的端口,要把gpiog修改为gpioa,此外,原文件对各个变量和函数返回值的定义为u8 ,我们要把u8重定向到uint8_t 为此,要引入stdint头文件

最终,文件修改后如下,右图为修改后的文件,可以看对比


接下来,我们把oled.c的delay函数使用riscv提供的delay函数进行替换



现在我们就可以在main函数里使用oled函数了
我们向初始化oled,开启oled显示,然后使用函数显示字符即可

OLED_Init();
OLED_Display_On();
OLED_ShowString(1,1,"123");

现在,我们就可以把oled连接到设备了,我们使用的是spi进行通信,因此设备连线如下

3.3v->vcc
gnd->gnd
pd6->d0 相当于spi的clk
pd7->d1 相当于spi数据线
pd4->reset
pd5->dc
pd3->cs 片选接口

最终,设备显示效果如图:



页: [1]
查看完整版本: 在ch307vct6上移植0.96寸oled驱动