ESP32 with Mricropython 两片hc595驱动的数码管 *学习心得

1.双CH595驱动电路图

  • SCLK引脚用来控制位移

  • RCLK引脚用来控制锁存

  • SDI引脚传输数据

2.说明

这是我在学习完C51之后,学习使用基于micropython 控制esp32单片机。

用的是一块小拓展板,搭载双CH595。

接线的话,应该有基础的同学都知道怎么接,就不放接线图了。

3.静态数码管

3.1代码

Nixie.py

from machine import Pin

sclk = Pin(15, Pin.OUT);  
rlck = Pin(2, Pin.OUT);   
sdi = Pin(4, Pin.OUT);    

ghc595_buf=[0x01,0x02,0x04,0x08]
number=[0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00]

def up(pin):#一个上升沿
    pin.off()
    pin.on()    
    
def write_data(data):
    for i in range(8):
        sdi.value(1 if data & (0x80>>i) else 0)
        up(sclk)#移位寄存器时钟上升沿将端口数据送入寄存器中
    up(rlck)#存储寄存器时钟上升沿将前面写入到寄存器的数据输出
        
    
   
   
def send_data(num,location):
    
    write_data(~number[num])
    write_data(ghc595_buf[location-1])
      

代码比较简单、通用,也是点亮数码管的基础操作

注:该代码是静态数码管(即一次点亮一位),利用循环可达到动态数码管(即点亮后消影,马上点亮下一位)

3.2.效果

send_data(2,2)

3.3.该扩展板原理图

链接:https://pan.baidu.com/s/14swwGloVDbz5M_omYVHRkA?pwd=trnf

提取码:trnf

4.动态数码管

4.1代码

from machine import Pin
import time
sclk = Pin(15, Pin.OUT);  
rlck = Pin(2, Pin.OUT);   
sdi = Pin(4, Pin.OUT);    

ghc595_buf=[0x01,0x02,0x04,0x08]
number=[0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
              0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00]
number_buf=[1,2,3,4]#显示缓存区
def up(pin):#一个上升沿
    pin.off()
    pin.on()    
    
def write_data(data):
    for i in range(8):
        sdi.value(1 if data & (0x80>>i) else 0)
        up(sclk)#移位寄存器时钟上升沿将端口数据送入寄存器中
    #up(rlck)#存储寄存器时钟上升沿将前面写入到寄存器的数据输出
   
def send_data(num,location):
    
    write_data(~number[num])
    up(rlck)
    write_data(ghc595_buf[location-1])
    up(rlck)

def display():
    for i in range(4):
        #send_data(16,i+1)
        write_data(~number[number_buf[i]])
        write_data(ghc595_buf[i])
        up(rlck)
        
while True:
    display()

说明:后面发现寄存器数据满了就会溢出,可以等下一个CH595接受数据后再锁存,这样不会有“影子”

效果:

好好学习,天天向上!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值