赞
踩
大家在很多嵌入式设备上,经常看到数码管,可以显示数字,英文字母,非常的实用。下面我们一起学习怎么用ESP32开发板来控制它。之前我们已经学习过,数码管相关的内容,大家可以回去复习一下:
物联网开发笔记(21)- 使用Micropython开发ESP32开发板之控制单个数码管_microptython 数码管_魔都飘雪的博客-CSDN博客使用Micropython开发ESP32开发板之控制单个数码管https://blog.csdn.net/zhusongziye/article/details/127242295?spm=1001.2014.3001.5501物联网开发笔记(22)- 使用Micropython开发ESP32开发板之控制数码管实例_micropython示例_魔都飘雪的博客-CSDN博客物联网开发笔记(22)- 使用Micropython开发ESP32开发板之控制数码管实例https://blog.csdn.net/zhusongziye/article/details/127289716?spm=1001.2014.3001.5501物联网开发笔记(23)- 使用Micropython开发ESP32开发板之控制4位数码管_魔都飘雪的博客-CSDN博客使用Micropython开发ESP32开发板之控制4位数码管显示数字https://blog.csdn.net/zhusongziye/article/details/127289606?spm=1001.2014.3001.5501 以上内容是根据数码管的针脚,一个个接线的,比较占用IO口。所以下面使用带74HC595芯片的4位数码管来节省珍贵的IO口资源。
一、目的
使用MicroPython开发ESP32,控制带74HC595芯片的4位数码管
二、环境
ESP32开发板 + 带74HC595芯片的4位数码管 + Thonny IDE + Win10
三、带74HC595芯片的4位数码管介绍
74HC595芯片介绍,如下图:
四、硬件接线方法
五、代码
- from machine import Pin
- # import utime
-
- # 准备数据引脚
- pin_sclk = Pin(12, Pin.OUT); pin_sclk.off() # 上升跳变时锁存
- pin_rlck = Pin(14, Pin.OUT); pin_rlck.off() # 上升跳变时数据位移
- pin_dio = Pin(13, Pin.OUT); pin_dio.off() # 待移入数据位
-
- mapper = { # 共阳方式段码对照
- '0': 0xC0, '1': 0xF9, '2': 0xA4, '3': 0xB0,
- '4': 0x99, '5': 0x92, '6': 0x82, '7': 0xF8,
- '8': 0x80, '9': 0x90, 'A': 0x88, 'B': 0x83,
- 'C': 0xA7, 'D': 0xA1, 'E': 0x86, 'F': 0x8E,
- }
-
- def jump_up(pin):
- pin.on() # 产生跳变
- # utime.sleep_ms(1)
- pin.off() # 保持一段时间后关闭
-
- def send_data(num, is_position=False, has_point=False):
- '向位称寄存器送数据'
- if is_position: # 位码处理( 1~4位)
- value = {1:0x01, 2:0x02, 3:0x04, 4:0x08}.get(num, 0)
- else: # 段码处理
- value = mapper.get(str(num), 0)
- value = value & 0x7F if has_point else value # 共阳方式
- # value = (~value | 0x80) if has_point else ~value # 共阴方式
- for i in range(8):
- pin_dio.value(1 if (value << i) & 0x80 else 0) # 从最高位开始送数据
- jump_up(pin_sclk) # 每送完一位后就让位移寄存器跳变一下
-
- num = 0
- step = 1
- while True:
- # 显示千位
- send_data(int(num/1000))
- send_data(4, is_position=True)
- jump_up(pin_rlck)
- # 显示百位
- send_data(int(num / 100 % 10))
- send_data(3, is_position=True)
- jump_up(pin_rlck)
- # 显示十位
- send_data(int(num / 10 % 10))
- send_data(2, is_position=True)
- jump_up(pin_rlck)
- # 显示个位
- send_data(int(num % 10))
- send_data(1, is_position=True)
- jump_up(pin_rlck)
-
- if step%100==0:
- num += 1
- if num>9999: num=0
- step += 1
六、购买地址
数码管资料下载:
下载链接:https://pan.baidu.com/s/1-Fikj7zqFbh2xSRPmTXTmQ 提取码:recu
七、参考文章和课程
1,MicroPython-On-ESP8266——数码管的使用,2片HC595驱动四位数码管_嗑烤队长的博客-CSDN博客_micropython hc595MicroPython-On-ESP8266——数码管的使用,2片HC595驱动四位数码管1. 背景前面在使用四位数码管时,需要用来12个GPIO接口,结果咱micropython能驱动的esp8266开发板只有9个口能用,导致只能驱动两位数码管。还好动态扫描的机制是用到了。这回来学习第三个数码管,由两片72HC595位移寄存器芯片驱动的四位数码管。2. 位移寄存器芯片74HC595先了解一下这个74HC595芯片(收下简称595)是个什么东西又是如何工作的。2.1. 595原理图https://blog.csdn.net/fatway/article/details/1212763362,17,MicroPython Esp32 使用74hc595驱动数码管_哔哩哔哩_bilibilieps32物联网芯片课程连接:https://h5.m.taobao.com/awp/core/detail.htm?ft=t&id=694099001741, 视频播放量 148、弹幕量 0、点赞数 9、投硬币枚数 2、收藏人数 4、转发人数 0, 视频作者 下班后实验室, 作者简介 勤学如春起之苗,不见其增日有所长;辍学如磨刀之石,不见其损日有所亏。,相关视频:16,MicroPython Esp32 数码管工作原理&驱动单位数码管实现静态动态显示,19,MicroPython Esp32 使用74hc595串联三线驱动LCD1602液晶SPI协议LCD1602,18,MicroPython Esp32 RTC时钟&数码管显示实验,手把手教你学ESP32--基于MicroPython,22,MicroPython Esp32驱动max7219点阵详细讲解8x8点阵,2,MicroPython Esp32物联网课 基本延时time延时使用,1,MicroPython Esp32物联网微控制器开发环境配置,STM32入门教程-2023持续更新中,46、[下班后]STM32读取DHT11温湿度传感器数值DHT11驱动程序DHT11传感器介绍&应用实例,28、[下班后]STM32使用74HC595驱动LCD1602液晶https://www.bilibili.com/video/BV1y44y1U7bQ/?spm_id_from=333.788&vd_source=1117e013b2a310072ed7cf742e8d7cf9最后,希望和大家一起学习进步。如果你有好的学习资源,请在评论区分享,谢谢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。