一、目的

这一节我们学习如何使用我们的ESP32开发板来通过IIC接口控制TM1650四位共阴数码管模块。

 二、环境

ESP32 + Thonny + TM1650四位共阴数码管模块 + 几根杜邦线 + Win10

接线方法:

 三、驱动

我根据别人博客改的,不敢说是全网唯一,但是也是第二,哈哈。。。不好之处,大家多多提意见。你有好的驱动,麻烦请评论区留言,谢谢!

FourDigitDisplay.py

'''ESP32 drive for Four Digit LED Display (TM1650)http://www.micropython.org.cnAuther: 魔都飘雪 2023-2-14
'''from machine import Pin,I2C
#from machine import Pin,SoftI2C #软I2CCOMMAND_I2C_ADDRESS = 0x24  # 对应数码管I2C地址[36, 37, 38, 39, 52, 53, 54, 55]的36
DISPLAY_I2C_ADDRESS = 0x34  # 对应数码管I2C地址[36, 37, 38, 39, 52, 53, 54, 55]的52# 对应单个数码管的0到F显示。0不亮1亮。例如0x3F二进制为0011 1111,高位dp,地位为a,对应8段数码管则显示为0
buf = (0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71)  i2c = I2C(1)
#i2c = SoftI2C(scl=Pin(25), sda=Pin(26)) #软I2C
class FourDigitDisplay():def __init__(self):self._intensity = 3self.dbuf = [0, 0, 0, 0]self.tbuf = bytearray(1)self.on()def intensity(self, dat = -1):if dat < 0 or dat > 8:return self._intensityif dat == 0:self.off()else:self._intensity = datself.cmd((dat<<4)|0x01)def cmd(self, c):self.tbuf[0] = ci2c.writeto(COMMAND_I2C_ADDRESS, self.tbuf)def dat(self, bit, d):self.tbuf[0] = di2c.writeto(DISPLAY_I2C_ADDRESS + (bit%4), self.tbuf)def on(self):self.cmd((self._intensity<<4)|0x01)def off(self):self._intensity = 0self.cmd(0)def clear(self):self.dat(0, 0)self.dat(1, 0)self.dat(2, 0)self.dat(3, 0)self.dbuf = [0, 0, 0, 0]def showbit(self, num, bit = 0):self.dbuf[bit%4] = buf[num%16]self.dat(bit, buf[num%16])def shownum(self, num):if num < 0:self.dat(0, 0x40)   # '-'num = -numelse:self.showbit((num // 1000) % 10)self.showbit(num % 10, 3)self.showbit((num // 10) % 10, 2)self.showbit((num // 100) % 10, 1)def showhex(self, num):if num < 0:self.dat(0, 0x40)   # '-'num = -numelse:self.showbit((num >> 12) % 16)self.showbit(num % 16, 3)self.showbit((num >> 4) % 16, 2)self.showbit((num >> 8) % 16, 1)def showDP(self, bit = 1, show = True):if show:self.dat(bit, self.dbuf[bit] | 0x80)else:self.dat(bit, self.dbuf[bit] & 0x7F)

四、示例代码

from machine import Pin,I2C,SoftI2C
from FourDigitDisplay import *
import time# 软I2C也是可以的,驱动对应改一下即可
#i2c = SoftI2C(scl=Pin(25), sda=Pin(26), freq=100000)
#print(i2c.scan()) # scan for devices#硬I2C方法,此处使用I2c 1
i2c = I2C(1, scl=Pin(25), sda=Pin(26), freq=400000)
#36对应驱动里的COMMAND_I2C_ADDRESS = 0x24; 52对应驱动里的DISPLAY_I2C_ADDRESS = 0x34
print(i2c.scan())  # 打印出[36, 37, 38, 39, 52, 53, 54, 55]   #显示整数
fdd = FourDigitDisplay()
fdd.shownum(9999)  # 显示4个9
time.sleep(2)
#显示小数
fdd.shownum(1234)  # 显示4个9
fdd.showDP(0)  # 默认是2位小数;showDP(0)三位小数;showDP(2)一位小数;
time.sleep(2)
#显示十六进制数
fdd.showhex(60)  # 显示为3C
time.sleep(2)
#清屏
fdd.clear()
time.sleep(2)#显示余数数
fdd.showbit(18)  # 18%16=2,所以显示为2
time.sleep(2)#调节显示亮度
fdd.intensity(8)  #亮度为1到8
time.sleep(2)
fdd.intensity(0) #关闭显示,相当于fdd.off()
time.sleep(2)
fdd.on() #打开显示
time.sleep(2)
fdd.intensity(2)
time.sleep(2)for i in range(0,10000,1):   fdd.shownum(i)time.sleep(0.25)

