一、目的

这一节我们学习如何使用我们的树莓派pico开发板raspberry pi pico来控制晶联JLX172104G-590液晶模块。

二、环境

Win10 + 树莓派pico开发板raspberry pi pico + Thonny IDE + 几根杜邦线 + 晶联JLX172104G-590液晶模块(驱动IC: ST75256,分辨率: 172*104)

接线方法:

开发板 屏幕
GPIO16 CS
GPIO20 RST
GPIO17 RS
GPIO19 SDA
GPIO18 SCK
3.3V VDD
GND VSS
3.3V LEDA

新买来的开发板,接上USB线插在电脑上,打开“我的电脑”,开发板会以磁盘的方式显示。

我们把在文末下载的固件拷贝进去,然后这个磁盘就会消失。固件就烧好了,简单吧。

从文末下载zadig-2.7.exe,安装树莓派驱动,找到com口。

PS: 如果想要开发板以磁盘方式出现,首先按住开发板上的boot键不放,然后将USB线插入电脑,然后松开boot键。就会看到了。

三、液晶屏幕驱动

st75256.py

#
# MicroPython st75256 OLED driver, SPI interfaces
#
from micropython import const
from font import bytech,ascii_table_8x16,ascii_table_5x8
import framebuf
import machine
import utime# Subclassing FrameBuffer provides support for graphics primitives
# http://docs.micropython.org/en/latest/pyboard/library/framebuf.html
class ST75256(framebuf.FrameBuffer):def __init__(self,width,height,spi,dc,res,cs,external_vcc=False):self.width=widthself.height=heightself.reset=resself.rate=10*1024*1024dc.init(dc.OUT,value=0)res.init(res.OUT,value=0)cs.init(cs.OUT,value=1)self.spi=spiself.dc=dcself.res=resself.cs=csimport timeself.res(1)time.sleep_ms(1)self.res(0)time.sleep_ms(10)self.res(1)self.external_vcc=external_vccself.pages = self.height//8self.buffer = bytearray(self.pages * self.width)super().__init__(self.buffer, self.width, self.height, framebuf.MONO_VLSB)self.init_display()def transfer_command(self,cmd):self.spi.init(baudrate=self.rate,polarity=0,phase=0)self.cs(0)self.dc(0)self.spi.write(bytearray([cmd]))self.cs(1)def transfer_data(self,buf):self.spi.init(baudrate=self.rate,polarity=0,phase=0)self.cs(0)self.dc(1)if type(buf)==type(0x11):self.spi.write(bytearray([buf]))else:self.spi.write(buf)  self.cs(1)#初始化液晶模块def init_display(self):self.reset.value(0)utime.sleep_ms(100)self.reset.value(1)utime.sleep_ms(100)self.transfer_command(0x30) #EXT=0 self.transfer_command(0x94) #Sleep out self.transfer_command(0x31) #EXT=1 self.transfer_command(0xD7) #Autoread disable self.transfer_data(0X9F) # self.transfer_command(0x32) #Analog SET self.transfer_data(0x00) #OSC Frequency adjustment self.transfer_data(0x01) #Frequency on booster capacitors 6KHzself.transfer_data(0x03) #Bias=1/11self.transfer_command(0x20) # Gray Level self.transfer_data(0x01) self.transfer_data(0x03) self.transfer_data(0x05) self.transfer_data(0x07) self.transfer_data(0x09) self.transfer_data(0x0b) self.transfer_data(0x0d) self.transfer_data(0x10) self.transfer_data(0x11) self.transfer_data(0x13) self.transfer_data(0x15) self.transfer_data(0x17) self.transfer_data(0x19) self.transfer_data(0x1b) self.transfer_data(0x1d) self.transfer_data(0x1f) self.transfer_command(0x30) #EXT=0 self.transfer_command(0x75) #Page Address setting self.transfer_data(0X00) # XS=0 self.transfer_data(0X14) # XE=159 0x28 self.transfer_command(0x15) #Clumn Address setting self.transfer_data(0X00) # XS=0 self.transfer_data(0Xff) # XE=256 self.transfer_command(0xBC) #Data scan direction self.transfer_data(0x00) #MX.MY=Normal self.transfer_data(0xA6) self.transfer_command(0xCA) #Display Control self.transfer_data(0X00) # self.transfer_data(0X9F) #Duty=160 self.transfer_data(0X20) #Nline=off self.transfer_command(0xF0) #Display Mode self.transfer_data(0X10) #10=Monochrome Mode,11=4Gray self.transfer_command(0x81) #EV control self.transfer_data(0x36) #VPR[5-0] self.transfer_data(0x04) #VPR[8-6] self.transfer_command(0x20) #Power control self.transfer_data(0x0B) #D0=regulator  D1=follower  D3=booste, on:1 off:0 utime.sleep_ms(100)self.transfer_command(0xAF) #Display onself.transfer_command(0x0C) #数据格式,如果设为 0x0C:表示选择 LSB(DB0)在顶,如果设为 0x08:表示选择LSB(DB0)在底 def poweroff(self):transfer_command(0x94)def poweron(self):transfer_command(0x95)def lcd_address(self,x,y,x_total,y_total):x=xy=y+4#为什么要加4呢?每四行为一列?这里的y是页,也就是行0~15行self.transfer_command(0x15) #Set Column Address self.transfer_data(x) self.transfer_data(x+x_total-1) self.transfer_command(0x75) #Set Page Address self.transfer_data(y) self.transfer_data(y+y_total-1) self.transfer_command(0x30) self.transfer_command(0x5c) def clear_screen(self):#self.lcd_address(0,0,self.width,self.pages)for i in range(self.pages):for j in range(self.width):self.transfer_data(0x00)def show(self):#显示缓冲区的内容self.lcd_address(0,0,self.width,self.pages)self.transfer_data(self.buffer)def show_buf(self,buf):#显示缓冲区的内容self.lcd_address(0,0,self.width,self.pages)self.transfer_data(buf)def text_cn(self,text,x,y):#写汉字到缓冲text=list(text.encode("utf-8"))offset_=0page=y//8page=page%self.pagesif(x>247):x=0page+=2text_= [text[i:i+3] for i in range(0,len(text),3)]#取出汉字的3字节utf-8编码for k in text_:b1=bytearray(k)#将中文3字节utf-8编码还原byte_data=bytech[b1.decode()]for i in range(0,16):self.buffer[256*page+x+i+offset_]=byte_data[i]#print(x_axis,y_axis)self.buffer[256*(page+1)+x+i+offset_]=byte_data[i+16]offset_+=16def icon(self,bmp,x,y,reverse=0):#32x32page=y//8page=page%self.pagesif(x>247):x=0page+=2for i in range(4):for j in range(32):if reverse:self.buffer[256*(page+i)+x+j]=~bmp[i*32+j]else:self.buffer[256*(page+i)+x+j]=bmp[i*32+j]def text_big(self,text,x,y,reverse=0,earse=0):#显示8x16的点阵的字符串,括号里的参数分别为(字符串,x,y坐标,是否反转,默认不反转)page=y//8page=page%self.pagesif(x>248):x=1page+=2self.earse=earsei=0text=list(text.encode("ascii"))while(i<len(text)):if((text[i]>=0x20) and (text[i]<=0x7e)):j=(text[i]-0x20)*16for n in [0,1]:for k in range(8):if(reverse==1):self.buffer[256*(page+n)+x+k]=~ ascii_table_8x16[j+k+8*n]else:self.buffer[256*(page+n)+x+k]=ascii_table_8x16[j+k+8*n]#写数据到缓冲区,每写完1字节的数据后列地址自动加1 i=i+1x+=8else:i=i+1def text_small(self,text,x,y,reverse=0,earse=0):#5x8点阵的英文字符串page=y//8page=page%self.pagesself.earse=earsei=0text=list(text.encode("ascii"))while(i<len(text)):if((text[i]>=0x20) and (text[i]<=0x7e)):j=(text[i]-0x20)*5for n in range(5):if(reverse==1):self.buffer[256*page+x+n]=~ascii_table_5x8[j+n]else:self.buffer[256*page+x+n]=ascii_table_5x8[j+n]i+=1x+=6else:i+=1#
#led driver end
#

