打印
[程序源码]

发现 OLED 只需要一种 6*8 字库,就可显示 16*8 字体

[复制链接]
2780|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
panxiaoyi|  楼主 | 2021-10-16 15:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
发现 OLED 只需要一种 6*8 字库,就可显示 16*8 字体

请见谅,这个有标题党的嫌疑,但是,这是我在调试时不小心犯错发现的一个“秘密”

当时我用 I2C 驱动,后来我又换成了 硬件 或者 模拟 I2C 驱动,结果都是一样

我估计,这个与单片机的型号没有关系,应该是 OLED 内部的问题

void IIC_WriteByte(u8 dat)      //主机写单个字节
{
  I2C_DR=dat;
  while(!I2C_SR1_TXE);
}

把上面的代码修改成下面的代码,效果就出来了
就是重复一次发送数据而已

void IIC_WriteByte(u8 dat)      //主机写单个字节
{
  I2C_DR=dat;
  while(!I2C_SR1_TXE);
  
  I2C_DR=dat;
  while(!I2C_SR1_TXE);
}


微信图片_20211016150752.jpg (220.55 KB )

微信图片_20211016150752.jpg

微信图片_20211016150800.jpg (214.23 KB )

微信图片_20211016150800.jpg

使用特权

评论回复

相关帖子

沙发
panxiaoyi|  楼主 | 2021-10-16 15:28 | 只看该作者
完整的代码可以参考这里,当然,它没有“大字体”这个功能,如果把上面的方法应用进去,它就可以显示“大字体了”

https://bbs.21ic.com/icview-3168938-1-1.html

使用特权

评论回复
板凳
zhengfish| | 2021-10-16 22:01 | 只看该作者
title党。。。。。。。。。。。

使用特权

评论回复
地板
LcwSwust| | 2021-10-17 08:40 | 只看该作者
6*8 横向复制数据应当是12*8呀

使用特权

评论回复
5
chongdongchen| | 2021-10-17 14:09 | 只看该作者
见过某产品就是这样做,多个像素点代替1个像素点,字是变大了,但只是放大镜效果,很难看

使用特权

评论回复
6
shipeng1989| | 2021-10-18 08:25 | 只看该作者
我曾经试过将8*16的字体一个像素当4个显示变成16*32,显示的锯齿会被放大但是要求不高也可以接受

使用特权

评论回复
7
trucyw| | 2021-10-18 09:25 | 只看该作者
这个看着是你在填充的时候自动把位置多写了
这个和你所谓的内部问题没有关系,我猜所有的屏幕这样操作之后,现象会是一致的

使用特权

评论回复
8
panxiaoyi|  楼主 | 2021-10-18 17:02 | 只看该作者
这个就当做娱乐看待就好了,我也想不通为什么会这样,因为WriteByte()这个函数也应用在写指令的,就是说,如果按照上面的方法,所有指令所有数据都是写两遍的

使用特权

评论回复
9
qin552011373| | 2021-11-4 09:13 | 只看该作者
看看OLED的驱动芯片的手册

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

47

主题

384

帖子

2

粉丝