|
問(wèn)了Deepseek
給了參考代碼,可以點(diǎn)亮了。。。
但是還是顯示不正常
from machine import Pin
import time
# 初始化控制引腳和數(shù)據(jù)引腳(根據(jù)實(shí)際連接調(diào)整引腳編號(hào))
flm = Pin(9, Pin.OUT) # 幀開始信號(hào)
cp = Pin(6, Pin.OUT) # 時(shí)鐘脈沖
lp = Pin(7, Pin.OUT) # 行脈沖
dispoff = Pin(10, Pin.OUT) # 顯示開關(guān)(假設(shè)低電平啟用顯示)
fr= Pin(8, Pin.OUT)
d0 = Pin(2, Pin.OUT) # 數(shù)據(jù)位0
d1 = Pin(3, Pin.OUT) # 數(shù)據(jù)位1
d2 = Pin(4, Pin.OUT) # 數(shù)據(jù)位2
d3 = Pin(5, Pin.OUT) # 數(shù)據(jù)位3
dispoff(0)
fr(0)
time.sleep(1)
# 生成棋盤格數(shù)據(jù) (160x80)
def generate_chess_pattern():
pattern = []
for y in range(80):
row = []
for x in range(20): # 每行20字節(jié) (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
# 設(shè)置數(shù)據(jù)引腳輸出的函數(shù)
def set_data(nibble):
d0.value((nibble >> 0) & 0x01)
d1.value((nibble >> 1) & 0x01)
d2.value((nibble >> 2) & 0x01)
d3.value((nibble >> 3) & 0x01)
# 發(fā)送一個(gè)字節(jié)(分兩次傳輸高4位和低4位)
def send_byte(byte):
# 高4位
set_data((byte >> 4) & 0x0F)
cp.value(1) # 產(chǎn)生時(shí)鐘上升沿
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): # 遍歷每一行
# 行開始信號(hào)
lp.value(1)
lp.value(0)
if y%9==1:
dat=~dat
for x in range(20): # 遍歷每行中的像素
# 根據(jù)棋盤格模式生成像素值
send_byte(dat)
# 行結(jié)束信號(hào)(根據(jù)需求調(diào)整)
#lp.value(1)
time.sleep_ms(100)
flm(0)
#time.sleep_ms(16) # 控制刷新率
# 運(yùn)行棋盤格繪制
draw_checkerboard()
|
|