四、字体制作

1,使用工具软件pctolcd2002制作字模,使用方法自行百度哈。

2, 字模文件代码如下font.py:

#
# 汉字字模,软件pctolcd2002,阳码,列行式,逆向、c51
#
bytech = {'计':[0x40,0x40,0x42,0xCC,0x00,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00],
'算':[0x08,0x04,0xF3,0x52,0x56,0x52,0x52,0x50,0x54,0x53,0x52,0x56,0xF2,0x02,0x02,0x00,0x10,0x10,0x97,0x55,0x3D,0x15,0x15,0x15,0x15,0x15,0xFD,0x15,0x17,0x10,0x10,0x00],
'器':[0x80,0x80,0x9E,0x92,0x92,0x92,0x9E,0xE0,0x80,0x9E,0xB2,0xD2,0x92,0x9E,0x80,0x00,0x08,0x08,0xF4,0x94,0x92,0x92,0xF1,0x00,0x01,0xF2,0x92,0x94,0x94,0xF8,0x08,0x00],
'爱':[0x80,0x64,0x2C,0x34,0x24,0x24,0xEC,0x32,0x22,0x22,0x32,0x2E,0x23,0xA2,0x60,0x00,0x00,0x41,0x21,0x91,0x89,0x87,0x4D,0x55,0x25,0x25,0x55,0x4D,0x81,0x80,0x80,0x00],
'好':[0x10,0x10,0xF0,0x1F,0x10,0xF0,0x00,0x80,0x82,0x82,0xE2,0x92,0x8A,0x86,0x80,0x00,0x40,0x22,0x15,0x08,0x16,0x61,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00],
'者':[0x20,0x20,0x24,0x24,0x24,0x24,0xBF,0x64,0x24,0x34,0x28,0x24,0x22,0x20,0x20,0x00,0x10,0x08,0x04,0x02,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00,0x00,0x00],}ascii_table_8x16=[##粗体8x16点阵的ASCII码的点阵数据,从"JLX-GB2312"型号的字库IC中读出来的国标的。
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,##space
0x00,0x00,0x38,0xFC, 0xFC,0x38,0x00,0x00, 0x00,0x00,0x00,0x0D, 0x0D,0x00,0x00,0x00,##-!-ASCII码:0X21
0x00,0x0E,0x1E,0x00, 0x00,0x1E,0x0E,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,##-"-
0x20,0xF8,0xF8,0x20, 0xF8,0xF8,0x20,0x00, 0x02,0x0F,0x0F,0x02, 0x0F,0x0F,0x02,0x00,##-#-
0x38,0x7C,0x44,0x47, 0x47,0xCC,0x98,0x00, 0x06,0x0C,0x08,0x38, 0x38,0x0F,0x07,0x00,##-$-
0x30,0x30,0x00,0x80, 0xC0,0x60,0x30,0x00, 0x0C,0x06,0x03,0x01, 0x00,0x0C,0x0C,0x00,##-%-
0x80,0xD8,0x7C,0xE4, 0xBC,0xD8,0x40,0x00, 0x07,0x0F,0x08,0x08, 0x07,0x0F,0x08,0x00,##-&-
0x00,0x10,0x1E,0x0E, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,##-'-
0x00,0x00,0xF0,0xF8, 0x0C,0x04,0x00,0x00, 0x00,0x00,0x03,0x07, 0x0C,0x08,0x00,0x00,##-(-
0x00,0x00,0x04,0x0C, 0xF8,0xF0,0x00,0x00, 0x00,0x00,0x08,0x0C, 0x07,0x03,0x00,0x00,##-)-0x80,0xA0,0xE0,0xC0, 0xC0,0xE0,0xA0,0x80, 0x00,0x02,0x03,0x01, 0x01,0x03,0x02,0x00,##-*-ASCII码:0X2A
0x00,0x80,0x80,0xE0, 0xE0,0x80,0x80,0x00, 0x00,0x00,0x00,0x03, 0x03,0x00,0x00,0x00,##-+-
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x10,0x1E, 0x0E,0x00,0x00,0x00,##-,-
0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,##---
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0C, 0x0C,0x00,0x00,0x00,##-.-
0x00,0x00,0x00,0x80, 0xC0,0x60,0x30,0x00, 0x0C,0x06,0x03,0x01, 0x00,0x00,0x00,0x00,##-#-
0xF8,0xF8,0x0C,0xC4, 0x0C,0xF8,0xF0,0x00, 0x03,0x07,0x0C,0x08, 0x0C,0x07,0x03,0x00,##-0-ASCII码:0X30
0x00,0x10,0x18,0xFC, 0xFC,0x00,0x00,0x00, 0x00,0x08,0x08,0x0F, 0x0F,0x08,0x08,0x00,##-1-
0x08,0x0C,0x84,0xC4, 0x64,0x3C,0x18,0x00, 0x0E,0x0F,0x09,0x08, 0x08,0x0C,0x0C,0x00,##-2-
0x08,0x0C,0x44,0x44, 0x44,0xFC,0xB8,0x00, 0x04,0x0C,0x08,0x08, 0x08,0x0F,0x07,0x00,##-3-0xC0,0xE0,0xB0,0x98, 0xFC,0xFC,0x80,0x00, 0x00,0x00,0x00,0x08, 0x0F,0x0F,0x08,0x00,##-4-ASCII码:0X34
0x7C,0x7C,0x44,0x44, 0x44,0xC4,0x84,0x00, 0x04,0x0C,0x08,0x08, 0x08,0x0F,0x07,0x00,##-5-
0xF0,0xF8,0x4C,0x44, 0x44,0xC0,0x80,0x00, 0x07,0x0F,0x08,0x08, 0x08,0x0F,0x07,0x00,##-6-
0x0C,0x0C,0x04,0x84, 0xC4,0x7C,0x3C,0x00, 0x00,0x00,0x0F,0x0F, 0x00,0x00,0x00,0x00,##-7-
0xB8,0xFC,0x44,0x44, 0x44,0xFC,0xB8,0x00, 0x07,0x0F,0x08,0x08, 0x08,0x0F,0x07,0x00,##-8-
0x38,0x7C,0x44,0x44, 0x44,0xFC,0xF8,0x00, 0x00,0x08,0x08,0x08, 0x0C,0x07,0x03,0x00,##-9-
0x00,0x00,0x00,0x30, 0x30,0x00,0x00,0x00, 0x00,0x00,0x00,0x06, 0x06,0x00,0x00,0x00,##-:-
0x00,0x00,0x00,0x30, 0x30,0x00,0x00,0x00, 0x00,0x00,0x08,0x0E, 0x06,0x00,0x00,0x00,##-;-
0x00,0x80,0xC0,0x60, 0x30,0x18,0x08,0x00, 0x00,0x00,0x01,0x03, 0x06,0x0C,0x08,0x00,##-<-
0x00,0x20,0x20,0x20, 0x20,0x20,0x20,0x00, 0x00,0x01,0x01,0x01, 0x01,0x01,0x01,0x00,##-=-0x00,0x08,0x18,0x30, 0x60,0xC0,0x80,0x00, 0x00,0x08,0x0C,0x06, 0x03,0x01,0x00,0x00,##->-ASCII码:0X3E
0x18,0x1C,0x04,0xC4, 0xE4,0x3C,0x18,0x00, 0x00,0x00,0x00,0x0D, 0x0D,0x00,0x00,0x00,##-?-
0xF0,0xF0,0x08,0xC8, 0xC8,0xF8,0xF0,0x00, 0x07,0x0F,0x08,0x0B, 0x0B,0x0B,0x01,0x00,##-@-
0xE0,0xF0,0x98,0x8C, 0x98,0xF0,0xE0,0x00, 0x0F,0x0F,0x00,0x00, 0x00,0x0F,0x0F,0x00,##-A-ASCII码:0X41
0x04,0xFC,0xFC,0x44, 0x44,0xFC,0xB8,0x00, 0x08,0x0F,0x0F,0x08, 0x08,0x0F,0x07,0x00,##-B-
0xF0,0xF8,0x0C,0x04, 0x04,0x0C,0x18,0x00, 0x03,0x07,0x0C,0x08, 0x08,0x0C,0x06,0x00,##-C-
0x04,0xFC,0xFC,0x04, 0x0C,0xF8,0xF0,0x00, 0x08,0x0F,0x0F,0x08, 0x0C,0x07,0x03,0x00,##-D-
0x04,0xFC,0xFC,0x44, 0xE4,0x0C,0x1C,0x00, 0x08,0x0F,0x0F,0x08, 0x08,0x0C,0x0E,0x00,##-E-
0x04,0xFC,0xFC,0x44, 0xE4,0x0C,0x1C,0x00, 0x08,0x0F,0x0F,0x08, 0x00,0x00,0x00,0x00,##-F-
0xF0,0xF8,0x0C,0x84, 0x84,0x8C,0x98,0x00, 0x03,0x07,0x0C,0x08, 0x08,0x07,0x0F,0x00,##-G-0xFC,0xFC,0x40,0x40, 0x40,0xFC,0xFC,0x00, 0x0F,0x0F,0x00,0x00, 0x00,0x0F,0x0F,0x00,##-H-ASCII码:0X48
0x00,0x00,0x04,0xFC, 0xFC,0x04,0x00,0x00, 0x00,0x00,0x08,0x0F, 0x0F,0x08,0x00,0x00,##-I-
0x00,0x00,0x00,0x04, 0xFC,0xFC,0x04,0x00, 0x07,0x0F,0x08,0x08, 0x0F,0x07,0x00,0x00,##-J-
0x04,0xFC,0xFC,0xC0, 0xE0,0x3C,0x1C,0x00, 0x08,0x0F,0x0F,0x00, 0x01,0x0F,0x0E,0x00,##-K-
0x04,0xFC,0xFC,0x04, 0x00,0x00,0x00,0x00, 0x08,0x0F,0x0F,0x08, 0x08,0x0C,0x0E,0x00,##-L-
0xFC,0xFC,0x38,0x70, 0x38,0xFC,0xFC,0x00, 0x0F,0x0F,0x00,0x00, 0x00,0x0F,0x0F,0x00,##-M-
0xFC,0xFC,0x38,0x70, 0xE0,0xFC,0xFC,0x00, 0x0F,0x0F,0x00,0x00, 0x00,0x0F,0x0F,0x00,##-N-
0xF8,0xFC,0x04,0x04, 0x04,0xFC,0xF8,0x00, 0x07,0x0F,0x08,0x08, 0x08,0x0F,0x07,0x00,##-O-
0x04,0xFC,0xFC,0x44, 0x44,0x7C,0x38,0x00, 0x08,0x0F,0x0F,0x08, 0x00,0x00,0x00,0x00,##-P-
0xF8,0xFC,0x04,0x04, 0x04,0xFC,0xF8,0x00, 0x07,0x0F,0x08,0x0E, 0x3C,0x3F,0x27,0x00,##-Q-0x04,0xFC,0xFC,0x44, 0xC4,0xFC,0x38,0x00, 0x08,0x0F,0x0F,0x00, 0x00,0x0F,0x0F,0x00,##-R-
0x18,0x3C,0x64,0x44, 0xC4,0x9C,0x18,0x00, 0x06,0x0E,0x08,0x08, 0x08,0x0F,0x07,0x00,##-S-
0x00,0x1C,0x0C,0xFC, 0xFC,0x0C,0x1C,0x00, 0x00,0x00,0x08,0x0F, 0x0F,0x08,0x00,0x00,##-T-
0xFC,0xFC,0x00,0x00, 0x00,0xFC,0xFC,0x00, 0x07,0x0F,0x08,0x08, 0x08,0x0F,0x07,0x00,##-U-
0xFC,0xFC,0x00,0x00, 0x00,0xFC,0xFC,0x00, 0x01,0x03,0x06,0x0C, 0x06,0x03,0x01,0x00,##-V-
0xFC,0xFC,0x00,0x00, 0x00,0xFC,0xFC,0x00, 0x07,0x0F,0x0E,0x03, 0x0E,0x0F,0x07,0x00,##-W-
0x0C,0x3C,0xF0,0xE0, 0xF0,0x3C,0x0C,0x00, 0x0C,0x0F,0x03,0x01, 0x03,0x0F,0x0C,0x00,##-X-
0x00,0x0C,0x7C,0xC0, 0xC0,0x7C,0x3C,0x00, 0x00,0x00,0x08,0x0F, 0x0F,0x08,0x00,0x00,##-Y-
0x1C,0x0C,0x84,0xC4, 0x64,0x3C,0x1C,0x00, 0x0E,0x0F,0x09,0x08, 0x08,0x0C,0x0E,0x00,##-Z-
0x00,0x00,0xFC,0xFC, 0x04,0x04,0x00,0x00, 0x00,0x00,0x0F,0x0F, 0x08,0x08,0x00,0x00,##-[-0x38,0x70,0xE0,0xC0, 0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x01, 0x03,0x07,0x0E,0x00,##-\-
0x00,0x00,0x04,0x04, 0xFC,0xFC,0x00,0x00, 0x00,0x00,0x08,0x08, 0x0F,0x0F,0x00,0x00,##-]-
0x08,0x0C,0x06,0x03, 0x06,0x0C,0x08,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,##-^-
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,##-_-
0x00,0x00,0x03,0x07, 0x04,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,##-`-
0x00,0xA0,0xA0,0xA0, 0xE0,0xC0,0x00,0x00, 0x07,0x0F,0x08,0x08, 0x07,0x0F,0x08,0x00,##-a-ASCII码:0X61
0x04,0xFC,0xFC,0x20, 0x60,0xC0,0x80,0x00, 0x00,0x0F,0x0F,0x08, 0x08,0x0F,0x07,0x00,##-b-
0xC0,0xE0,0x20,0x20, 0x20,0x60,0x40,0x00, 0x07,0x0F,0x08,0x08, 0x08,0x0C,0x04,0x00,##-c-
0x80,0xC0,0x60,0x24, 0xFC,0xFC,0x00,0x00, 0x07,0x0F,0x08,0x08, 0x07,0x0F,0x08,0x00,##-d-
0xC0,0xE0,0xA0,0xA0, 0xA0,0xE0,0xC0,0x00, 0x07,0x0F,0x08,0x08, 0x08,0x0C,0x04,0x00,##-e-0x40,0xF8,0xFC,0x44, 0x0C,0x18,0x00,0x00, 0x08,0x0F,0x0F,0x08, 0x00,0x00,0x00,0x00,##-f-
0xC0,0xE0,0x20,0x20, 0xC0,0xE0,0x20,0x00, 0x27,0x6F,0x48,0x48, 0x7F,0x3F,0x00,0x00,##-g-
0x04,0xFC,0xFC,0x40, 0x20,0xE0,0xC0,0x00, 0x08,0x0F,0x0F,0x00, 0x00,0x0F,0x0F,0x00,##-h-
0x00,0x00,0x20,0xEC, 0xEC,0x00,0x00,0x00, 0x00,0x00,0x08,0x0F, 0x0F,0x08,0x00,0x00,##-i-
0x00,0x00,0x00,0x00, 0x20,0xEC,0xEC,0x00, 0x00,0x30,0x70,0x40, 0x40,0x7F,0x3F,0x00,##-j-
0x04,0xFC,0xFC,0x80, 0xC0,0x60,0x20,0x00, 0x08,0x0F,0x0F,0x01, 0x03,0x0E,0x0C,0x00,##-k-
0x00,0x00,0x04,0xFC, 0xFC,0x00,0x00,0x00, 0x00,0x00,0x08,0x0F, 0x0F,0x08,0x00,0x00,##-l-
0xE0,0xE0,0x60,0xC0, 0x60,0xE0,0xC0,0x00, 0x0F,0x0F,0x00,0x07, 0x00,0x0F,0x0F,0x00,##-m-
0x20,0xE0,0xC0,0x20, 0x20,0xE0,0xC0,0x00, 0x00,0x0F,0x0F,0x00, 0x00,0x0F,0x0F,0x00,##-n-
0xC0,0xE0,0x20,0x20, 0x20,0xE0,0xC0,0x00, 0x07,0x0F,0x08,0x08, 0x08,0x0F,0x07,0x00,##-o-0x20,0xE0,0xC0,0x20, 0x20,0xE0,0xC0,0x00, 0x40,0x7F,0x7F,0x48, 0x08,0x0F,0x07,0x00,##-p-
0xC0,0xE0,0x20,0x20, 0xC0,0xE0,0x20,0x00, 0x07,0x0F,0x08,0x48, 0x7F,0x7F,0x40,0x00,##-q-
0x20,0xE0,0xC0,0x60, 0x20,0xE0,0xC0,0x00, 0x08,0x0F,0x0F,0x08, 0x00,0x00,0x00,0x00,##-r-
0x40,0xE0,0xA0,0x20, 0x20,0x60,0x40,0x00, 0x04,0x0C,0x09,0x09, 0x0B,0x0E,0x04,0x00,##-s-
0x20,0x20,0xF8,0xFC, 0x20,0x20,0x00,0x00, 0x00,0x00,0x07,0x0F, 0x08,0x0C,0x04,0x00,##-t-
0xE0,0xE0,0x00,0x00, 0xE0,0xE0,0x00,0x00, 0x07,0x0F,0x08,0x08, 0x07,0x0F,0x08,0x00,##-u-
0x00,0xE0,0xE0,0x00, 0x00,0xE0,0xE0,0x00, 0x00,0x03,0x07,0x0C, 0x0C,0x07,0x03,0x00,##-v-
0xE0,0xE0,0x00,0x80, 0x00,0xE0,0xE0,0x00, 0x07,0x0F,0x0C,0x07, 0x0C,0x0F,0x07,0x00,##-w-
0x20,0x60,0xC0,0x80, 0xC0,0x60,0x20,0x00, 0x08,0x0C,0x07,0x03, 0x07,0x0C,0x08,0x00,##-x-
0xE0,0xE0,0x00,0x00, 0x00,0xE0,0xE0,0x00, 0x47,0x4F,0x48,0x48, 0x68,0x3F,0x1F,0x00,##-y-0x60,0x60,0x20,0xA0, 0xE0,0x60,0x20,0x00, 0x0C,0x0E,0x0B,0x09, 0x08,0x0C,0x0C,0x00,##-z-##
0x00,0x40,0x40,0xF8, 0xBC,0x04,0x04,0x00, 0x00,0x00,0x00,0x07, 0x0F,0x08,0x08,0x00,##-{-
0x00,0x00,0x00,0xBC, 0xBC,0x00,0x00,0x00, 0x00,0x00,0x00,0x0F, 0x0F,0x00,0x00,0x00,##-|-
0x00,0x04,0x04,0xBC, 0xF8,0x40,0x40,0x00, 0x00,0x08,0x08,0x0F, 0x07,0x00,0x00,0x00,##-}-
0x08,0x0C,0x04,0x0C, 0x08,0x0C,0x04,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,##ASCII码:0X7E]ascii_table_5x8=[
#*全体ASCII 列表:5x8点阵*#
0x00,0x00,0x00,0x00,0x00,##space
0x00,0x00,0x4f,0x00,0x00,##-!-
0x00,0x07,0x00,0x07,0x00,##-"-
0x14,0x7f,0x14,0x7f,0x14,##-#-
0x24,0x2a,0x7f,0x2a,0x12,##-$-
0x23,0x13,0x08,0x64,0x62,##-%-
0x36,0x49,0x55,0x22,0x50,##-&-
0x00,0x05,0x07,0x00,0x00,##-'-
0x00,0x1c,0x22,0x41,0x00,##-(-
0x00,0x41,0x22,0x1c,0x00,##-)-
0x14,0x08,0x3e,0x08,0x14,##-*-
0x08,0x08,0x3e,0x08,0x08,##-+-
0x00,0x50,0x30,0x00,0x00,##-,-
0x08,0x08,0x08,0x08,0x08,##---
0x00,0x60,0x60,0x00,0x00,##-.-
0x20,0x10,0x08,0x04,0x02,##-#-
0x3e,0x51,0x49,0x45,0x3e,##-0-
0x00,0x42,0x7f,0x40,0x00,##-1-
0x42,0x61,0x51,0x49,0x46,##-2-
0x21,0x41,0x45,0x4b,0x31,##-3-
0x18,0x14,0x12,0x7f,0x10,##-4-
0x27,0x45,0x45,0x45,0x39,##-5-
0x3c,0x4a,0x49,0x49,0x30,##-6-
0x01,0x71,0x09,0x05,0x03,##-7-
0x36,0x49,0x49,0x49,0x36,##-8-
0x06,0x49,0x49,0x29,0x1e,##-9-
0x00,0x36,0x36,0x00,0x00,##-:-
0x00,0x56,0x36,0x00,0x00,##-;-
0x08,0x14,0x22,0x41,0x00,##-<-
0x14,0x14,0x14,0x14,0x14,##-=-
0x00,0x41,0x22,0x14,0x08,##->-
0x02,0x01,0x51,0x09,0x06,##-?-
0x32,0x49,0x79,0x41,0x3e,##-@-
0x7e,0x11,0x11,0x11,0x7e,##-A-
0x7f,0x49,0x49,0x49,0x36,##-B-
0x3e,0x41,0x41,0x41,0x22,##-C-
0x7f,0x41,0x41,0x22,0x1c,##-D-
0x7f,0x49,0x49,0x49,0x41,##-E-
0x7f,0x09,0x09,0x09,0x01,##-F-
0x3e,0x41,0x49,0x49,0x7a,##-G-
0x7f,0x08,0x08,0x08,0x7f,##-H-
0x00,0x41,0x7f,0x41,0x00,##-I-
0x20,0x40,0x41,0x3f,0x01,##-J-
0x7f,0x08,0x14,0x22,0x41,##-K-
0x7f,0x40,0x40,0x40,0x40,##-L-
0x7f,0x02,0x0c,0x02,0x7f,##-M-
0x7f,0x04,0x08,0x10,0x7f,##-N-
0x3e,0x41,0x41,0x41,0x3e,##-O-
0x7f,0x09,0x09,0x09,0x06,##-P-
0x3e,0x41,0x51,0x21,0x5e,##-Q-
0x7f,0x09,0x19,0x29,0x46,##-R-
0x46,0x49,0x49,0x49,0x31,##-S-
0x01,0x01,0x7f,0x01,0x01,##-T-
0x3f,0x40,0x40,0x40,0x3f,##-U-
0x1f,0x20,0x40,0x20,0x1f,##-V-
0x3f,0x40,0x38,0x40,0x3f,##-W-
0x63,0x14,0x08,0x14,0x63,##-X-
0x07,0x08,0x70,0x08,0x07,##-Y-
0x61,0x51,0x49,0x45,0x43,##-Z-
0x00,0x7f,0x41,0x41,0x00,##-[-
0x02,0x04,0x08,0x10,0x20,##-\-
0x00,0x41,0x41,0x7f,0x00,##-]-
0x04,0x02,0x01,0x02,0x04,##-^-
0x40,0x40,0x40,0x40,0x40,##-_-
0x01,0x02,0x04,0x00,0x00,##-`-
0x20,0x54,0x54,0x54,0x78,##-a-
0x7f,0x48,0x48,0x48,0x30,##-b-
0x38,0x44,0x44,0x44,0x44,##-c-
0x30,0x48,0x48,0x48,0x7f,##-d-
0x38,0x54,0x54,0x54,0x58,##-e-
0x00,0x08,0x7e,0x09,0x02,##-f-
0x48,0x54,0x54,0x54,0x3c,##-g-
0x7f,0x08,0x08,0x08,0x70,##-h-
0x00,0x00,0x7a,0x00,0x00,##-i-
0x20,0x40,0x40,0x3d,0x00,##-j-
0x7f,0x20,0x28,0x44,0x00,##-k-
0x00,0x41,0x7f,0x40,0x00,##-l-
0x7c,0x04,0x38,0x04,0x7c,##-m-
0x7c,0x08,0x04,0x04,0x78,##-n-
0x38,0x44,0x44,0x44,0x38,##-o-
0x7c,0x14,0x14,0x14,0x08,##-p-
0x08,0x14,0x14,0x14,0x7c,##-q-
0x7c,0x08,0x04,0x04,0x08,##-r-
0x48,0x54,0x54,0x54,0x24,##-s-
0x04,0x04,0x3f,0x44,0x24,##-t-
0x3c,0x40,0x40,0x40,0x3c,##-u-
0x1c,0x20,0x40,0x20,0x1c,##-v-
0x3c,0x40,0x30,0x40,0x3c,##-w-
0x44,0x28,0x10,0x28,0x44,##-x-
0x04,0x48,0x30,0x08,0x04,##-y-
0x44,0x64,0x54,0x4c,0x44,##-z-
0x08,0x36,0x41,0x41,0x00,##-{-
0x00,0x00,0x77,0x00,0x00,##-|-
0x00,0x41,0x41,0x36,0x08,##-}-
0x04,0x02,0x02,0x02,0x01,##-~-
]#
#字模区域结束
#

