矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 2844|回复: 19

哪些软件可以取模单个像素?

[复制链接]
     
发表于 2020-9-19 10:20:36 来自手机 | 显示全部楼层 |阅读模式
最近一直在弄彩屏,遇到文字取模难题,以前使用的取模软件都是一个字节8个像素,但是现在要一个字节一个像素,找了好几个软件都不行,用手工取模0~9够费劲了半天!!!不知道有哪个软件可以实现?
IMG_20200918_210543.jpg
     
发表于 2020-9-19 10:35:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-9-19 11:38:13 来自手机 | 显示全部楼层
飞翔鸭2016 发表于 2020-9-19 10:35
PHOTOSHOP~~

谢谢,我去下载看看!
回复 支持 反对

使用道具 举报

     
发表于 2020-9-19 15:43:41 | 显示全部楼层
不知你用的什么芯片的彩屏?
你是不是理解错了?彩屏的文字像素与黑白屏取模相同,只不过黑白屏每个像素只有0或1,而彩屏的取模像素如果是0,就用黑色代替,如果是1就用颜色的代码代替。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-9-19 16:13:15 来自手机 | 显示全部楼层
chhds 发表于 2020-9-19 15:43
不知你用的什么芯片的彩屏?
你是不是理解错了?彩屏的文字像素与黑白屏取模相同,只不过黑白屏每个像素只 ...

SPI串口彩屏9341,240*320,

你可能不明白我的意思,一般我们用的黑白屏比如:5110、OLED12864显示是8个像素同时显示的,所以用一个字节0X00~0XFF就可以控制8个像素亮灭,但是彩屏都是一个字节或者两个字节代表一个像素,我现在用的取模软件都是取8个像素的数据,不能取一个像素的数据!
回复 支持 反对

使用道具 举报

     
发表于 2020-9-19 16:22:59 | 显示全部楼层
彩屏的文字取模和黑白屏一样啊,是写显存部分不一样,不是直接写字符表进去,而是根据码表该位为 0 表示显示底色,这个时候写底色,写完整个像素;该位为 1 写前景色,也是一次写完整个像素,也就是说需要对字符表的一个字节的每一位都做一次判断,每次判断写一次完整像素。

荔枝


  1. fcMSB = Msb(ForceColor)
  2. fcLSB = ForceColor
  3. bcMSB = Msb(BackColor)
  4. bcLSB = BackColor

  5. iLs = Len(Charat)
  6. SetftLCDAddress(dY, dY + 7, dX, dX + iLs * 6)
  7. WriteInstruction(&h2c)
  8. For is = 1 To iLs
  9.     bChr = Asc(Mid(Charat,is,1)) - 32                                        ' 根据每一个字符的 ASCII Code,在码表数组中找到对应的数据,一个字符是 5x7(+1) 点的 5 个 Byte 数据
  10.     For iFn = 0 To 5                                                                        ' 循环 6 次,比码表数据多一次(写入一排像素的字符间隔)
  11.         iChn = Ft1(bChr * 5 + iFn)
  12.         For wRite = 0 To 7                                                                ' 循环检查每 1byte 码表数据的每一个 bit  <--- [color=Red]黑白屏不需要这个循环,直接写 iChn 到显存,彩屏则循环整个字节每次循环都写一个像素,这个像素多少位你就写多少位[/color]
  13.                 bFontbit = iChn And &b00000001                                ' 总是从最低位检查
  14.                 If bFontbit = 1 And iFn < 5 Then                        ' 如码表中该位为 1 则写入 1bit 的前景色,为 0 则写入 1bit 的背景色;写完码表数据后,多写入一排像素宽度的字符间距
  15.                         WriteDatums(fcMSB)
  16.                         WriteDatums(fcLSB)
  17.                 Else
  18.                         WriteDatums(bcMSB)
  19.                         WriteDatums(bcLSB)
  20.                 End If
  21.                 Shift(Right, 1, iChn)                                                ' 检查完的这一位数据移走,将高一位移动到最低位,即 >> 运算
  22.         Next wRite
  23.     Next iFn
  24. Next is
  25. Return 0
复制代码
回复 支持 反对

使用道具 举报

     
发表于 2020-9-19 16:24:12 | 显示全部楼层
分立元件 发表于 2020-9-19 16:13
SPI串口彩屏9341,240*320,

你可能不明白我的意思,一般我们用的黑白屏比如:5110、OLED12864显示是8 ...


你的写显存思路错误,彩屏不是这样写,看我上面的回复,我写的 ST7735 16 位彩屏代码
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-9-19 17:18:02 来自手机 | 显示全部楼层
washu 发表于 2020-9-19 16:24
你的写显存思路错误,彩屏不是这样写,看我上面的回复,我写的 ST7735 16 位彩屏代码

把我搞晕了!!!难道错了吗?
回复 支持 反对

使用道具 举报

     
发表于 2020-9-19 17:40:59 | 显示全部楼层
你肯定是理解错了

你用什么单片机?
回复 支持 反对

使用道具 举报

     
发表于 2020-9-19 18:13:40 | 显示全部楼层
分立元件 发表于 2020-9-19 17:18
把我搞晕了!!!难道错了吗?

是的,我们给彩屏写字用的字库和黑白屏一样的,就是在写显存代码上多做一个循环和判断,在判断里写前景色(字库bit=1)或背景色(字库bit=0),而不是把字库适配屏幕显存,那样你的一个字要占多少空间啊。

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-9-19 18:54:52 来自手机 | 显示全部楼层
chhds 发表于 2020-9-19 17:40
你肯定是理解错了

你用什么单片机?

51单片机驱动240*320彩屏
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-9-19 18:59:14 来自手机 | 显示全部楼层
washu 发表于 2020-9-19 18:13
是的,我们给彩屏写字用的字库和黑白屏一样的,就是在写显存代码上多做一个循环和判断,在判断里写前景色 ...

51刷一副图像要几秒,我试了的确是两个字节一个像素!我把它变一样的数据,只使用一个字节
回复 支持 反对

使用道具 举报

     
发表于 2020-9-19 19:27:37 | 显示全部楼层
我用STC15 驱动,一整屏刷新,接近1秒
回复 支持 反对

使用道具 举报

     
发表于 2020-9-19 19:39:48 | 显示全部楼层
9341一个像素点颜色是565,需要2个字节,你是怎样只使用1个字节的?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-9-19 19:46:11 来自手机 | 显示全部楼层
chhds 发表于 2020-9-19 19:27
我用STC15 驱动,一整屏刷新,接近1秒

我用STC12大概3秒,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-4-27 07:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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