五、显示效果

 六、数码管购买

https://item.taobao.com/item.htm?spm=a1z09.2.0.0.51c12e8d16YAs7&id=687984025071&_u=4p01rchb4aehttps://item.taobao.com/item.htm?spm=a1z09.2.0.0.51c12e8d16YAs7&id=687984025071&_u=4p01rchb4ae        

 

七、参考资料

【micropython】microbit micropython使用第三方库实现四位数码管显示_GEEK.攻城狮的博客-CSDN博客_micropython安装第三方库1、microbit文件系统当我们使用内置库函数时,只需要使用import功能将相关的库加载进来即可。我们在获取第三方库或者自行编写库文件时,一般为.PY的源代码文件。我们首先需要将文件写入到microbit的文件系统中。在micropython中,可以通过内置os库来操作文件。API功能os.listdir()显示系统中的文件os.remove(filename)删除文件os.size(filename)查看文件大小os.uname()显示MicroPython和设备信息在REhttps://blog.csdn.net/cw_huang/article/details/114061052class I2C – a two-wire serial protocol — MicroPython latest documentationhttp://docs.micropython.org/en/latest/library/machine.I2C.html

物联网开发笔记(80)- 使用Micropython开发ESP32开发板之通过IIC接口控制TM1650四位共阴数码管模块相关推荐

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

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

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

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

  3. 基于MicroPython的ESP32开发

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

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

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

  5. 【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器 DirectInput专场

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

  6. 【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器:DirectInput专场...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhmxy555/article/details/8547531 作者:毛星云(浅墨) ...

  7. 【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器:DirectInput专场

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8547531 作者:毛星云(浅墨 ...

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

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

  9. 嵌入式系统开发笔记80:应用Qt Designer进行主界面设计

    前言   本篇文章讲解PyQt的基本使用方法,我们将应用Qt Designer来设计一个主界面,学习完本篇文章的内容后,你将获得如下技能.   (1)在VS Code中启动Qt Designer    ...

最新文章

  1. MySQL范围查找时,索引失效问题探究
  2. 深入解析阿里 PouchContainer 如何实现容器原地升级
  3. 区块链实践(一) 以太坊网络+geth搭建私有网络实战
  4. SQL server Cannot find one or more
  5. 富文本编辑器宽度自适应及取消自动保存功能
  6. 便携式三星mysql_JDBC链接mysql - 三星蓝
  7. dubbo实现原理之SPI简介
  8. mac用什么写python程序_mac下,有哪些python开发工具可用
  9. 《集体智慧编程》读书笔记2
  10. 三角形面积 java_java编程中求三角形面积肿么写?
  11. spring boot 应用设置session path_springboot整合redis实现分布式session
  12. jQuery文档就绪事件
  13. HBuilderX 连接网易mumu手机模拟器进行App开发
  14. python魔方方法
  15. 省市区三级联动(带经纬度、离线地图)
  16. Github上开源项目readme里好看的高大上的有趣的徽章从何而来
  17. 地理围栏算法解析(Geo-fencing)
  18. Navicat连接Oracle数据库过程中的诸多问题
  19. hive 原理 用法,编码,UDF 001
  20. 文件创建时间、修改时间、访问时间的定义

热门文章

  1. 美颜滤镜sdk常用的图形处理算法、代码分析
  2. Storm学习——事务和案例
  3. RTF是什么文件格式
  4. 计算机微机组装与维护形考1,最新国开电大《ERP原理与应用》形考任务实验1至5作业及答案...
  5. 浅谈社交电商产品设计的10个深刻的知识
  6. JAVA1年经验技术栈列表
  7. 交互式应用程序安全测试(IAST)技术浅析
  8. 【鸽子木 · 每日一题】级数求和(3月31日)
  9. Python3/Python2百度网盘链接地址
  10. 【python标准库】色彩模式转换