MicroPython之TPYBoard v102开发板控制OLED显示中文

  转载请以链接形式注明文章来源,公众号:MicroPython玩家汇

  0x00前言

  之前看到一篇文章是关于TPYBoardv102控制OLED屏显示的,看到之后就想尝试一下使用OLED屏来显示中文。最近利用空余时间搞定了这个实验,特此将实验过程及源码分享出来,方便以后使用。

  0x01实验器材

  TPYBoardv102开发板1块

  0.96寸OLED显示屏(ssd1306)1块

  杜邦线若干

  0x02前期准备

  1、 首先我们先来看一下,之前参考的OLED显示字符的文章。

  http://docs.tpyboard.com/zh/latest/tpyboard/tutorial/v10x/oled/?highlight=oled

  文章中的源码文件都已上传到GitHub。地址:https://github.com/TPYBoard/developmentBoard/tree/master/TPYBoard-v10x-master

  找到[11.学习使用OLED显示屏]里面就是源程序。我就是在font.py和ssd1306.py基础上做的开发。

  2、 在font.py中增加中文字模。

  font.py中已有英文、数字和符号的字符,我们需要做中文的字模添加到font.py中。

  2.1首先下载字模提取工具。地址:http://tpyboard.com/download/tool/187.html

  解压,双击运行PCtoLCD2002.exe。

  2.2 顶端菜单栏,点击[选项]按下方图片设置,设置完毕后点击[确定]保存设置。

  2.3 回到主界面,在输入框中输入“我”点击[生成字模]。

  取得的字模数据如下:


0x04,0x0E,0x78,0x08,0x08,0xFF,0x08,0x08,0x0A,0x0C,0x18,0x68,0x08,0x08,0x2B,0x10

0x40,0x50,0x48,0x48,0x40,0xFE,0x40,0x44,0x44,0x48,0x30,0x22,0x52,0x8A,0x06,0x02/*"我",0*/

  2.4 将取到的字模数据添加到font.py中。

  绿色框中是“我”的16进制utf-8编码。

  在线工具:http://tool.lu/hexstr/

  参照以上方法,我依次添加了“我爱你祖国”这5个汉字的字模。


byte2 = {

0xe68891:

[

0x04,0x0E,0x78,0x08,0x08,0xFF,0x08,0x08,0x0A,0x0C,0x18,0x68,0x08,0x08,0x2B,0x10,

0x40,0x50,0x48,0x48,0x40,0xFE,0x40,0x44,0x44,0x48,0x30,0x22,0x52,0x8A,0x06,0x02,

],#我

0xe788b1:

[

0x00,0x01,0x7E,0x22,0x11,0x7F,0x42,0x82,0x7F,0x04,0x07,0x0A,0x11,0x20,0x43,0x1C,

0x08,0xFC,0x10,0x10,0x20,0xFE,0x02,0x04,0xF8,0x00,0xF0,0x10,0x20,0xC0,0x30,0x0E,

],#爱

0xe4bda0:

[

0x08,0x08,0x08,0x11,0x11,0x32,0x34,0x50,0x91,0x11,0x12,0x12,0x14,0x10,0x10,0x10,

0x80,0x80,0x80,0xFE,0x02,0x04,0x20,0x20,0x28,0x24,0x24,0x22,0x22,0x20,0xA0,0x40,

],#你

0xe7a596:

[

0x20,0x11,0x11,0xF9,0x09,0x11,0x11,0x39,0x55,0x95,0x11,0x11,0x11,0x11,0x17,0x10,

0x00,0xF8,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x08,0xFE,0x00

],#祖

0xe59bbd:

[

0x00,0x7F,0x40,0x40,0x5F,0x41,0x41,0x4F,0x41,0x41,0x41,0x5F,0x40,0x40,0x7F,0x40,

0x00,0xFC,0x04,0x04,0xF4,0x04,0x04,0xE4,0x04,0x44,0x24,0xF4,0x04,0x04,0xFC,0x04

],#国

}

  3、 在ssd1306.py文件中增加了draw_chinese显示中文的方法。