五、屏幕操作代码

JLX172104G590.py

WIDTH=256  # 屏幕宽度
HEIGHT=128  # 屏幕高度from machine import Pin, SPI
from st75256 import ST75256# 初始化屏幕
spi = SPI(0, 100000, mosi=Pin(19), sck=Pin(18))
oled = ST75256(WIDTH, HEIGHT, spi, Pin(17),Pin(20), Pin(16),external_vcc=True)# 显示文字
oled.text_cn("计算器爱好者",50,8)  # 写入缓冲区
oled.text_big("Hello World",50,30)
oled.text_small("Hello World",50,45)
oled.text("Hello World",50,55)
oled.show()#显示缓冲区内容

六、显示效果

不知道为啥会反过来,还有屏幕会有一片花的,有知道的,评论区留言。 谢谢。

七、购买链接

1,树莓派开发板

https://detail.tmall.com/item.htm?_u=rp01rchb3f7&id=637462705818&skuId=4882333204598&spm=a1z09.2.0.0.4e572e8d0BJ1zJhttps://detail.tmall.com/item.htm?_u=rp01rchb3f7&id=637462705818&skuId=4882333204598&spm=a1z09.2.0.0.4e572e8d0BJ1zJ

2,晶联LED屏幕

https://item.taobao.com/item.htm?spm=2013.1.0.0.599451a66J2dWR&id=554187209246https://item.taobao.com/item.htm?spm=2013.1.0.0.599451a66J2dWR&id=554187209246

