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软复位,重新运行效果如下:
MicroPython之TPYBoard v102开发板控制OLED显示中文的更多相关文章
- MicroPython实例之TPYBoard开发板控制OLED显示中文
0x00 前言 之前看到一篇文章是关于TPYBoard v102控制OLED屏显示的,看到之后就想尝试一下使用OLED屏来显示中文.最近利用空余时间搞定了这个实验,特此将实验过程及源码分享出来,方便以 ...
- [Micropython] TPYBoard STM32F407开发板运行第一个脚本
从这篇教程开始将动手在TPYBoard STM32F407开发板上运行 Python 脚本,下面教大家拿到这个开发板后怎么用!(该款开发板某宝上有售) 1 连接开发板 通过 USB 线连接你的 PC ...
- TPYBoard v202开发板通过I2C协议驱动oled
最近无聊的时候研究了一下TPYBoard v202开发板,发现网上TPYBoard开发驱动oled的这块资料比较少,本人测试成功后给大家分享一下经验 下面通过代码讲解一下 1.首先需要导包, 在网上下 ...
- Putty连接TPYBorad v102 开发板教程
第一步:下载Putty软件 http://www.micropython.net.cn/download/tool/3.html 第二步:通过USB数据线将TPYBorad与PC相连 第三步:打开设备 ...
- 东芝开发板驱动OLED模块显示LOGO图片
前言 在之前的两篇评测文章: 使用系统定时器SysTick实现精确延时微秒和毫秒函数 东芝MCU实现位带操作 介绍了系统SysTick实现精确延时,GPIO的输入输出使用,并实现了位带方式操作GPIO ...
- 使用Arduino开发板控制步进电机
目前为止,我还没有真正深入了解过电机,特别是步进电机. 最近我在计划一个项目,需要相对精确的电机控制,所以可能会使用到步进电机,但很快就意识到我首先应该更多地了解这些. 本篇文章主要介绍我到目前为止学 ...
- 开发板编译./camera显示-/bin/sh: ./camera: not found解决方案
问题: 开发板根文件系统目录: 运行./camera显示: 问题解决: 1.排除根目录路径问题: 2. 加入静态链接库即无问题,但是编译后的".o"文件大小突增,而且也不可能每次编 ...
- QT5.4.1在ARM开发板上不能显示汉字
在linux下正常的程序,移植到ARM上,中文不能显示.网上好多介绍,一头雾水.查看其中话题是关于中文显示的(http://www.qtcn.org/bbs/simple/?t55852.html). ...
- TX2开发板Ubuntu16.04安装中文输入法
打开终端输入安装输入法: sudo apt-get install fcitx fcitx-googlepinyin fcitx-module-cloudpinyin fcitx-sunpinyin ...
随机推荐
- linux工作中遇到的问题总结---更新中
今天这个,严格来说不算一篇文章,我只想把我工作中遇到的问题分享给大家,让大家少犯错误. 1.安装rmp包时出现错误 :header V3 DSA signature: nokey ,key id .. ...
- UITableView使用过程中可能遇到的问题
前言:记录一些UITableView使用过程中可能遇到的问题 环境:Xcode9 解决UITableViewStyleGrouped类型的TableView的cell距离顶部有距离的问题: table ...
- ubuntu14.04 升级mysql到5.7版本
Ubuntu14.04默认安装的是mysql5.5,由于开发需要支持utf8mb4,因此需要升级到mysql5.7 默认情况下,apt是无法直接升级到mysql5.7的,因此需要额外设置 首先,备份数 ...
- 王立平--WebView的缓存机制
WebView的缓存能够分为页面缓存和数据缓存. 1. 页面缓存是指载入一个网页时的html.JS.CSS等页面或者资源数据. 这些缓存资源是因为浏览器的行为而产生.开发人员仅仅能通过配置HTTP ...
- Explicit Semantic Analysis (ESA)
有别于LSA (Latent Semantic Analysis), 下列文章提出一种ESA (Explicit Semantic Analysis), 并介绍怎样使用ESA来进行语义相关性和文本分类 ...
- python抓取历年特码开奖记录
背景: 小时候,有种游戏,两个主人公:白XX和曾XX,每个家庭把他俩像活菩萨一样供着,供他们吃,供他们穿 做生意的老板为了这两位活菩萨,关门大吉 农民为了这两位活菩萨卖牛卖田变卖家产 做官的为了这两位 ...
- Effective Java 第三版——6. 避免创建不必要的对象
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- 对jbox2d引擎的一些回顾与思考(swing实现demo)
JBox2d回顾与思考 jbox2d 是 box2d 的java移植,感觉国内网络上针对jbox2d的教程还比较少(通常是box2d).回顾一下这几天的学习历程顺便写下博主的所思所想. swing实现 ...
- java泛型学习(一)
泛型也叫做参数化类型,顾名思义的去理解,就是把类型作为一个参数.类比方法的传参,我们举个例子. class A{ public void getX(int x){ System.out.println ...
- JavaSe:UncaughtExceptionHandler
Java中,出现对于异常的处理,通常是使用try{}catch()来捕获处理的.但是在使用trycatch时,未必会将所有的异常都捕获到,所以方法声明时可以有throws xxxException. ...