|
問了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()
|
|