八、参考文章

【全网首发】ST75256 液晶模块MicroPython驱动_weixin_42094079的博客-CSDN博客_st75256MicroPython ST75256_1671465600https://blog.csdn.net/weixin_42094079/article/details/121897550
九、资料下载

链接: https://pan.baidu.com/s/1nlYxlCQ3bOVYQ-jZBAh9PA 提取码: ygqp 复制这段内容后打开百度网盘手机App,操作更方便哦

十、显示问题解决办法

在博主的辛苦查阅资料,在显示屏的资料中,看到了驱动部分设置参数有误。

大家参考如下文档:JLX172104G-590-PC中文字库编程说明书.pdf_免费高速下载|百度网盘-分享无限制

然后修改我们的驱动的这几行:

1,文中显示花屏问题,请修改驱动的这一行

self.transfer_data(0X14) # XE=159 0x28 

将值改为4F
2,文中显示文字镜像问题,请修改驱动的这一行

self.transfer_data(0x00) #MX.MY=Normal 

将值改为0x02
3,文中显示不清晰的问题,修改驱动程序的对比度可以解决。

self.transfer_data(0x36) #VPR[5-0] 

这一行是微调对比度,可调范围 0x00~0x3f,共 64 级。将值改为0x08

4,最后,在修改一下x,y的地址

