上一节我们讲解了如何控制单个数码管,这一节我们来一起学一下如何控制4位数码管。

一、目的

使用MicroPython开发ESP32控制4位数码管

二、环境

ESP32+数码管+Thonny IDE+电阻(200-300欧姆的色环电阻即可+面包板(非必须)+十几根杜邦线(母对母4个和母对公8个)

此处建议使用真实硬件环境(当然WOKWI仿真也可,但是由于网络问题我没有看到成功的结果,你可以试下)

接线原理图:

我实际的接线图:

三、4位数码管介绍

4位数码管可以同时显示4个数字或字母(A-F),我们知道单个数码管一般有10个针脚,那个4位数码管一般有12个针脚,除了a-g和DP(DotPoint)是一样的,还有四个针脚分别用来控制每个数码管。
        

在Wokwi中的4位数码管,有14个针脚,多了CLN(时钟模式)和COM引脚:

4位数码管显示原理:利用到的是人的视觉暂留机制,对数码管进行动态扫描。

我找到了一个不错的博客介绍,大家可以看下,讲的比较清楚:

MicroPython-On-ESP8266——数码管的使用,四位数码管及动态扫描显示_fatway的博客-CSDN博客_esp8266驱动数码管

四、下面举个例子给大家演示一下4位数码管的使用方法

先上代码,使用Thonny IED开发

main.py

import machine
import time# 定义每个数码管
led1 = machine.Pin(5, machine.Pin.OUT)
led2 = machine.Pin(18, machine.Pin.OUT)
led3 = machine.Pin(19, machine.Pin.OUT)
led4 = machine.Pin(21, machine.Pin.OUT)# 数码管列表
number_led_list = [led1, led2, led3, led4]# 定义数码管的8个LED段
a = machine.Pin(13, machine.Pin.OUT)
b = machine.Pin(12, machine.Pin.OUT)
c = machine.Pin(14, machine.Pin.OUT)
d = machine.Pin(27, machine.Pin.OUT)
e = machine.Pin(26, machine.Pin.OUT)
f = machine.Pin(25, machine.Pin.OUT)
g = machine.Pin(33, machine.Pin.OUT)
h = machine.Pin(32, machine.Pin.OUT)# 将数码管对应的引脚对象存储到列表
led_list = [a, b, c, d, e, f, g, h]# 定义每个数字的显示,此处为共阳(如果你连接的是共阴极的数码管,请改为注释的值)
number_dict = {0: "00000011",  # 0: "11111100", 1: "10011111",  # 1: "01100000",2: "00100101",  # 2: "11011010", 3: "00001101",  # 3: "11110010",4: "10011001",  # 4: "01100110",5: "01001001",  # 5: "10110110", 6: "01000001",  # 6: "10111110",7: "00011111",  # 7: "11100000",8: "00000001",  # 8: "11111110",9: "00001001",  # 9: "11110110",
}# 定义显示数字的函数
def show_number(number):if number_dict.get(number):  # 通过字典number_dict的键number获取到对应键的值i = 0   # 定义一个变量i,用于控制显示不同的数字for num in number_dict.get(number):  # 此时就是对应的value,即类似的"01110111"if num == "1":  # 控制数码管8个LED段的显示led_list[i].value(0) else:led_list[i].value(1)# print("此时显示的数码管的LED段是", i)  # 打印出为a, b, c, d, e, f, g, h # 此处打印会导致4位数码管闪烁i += 1# 定义数码管的亮灭状态
def led_light_on(i):# 全部数码管设置为1,即全灭的状态for led in number_led_list:led.value(1)  # (如果你连接的是共阴极的数码管,请改为0)# 将指定数码管设置为0,即亮的状态number_led_list[i].value(0) # (如果你连接的是共阴极的数码管,请改为1)# 定义显示数字的函数
def show_4_number(number):if 0 <= number <= 9999:  # 判断显示数字的范围i = 0  # 定义一个变量i,用于控制不同的数码管。for num in "%04d" % number:  # 循环显示4位数字,即一个数字一个数字的依次显示。动态刷新print(num)  show_number(int(num))  # 调用show_number函数显示数字,注意num为字符格式要转为整型格式led_light_on(i)  # 调用led_light_on函数,点亮指定的数码管time.sleep_ms(5)  # 设置刷新的时间,此处可以根据实际情况调节print("此时数码管是", i)  # 打印出为0,1,2,3i += 1# 显示4位数字
for i in range(0001, 10000):  for j in range(10): # 调节每个数字的显示频率show_4_number(i)  # 显示指定数字

五、演示效果(实际效果)

六、如果你需要在WOKWI上仿真,请参考如下链接:

Wokwi Arduino and ESP32 Simulatorhttps://wokwi.com/projects/345318630016156244如果你成功仿真了,请留言谢谢。

物联网开发笔记(23)- 使用Micropython开发ESP32开发板之控制4位数码管相关推荐

  1. 物联网开发笔记(75)- 使用Micropython开发ESP32开发板之控制tm1637时钟数码管显示

    一.目的 这一节我们学习如何使用我们的ESP32开发板来控制4位tm1637时钟数码管显示. 二.环境 ESP32 + 4位tm1637时钟数码管(wokwi仿真也可) + Thonny IDE + ...

  2. MLX90640开发笔记(一)概述及开发资料准备

    现在自己在做红外成像仪的越来越多了,两年前有个井下机电设备运行状态的科研项目,当时使用了AMG8833(8*8像素).前段时间因为公司生产电路板测试需要,打算买一台红外成像仪测量电路板发热是否正常,商 ...

  3. Micropython ESP32驱动CH455控制4位数码管

    Micropython ESP32驱动CH455控制4位数码管 1.硬件 CH455驱动4位共阴数码管的原理图如下所示. ESP32-S模块,用GPIO4作为SCL和GPIO16作为SDA. 2.软件 ...

  4. 物联网开发笔记(9)- 使用Wokwi仿真MicroPython on ESP32开发板实现温度和湿度检测并使用屏幕显示

    一.测试环境 我们同样使用在Wokwi网站上选择Micropython with ESP32进行仿真,来进行温度和湿度的检测. ESP32官方技术参考手册: https://www.espressif ...

  5. 基于MicroPython的ESP32开发

    很久前入手了一块ESP32 DEVKIT V1,当时基于C_SDK开发.最近想搞下MicroPython,就又把这块板子找出来了. 一.先下载支持MicroPython的ESP32固件 去MicroP ...

  6. Android开发笔记(七十一)区分开发模式和上线模式

    为什么要区分两种模式 许多开发者(包括博主在内)都是闷骚的程序员,为了开发调试方便,常常在代码里加上日志,还经常在页面上各种弹窗提示.这固然有利于发现bug.提高软件质量,但过多的调试信息往往容易泄露 ...

  7. 【Visual C++】游戏开发笔记三十一 回归季 游戏开发资料整理打包下载 专栏行文思路整理

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  8. 外设驱动库开发笔记23:AT24Cxx外部存储器驱动

    在我们的应用开发过程中,经常会使用到外部的EEPROM外部存储器来保存一些参数和配置数据等.而比较常用的就是AT24Cxx系列产品,这一节我们来开发用于操作AT24Cxx系列产品的驱动. 1.功能概述 ...

  9. Cocos2dx游戏开发笔记23:《奇怪的大冒险》源码学习,附下载

    懒骨头(http://blog.csdn.net/iamlazybone QQ:124774397 青岛) 以后有的忙了 抽空先来一发笔记 网上找了个demo:LOGO叫奇怪的大冒险(应该是@熊同学的 ...

最新文章

  1. CentOS Linux下VNC Server远程桌面配置详解
  2. iis7 您无权使用所提供的凭据查看此目录或页面。_使用Spring Cloud和Docker构建微服务架构
  3. 【问题】将数据块存储大小设置为128M,HDFS客户端写文件时,当写入一个100M大小的文件,实际占用存储空间为多大?
  4. SaltStack源码分析之:master端执行salt模块大致流程
  5. k8s 基础概念和术语
  6. python软件_Python自制照片美颜软件~
  7. Desktop Video for Mac(桌面视频)最新版
  8. 后端开发之如何写接口设计文档
  9. 一个简单的if控制语句
  10. 曾国藩:读书、交友、处事、养性,都在这里了
  11. 使用python爬取12306上面所有车次数据
  12. Win10彻底删除蓝牙设备
  13. Xshell配色美化
  14. 救救家长:疫情封控下packetbeat+kafka+ES套件监控青少年上网行为
  15. dedecms站点采集标签
  16. pyspark:导入第三方包
  17. 超超超级详细的java入门必备基础知识
  18. “希希敬敬对”团队作业——敏捷冲刺4
  19. 移动开发第五次作业——近场通信
  20. 布隆过滤器究竟是什么,这一篇给讲的明明白白的

热门文章

  1. 2022-4-9 Leetcode 917.仅仅反转字母
  2. 软件工程-案例分析作业
  3. 免费压缩GIF制作工具【ezgif】——非常适合大家压缩动图,斗图,制作微信表情包,写文章,写段子等专用
  4. 数据库中北大学第二章ppt总结和课后习题详解(小宇特详解)
  5. 2021-06-30剑指offer28.对称的二叉树
  6. 有谁知道pos机刷卡费率多少?
  7. python replace函数_Python replace()函数
  8. Python异常处理与文件打开
  9. 虾米男的伤感爱情日志推荐:我会忘记你,因为你不属于我
  10. 视频格式《星星》背景音乐