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軟復位,重新運行效果如下:

 


  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM