使用 MAX7219 和 DS1307 实时时钟 (RTC) 制作 7 段数字时钟,快速简单!
DS1307 实时时钟是广泛可用的低成本 I2C RTC 模块。它们带有一个时钟和一个小电池,当连接到 Arduino 时,即使 Arduino 板没有通电,也可以实时跟踪。
在本文中,我将向您展示如何将 DS1307 I2C RTC 模块和MAX7219 控制的 7 段 LED 显示屏连接到 Arduino,读取和显示时间,并使用Visuino对所有这些进行编程。我将使用我拥有的Tiny RTC 模块,但它应该与任何其他 DS1307 模块非常相似。
第 1 步:组件
一块Arduino兼容板
一个 DS1307 实时时钟模块(我使用了 Tiny RTC 模块,但任何其他 DS1307 模块都可以)
一个带MAX7219控制器的8位7段显示模块
一个小面包板(可以使用任何面包板,或任何其他方式将 3 根电线连接在一起)
3 公母跳线
7 母母跳线
第 2 步:将实时时钟连接到 Arduino
将母-公 5V VCC 电源(红线)的母端连接到DS1307 RTC模块
将母-母线 -地线(黑线)、SCL (橙线)和SDA (蓝线)连接到DS1307 RTC 模块
将SDA 线(蓝色)的另一端连接到Arduino Nano板的SDA/模拟引脚 4
将SCL 线(橙色)的另一端连接到Arduino Nano板的SCL/模拟引脚 5
将地线(黑色)的另一端连接到Arduino Nano板的接地引脚
第 3 步:将 LED 模块连接到 Arduino
将母-公 5V VCC 电源(红线)的母端连接到LED 模块
将母-母线 -地线(黑线)、DIN (绿线)、CS (灰线)和CLK (黄线)连接到LED 模块
将地线(黑色)的另一端连接到Arduino Nano板的接地引脚
将CLK线(黄色)的另一端连接到电路板的Digital 13引脚
将DIN线(绿色)的另一端连接到Arduino Nano板的Digital 11引脚
将CS线(灰色)的另一端连接到Arduino Nano板的Digital 10引脚
第 4 步:将电源线连接到 Arduino 板
将另一根母-公电源线(红线)连接到Arduino板的5V电源引脚,并保持公端未连接
在面包板的帮助下将3 根电源线(红线)的公端(来自显示器、时钟模块和Arduino)连接在一起。在我的情况下,我使用了一个小面包板
以红色显示Arduino Nano的5V Power引脚在哪里。蓝色显示在前面的步骤中完成的连接。
第 5 步:启动 Visuino 并选择 Arduino Board 类型
要开始对 Arduino 进行编程,您需要先从此处安装
Arduino IDE : http ://www.arduino.cc/
Visuino : https://www.visuino.com
安装后步骤:
启动Visuino
在Visuino中单击Arduino组件上的“工具”按钮
出现对话框时,选择“ Arduino Nano ”
第6步:在Visuino中,添加并连接Maxim MAX7219 LED组件
在 Component Toolbox 的 Filter 框中输入“ led ”,然后选择“ Maxim Led Controller SPI MAX7219/MAX7221 ”组件,并将其放入设计区域
将LedController1组件的“ Out ”引脚连接到Arduino组件SPI通道的“ In ”引脚
将LedController1组件的“ ChipSelect ”引脚连接到Arduino组件的“ Digital[10] ”通道的“ Digital ”输入
第 7 步:在 Visuino 中,将 Integer Display 7 Segments 元素添加到 Maxim LED 控制器组件
LedController1 组件可以以多种不同方式控制 LED。LED 的组织和控制方式取决于将添加到组件中的元素。在这里,我们将添加 3 个整数元素,每个元素有 2 个数字和 2 个无符号位像素元素。时间将显示在整数元素中,位像素元素将用于小时、分钟和秒之间的分隔符。
点击LedController1组件的“工具”按钮打开元素编辑器
在“元素”编辑器中,选择右侧的“整数显示7段”,然后单击左侧的“”按钮,为组件添加一个元素
在 Object Inspector 中,将新添加的“ Integer Display 7 Segments1 ”元素的“ CountDigits ”属性的值设置为2
在 Object Inspector 中,将新添加的“ Integer Display 7 Segments1 ”元素的“ LeadingZeroes ”属性的值设置为“ True ”
第 8 步:在 Visuino 中,将其余元素添加到 Maxim LED 控制器组件
在“元素”编辑器中,选择右侧的“无符号位像素”,然后单击左侧的“”按钮,为组件添加一个元素
在 Object Inspector 中,将新添加的“ Unsigned Bit Pixels1 ”元素的“ CountPixels ”属性的值设置为“ 8 ”
在 Object Inspector 中,将新添加的“ Unsigned Bit Pixels1 ”元素的“ InitialValue ”属性的值设置为“ 1 ”。这将使“-”(g)段仅在 7 段数字上有效
重复本教程和上一个步骤 7 的相同步骤,添加2个“整数显示7 段”元素和一个“无符号位像素”元素,并以相同方式设置它们的属性
关闭“元素”编辑器
第 9 步:在 Visuino 中,添加并连接解码日期/时间组件
我们需要将日期/时间解码为单独的小时、分钟和秒值。为此,我们将使用“解码日期/时间”组件。
在组件工具箱的过滤框中键入“解码”,然后选择“解码日期/时间”组件,并将其拖放到设计区域
将RealTimeClock1的“ Out ”引脚连接到DecodeDateTime1的“ In ”引脚
将DigitalToUnsigned1的“ Out ”引脚列表的“ Second ”引脚连接到LedController1组件的“ PixelGroups.Integer Display 7 Segments1 ”元素的“ In ”引脚
将DigitalToUnsigned1的“ Out ”引脚列表的“ Minute ”引脚连接到LedController1组件的“ PixelGroups.Integer Display 7 Segments2 ”元素的“ In ”引脚
将DigitalToUnsigned1的“ Out ”引脚列表的“ Hour ”引脚连接到LedController1组件的“ PixelGroups.Integer Display 7 Segments3 ”元素的“ In ”引脚
第 10 步:在 Visuino 中,添加并连接 (T) 触发器组件
为了动画小时、分钟和秒之间的“-”分隔符,我们将每秒在“8”和“1”无符号值之间切换。为此,我们可以使用触发器。最方便的是 Toggle(T) 触发器:
在组件工具箱的过滤器框中键入“翻转”,然后选择“切换(T)触发器”组件,并将其放入设计区域
将RealTimeClock1的“ Out ”引脚连接到TFlipFlop1组件的“ In ”引脚
第 11 步:在 Visuino 中,添加、配置和连接 Digital To Unsigned 组件
触发器生成一个数字(布尔)值。我们需要将其转换为“8”和“1”的无符号值。为此,我们将使用“数字到无符号”转换器:
在组件工具箱的过滤框中键入“数字”,然后选择“数字到无符号”组件,并将其放在设计区域
在对象检查器中,将DigitalToUnsigned1元素的“ FalseValue ”属性的值设置为“ 8 ”
将TFlipFlop1的“ Out ”引脚连接到DigitalToUnsigned1组件的“ In ”引脚
将DigitalToUnsigned1的“ Out ”引脚连接到LedController1组件的“ PixelGroups.Unsigned Bit Pixels1 ”元素的“ In ”引脚
将DigitalToUnsigned1的“ Out ”引脚连接到LedController1组件的“ PixelGroups.Unsigned Bit Pixels2 ”元素的“ In ”引脚
第 12 步:生成、编译和上传 Arduino 代码
在Visuino中,按F9生成 Arduino 代码,然后打开 Arduino IDE
在Arduino IDE中,点击Upload按钮,编译并上传代码
第13步:完成
到这里,您已经制作了一个带有 7 段 MAX7219 LED 显示驱动器和 DS1307 实时时钟 (RTC) 的 LED 时钟。
这里还没有内容,您有什么问题吗?
电子电路资源推荐
- (核心)开关电源的电磁干扰防制技术——传导篇
来源:下载中心
- 精通开关电源设计 Switching.Power.Supplies.A.To.Z .Sanjaya.Maniktala.扫描版.PDF
来源:下载中心
- ADC与DAC
来源:大学堂
- 电路的基本物理量:电流,电压,电位,电动势,电功率
来源:电路图
- 放大器稳定性系列教程
来源:大学堂
- 电工基础:电路的组成
来源:电路图
推荐帖子 最新更新时间:2024-11-13 08:52
- 如何在电路中将交流跟直流分出来
- 如题!!急!! 如何在电路中将交流跟直流分出来 自己顶~! 常用电容。 还有别的方法吗 我怕信号会损耗。。。。 除了使用电容,还可以使用电感。不过电感贵,容易受干扰,稳定性不好,能不用尽量不用。 至于信号损耗,不可避免,只能设法少损耗一些。 怕损耗直流还是
- yyyj锋模拟电子
- 左右声道音频合成的问题
- 求助求助,我现在手头有一个ti的tpa3118d2的功放ic,准备搭建一个音响来,,后面可以根据ti的样板图,layout一个板出来,但是现在我的输入端是双声道的,但是我输出采用只有一个扬声器的单声道的模式 ,也就是如图所示的PBTL模式。那么我在功放的输入端怎么把左右声道合成,
- 麻袋模拟与混合信号
- 颁奖:CadenceLIVE China 2022中国线上用户大会
- CadenceLIVE China 2022中国线上用户大会颁奖啦~ CadenceLIVE China 2022中国线上用户大会 参与的小伙伴儿相信大家都兑换到了自己心爱的奖品! 现在eeworld也为注册成功并通过审核且直播当天准时参会的网友发出神秘礼物啦~~~
- EEWORLD社区EEWORLD颁奖专区
- [求助]:用PIC单片机来做煤气表的数据采集,客户端连PC服务器的问题。
- 刚学PIC单片机,我们一般用PIC18f系列的。 准备用这个来做一个关于煤气数据表信息的采集。 打算实现的功能: 1.采集每个客户的用煤气量; 2.煤气泄露,客户端单片机报警,用务器向客户报警(用人工方式打电话或短信); 3.客户煤气费用不足时,服务器能通知客户。 我想求助的问题
- friendMicrochip MCU
- qt多线程老是崩溃,求助
- 目前我做的一个东西,linux这边用的qtcore,但是莫名奇妙的,在很多不应该的地方就coredump了,我们用了多线程,但是查了半天不应该崩溃,想不通。比如qhash,qmap之类的都崩了 想问问朋友们有没有什么qt多线程使用的经验和教训。。。 qt多线程老是崩溃,求助
- freebsder嵌入式系统
- 新人拜师
- 刚接触 DSP 学的是5402中国原创力的开发板 不知道论坛中谁懂 小白愿意拜师 学艺 加我的QQ376936829 谢谢 新人拜师
- zhaohongpengDSP 与 ARM 处理器
- IR2118驱动没输出
- MSP430移植usos的内存优化
- 滤波器的结构形式
- maple:arduino兼容的 stm32f103开发板 预定开始
- Maple r5板无法识别,显示为Unknown Device
- spwm超级无敌stm32步进电机控制教程
- 常小兵、王建宙、王晓初 入选通讯行业10大华人领袖
- MYSON
- 贴片共模电感和工字共模电感除了体积不一样,从性能和应用场景的角度,有哪些区别?
- 测评汇总:nRF7002-DK Wi-Fi® 6开发套件
- Stop模式中断(紧急)
- 请问哪些芯片支持zigbee协议?
- OPT3004 在电池供电camera中 的应用
- 上拉电阻与下拉电阻
- 驱动编写问题
- 线性稳压器基础知识
- 求助接插件名字
- 一个奇怪的机床电路设计
- 第一个hello,world程序,编译沒有错误,执行时提示:Connection was not created
- 介绍一下国标直流充电桩充电流程