当前位置: 首页 > article >正文

【STM32】驱动OLED屏

其实我没买OLED屏哈哈哈,这个只是学习了,没机会实践。

大部分图片来源:正点原子HAL库课程

 专栏目录:记录自己的嵌入式学习之路-CSDN博客


目录

1    显示原理

2    读写方式:8080并口

2.1    支持的指令类型

2.2    读写过程

2.3    三种设置内存地址模式

2.4    软件读写方式

2.5    页地址模式的本质

2.6    屏幕驱动步骤


1    显示原理

MCU驱动OLED的控制器进行读写:MCU←→OLED控制器←→OLED屏幕。


2    读写方式:8080并口

2.1    支持的指令类型

2.2    读写过程

  • CS:OLED 片选信号,就是告诉系统,我要对该芯片/内存进行通信了,后续我发的信号就是给这个芯片/内存的;
  • WR:向 OLED 写入数据;
  • RD:从 OLED 读取数据;
  • D[7:0]:8 位双向数据线;
  • RST(RES):硬复位 OLED;
  • DC:命令/数据标志(0,读写命令;1,读写数据)。

一个示例的读写过程(也许不代表真正的代码,但逻辑是对的):

2.3    三种设置内存地址模式

  • 页地址模式
  • 水平地址模式
  • 垂直地址模式

2.4    软件读写方式

2.5    页地址模式的本质

由于屏幕是128*64,所以弄了一个显存区域,其每页有128字节,一共有8页。这里用128字节是因为内存是以一字节为单位存储的,而128是为了对上列数,而因为一个字节只有8位,所以一页是128*8,为了完全映射128*64,就弄了8页。

其需要设置段重映射,这是为了将页地址完全一致地映射到屏幕像素上去。否则第一列对应的就是屏幕的第128列了。所以总体来说,页数相当于行数除以8,列地址相当于真正的列数。

内存和页地址的联系可参考下图确认每个点的操作:

这里的内存其实就是在单片机中开辟一个[128][8]的二维数组,作为显存的作用,在程序中需要显示字符的时候先对该显存进行赋值,再调用自己写的屏幕更新函数来更新整个屏幕。

画点方式:算出像素的行数位(即下图temp),用数组获取原有像素所在列的值(8位)。若开启像素,则并将其与temp进行或运算;关闭像素则需要将其与temp的反值进行与运算。

2.6    屏幕驱动步骤


http://www.kler.cn/news/283440.html

相关文章:

  • 2024高教社杯”全国大学生数学建模竞赛保奖秘诀!!!
  • 众安保险0827一面
  • UnrealEngine学习(02):虚幻引擎编辑器界面详解
  • 【DSP+FPGA】基于DSP+FPGA XC7K325T与TMS320C6678的通用信号处理平台
  • 力扣面试经典算法150题:整数转罗马数字
  • 91.游戏的启动与多开-游戏启动
  • Live800:以客户为中心,构建全方位客户服务策略
  • ThinkPHP之入门讲解
  • C++(this指针/常函数与常对象/拷贝构造函数/赋值函数/静态成员/静态成员函数/单列模式)
  • pdf、mp4、zip、rar、jpg等文件被大量访问造成流量超标解决方案
  • 腾讯提出一种新的针对风格化角色和逼真服装动画的生成3D运动转移方法,生成效果逼真!
  • Excel中使用VBS自定义函数将中文转为拼音首字母
  • MySQL内部临时表(Using temporary)案例详解及优化解决方法
  • 快速了解FlashInfer
  • [CTF]-Reverse:Reverse做题笔记
  • defineProps、defineEmits、 defineExpose的TS写法
  • python os获取当前git目录的git用户
  • python------python解释器,pycharm下载配置
  • jmespath用法总结
  • 如何用GPT进行编程辅助?
  • MM 2024 Oral: 大模型带你鉴赏世界名画!同济大学发布
  • 202408830配置WIN11自带的画图程序的画布为4K分辨率
  • 探索 HarmonyOS 中的高级文本自定义
  • Python自动化测试requests库深度详解
  • 实战OpenCV之绘制图形
  • [000-01-015].第03节:SpringBoot中数据源的自动配置
  • 项目环境依赖库导出-python
  • 【Docker】搭建docker的私有仓库
  • centos yum 源停用整改
  • 获取服务器时间