某宝VFD模块把玩
最近一个月都在被期末考试折磨,大学生活真是和想象中的有些出入~
之前在淘宝买了个VFD模块,VFD与LCD/OLED等新技术相比优点是自发光,亮度高,响应速度较快等
MCU用的是我非常喜爱的nodemcu,为了便于后期维护,简单的画了个PCB, PCB上有两个1*15的排母,用来安放nodemcu, 一个7pin的XH2.54母座,还有一个用于供电的6pin的typec母座,因为只用于供电所以只引出了电源,然后又在VFD模块的PCB上焊了个7pin XH2.54母座,显示模块和MCU所在的PCB就通过一根7 pin XH2.54排线连接,顺便在pcb上按照商家给的尺寸打了4个孔,用于通过铜柱固定两块PCB。
然而焊完之后发现VFD模块上的母座挡住了孔位,导致两根铜柱无法固定,后期准备稍微打磨下母座或者铜柱,问题应该不大。并且typec母座的焊盘略小了,母座放上去基本上就完全和焊盘重合了,SMD贴片当然没啥问题,我手动焊就很难受了,焊盘稍微画大点会好很多。
商家给的资料里只有C51和Arduino的demo, 我个人比较喜欢micropython, 所以自己就改了改移植到了mciropython,虽然原理我完全不懂,但是能用就行。
from machine import Pin
from time import sleep_us
# 引脚定义
din = Pin(14, Pin.OUT) # D5
clk = Pin(12, Pin.OUT) # D6
cs = Pin(13, Pin.OUT) # D7
reset = Pin(15, Pin.OUT) # D8
en = Pin(3, Pin.OUT) # RX
def write_6302(w_data: int):
for i in range(0, 8):
clk.off()
if (w_data & 0x01) == 0x01:
din.on()
else:
din.off()
w_data >>= 1
clk.on()
def vfd_cmd(command: int):
cs.off()
write_6302(command)
cs.on()
sleep_us(5)
def S1201_show():
cs.off() # 开始传输
write_6302(0xe8) # 地址寄存器起始位置
cs.on() # 停止传输
def vfd_init():
# 设置位数
cs.off()
write_6302(0xe0)
sleep_us(5)
write_6302(0x07) # 8位
cs.on()
sleep_us(5)
# 设置亮度
cs.off()
write_6302(0xe4)
sleep_us(5)
write_6302(0xff) # 最高255
cs.on()
sleep_us(5)
"""
在指定位置打印一个字符(用户自定义,所有CG-ROM中的)
x:位置,c:要显示的字符编码
"""
def write_one_char(x: int, c: int):
cs.off() #开始传输
write_6302(0x20 + x) #地址寄存器起始位置
write_6302(c + 0x30)
cs.on() #停止传输
show()
"""
在指定位置打印字符串
(仅适用于英文,标点,数字)
x: 位置, s: 要显示的字符串
"""
def write_str(x: int, s: str):
cs.off() # 开始传输
write_6302(0x20 + x) # 地址寄存器起始位置
for i in s:
write_6302(ord(i))
cs.on() # 停止传输
show()
# 初始化
en.on()
reset.off()
sleep_us(5)
reset.on()
vfd_init()
上一篇:Pico Neo 3 简评
下一篇:Jellyfin折腾记