def lcd_address(self,x,y,x_total,y_total):x=xy=y+4#为什么要加4呢?每四行为一列?这里的y是页,也就是行0~15行

将值改为x=x+84 y=y

5,接着,我们修改代码JLX172104G590.py如下:

WIDTH=256  # 屏幕宽度
HEIGHT=128  # 屏幕高度from machine import Pin, SPI
from st75256 import ST75256# 初始化屏幕
spi = SPI(0, 100000, mosi=Pin(19), sck=Pin(18))
oled = ST75256(WIDTH, HEIGHT, spi, Pin(17),Pin(20), Pin(16),external_vcc=False)# 显示文字
oled.text_cn("计算器爱好者",0,0)#写入缓冲区
oled.text_big("Hello World",15,20)
oled.text_small("Hello World",30,64)
oled.text("Hello World",50,90)
oled.show()#显示缓冲区内容

显示效果如下:

捣鼓了半天终于结束啦!还是要多看官方文档啊!

最后附上正确的驱动程序st75256.py:

#
# MicroPython st75256 OLED driver, SPI interfaces
#
from micropython import const
from font import bytech,ascii_table_8x16,ascii_table_5x8
import framebuf
import machine
import utime# Subclassing FrameBuffer provides support for graphics primitives
# http://docs.micropython.org/en/latest/pyboard/library/framebuf.html
class ST75256(framebuf.FrameBuffer):def __init__(self,width,height,spi,dc,res,cs,external_vcc=False):self.width=widthself.height=heightself.reset=resself.rate=10*1024*1024dc.init(dc.OUT,value=0)res.init(res.OUT,value=0)cs.init(cs.OUT,value=1)self.spi=spiself.dc=dcself.res=resself.cs=csimport timeself.res(1)time.sleep_ms(1)self.res(0)time.sleep_ms(10)self.res(1)self.external_vcc=external_vccself.pages = self.height//8self.buffer = bytearray(self.pages * self.width)super().__init__(self.buffer, self.width, self.height, framebuf.MONO_VLSB)self.init_display()def transfer_command(self,cmd):self.spi.init(baudrate=self.rate,polarity=0,phase=0)self.cs(0)self.dc(0)self.spi.write(bytearray([cmd]))self.cs(1)def transfer_data(self,buf):self.spi.init(baudrate=self.rate,polarity=0,phase=0)self.cs(0)self.dc(1)if type(buf)==type(0x11):self.spi.write(bytearray([buf]))else:self.spi.write(buf)  self.cs(1)#初始化液晶模块def init_display(self):self.reset.value(0)utime.sleep_ms(100)self.reset.value(1)utime.sleep_ms(100)self.transfer_command(0x30)  # EXT=0 self.transfer_command(0x94)  # Sleep out self.transfer_command(0x31)  # EXT=1 self.transfer_command(0xD7)  # Autoread disable self.transfer_data(0X9F)  # self.transfer_command(0x32)  # Analog SET self.transfer_data(0x00)  # OSC Frequency adjustment self.transfer_data(0x01)  # Frequency on booster capacitors 6KHzself.transfer_data(0x03)  # Bias=1/11self.transfer_command(0x20) # Gray Levelself.transfer_data(0x01) self.transfer_data(0x03) self.transfer_data(0x05) self.transfer_data(0x07) self.transfer_data(0x09) self.transfer_data(0x0b) self.transfer_data(0x0d) self.transfer_data(0x10) self.transfer_data(0x11) self.transfer_data(0x13) self.transfer_data(0x15) self.transfer_data(0x17) self.transfer_data(0x19) self.transfer_data(0x1b) self.transfer_data(0x1d) self.transfer_data(0x1f) self.transfer_command(0x30)  # EXT=0 self.transfer_command(0x75)  # Page Address setting self.transfer_data(0X00)  # XS=0self.transfer_data(0X4F)  # XE=159self.transfer_command(0x15)  # Clumn Address setting self.transfer_data(0X00)  # XS=0 self.transfer_data(0Xff)  # XE=256 ffself.transfer_command(0xBC)  # Data scan directionself.transfer_data(0x02)  # MX.MY=Normal # 设为0x00镜像显示self.transfer_data(0xA6) self.transfer_command(0xCA)  # Display Control self.transfer_data(0X00)  #self.transfer_data(0X9F)  # Duty=160 //占空比self.transfer_data(0x20);  # Nline=off self.transfer_command(0xF0)  # Display Mode self.transfer_data(0X10)  # 10=Monochrome Mode,11=4Gray self.transfer_command(0x81)  # EV control  //设置对比度,“0x81”不可改动,紧跟着的 2 个数据是可改的,但“先微调后粗调”self.transfer_data(0x08)  # VPR[5-0] //微调对比度,可调范围 0x00~0x3f,共 64 级self.transfer_data(0x04)  # VPR[8-6]  //粗调对比度,可调范围 0x00~0x07,共 8 级self.transfer_command(0x20)  # Power control 电源控制self.transfer_data(0x0B)  # D0=regulator  D1=follower  D3=booste, on:1 off:0 utime.sleep_ms(100)self.transfer_command(0xAF)  # Display on self.transfer_command(0x0C)  # 数据格式,如果设为 0x0C:表示选择 LSB(DB0)在顶,如果设为 0x08:表示选择LSB(DB0)在底 def poweroff(self):transfer_command(0x94)def poweron(self):transfer_command(0x95)def lcd_address(self,x,y,x_total,y_total):x=x+84 # X 为起始的列地址,Y 为起始的行地址y=yself.transfer_command(0x15) #Set Column Address self.transfer_data(x) self.transfer_data(x+x_total-1) self.transfer_command(0x75) #Set Page Address self.transfer_data(y) self.transfer_data(y+y_total-1) self.transfer_command(0x30) self.transfer_command(0x5c) def clear_screen(self):#self.lcd_address(0,0,self.width,self.pages)for i in range(self.pages):for j in range(self.width):self.transfer_data(0x00)def show(self):#显示缓冲区的内容self.lcd_address(0,0,self.width,self.pages)self.transfer_data(self.buffer)def show_buf(self,buf):#显示缓冲区的内容self.lcd_address(0,0,self.width,self.pages)self.transfer_data(buf)def text_cn(self,text,x,y):#写汉字到缓冲text=list(text.encode("utf-8"))offset_=0page=y//8page=page%self.pagesif(x>247):x=0page+=2text_= [text[i:i+3] for i in range(0,len(text),3)]#取出汉字的3字节utf-8编码for k in text_:b1=bytearray(k)#将中文3字节utf-8编码还原byte_data=bytech[b1.decode()]for i in range(0,16):self.buffer[256*page+x+i+offset_]=byte_data[i]#print(x_axis,y_axis)self.buffer[256*(page+1)+x+i+offset_]=byte_data[i+16]offset_+=16def icon(self,bmp,x,y,reverse=0):#32x32page=y//8page=page%self.pagesif(x>247):x=0page+=2for i in range(4):for j in range(32):if reverse:self.buffer[256*(page+i)+x+j]=~bmp[i*32+j]else:self.buffer[256*(page+i)+x+j]=bmp[i*32+j]def text_big(self,text,x,y,reverse=0,earse=0):#显示8x16的点阵的字符串,括号里的参数分别为(字符串,x,y坐标,是否反转,默认不反转)page=y//8page=page%self.pagesif(x>248):x=1page+=2self.earse=earsei=0text=list(text.encode("ascii"))while(i<len(text)):if((text[i]>=0x20) and (text[i]<=0x7e)):j=(text[i]-0x20)*16for n in [0,1]:for k in range(8):if(reverse==1):self.buffer[256*(page+n)+x+k]=~ ascii_table_8x16[j+k+8*n]else:self.buffer[256*(page+n)+x+k]=ascii_table_8x16[j+k+8*n]#写数据到缓冲区,每写完1字节的数据后列地址自动加1 i=i+1x+=8else:i=i+1def text_small(self,text,x,y,reverse=0,earse=0):#5x8点阵的英文字符串page=y//8page=page%self.pagesself.earse=earsei=0text=list(text.encode("ascii"))while(i<len(text)):if((text[i]>=0x20) and (text[i]<=0x7e)):j=(text[i]-0x20)*5for n in range(5):if(reverse==1):self.buffer[256*page+x+n]=~ascii_table_5x8[j+n]else:self.buffer[256*page+x+n]=ascii_table_5x8[j+n]i+=1x+=6else:i+=1#
#led driver end
#

