其实我没买OLED屏哈哈哈,这个只是学习了,没机会实践。
大部分图片来源:正点原子HAL库课程
专栏目录:记录自己的嵌入式学习之路-CSDN博客
目录
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 屏幕驱动步骤
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 【STM32】驱动OLED屏
发表评论 取消回复