在OLED上用大于126的ASCII码显示定制符号

在OLED上用大于126的ASCII码显示定制符号

陈拓 2021/07/09-2021/07/09

1. 概述

在做嵌入式开发时我们经常会遇到显示非ASCII码符号的问题,比如摄氏温度符号或者一个充电的电池图标。而通常的字体库只能显示标准ASCII字符集的32-126个可打印字符。

在本文中我们将自定义符号添加到字库中ASCII码大于126的位置。

下面以摄氏温度符号℃为例进行说明。

字库采用Adafruit GFX格式。有关Adafruit GFX格式字库的详细说明见:

Adafruit GFX Library字体规范》

https://zhuanlan.zhihu.com/p/385486474

https://blog.csdn.net/chentuo2000/article/details/118369058

2. 在字库中添加大于126的ASCII码

2.1 准备图标位图数据

我们用.代表二进制0,用x代表二进制1。

为方便手工编码,加了2列冗余bit。

2.2 创建新的glyphs

  {  3682,  24,  26,  24,    2,  -25 },   // 0x7F 'Centigrade'

参数的设定方法晴参考Adafruit GFX Library字体规范》。

2.3 将新创建的符号添加到字库中

将新字符添加到《Adafruit GFX字体制作》

https://zhuanlan.zhihu.com/p/387949673

https://blog.csdn.net/chentuo2000/article/details/118609006

一文中创建的字库文件Digital_7_V420pt7b.h中。

  • 添加位图数据

在数组Digital_7_V420pt7bBitmaps[]最后添加位图数据:

  • 添加图形数据

在数Digital_7_V420pt7bGlyphs[]最后添加图形数据:

  • 修改Digital_7_V420pt7b

修改为:

 3. 在C程序中使用大于126的ASCII码

不能用键盘输入的ASCII码字符用转义符\输入,如下所示:

    char *text = (char*)"23.45 \x7F";

4. 显示效果

下图是ESP8266驱动0.96OLED显示屏的效果:

 

参考文档

  1. Creating Custom Symbol Fonts for Adafruit GFX Library
    https://learn.adafruit.com/creating-custom-symbol-font-for-adafruit-gfx-library/hardware-and-software-requirements
  2. 8 Bit GFXfonts
    https://sigmdel.ca/michel/program/misc/gfxfont_8bit_en.html

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 首先,在使用STM32微控制器上连接矩阵键盘之前,我们需要配置GPIO引脚作为输入和输出模式,以连接键盘和OLED显示屏。 接下来,我们可以使用适当的函数或库来读取矩阵键盘上按键的状态。通过扫描键盘的行和列,我们可以确定哪个按键被按下。一旦检测到按键按下,我们可以将对应的键值存储在一个变量中。 然后,我们需要使用相应的函数或库来控制OLED显示屏。我们可以将密码字符逐个显示在屏幕上。在每次按下一个键之后,我们可以将输入的字符追加到密码字符串中,并在显示上更新密码。 为了使密码输入不可见,我们可以选择在OLED显示隐藏字符或用星号替代密码。这样可以增加安全性,确保密码不被他人偷看。 最后,我们可以添加一些额外的逻辑,例如按下删除键时,我们可以删除密码字符串中的最后一个字符,或者按下确认键时,我们可以将密码输入保存到一个变量中,以备后续验证或处理。 总之,通过配置STM32微控制器的GPIO引脚,并使用支持矩阵键盘和OLED显示屏功能的函数或库,我们可以实现在OLED屏幕上显示密码的需求。同时,我们可以增加一些额外的逻辑来提高密码输入的安全性和便利性。 ### 回答2: 要使用STM32微控制器在OLED显示密码,我会提供以下步骤: 1. 首先,需要准备一个矩阵键盘和一个OLED显示屏,确保它们与STM32微控制器相连。在STM32上,你可以使用GPIO引脚来连接矩阵键盘的行与列,并使用SPI或I2C协议连接OLED显示屏。 2. 接下来,你需要编写STM32的代码来读取矩阵键盘的按键输入和将密码显示OLED上。首先,配置GPIO引脚作为输入来读取矩阵键盘的行,配置GPIO引脚作为输出来控制矩阵键盘的列。使用循环扫描的方法,逐一将每一列引脚置为高电平,并读取行引脚以获取按键输入。根据按键布局和矩阵键盘的工作原理,你可以将按键输入映射到相应的字符或数字。 3. 接下来,你需要使用OLED库或自己编写OLED显示屏的驱动程序。根据OLED的分辨率和显示方式,你可以使用相应的函数来显示密码。这可能涉及到在OLED上绘制文本、清除OLED屏幕、设置光标位置等操作。你可以选择显示密码的方式,如明文显示、屏蔽字符显示等。 4. 最后,你需要编写主程序来不断扫描矩阵键盘并在OLED显示密码。主程序可以使用一个无限循环和适当的延迟函数来实现。在每次循环中,你可以检测矩阵键盘是否有按键按下,并根据按键输入更新密码。同时,你可以将密码显示OLED上,以便用户查看。 总的来说,使用STM32微控制器在OLED显示矩阵键盘密码需要进行硬件连接,编写键盘扫描和OLED显示的代码,并编写主程序进行循环扫描和更新显示。这样可以实现一个基本的密码输入和显示功能。 ### 回答3: 在STM32上使用矩阵键盘将密码显示OLED屏幕上的过程如下: 首先,我们需要设置STM32的GPIO端口将矩阵键盘连接到设备上。通过设置GPIO的输入与输出模式,我们可以将矩阵键盘的行和列分别连接到STM32的GPIO端口。接下来,我们需要编写代码来扫描矩阵键盘,以便检测用户按下的按键。 使用矩阵键盘扫描算法,我们可以通过轮询每个行和列的GPIO端口来检测按键的按下。当检测到按键按下时,我们将按键的值保存到密码数组中。 一旦我们收集到了所有的密码,我们可以使用OLED屏幕来显示密码。通过使用STM32的I2C或SPI接口,我们可以将STM32与OLED屏幕连接起来。然后,我们需要编写代码来控制OLED屏幕,以便将密码显示在屏幕上。 可以使用屏幕上的像素来显示每个字符。我们可以将每个字符的像素映射到屏幕上的特定坐标,并依次显示每个字符。使用适当的库或驱动程序,我们可以在OLED屏幕上绘制出密码字符串。 通过将矩阵键盘和OLED屏幕与STM32进行连接,并编写相应的代码,我们可以实现将密码通过矩阵键盘输入并显示OLED屏幕上的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨之清风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值