物联网开发笔记(69)- 使用Micropython开发树莓派pico开发板raspberry pi pico之控制晶联JLX172104G-590液晶模块相关推荐

  1. RASPBERRY PI PICO 树莓派PICO开发板双核高性能低功耗RP2040芯片

    ▌01 RASPBERRY PICO 1.简介 RaspBerry Pi Pico是一款低价格.高性能的微控制器电路板,具有丰富灵活的数字接口,主要特点包括有: RP2040 microcontrol ...

  2. 树莓派竟出微控制器了!Raspberry Pi Pico 只需 4 美元!

    [CSDN 编者按]树莓派进军微控制器市场了!而这场改革的开始只需 4 美元? 整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 昨天,树莓派搞了个大动作:推出了首款微控制器开发板 Ra ...

  3. Qt开发笔记(一):Qt+FFmpeg开发环境搭建以及工程模板

    原博主博客地址:https://blog.csdn.net/qq21497936 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/90 ...

  4. 树莓派Pico(Raspberry Pi Pico) Windows开发环境—①开发工具链的安装

    Windows 下搭建 树莓派Pico(Raspberry Pi Pico) 的开发环境 在Microsoft Windows上安装工具链与其他平台有所不同.然而,一旦安装,RP2040的构建代码有点 ...

  5. RASPBERRY PI PICO 开发板 基础测试

    ▌01 PI PICO 颜色名 十六进制颜色值 颜色 Coral #FF7F50 rgb(255, 127, 80) 1.安装与上载程序 在 RASPBERRY PI PICO 树莓派PICO开发板双 ...

  6. 树莓派-Raspberry Pi Pico RP2040 使用大全(硬件接口功能、传感器模块等)

    树莓派-RP2040 主板实物图 主板引脚图 Thonny开发IDE工具 查看帮助信息 GPIO 输出 GPIO 输入 GPIO 中断 ADC(模数转换) PWM(脉宽调制) WDT看门狗 RTC实时 ...

  7. raspberry pi Pico使用MicroPython变砖后的解决方法

    使用raspberry pi Pico的原因 在硬件产品(单片机)的开发中我们往往需要借助一些额外的仪器/设备进行产品的辅助测试, 假设我们需要一个IO+ADC类型辅助设备, 以往的做法是 原理图-& ...

  8. 简单上手Raspberry Pi Pico(Ubuntu+MicroPython)

    关于raspberry pi pico的信息我就不多介绍了,直接给几个关键词吧 售价4$ 微控制器 MicroPython/C/C++ 树莓派基金会自研RP2040芯片 两本官方推荐的书: Micro ...

  9. 35美元最小电脑树莓派windows10初体验 raspberry pi 2 win10

    下面是体验视频 35美元最小电脑树莓派windows10初体验 raspberry pi 2 win10

