找回密码
 立即注册
楼主: 陈家乐

【图片取模求助】STC-ISP的图片取模工具顺序问题

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:555
  • 最近打卡:2025-10-16 04:26:58

32

主题

417

回帖

3707

积分

荣誉版主

积分
3707
发表于 5 天前 | 显示全部楼层
从截图看,错乱的原因大概是数据的 取模顺序 的问题。


为了方便对照,在你的 PCtoLCD 的截图里,随便取一组不是全0或者全1的像素点,
比如第20组,从上向下依次是7个亮点1个黑点,对应的数据是 0x7F,用二进制表示是 0111 1111
说明取模的顺序是 从上向下 读取像素点,从低位到高位保存,数据位的顺序是高位在前(左)(这一点后面说)。
这个顺序是符合OLED显存的赋值顺序的,所以显示正常。
取模走向PCtoLCD.jpg

而STC的图片取模工具里,第20个数据是 0xFC, 二进制数是 1111 1100 (不同取模软件对图片的识别略有偏差属于正常)
说明取模的顺序是 从上向下读取像素点,从低位到高位保存,数据位的顺序是低位在前(左)

把这种顺序的数据发给OLED,就会导致每一页的图像都是上下镜像的,也就是你形容的支离破碎的感觉了。
取模走向STC.jpg


================================================================

这个问题很多人在习惯使用PCtoLCD之后改用STC的取模工具的时候都提到过,原因就在被 低位在前 的选项迷惑了

PCtoLCD 中的 低位在前  是 【取模走向】
而 STC 中的 低位在前【存储顺序】


比如上面选取的八个像素点,按照两个软件中选择的共同的顺序,从上向下读取的时候,依次是 1,1,1,1,1,1,1,0

PCtoLCD的 低位在前 走向,意思就是 从“先低位向高位读取”,严谨一些的话,其实应该叫做 低位在先  
PCtoLCD 默认的存储顺序,是 先读到的是低位,后读到的是高位,也就是 0111 1111(0x7F)

通过读取像素点的走向,来决定字模数据位的顺序.
取模走向.jpg


在 STC 中, 取模走向 已经在【扫描模式】的下拉列表中就定下了,
所以按照 先读到的是低位,后读到的是高位 的原则,

如果选择 低位在前 存储顺序,保存成的数据就是 11111100 了。

因此,为了符合OLED的赋值规则,这里应该选择 高位在前 ,也就是 00111111
另外,如果使用的是画点的方式进行显示,如果是低位在前的数据,也可以在读取顺序的代码中进行修改,把 dat & (x01<<n) 改成 dat & (0x80>>n)
134318w4en20po6mkzrmm8.jpg

================================================================


关于 STC 的 低位在前 的存储顺序,比较适合 以像素点为单位的取模方式
比如常见的单色LED点阵屏(74HC595 或者 MAX7219 等等)、带灰度的OLED(4位灰度)、TFT彩屏(16位RGB)、WS2812(24位RGB)、HUB75彩屏(24位RGB)等等,
因为发送数据是以每个像素点为最小单元,而不像单色OLED那样以八个像素点为最小显示单元,
所以,数据位的顺序是 低位在前 还是 高位在前 ,主要取决于程序代码里的读取顺序。

同理,PCtoLCD 里的 高位在前 的走向,也是为了迎合不同种类的单色屏幕的读取顺序。
比如常见的单色LED点阵屏(74HC595 或者 MAX7219 等等),数据是一位一位发送的,
所以对于不同读取顺序的驱动程序,也可以在 PCtoLCD 中选择不同走向进行取模。

能体会到发现一个不理解的现象然后找原因然后要么解决掉问题要么被问题解决掉的那种快乐是我的幸运
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:559
  • 最近打卡:2025-10-15 09:15:37
已绑定手机

58

主题

193

回帖

2060

积分

金牌会员

积分
2060
发表于 5 天前 | 显示全部楼层
大*** 发表于 2025-10-11 12:33
从截图看,错乱的原因大概是数据的 取模顺序 的问题。

果然还得是大佬
用尽STC单片机的资源是我的梦想
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-10-16 05:51 , Processed in 0.105679 second(s), 50 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表