本帖最后由 项羽鑫 于 2021-4-24 13:15 编辑
首先我想说我自己原来是负责硬件的工作,软件代码上接触的不多,是最近才开始学着写代码的,我们在LaunchPadXL-F28027F平台上移植使用32的库时发现了一些问题,所以我萌生了自己修改一个OLED库的想法。并且大家可以看到,最后我成功地完成了显示功能。 从某种程度上说我也是软件上面的初学者,所以我的学习经验对于同样是初学者的你可能会更有帮助。
我先介绍所使用的控制器与显示模块,开发板用的是TI的LaunchPadXL-F28027F,开发环境是CCS(10.1.0.00010),程序框架直接套用了软件内可下载的C2000Ware (3.04.00.00)中的28027driverlib例程,OLED使用常见的4针脚IIC协议SSD1306驱动,128*64分辨率,通信方式选择了通过IO口模拟IIC通信。
使用OLED其实就是使用它的驱动芯片,也就是如何通过控制器与SSD1306的通信使其工作,只要深入了解过这点你就可以自己完成常用的功能设计。接下来我会按照自己的学习轨迹来简单介绍如何使用OLED。下面讲述的所有内容都有代码与之对应,所以稍显简略,可以与代码对照起来阅读。还有其它疑惑请自行查阅相关资料。 1、IIC通信 因为OLED只需要作为总线上的从机,所以通信过程可以做相应的简化。我们只需要完成DSP发起通信,发送字节数据,结束通信这三个过程,不用DSP去接收任何来自从机的信号。一次完整的通信过程包括开始、发送地址、发送通信内容、结束。 2、SSD1306数据格式 向SSD1306发送前需要先声名此数据为设置指令还是图像数据,在发送图像数据时可以一次声名后连续发送,而设置指令每发送一个字节就要重新发送声名。 有关设置指令在代码中有不少注释,也可以查阅手册或这其它地方的分享,一般保持默认即可,可以尝试修改刷新率、亮度、反转显示这些。 3、显示寻址方式 这点非常重要!!!图像数据最小单位为8bit,也就是一个page上的一列。实际上OLED的显示是通过发送一个屏幕的坐标初始地址,然后开始发送8bit图像数据,SSD1306写入,然后坐标地址自动按某种规律移动,再次写入、再移动,直到发送结束。总共有三种寻址方式:按页寻址、按行寻址、按列寻址,后两个还可以限定结束的坐标位置。相信图片已经足够形象地演示了这三种方式。我比较倾向于使用列寻址。 页寻址: 行寻址: 列寻址: *通过限定行列地址,还可以在任意限定矩形区域内显示: 我的logo显示就是限定了一幅64*90的图片,然后旁边还可以显示其它内容,比较灵活 实际函数里可以更具图片和需求更改显示位置与大小。
*附件的.c文件包含了主程序以及自己修改的库和若干字库,注释很丰富但是也很啰嗦, 可以直接复制替换ccs例程使用
然后呢...其实我是第一次写这么长的代码,也是第一次通过这种方式和别人分享东西, 很不熟练,如果有什么出错的地方,希望多多见谅
上面所有图片来自于我自己的拍摄或者SSD1603手册的截图编辑 附件中的手册与软件来源于网络,源文件为我自己编写
其他的像图片及文字取模软件这些就要靠自己摸索了,文中图片好像看不清,我附件里也放了
最后还要感谢TI和竞赛培训网送的开发板和螺丝刀 感谢工作者的勤劳付出
中景园电子OLE显示屏专用取模工具_Image2Lcd_32.rar
(1.43 MB, 下载次数: 1)
中景园电子OLE显示屏专用取模工具_PCtoLCD2002.rar
(701.79 KB, 下载次数: 0)
4pOLED_Hello.zip
(9.48 KB, 下载次数: 33)
网页活动oled图片.zip
(321.53 KB, 下载次数: 4)
|