esp32驅動SSD1306的oled顯示漢字(micropython)


1.完整源碼:

   主函數oled.py

from ssd1306 import SSD1306_SPI
from ssd1306 import SSD1306
import font
import machine

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

  offset_=0

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

  x_axis=(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):

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

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

      offset_+=16
        
        
WIDTH = const(128)
HEIGHT = const (64)
pdc = machine.Pin(27, machine.Pin.OUT)
pcs = machine.Pin(26, machine.Pin.OUT)


prst = machine.Pin(18, machine.Pin.OUT)

spi = machine.SPI(baudrate=100000, polarity=1, phase=0, sck=machine.Pin(0), mosi=machine.Pin(2), miso=machine.Pin(4))

spi.init(baudrate=200000) # set the baudrate

ssd = SSD1306_SPI(WIDTH, HEIGHT, spi, pdc, prst, pcs)

draw_chinese(ssd,'我',0,0)
draw_chinese(ssd,'我',1,1)
draw_chinese(ssd,'我',2,2)
draw_chinese(ssd,'我',3,3)

ssd.show()

  字體包font.py

byte2={
  0xE997B9:
    [0x20,0x17,0x00,0x42,0x41,0x5F,0x41,0x41,0x4F,0x49,0x49,0x49,0x49,0x41,0x41,0x40,
    0x00,0xFC,0x04,0x04,0x04,0xF4,0x04,0x04,0xE4,0x24,0x24,0xA4,0x44,0x04,0x14,0x08],#鬧
    
    
  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],#我
    
  
    
  0xE9929F:
    [0x10,0x10,0x3C,0x20,0x41,0xBD,0x11,0x11,0xFD,0x11,0x11,0x10,0x14,0x18,0x10,0x00,
    0x20,0x20,0x20,0x20,0xFC,0x24,0x24,0x24,0x24,0xFC,0x24,0x20,0x20,0x20,0x20,0x20],#鍾
  0xE697B6:
    [0x00,0x00,0x7C,0x44,0x45,0x44,0x44,0x7C,0x44,0x44,0x44,0x44,0x7C,0x44,0x00,0x00,
    0x08,0x08,0x08,0x08,0xFE,0x08,0x08,0x08,0x88,0x48,0x48,0x08,0x08,0x08,0x28,0x10] 
}

 2. esp硬件spi接線

    oled                                  esp32                            

    GND                                 GND

    VCC                                 VCC

     D0                                    P0(SCK) 

     D1                                    P2(MOSI)

     RES                                 P18(RST)

     DC                                   P27(DC)

     CS                                   P26(CS)

 3. 漢字取模

    使用工具PCtoLCD2002完美版,參數設置如下圖:

  

  生成字節數組:

  

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

4.顯示效果

 


免責聲明!

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



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