|
问了deepseek,给了参考代码,现在能显示,但是还是不正常
用的pico,micropython
还需要继续摸索
from machine import Pin
import time
# 初始化控制引脚和数据引脚(根据实际连接调整引脚编号)
flm = Pin(9, Pin.OUT) # 帧开始信号
cp = Pin(6, Pin.OUT) # 时钟脉冲
lp = Pin(7, Pin.OUT) # 行脉冲
dispoff = Pin(10, Pin.OUT) # 显示开关(假设低电平启用显示)
fr= Pin(8, Pin.OUT)
d0 = Pin(2, Pin.OUT) # 数据位0
d1 = Pin(3, Pin.OUT) # 数据位1
d2 = Pin(4, Pin.OUT) # 数据位2
d3 = Pin(5, Pin.OUT) # 数据位3
dispoff(0)
fr(0)
time.sleep(1)
# 生成棋盘格数据 (160x80)
def generate_chess_pattern():
pattern = []
for y in range(80):
row = []
for x in range(20): # 每行20字节 (160像素)
byte = 0
for bit in range(8):
px = x * 8 + bit
if (px + y) % 2 == 0: # 棋盘格条件
byte |= (1 << (7 - bit)) # 高位在前
row.append(byte)
pattern.append(row)
return pattern
# 设置数据引脚输出的函数
def set_data(nibble):
d0.value((nibble >> 0) & 0x01)
d1.value((nibble >> 1) & 0x01)
d2.value((nibble >> 2) & 0x01)
d3.value((nibble >> 3) & 0x01)
# 发送一个字节(分两次传输高4位和低4位)
def send_byte(byte):
# 高4位
set_data((byte >> 4) & 0x0F)
cp.value(1) # 产生时钟上升沿
cp.value(0)
# 低4位
set_data(byte & 0x0F)
cp.value(1)
cp.value(0)
# 初始化显示
dispoff(1) # 开启显示
p=generate_chess_pattern()
def draw_checkerboard():
while True:
# 开始新帧
fr(0)
flm.value(0)
flm.value(1)
fr(1)
dat=0xf
for y in range(80): # 遍历每一行
# 行开始信号
lp.value(1)
lp.value(0)
if y%9==1:
dat=~dat
for x in range(20): # 遍历每行中的像素
# 根据棋盘格模式生成像素值
send_byte(dat)
# 行结束信号(根据需求调整)
#lp.value(1)
time.sleep_ms(100)
flm(0)
#time.sleep_ms(16) # 控制刷新率
# 运行棋盘格绘制
draw_checkerboard()
|
|