def draw_chinese(self,ch_str,x_axis,y_axis):

offset_=0

y_axis=y_axis*8#中文高度一行占8个

x_axis=127-(x_axis*16)#中文宽度占16个

for k in ch_str:

code = 0x00#将中文转成16进制编码

data_code = k.encode("utf-8")

code |= data_code[0]<<16

code |= data_code[1]<<8

code |= data_code[2]

byte_data=font.byte2[code]

for y in range(0,16):

a_=bin(byte_data[y]).replace(‘0b‘,‘‘)

while len(a_)<8:

a_=‘0‘+a_

b_=bin(byte_data[y+16]).replace(‘0b‘,‘‘)

while len(b_)<8:

b_=‘0‘+b_

for x in range(0,8):

self.set_pixel(x_axis-x-offset_,y+y_axis,int(a_[x]))#文字的上半部分

self.set_pixel(x_axis-x-8-offset_,y+y_axis,int(b_[x]))#文字的下半部分

offset_+=16

  github源码地址:https://github.com/TPYBoard/developmentBoard/tree/master/TPYBoard-v10x-master/

  找到[20.学习OLED显示中文]。

  0x03硬件连接

  本次实验使用OLED的SPI通讯方式,TPYBoardv102带有2个SPI接口,我用的SPI1。

  具体接线方法如下:


TPYBoard v102 (SPI1)


OLED显示屏(SPI)


3.3V


VCC (2.8V~5.5V)


GND


GND


X6(SCK)


SCK/D0


X8(MOSI)


SDA/D1


Y10


RES


Y9


DC


NC(悬空)


CS

  0x04效果展示

  硬件接线OK后,将源码全部拷贝到TPYBaordv102加载的磁盘中,按下RST按键复位或者使用Putty软件Ctrl+D软复位,重新运行效果如下:


  

时间: 2024-10-11 12:41:35

MicroPython之TPYBoard v102开发板控制OLED显示中文的相关文章

MicroPython实战之TurnipBit开发板DIY电子时钟

一. 实验目的: ?学习在PC机系统中扩展简单I/O 接口的方法 ?学习TurnipBit拼插编程 ?学习TurnipBit扩展板与DS3231时钟模块连接接线方式 ?学习时钟模块的使用 二.所需原器件: ?TurnipBit一块 ?TurnipBit扩展板一块 ?DS3231时钟模块一个 ?杜邦线若干 ?usb数据线一条 三.实验原理: 1. DS3231时钟模块原理 DS3231(图11-12)是一个时钟模块,其实就是像一个电子时钟,它自身带有电池,当设置好时间后,DS3231就会自动走时.

开发板编译./camera显示-/bin/sh: ./camera: not found解决方案

