在PmodOLED上创建自定义字符

欢迎回到Digilent博客!

正如许多人所知道的,可以使用许多类型的显示器(如lcd和LED显示器)来创建您自己的自定义字符,并自然地显示它们。然而,要创建自己的角色,你需要能够创建一个角色(或角色)外观的位图。我们将使用PmodOLED和它的相应库来创建我们自己的字符。

位图就是它听起来的样子:由位组成的图。这些位,可以是' 0 '或' 1 ',分别代表' off '和' on ',可以有目的地(或不那么有目的地)安排,以便打开和关闭状态显示图像。通常,每个字符位图高8位,宽8位,总共64位或8字节。这8个字节组成了一个字符,至少在我们的OLED库中,分别定义为16进制的8位列。

对于每个8位列,十六进制系统的样式是0x(表示它是十六进制),然后是一组0-9和a - f之间的两个数字/字母。0-9是我们在“普通”十进制系统中使用的数字;A-F构成了剩下的6个值(因此十六进制中的“十六进制”),分别对应于10、11、12、13、14和15。第一个值对应于列中底部的四位,其中' 1 '只打开顶部位,而' F '打开所有四位位(1 + 2 + 4 + 8 = 15)。类似地,第二个值对应于列的前四位。考虑到这一点,“X”字符的8列可以设计为{0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81}。

位图定义的结果图像。
位图定义的结果图像。

为了可视化你的角色可能需要如何设计,我建议使用一个电子表格程序,如Microsoft Excel,你可以很容易地填写或清空单个方块,以获得你想要的模式。

但是,尽管知道如何设计一个字符,但知道如何在代码中使用该字符可能会更有帮助。要做到这一点,我们需要四件事。我们需要告诉这个项目有多少字节每个字符,有多少字符我们定义自定义字体表,每个字符的位图,并使用库函数,让程序知道我们定义了一个定制的性格。

所以,如果我们想要在我们的字体表中创建一个带有“X”的棋盘图案,我们需要输入以下内容:

定义两个新字符所需的代码行。
定义两个新字符所需的代码行。
PmodOLED显示我们定义的两个字符。
PmodOLED显示我们定义的两个字符。

我用来显示您所看到的内容的代码是可用的在这里

然而,您可能会问自己,我们的“OLED.defineUserChar”函数将我们的字符定义到哪里?最有意义的(以及实际发生的)是,我们的自定义字符是在预先存在的字体表中定义的。这个表,称为ASCII表,包含了我们可以用键盘输入的所有“正常”字符。

但是,当我们定义自定义字符时,这个表不会扩展。而是重新定义ASCII表中前32个不可打印字符中的一个,比如“传输结束”和“文件分隔符”。因为这32个字符实际上并不会在页面上“显示”出来,所以我们可以在不损害屏幕显示的情况下重写这些字符,以支持我们的自定义字符。

走之前还有最后一件事。也许您想创建一个显示,它将占用超过32个可用的字符,并且您不想被迫重新定义字母“a”以满足您的显示需要。为了摆脱这个困境,我们能做的就是创造一个数组来保存我们自己的位图。它的作用是在我们的微控制器上留出一块内存来保存我们的“字符”。

程序不知道这些是字符,所以我们不能使用预定义的“putChar”函数放置它们,但是我们可以指定一个大小,并让库使用“putBmp”将整个位图放置到指定的区域。用这个代码,您可以创建超级酷的图像,如Digilent标志!

在PmodOLED上的Digilent标志
在PmodOLED上的Digilent标志

如果你在启动和运行PmodOLED时有任何困难,一定要看看这篇文章Digilent论坛

0
第一个投票。

关于詹姆斯·科尔文

我最喜欢的事情就是学习新东西。特别是涉及某些技术的事情;电脑组件、有趣的小工具、游戏、编码技术等。我喜欢和我的妻子和两个儿子在一起,也喜欢和朋友们在一起。在我的日常工作中,我管理Digilent论坛和北美支持团队。

查看所有由James Colvin→发布的帖子

关于“在PmodOLED上创建自定义字符”的一个评论

  1. 让我澄清一下我对LabVIEW的观点,并准备好触摸。
    我的意思是LabVIEW中直接操作的概念,
    比起使用基于触摸的文本编辑器编写代码,选择块并放置它们,然后将它们连接在一起更适合于“基于触摸的开发”。
    我很乐观,对于很多用例来说,用LabVIEW在纯触摸界面上开发代码比用鼠标和键盘更好

留下一个回复

您的电子邮件地址将不会被公布。必填字段被标记