转载请以链接形式注明文章来源,公众号: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软复位,重新运行效果如下:


  

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

  1. MicroPython实例之TPYBoard开发板控制OLED显示中文

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

  2. [Micropython] TPYBoard STM32F407开发板运行第一个脚本

    从这篇教程开始将动手在TPYBoard STM32F407开发板上运行 Python 脚本,下面教大家拿到这个开发板后怎么用!(该款开发板某宝上有售) 1 连接开发板 通过 USB 线连接你的 PC ...

  3. TPYBoard v202开发板通过I2C协议驱动oled

    最近无聊的时候研究了一下TPYBoard v202开发板,发现网上TPYBoard开发驱动oled的这块资料比较少,本人测试成功后给大家分享一下经验 下面通过代码讲解一下 1.首先需要导包, 在网上下 ...

  4. Putty连接TPYBorad v102 开发板教程

    第一步:下载Putty软件 http://www.micropython.net.cn/download/tool/3.html 第二步:通过USB数据线将TPYBorad与PC相连 第三步:打开设备 ...

  5. 东芝开发板驱动OLED模块显示LOGO图片

    前言 在之前的两篇评测文章: 使用系统定时器SysTick实现精确延时微秒和毫秒函数 东芝MCU实现位带操作 介绍了系统SysTick实现精确延时,GPIO的输入输出使用,并实现了位带方式操作GPIO ...

  6. 使用Arduino开发板控制步进电机

    目前为止,我还没有真正深入了解过电机,特别是步进电机. 最近我在计划一个项目,需要相对精确的电机控制,所以可能会使用到步进电机,但很快就意识到我首先应该更多地了解这些. 本篇文章主要介绍我到目前为止学 ...

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

    问题: 开发板根文件系统目录: 运行./camera显示: 问题解决: 1.排除根目录路径问题: 2. 加入静态链接库即无问题,但是编译后的".o"文件大小突增,而且也不可能每次编 ...

  8. QT5.4.1在ARM开发板上不能显示汉字

    在linux下正常的程序,移植到ARM上,中文不能显示.网上好多介绍,一头雾水.查看其中话题是关于中文显示的(http://www.qtcn.org/bbs/simple/?t55852.html). ...

  9. TX2开发板Ubuntu16.04安装中文输入法

    打开终端输入安装输入法: sudo apt-get install fcitx fcitx-googlepinyin fcitx-module-cloudpinyin fcitx-sunpinyin ...

随机推荐

  1. jdk7jdk8新特性概述

    在oracle停止对jdk6更新,jdk8发布之后,公司终于要把生产环境更新到jdk7,下面列一下jdk7,8的可能需要关注的新特性. jdk7 G1垃圾回收 fork-join框架 二进制变量 Sw ...

  2. POJ 2195Going Home(网络流之最小费用流)

    题目地址:id=2195">POJ2195 本人职业生涯费用流第一发!!快邀请赛了.决定还是多学点东西.起码碰到简单的网络流要A掉.以后最大流费用流最小割就一块刷. 曾经费用流在我心目 ...

  3. Android之本地相冊图片选取和拍照以及图片剪辑

    转载请注明出处:http://blog.csdn.net/loveyaozu/article/details/51160482 相信有非常多Android开发者在日常开发中,因为项目需求,须要我们的A ...

  4. ArcGIS教程:创建特征

    摘要 创建由输入样本数据和一组栅格波段定义的类的 ASCII 特征文件. 使用方法 · 输出特征文件应使用扩展名 .gsg. · 输入栅格波段和输入栅格或要素样本数据必须具有重叠范围.将仅为公共区域计 ...

  5. 黑马day16 jquery&amp;内容过滤选择器&amp;可见度选择器

    内容过滤选择器的过滤规则主要体如今它所包括的子元素和文本内容上 .:contains(text) 使用方法: $("div:contains('John')")    返回值  集 ...

  6. bzoj1513【POI2006】Tet-Tetris 3D

    1513: [POI2006]Tet-Tetris 3D Time Limit: 30 Sec  Memory Limit: 162 MB Submit: 733  Solved: 245 [Subm ...

  7. Docker + Jenkins 持续部署 ASP.NET Core 项目

    Docker 是个好东西,特别是用它来部署 ASP.NET Core Web 项目的时候,但是仅仅的让程序运行起来远远不能满足我的需求,如果能够像 DaoCloud 提供的持续集成服务那样,检测 gi ...

  8. ML02: 机器学习KNN 算法

    摘要: 一张图说清楚KNN算法 看下图,清楚了吗?   没清楚的话,也没关系,看完下面几句话,就清楚了. KNN算法是用来分类的. 这个算法是如何来分类的呢? 看下图,你可以想想下图中的 『绿色圆点』 ...

  9. 前端笔记---塌陷top

    一.在设置盒子div的子元素的外边框margin-top,子元素属性不起作用,父元素下沉: <!DOCTYPE html> <html lang="en"> ...

  10. Asp.net mvc 知多少(一)

    本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...