1. 程式人生 > >MicroPython例項之TPYBoard開發板控制OLED顯示中文

MicroPython例項之TPYBoard開發板控制OLED顯示中文

0x00 前言

之前看到一篇文章是關於TPYBoard v102控制OLED屏顯示的,看到之後就想嘗試一下使用OLED屏來顯示中文。最近利用空餘時間搞定了這個實驗,特此將實驗過程及原始碼分享出來,方便以後使用。

0x01 實驗器材

TPYBoard v102 開發板 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.2回到主介面,在輸入框中輸入“我”點選[生成字模]。

 


取得的字模資料如下:

 


2.2將取到的字模資料新增到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
    ],#國
}


1、在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通訊方式,TPYBoard v102帶有2個SPI介面,我用的SPI1。

 


具體接線方法如下:

0x04 效果展示

硬體接線OK後,將原始碼全部拷貝到TPYBaord v102載入的磁碟中,按下RST按鍵復位或者使用Putty軟體Ctrl+D軟復位,重新執行效果如下:

 

相關推薦

MicroPython例項TPYBoard開發控制OLED顯示中文

0x00 前言 之前看到一篇文章是關於TPYBoard v102控制OLED屏顯示的,看到之後就想嘗試一下使用OLED屏來顯示中文。最近利用空餘時間搞定了這個實驗,特此將實驗過程及原始碼分享出來,方便以後使用。 0x01 實驗器材 TPYBoard v102 開發板 1塊(某寶上可以買到,價格不貴)

MicroPythonTPYBoard v102開發控制OLED顯示中文

關於 oar 文章 鏈接 while 來源 [1] .html nload   轉載請以鏈接形式註明文章來源,公眾號:MicroPython玩家匯   0x00前言   之前看到一篇文章是關於TPYBoardv102控制OLED屏顯示的,看到之後就想嘗試一下使用OLED屏來

MicroPython教程TPYBoard開發DIY小型家庭氣象站

rop elf 設備 ast reg 硬件 2種 sci 讀取   眾所周知,iPhone6/6Plus內置氣壓傳感器,不過大家對於氣壓傳感器還是很陌生。跟字面的意思一樣,氣壓傳感器就是用來測量氣壓的,但測量氣壓對於普通的手機用戶來說又有什麽作用呢?   海拔高度測量   

