之前看到一篇文章是关于TPYBoard v102控制OLED屏显示的,看到之后就想尝试一下使用OLED屏来显示中文。最近利用空余时间搞定了这个实验,特此将实验过程及源码分享出来,方便以后使用。
http://docs.tpyboard.com/zh/latest/tpyboard/tutorial/v10x/oled/?highlight=oled
文章中的源码文件都已上传到GitHub。地址:https://github.com/TPYBoard/developmentBoard/tree/master/TPYBoard-v10x-master
- 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
- ],#国
- }
- 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