最新文章

  1. linux 检查 文件末尾 是否有空行
  2. Dockerfile命令
  3. 自编码器Autoencoders
  4. 战疫期,钉钉如何扛起暴增百倍的流量?【阿里云快速扩容新纪录】
  5. 使用V8和node轻松profile分析nodejs应用程序
  6. HDU3363_贪心
  7. Javascript验证上传图片大小[前台处理]
  8. LeetCode 1249. 移除无效的括号(栈+set / deque)
  9. [转载] python将图片进行base64编码, 解码
  10. 男友问别人:你裙子里穿什么了?
  11. jQuery 下载与安装教程
  12. Git学习笔记(基础操作+分支操作+PR)
  13. V2VNet: Vehicle-to-Vehicle Communication for Joint Perception and Prediction
  14. flutter友盟统计
  15. 人脑VS机器? AI时代经济决策的机遇与挑战?
  16. haproxy path_beg,path_end ,hdr_beg
  17. Python负数除法取余操作
  18. 公共信息模型(CIM)
  19. 原 Android自定义控件三部曲文章索引
  20. Rust Tokio hyper 协程下载文件工具

热门文章

  1. 华为鸿蒙系统描述文件,华为鸿蒙HarmonyOS Beta3 2.0.0.101版
  2. 一文搞懂离心铸造的转速计算
  3. 最新版本cesium+三角测量
  4. 富文本编辑器 wangEditor.js
  5. C++如何调用SDK发送短信验证码
  6. L1-016 查验身份证(15 分)[PTA][isdigit()函数][加权求和][字符与数值的转换]
  7. Alien Skin ExposureX7中文版RAW照片编辑器和组织器
  8. linux系统入侵防范软件,系统安全防范之Linux下简单的入侵检测
  9. OpenStack_Stein版安装部署
  10. 微信小程序 主包与分包的控制小程序大小