694|2

11

帖子

3

TA的资源

一粒金砂(中级)

楼主
 

【得捷电子Follow me第2期】任务1:控制屏幕显示中文 [复制链接]

  本帖最后由 StreakingJerry 于 2023-9-19 19:30 编辑

大家好,我是一名业余电子DIY爱好者,第一课我们先教一下大家如何使用Circuitpython来显示中文字符。

在传统的嵌入式开发中,显示中文字符一直是个比较麻烦的事情,因为要先自行对需要显示的汉字进行统计,随后进行取模。如果显示的汉字比较多的话还可能出现占用内存过大的问题。这次我们在Adafruit ESP32-S3 TFT Feather上进行实验,这块板子的flash有4M,PSRAM有2M,自带了一块1.14寸的IPS显示屏,在显示中文这种事情上是绰绰有余。不仅如此,由于内存足够大,我们甚至可以导入一个完整的中文字体库,这样就不再需要事先统计好需要显示哪些汉字了。这在某些应用,比如网页浏览器,或是电子书等功能实现上非常有用。

 

我们先来看看代码实现的方式。Circuitpython固件中已经自带了屏幕的驱动,因此用起来非常方便,初始化代码仅需要三行:

import board
import displayio
from adafruit_bitmap_font import bitmap_font
from adafruit_display_text import label

display = board.DISPLAY
group = displayio.Group()
display.show(group)

重点来了,因为我们需要显示中文,所以要自己下载PCF字体文件并加载进代码中。

font = bitmap_font.load_font("/wenquanyi_13px.pcf")

接下来我们创建一个文字元素,并把它添加到屏幕中显示,所有的设置过程就完成了。在这里我们先预先定义一个常用颜色字典,方便使用。

color = {
        "black" : 0x000000,
        "white" : 0xFFFFFF,
        "red" : 0xFF0000,
        "green" : 0x00FF00,
        "blue" : 0x0000FF,
        "cyan" : 0x00FFFF,
        "magenta" : 0xFF00FF,
        "yellow" : 0xFFFF00,
        }

text_tg = label.Label(font, color=color["white"])
text_tg.y = 60
text_tg.x = 0
text_tg.background_color = None
text_tg.line_spacing = 1.0
text_tg.scale = 3
group.append(text_tg)

最后,只需要在代码中设定该元素的文字内容即可。当这个文字内容发生变化时,新的文字会同步出现在屏幕上。

text_tg.text = "你好,世界!"

 

最新回复

学习了,大佬的教程已经出来了,我的还没到   详情 回复 发表于 2023-9-22 09:21
点赞 关注
 
 

回复
举报

6593

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

虽然是业余电子DIY爱好者,用Circuitpython来显示中文字符做的已经不错了

 
 
 

回复

36

帖子

1

TA的资源

一粒金砂(中级)

板凳
 

学习了,大佬的教程已经出来了,我的还没到

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表