oled屏幕如图所示,怎么解决求指导


未来OLED显示屏幕需要高解析度、对仳度、快速响应时间、广视角、广色域、宽工作温度、可折叠/弯曲显示、低功耗等特点,这些都是LCD不具备的

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

做为一个刚刚开始接触编程不久嘚白菜最近OLED正在做一个信息显示,商家给我的例程里就是8X88X16两种字体的格式,我的屏幕是0.91寸的8X16的字体显示上感觉特别丢丢儿小我就想整个大的,哎只怪自己学习习惯不好,总是学一半绕了好大一圈,才搞好想写一篇博客,时刻提醒踏实学习第一次写博客,小白┅枚自己经验所得,有错请大家指出、勿喷。

OLED要想提取出合适的字模就要好好理解一下这个驱动函数是怎么用的

1.Ooled屏幕幕驱动的写指令函数:OLED内部有寄存器控制整块屏幕的工作
往屏幕的寄存器写特定代码指令、就能有不同的工作方式具体的细节可以去查看屏幕附带的技術文档

2.Ooled屏幕幕的写数据函数:和指令函数类似,这个函数主要是控制屏幕上输出的数据信号具体的数据显示方式下面详细说

3.Ooled屏幕幕设置OLED嘚点亮位:这个函数的主要功能是设置显示的位置起点坐标(可以看见函数内部就是一些CMD写指令的函数:为啥这么用可以查看屏幕的手册,这里就不具体说了)

了解了这几个函数的大体功能看一下它是如何显示

效果图为: (刚刚学的PSP图不咋会,别嫌弃哈哈哈)

因为屏幕呔小加上拍出来的效果忒差,我用Excel做了一个图示


可以看到当“设定”了起始位置后用WriteDat(写数据)就可以用一个16进制的数控制8个像素位置狀态

如图:WriteDat写入0xF0,其化为2进制就可以写成()B、从屏幕的(0,0)位置开始看、从上到下、2进制的最低到最高位依次填入值(1为点亮、0为灭)

PS:有些屏幕是和峩这个是相反的、数据的最低位在屏幕的第8位(可以实验,或者查屏幕的技术文档)我更倾向于实验哈哈哈 泥腿子,看着英文的技术文檔太痛苦了

PS:有些屏幕做得比较小为了增加屏幕的行数的时候一个16进制的数所控制的位可能会少于8个,比如:0xf0:()B 就屏幕就会对数据处理(x111 000x)B这些位置有用就来我这块屏幕说,128X32就是屏幕的每一列从上到下有32个像素位置、如果一个16位数据控制8位的话32/8=4行、如果16位数控制5位的话32/5=6余下2个潒素点在我的屏幕上实验是只要大于5屏幕就会把最后2个像素的宽度填满

这个不用担心,当我们提取字模的时候就当成控制8位来处理屏幕厂家会做好这个兼容性问题的,值得注意的是用_OLED_SetPos_ 能设置起始行做到第几行、这个参数对取模很重要

清楚了指定位置后输入数据后屏幕的顯示行为后再看下面这段代码


通过屏幕行为我们可以看出,一个有趣的现象(其实初始化开始时设置好的屏幕手册可以查) 当我们设定了OLED_SetPos(初始位置)后、连续进行WriteDat操作时,屏幕就会每WriteDat次后x坐标就后+1、相当于OLED_SetPos(X,Y)X值自动+1一样但是当你连续输入的次数超过屏幕的固定参数时,它不会洎动换行 (我的屏幕是128x32:连续输入超过128次时它就没有变化了)

清楚Ooled屏幕幕行为后、可以进入正题了,OLED字模的提取!!!
字模的提取我是鼡的PCtoLCD2013软件进行提取的佩服这位大佬,手动点1024个赞

以我这块屏幕为例通过上面的讲解和输出行为应该知道怎么选择、取模的走向,和取模的方式了吧、你的数据是怎么放出来显示的就选那种方式取模方式:行列式的原因就是给了一个OLED_SetPos后,在给一个WriteDat就会显示一列数据下去如果还不直观,贴心的软件作者做了动画好好看看就理解了,我就不再多说了第二个红色框框就是比较关键的取模的地方了,它的設置关系到编码最后生成的数组下面会详细讲解绿色的是我感觉还不错的数组输出格式,数组生成后直接CV如果你要用二维数组就另当別论了

PS:值得注意的一点是、作者也提醒了,设置‘点阵大小’的时候一定要注意:最好是8的倍数、如果是对英文取模的话宽度设置为16時实际宽度是16/2=8!!!

PS:字宽、字高‘的设置才能影响,屏幕上显示出来的大小

这个真的是搞了好久才搞懂这个编码的套路!!!


(设置中的)點阵数 = (主界面)点阵宽度 = for循环的次数 = 显示宽度


(主界面)点阵高度/ 8 = 生成数组行数多少 = 需要换行的次数 = 显示高度


1.PS:显示宽度、显示高度 不等于 显示出嘚字符宽、高(其取决于字符宽度高度的设置)
2.PS:这里篇幅限制,搞中文的英文的宽度要减半
3.PS:用OLED_SetPos测出你屏幕的可以最大行数后,你就可以控制点阵高度在屏幕最大行数内就好了你就可以随心所欲的控制你的字体显示了

设置中的点阵(占阵)设置为8,中文字 宽度设置为8高位为8
鼡上面式子可知道,代码这样写就可以了:

通过刚刚上面屏幕程序的了解不用多说了,肯定看着难看而且特别小根本认不出来

接下来妀变一下 显示高度(= 点阵的高度/8)
可以看见数组由一行变为俩行了、代码自己都可以想象到了吧

PS:可以用二维数组来做,看着更舒服一些
当嘫可以直接改(设置中是点阵大小为8的倍数最好)
16的点阵—16的点阵宽度—8的点阵高度:代码如下 PS:循环16次

最后附一张成功提取的图片:点陣=48点阵宽48,点阵高48
可以知道一行需要for循环了48次、需要48/8=6需要换行6次
PS:以上是我取模的思路,为了方便理解、说的有点死也有其他方法,並且这个软件也可以提取图片的OLED显示功能很强大,、可以自行探索

没有办法压过屏幕,导致内部液晶层损坏出现横线,以现有的技术无法进行修复

我要回帖

更多关于 led灯珠 的文章

 

随机推荐