问题: 开发板根文件系统目录: 运行./camera显示: 问题解决: 1.排除根目录路径问题: 2. 加入静态链接库即无问题,但是编译后的".o"文件大小突增,而且也不可能每次编译都使用静态编译 故锁定问题出在动态链接库上. 3.根目录加载Linux所需的所有动态链接库 Linux所有动态链接库全都存放在:/usr/local/arm/4.3.2/arm.../libc/arm4t/lib/*下,全部复制到根文件系统的/lib/下即可! 解决 原文地址:https://www.cnb

3.MySql在DOS控制下显示中文出现乱码解决方案

MySQL客户端使用惯了,忽然转到dos命令下,会有些不太适应,对于数据库中数据的展示可能会有问题[中文显示乱码] 以前也遇到过这个问题,今天解决了一下啊,mysql数据库默认是不支持中文.所以需要把默认编码变为gb2312[UTF8有时对中文支持的不行). 可进行如下配置: 首先,进入MySQL的安装目录,找到my.ini文件,找到[client] port=3306[mysql]default-character-set=gb2312把default-character-set设置成gb23

基于MicroPython的TPYBoard超声波倒车雷达系统

前言 倒车雷达是汽车驻车或者倒车时的安全辅助装置,能以声音或者更为直观的显示告知驾驶员周围障碍物的情况,解除了驾驶员驻车.倒车和起动车辆时前后左右探视所引起的困扰,并帮助驾驶员扫除了视野死角和视线模糊的缺陷.倒车雷达主要由超声波传感器.控制器和显示器或蜂鸣器等组成,如下: 关注公众号"MicroPython玩家汇"可获取完整源代码 超声波传感器:主要功能是发出和接收超声波信号,然后将信号输入到主机里面,通过显示设备显示出来. 控制器:对信号进行处理,计算出车体与障碍物之间的距离及方位.

MicroPython:基于TPYBoard集合MAX7219点阵模块制作表白女神神器

前言 又是一年毕业季,只有到了毕业季才会意识到自己又离青春远了一大步.毕业后,大家都各奔东西了,如果这个时候有喜欢的人还是 藏在心底的话,不免会给人生留下遗憾.为了不留遗憾,不老套,制作一款表白神器,是不是会更容易表白成功呢? 之前使用8*8LED点阵模块做过一款跳动的心,因为是直接用的点阵模块,所以控制就用了16个IO,未免有些繁琐,浪费资源.最近发 现了一个好东西--MAX7219多位LED 显示驱动器.使用该驱动器加上点阵屏或者数码管,驱动起来特别方便简单,而且加上电源脚 也不过就5根线而

TPYBoard V102:能跑Python的stm32开发板

近来micropython语言做硬件编程很火,随之而来的就开始带动着支持micropython语言编程的开发板也开始火的发烫,今天小编就来和大家介绍一款很经典的micropython开发板-TPYBoardV102开发板. 一.板载硬件资源介绍 按照惯例先来介绍一个这块开发板的硬件组成,个人感觉这个开发板的性能还是属于相当不错的,下面详细介绍一下. TPYBoardV102是以遵照MIT许可的MicroPython为基础,由TurnipSmart公司制作的一款MicroPython开发板,它基于

MicroPython TPYBoard v102 驱动28BYJ-48步进电机

实验目的 了解步进电机的工作原理 学习步进电机的驱动方法 实验器材 TPYBoard v102 1块 微型步进电机(28BYJ-48) 1个 步进电机驱动板(ULN2003APG) 1块 micro USB数据线 1条 杜邦线 若干 步进电机的介绍 本次实验采用的是28BYJ-48 四相八拍电机,电压DC5V~12V. 24BYJ48名称的含义: 24:电机外径24mm B:步进电机中步字的拼音首字母 Y:永磁中永字的拼音首字母 J:减速的减字拼音首字母 48:四相8步 实物图 工作原理 步进电

超高性价比!基于IMX8M mini的核心板及开发板

前言:近几年来,随着AIOT技术的演进以及工业4.0的飞速发展,强大性能,成本领先,供货周期长的嵌入式板卡已经成为这两类设备硬件开发的普遍需求. 为响应行业应用和满足客户需求,米尔推出了基于NXP公司i.MX 8M Mini系列芯片的MYC-C8MMX系列核心板及开发板,现已隆重上市发售.MYD-C8MMX开发板提供LVDS显示(单路/双路).MIPI-DSI信号引出.MIPI-CSI摄像头接口.支持音频输入输出.千兆网.多路USB.多串口.WIFI及蓝牙模块等丰富的接口:同时核心板批量性价比高

TPYBoard开发板带你轻松玩转MicroPython

说到MicroPython,也许有人会感到陌生.而说到和它密切相关的Python,是否会恍然大悟呢?Python属于解释型语言,1989年才开发完成的Python显然非常年轻.然而经过数十年的磨砺,如今Python已经成为最具人气的开源编程语言之一.MicroPython顾名思义就是运行在MCU的Python,换句话说单片机可以使用Python语言来控制了. MicroPython:利用Python与MCU通信 目前C/C++语言在嵌入式系统中的代码占比中一直处于王者地位,但近几年MicroPy