1795|4

540

帖子

3

TA的资源

纯净的硅(初级)

楼主
 

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

 

目录

一、 开箱与环境搭建

1、 介绍

2、 引脚分布

3、 环境搭建

4、 运行第一个CircuitPython程序

二、 控制屏幕显示中文

 


 

一、开箱与环境搭建

  1. 介绍
    Feather ESP32-S3具有双核240 MHz芯片。ESP32-S3迷你模块配有4 MB闪存和2 MB PSRAM,以及512KB的SRAM,因此它非常适合与CircuitPython支持一起使用或在任何需要大量缓冲区的时候使用:对于快速内存访问,请使用SRAM;对于较慢但更宽敞的访问,则使用PSRAM。它也非常适合在ESP-IDF或Arduino支持下使用。

    彩色TFT连接至SPI引脚,并使用未暴露于分接焊盘的额外引脚进行控制,像素为240x135,是IPS,所以你可以在任何角度获得明亮的颜色。背光灯还连接到一个单独的引脚,因此您可以根据需要使用PWM来调节背光亮度。
  2. 引脚分布
  3. 环境搭建

Feather ESP32-S3开发板具有多种开发方式。可以使用CircuitPython或者Arduino进行开发,当然也可以使用esp32原生的idf环境进行开发。

本文计划使用对初学者更加友好的CircuitPython进行开发。因此,环境搭建也将以CircuitPython为例进行介绍。

  1. 下载官网最新版本的CircuitPython固件(.UF2)。官网网址:https://circuitpython.org/board/adafruit_feather_esp32s3_tft/
  2. 将开发板通过usb接如电脑。
  3. 双击板载的reset按键,使开发板进入固件烧录模式,此时,板载的RGB灯的颜色显示为固定的绿色。同时,板载的spi显示屏上显示的内容如下图所示。

     

  4. 此时,在电脑少会显示一个名叫FTHRS3BOOT的磁盘。
  5. 将前面下载好的CircuitPython固件(.uf2)放入FTHRS3BOOT磁盘中(拖拽进去就可以)。
  6. .uf2文件拖入到FTHRS3BOOT磁盘以后,等待一会,电脑中的FTHRS3BOOT磁盘会消失,同时会出现一个名叫CIRCUITPY的新磁盘,说明circuitPy固件下载成功了。至此,CircuitPython的环境就搭建完成了。

 4、运行第一个CircuitPython程序

默认CIRCUITPY磁盘里会有个code.py的文件,里面就是要运行的CircuitPython代码,用任意编辑器打开,将其内容修改为print("Hello CircuitPython"),并保存。保存的时候开发板会自动重启,然后在板载显示屏上就能看到Hello CircuitPython字样了。

 


 

二、控制屏幕显示中文

控制屏幕显示文字信息需要用到CircuitPython Libraries,不能像打印Hello World一样仅使用内建的modules实现。

因此,第一步需要获取到相关的Libraries。通过查看CircuitPython的官方文档,可以找到Libraries的下载链接:https://circuitpython.org/libraries。

根据开发板使用的CircuitPython的版本选择相应的Libraries版本进行下载。

下载完成后,解压以后会看到比较重要的两个文件夹,一个是examples,另外一个是lib。其中examples是开发板的相关的例程,lib就是我们需要的一些Libraries。例程和Libraries都非常全面。

对于板载显示屏,examples目录下也提供了许多的例程,可以参考这些例程进行修改使其支持中文的显示。

基于这些例程和lib,如果要显示中文,基本上只需要提供中文字库就行了,没有其它太多的改动,还是比较简单的。

如下使我根据例程修改的显示中文的CircuitPython程序,改动只有三处:

①将字库替换为中文字库

②设置要显示的文本

③设置要显示的文本的坐标

三个改动中比较困难的是中文字库的生成。网上下载的bdf的字库一般都比较大,无法放入开发板中,开发板只能放差不多2M左右的文件。我的做法是将bdf转换为pcf格式,使用的工具是bdftopcf,这个工具貌似只有linux版本,没有找到windows下的对应工具。Linux下通过如下命令进行安装:

apt-get update

apt-get install xfonts-utils

使用方法:

bdftopcf font.bdf > font.pcf

将font.bdf替换为实际的BDF字体文件名。执行此命令,将会将BDF字体转换为PCF格式,并生成名为font.pcf的文件。

得到.pcf中文字库后,将其拷贝到开发板磁盘的fonts目录下,如果没有fonts目录,需要创建一个fonts目录。

再将对应的lib文件拷贝到开发板磁盘下的lib目录下:

最后将代码拷贝到code.py文件中保存,保存完成后,稍等一会就能看到屏幕上显示了对应的中文文字信息。

code.py文件内容:

# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT

"""
This example uses adafruit_display_text.label to display text using a custom font
loaded by adafruit_bitmap_font
"""

import board
from adafruit_display_text import label
from adafruit_bitmap_font import bitmap_font

# use built in display (MagTag, PyPortal, PyGamer, PyBadge, CLUE, etc.)
# see guide for setting up external displays (TFT / OLED breakouts, RGB matrices, etc.)
# https://learn.adafruit.com/circuitpython-display-support-using-displayio/display-and-display-bus
display = board.DISPLAY

# try uncommenting different font files if you like
font_file = "fonts/HZZK_13px.pcf"
# font_file = "fonts/Junction-regular-24.pcf"

# Set text, font, and color
text = "永和九年,岁在癸丑,暮春之初,\n"\
       "会于会稽山阴之兰亭,修禊事也。\n"\
       "群贤毕至,少长咸集。此地有崇山\n"\
       "峻岭,茂林修竹,又有清流激湍,\n"\
       "映带左右,引以为流觞曲水,列坐其次。"
font = bitmap_font.load_font(font_file)
color = 0xFF00FF

# Create the text label
text_area = label.Label(font, text=text, color=color)

# Set the location
text_area.x = 0
text_area.y = 8

# Show it
display.show(text_area)

while True:
    pass

 


 

 

最新回复

显示的效果挺不错的      详情 回复 发表于 2023-8-23 09:24
点赞(2) 关注(1)
 
 

回复
举报

280

帖子

7

TA的资源

一粒金砂(高级)

沙发
 

介绍的很详细,不知大佬能否把转换完的字库也分享一下。

点评

字库文件传不上来,不知道为什么,改掉后缀名都不行。其它文件都可以上传。  详情 回复 发表于 2023-8-22 20:14
 
 
 

回复

6842

帖子

11

TA的资源

版主

板凳
 
帖子写得非常详细,感谢分享,希望看到更多更优秀的作品!
 
 
 

回复

540

帖子

3

TA的资源

纯净的硅(初级)

4
 
sipower 发表于 2023-8-22 10:35 介绍的很详细,不知大佬能否把转换完的字库也分享一下。

字库文件传不上来,不知道为什么,改掉后缀名都不行。其它文件都可以上传。

 
 
 

回复

6149

帖子

6

TA的资源

版主

5
 

显示的效果挺不错的   

个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表