收藏官网首页
查看: 3320|回复: 0

[经验分享] 在ch307vct6上移植0.96寸oled驱动

106

主题

107

帖子

7264

积分

论坛元老

Rank: 8Rank: 8

积分
7264
跳转到指定楼层
楼主
 楼主| 发表于 2023-9-5 22:32:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具
    通常,智能家居设备需要暂时各种信息,例如室内温度,设备状态等,通过显示屏,我们可以无需打开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显示,然后使用函数显示字符即可

  1. OLED_Init();
  2. OLED_Display_On();
  3. 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 片选接口

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



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表