micropython 显示中文方法指导

博客总结了MicroPython显示中文的方法,根据中文字符量大小选择不同方式。字符量不大时,推荐取模方法,体积小速度快但制作麻烦;字符量大时,需用字库,如fb增强固件,能显示所有字符但使用麻烦、字库体积大。作者还分享了修改源码的经历。
部署运行你感兴趣的模型镜像

关于micropython如何显示中文,方法有很多,这里做一个总结。
首先没有好的坏的方法,只有看你的需求是否适合。
主要看你用的中文字符量大不大。
不大,只显示个别字符,字符固定,几十个的,比如做简单的中文界面,这里推荐用取模的方法,优点是体积小速度快,可以直接放到py文件中,缺点是制作麻烦,做好了可以一直用。
大,比如做阅读器,想显示所有常见字符,这时候只能用字库了,网上有一些做好的,包括wangshujun大佬做的fb增强固件,五星好评,优点是能显示所有字符,缺点就是用起来麻烦些,要专用固件,而且字库体积不小,最小号的6500常用字库也要300k起,大点的,2万字的都超过1M甚至几Mb。

在我这里如果不能自己打固件的方法我不纳入自己的方法,因为不能自定义没意义,好在fb增强固件开放了源码,不过似乎因为很久没有更新,库里的源码优点问题,自己一顿瞎猜瞎改,居然弄好了,惊喜,还是要感谢那些无私开源的大佬!!!

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 如何在 SSD1306 显示屏上正确显示汉字 为了实现在SSD1306 OLED显示屏上正确显示汉字,可以采用基于GB2312字库的方式[^1]。此方法不需要手动取模,简化了开发流程。 #### 准备工作 确保已经安装`micropython-ssd1306`模块。可以通过官方站点获取该模块并按照指导完成安装过程[^2]。 #### Python代码实现 下面是一个简单的例子来展示如何配置环境以及编写必要的Python脚本来使能汉字显示功能: ```python from machine import Pin, I2C import ssd1306 import framebuf import time # 初始化I2C接口和OLED屏幕对象 i2c = I2C(scl=Pin(5), sda=Pin(4)) oled = ssd1306.SSD1306_I2C(128, 64, i2c) def draw_chinese(text, x, y): """绘制中文字符串""" buffer = bytearray(b'\xd9\xcf') * (len(text)*16) # 创建缓冲区用于存储字体数据 fb = framebuf.FrameBuffer(buffer, len(text)*16, 16, framebuf.MONO_HLSB) for idx, char in enumerate(text): code_point = ord(char)-0xA0*256 if '\u4e00'<=char<='\u9fff' else ord(char) offset = ((code_point & 0xFF) << 8 | (code_point >> 8)) - 0xa0a0 with open('gb2312.bin', 'rb') as f: f.seek(offset) font_data = list(f.read(16)) for row in range(16): byte_val = font_data[row] for col in range(8): pixel_value = (byte_val>>(7-col))&1 fb.pixel(idx*16+col,row,pixel_value) oled.blit(fb,x,y) oled.show() while True: try: text_to_show="你好世界" draw_chinese(text_to_show, 0, 0) break except Exception as e: print(e) continue ``` 这段代码首先定义了一个名为`draw_chinese()`的功能函数用来处理传入的每一个字符,并通过读取预编译好的GB2312二进制文件(`gb2312.bin`)中的相应位置的数据片段来构建每个字符的具体形态。最后调用这个函数,在指定坐标处渲染想要呈现的文字串。 注意:上述示例假设存在一个预先准备好的包含所有可能使用的ASCII码范围内的字符图形表示形式的`.bin`文件。实际应用时需根据具体需求调整路径名和其他参数设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值