单 {MOD}OLED显示初探

2019-07-20 18:14发布

本帖最后由 orzking 于 2016-12-11 18:39 编辑

一直潜水,跟各位大神学习,从来没有拿的出手的东西发帖分享给大家。
最近在玩单 {MOD}OLED显示,想做一个PID温控的小东西,用OLED显示温度,和各项PID参数。第一次用OLED屏。发现用SPI直接操作SSD1306的RAM来显示很不方便。网上看到的例子都是软件模拟SPI,通过向1306内部的某个RAM地址写类似0x01,0x02,0x04,0x08....这样的一个字节里只有1个高位的值来画点。这样的画点函数很不通用,原因是用SPI操作1306时是不能读回数据的。不能用位与的方式不破坏同一个页里同一个段的前次画的点。(好绕^^!).
于是想到直接开一块8*128内存。用于做缓冲区。然后主循环里用缓冲区的内容更新画面(SSD1306)。这样要画点,画方,画框框,就可以直接在缓冲区里画,画完刷新。有点linux Framebuffer的感觉。也可以做两个缓冲区,切换提高显示效率(我还没想好)。

我在做的时候用了一点面向对象的思想。设计了一个Rect结构体和一个Box结构体,Rect是实心矩形,box是方框。做好了画矩形,画方框就很简单了,方框的四个边是实心矩形。
Rect有4个成员,
一个表示横向的长度,
一个表是纵向的长度,
一个有2个元素的数组表示左上角的锚点,
一个函数指针,用于画出Rect。(操作缓冲区)

做好了画矩形,画方框就很简单了,方框的四个边是实心矩形。
Box有4个成员
一个是RECT类型的 表示BOX的范围
一个是边框的厚度
一个是边框的可见性(为了之后做别的文本框之类的控件做铺垫)
一个函数指针,用于画出Box。

我做的比较粗糙。
下面可以考虑把文字加进Box,做成文本框了。
还有很多东西需要整理思路。考虑定时跟新可以做成一个简易的坐标系实时显示温度曲线(思路还不是很清晰)。

现在画方块,画框已经很方便了。
不知道有没有人顶,有人顶就上传代码。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。