经过今天的排查,终于发现是 时序图中延时函数没有用对

一定要时序图准确,才能出图!!!

具体代码如下:

package main
import (
    "machine"
    "time"
)
const(
//引脚定义
//VDD VSS  DATA   WR   RD    CS     VDD-LED   VSS-LED
//3.3  gnd  D1(5) D4(2) NC    D8(15) D7(13)
    csr = machine.D5 //15
    dat = machine.D3 //5
    wrt = machine.D2 //4
    bk= machine.D7 //13
    SYSEN=0X02         //0b1000 0000 0010 打开系统振荡器
    SYSDIS=0X00          //0b1000 0000 0000  关振系统荡器和LCD偏压发生器
    BIAS=0x52               //0b1000 0101 0010  1/3duty 4com
  //LCDOFF:=uint8(0X04)           //0b1000 0000 0100  关LCD偏压
   LCDON=0X06          //0b1000 0000 0110  打开LCD偏压
 //XTAL:=uint8(0x28)           //0b1000 0010 1000 外部接时钟
  RC256=0X30          //0b1000 0011 0000  内部时钟
//TONEON:=uint8(0X12)           //0b1000 0001 0010  打开声音输出
//TONEOFF:=uint8(0X10)           //0b1000 0001 0000 关闭声音输出
 WDTDIS=0X0A
)
 
var Ht1621Tab=[]uint8{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
func Ht1621Wr_Data(Data uint8,cnt uint8){
var i uint8
for i=0;i<cnt;i++{
       wrt.Low()
       delay(1)
       if Data&0x80>1 {dat.High()}else{dat.Low()}
       wrt.High()
        delay(1)
       Data<<=1
     }
 
}
 
//写命令
func Ht1621WrCmd(Cmd uint8){
csr.Low()
delay(1)
Ht1621Wr_Data(0x80,4)
Ht1621Wr_Data(Cmd,8)
csr.High()
delay(1)
}
//写数据
func Ht1621WrOneData(Addr uint8,Data uint8){
csr.Low()
Ht1621Wr_Data(0xa0,3)
Ht1621Wr_Data(Addr<<2,6)
Ht1621Wr_Data(Data<<4,4)
csr.High()
delay(1)
}
 
func Ht1621WrAllData(Addr uint8,p []uint8,cnt uint8){
var i uint8
csr.Low()
Ht1621Wr_Data(0xa0,3)
Ht1621Wr_Data(Addr<<2,6)
for i=0;i<cnt;i++{
        Ht1621Wr_Data(p[i],8)
}
csr.High()
delay(1)
}
 
func Ht1621_Init(){
csr.Configure(machine.PinConfig{Mode: machine.PinOutput})
wrt.Configure(machine.PinConfig{Mode: machine.PinOutput})
dat.Configure(machine.PinConfig{Mode: machine.PinOutput})
bk.Configure(machine.PinConfig{Mode: machine.PinOutput})
 
delay(200)
csr.High()
wrt.High()
dat.High()
bk.High()
 
Ht1621WrCmd(BIAS)
Ht1621WrCmd(RC256)
Ht1621WrCmd(SYSDIS)
Ht1621WrCmd(WDTDIS)
Ht1621WrCmd(SYSEN)
Ht1621WrCmd(LCDON)
}
 
func delay(t time.Duration){
time.Sleep(time.Millisecond * t)
}
 
/**********************************/
func main(){
var i,j,t uint8
Ht1621_Init();
delay(10)
for{
               Ht1621WrAllData(0,Ht1621Tab,16)
               for i=0;i<32;i++{
                     t=0x01
                     for j=0;j<4;j++{
                           Ht1621WrOneData(i,t)
                           delay(200)
                           t<<=1
                           t++
                          }
                     }
               }
  }