Micropython教程TPYBoard開發驅動舵機教程(蘿蔔學科程式設計教育)

    大家應該都看到過機器人的手臂啊腿腳啊什麼的一抽一抽的在動彈吧...是不是和機械舞一樣的有節奏,現在很多機器人模型裡面的動力器件都是舵機。     但是大家一般見到的動力器件都是像步進電機,直流電機這一類的動力器件,應該對舵機比較陌生。(蘿蔔教育學科程式設計tp

Micropython教程TPYBoard開發製作電子時鐘(蘿蔔學科程式設計教育)

    1.實驗目的     1. 學習在PC機系統中擴充套件簡單I/O?介面的方法。     2. 什麼是SPI介面。     3. 學習TPYBoard I2C介面的用法。     4. 學習LCD511

MicroPython實戰TurnipBit開發DIY電子時鐘

行數據 ini rep 模塊 技術分享 pass lee .com I/O 一、 實驗目的: ?學習在PC機系統中擴展簡單I/O 接口的方法 ?學習TurnipBit拼插編程 ?學習TurnipBit擴展板與DS3231時鐘模塊連接接線方式 ?學習

Micropython教程TPYBoard DIY超聲波測距儀例項演示

1.實驗目的     1. 學習在PC機系統中擴充套件簡單I/O?介面的方法。     2. 進一步學習編制資料輸出程式的設計方法。     3. 學習超聲波模組的測距原理。     4. 學習LCD5110接線方法  

Micropython教程TPYBoard DIY金屬探測儀例項演示(蘿蔔學科程式設計教育)

    1.實驗目的     1. 學習在PC機系統中擴充套件簡單I/O?介面的方法。     2. 進一步學習編制資料輸入輸出程式的設計方法。     3. 學習LJ12A3-4-Z/BX 金屬接近開關的工作原理。  

TPYBoard開發帶你輕松玩轉MicroPython

性價比 擁有 開發板 大小 虛擬 背景 工業 使用 中一 說到MicroPython,也許有人會感到陌生。而說到和它密切相關的Python,是否會恍然大悟呢?Python屬於解釋型語言,1989年才開發完成的Python顯然非常年輕。然而經過數十年的磨礪,如今Python已

TPYBoard開發搭建,實現隱祕通訊

一、準備工作 lTPYBoard v102(簡稱v102) 1塊 lTPYBoard v202(簡稱v202) 1塊 l杜邦線、MicroUSB資料線 若干 (成本100元以內,某寶上可以買到) 附上鍊接:https://item.taobao.com/item.htm?spm=a

如何製作一個Arduino開發控制的AM/FM/SW無線電收音機

本篇文章將主要介紹使用Si4844-A10模擬調諧無線電接收器和Arduino開發板製作成一個全功能的多頻段收音機。 使用單晶片收音機的想法很吸引人。這個想法對我來說特別有意思,因為坦率地說,我羨慕與製作無線電接收器有關的模擬技巧。當我瀏覽該領域的電路文獻時,我

如何使用Arduino開發控制伺服電機

在本篇文章中,我們將瞭解伺服電機的工作原理以及如何使用Arduino開發板和PWM驅動器PCA9685控制伺服電機。伺服電機種類繁多,它們的主要特徵是能夠精確控制軸的位置。伺服電機是一種閉環系統,它使用位置反饋來控制其運動和最終位置。 在工業型伺服電機中,位置反

Linux入門入手開發開發環境的搭建 2016.5.7

這是我的關於Linux的第一篇文章,這個Linux系統程式設計系列的部落格用於定期整理我學習Linux過程的一些知識,主要目的是記錄自己的學習過程,利用寫部落格的過程來梳理自己的知識。 一、學習Linux的初衷 大二下學期時,因為一個叫電腦鼠(MicroMouse)的競賽開

如何使用驅動器A4988和Arduino開發控制步進電機

在本篇文章中,我們將學習如何使用A4988步進驅動器和Arduino開發板控制步進電機。 概述 A4988是一款用於控制雙極步進電機的微步進驅動器,內建轉換器,易於操作。這意味著我們可以用控制器的2個引腳來控制步進電機,一個用於控制旋轉方向,另一個用於控制步數。 驅動器提供

STM32例項LED燈閃爍控制以及相關注意事項

在本例項中,主要是為了實現LED燈的閃爍。首先分析LED的驅動方式,本實驗中使用的是OpenM3V,內建8個LED均採用灌流方式驅動(低電平亮)。如果想要實現其閃爍,則需要給相應埠持續不斷的高低交替電

開發的lcd 顯示

一  實驗內容簡要描述1.實驗目的學會驅動程式的編寫方法,配置S3C2410的LCD驅動,以及在LCD屏上顯示包括bmp和jpeg兩種格式的圖片2.實驗內容 (1)分析S3c2410實驗箱LCD以及LCD控制器的硬體原理,據此找出相應的硬體設定引數,參考xcale實驗箱關於lcd的設定,完成s3c2410實

navicat for mysql學習道:navicat for mysql 顯示中文亂碼解決辦法

在“連線屬性”的設定中,高階-“使用mysql字符集”去掉鉤,並且將編碼改為10008-GB2312. 然後進入navicat的控制檯後,show variables like 'char%';命令後如下: +--------------------------+-----------------------

oled顯示中文字母

使用PCtoLCD2002進行漢字取模說明,主要設定如下: 1、選擇字母模式        2、選擇選項,設定一些生成字母格式              常見的C51格式,控制每行顯示的資料個數,液晶面板色彩等。        3、例子說明,以顯示---部落格--兩個字

TPYBoard:一款可以發揮無限創意的MicroPython開發

開發十年,就只剩下這套架構體系了! >>>   

藍橋杯實例開發特點

單片機 以及 三種 one size 分享 總結 為什麽 實驗 本人之前參加了藍橋杯,下面我將總結一下我的經歷,由於本人技能有限,請多見諒! 我之前用過幾種51的板子,說說藍橋杯的板子: 首先開發板設置了三種芯片的插座,說實話,我估計設計者是出於性價比高的考慮,如果