OLED显示字符的大小与PCtoLCD2002生成字模
首次尝试性写博客,如果错误或不足请大家指正
如有涉及相关版权的问题,联系我删除
前言:
为什么为了一个小小的OLED写这些乱七八糟的东西,还得花时间写,还要花时间看资料,直接调用代码就可以了
示例:OLED_ShowString(8,2,“Hello Word !”,16); //size:16/12 即可显示成功
引用我老师的一句话“学习,不是追求速度的,是追求质量的”
我在学习,不是在工作
OLED显示字符大小
常用的0.96寸OLED显示屏分辨率是128*64,既每行有128个像素点,每列是64个像素点
参考屏幕的数据手册,列64个像素点分为8页,每一页是8个像素点,既每一页就是一个横条
我手上的是中景园电子的0.96OLED屏幕,4脚,采用IIC通信协议
问题的产生字符的大小与OLED显示之间的关系到底是什么
在屏幕店家给的参考例程之中,给了两个字符库
库一:8x16点阵----指行为8个像素点,列为16个像素点
库二:6x8 点阵----参考上面
通常汉字使用16x16的点阵,
实际上最多只能显示4行字体,64/16 = 4
而每一行最多只能显示8个字体,128/16 = 8
这里的显示限制在于OLED屏幕自己的分辨率,也就是像素的数量(这里时128x64个像素点)
(仔细观察第一行)
接下来看看字符与PCtoL2002生成字模的关系
首先,这里的长宽定义如下:
例,8x16字体指长为8,宽为16
首先介绍PCtoL2002的使用方法
首先,模式-》字符模式
然后,选项-》配置如下
注意点:红框内的点阵样式为看自己需求,而取模方向是根据你的屏幕驱动程序来选择的,可以自己修改看看不同的结果,探索他们之间的关系
输入想要取模的文字或字母-》生成字模,即可得到对应的字模数据,复制到自己的代码字符库即可
在这里我遇到过一个疑惑(菜鸟学习,大佬轻喷)
为什么都是16x16的自宽和字高,但是文字和字母做出来的数据量差了一倍?
个人理解:
实际上,这种区别在于字模软件对于英文字母的优化,英文字母相对汉字而言没有必要用16x16的区域来显示,取模软件会将英文字母优化成当前设定的字宽大小的一半,长缩小了一倍
此处的字宽设定为:16x16
对于英文字母生成后的大小:8x16
原因大致有以下几种,
美观性:减小字母的间距,紧凑
减小数据量:数据量能少一半,节省空间,也能提高传输速度
增加显示面积:更小的字宽,可以显示更多的字符
取模软件做了提示,但我并没有留意
还有一个问题,
为什么自己生成的字模数据和厂家给的代码里的不一样?
以字母“A”为例,8x16的字宽
自己生成的字模数据为:
{0x00,0x00,0xC0,0x78,0x78,0xC0,0x00,0x00,0x20,0x3E,0x07,0x02,0x02,0x07,0x3C,0x20},/“A”,0/
厂家给的字母“A”的字模数据为:{ 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,}
**原因:**实际上这是因为字体而引起的,不同的字体产生的效果不一样,所生成的字模数据自然不同
我们这里选择的为:楷体,将楷体修改为宋体,两个字模的数据即可匹配,根据自己的需求设置即可
以上既是初次接触OLED显示的过程记录
随缘更新,不必关注