发布日期 2020-01-30

7段数码管DIY,时钟、温度、湿度都能显示,太齐全了!

原标题:7段数码管DIY,时钟、温度、湿度都能显示,太齐全了!

带有Arduino的数字时钟,使用移位寄存器(74HC595),实时时钟,温度和湿度传感器以及7段数码管显示。

必须元器件

硬件部分:

Arduino UNO 和 Genuino UNO *1

实时时钟(RTC)*1

DHT11温湿度传感器(4针)*1

德州仪器( TI )移位寄存器 - 串行到并行 *2

共阳极LED显示屏(4 位数字 x 7 段数码管)*1

150欧电阻*8

一、简介

带有RTC(实时时钟)的数字时钟项目,它使用4位数字和7段数码管显示,包括温度和湿度特性显示。

在显示控制中使用了Arduino Uno R3和74HC595的02 IC(带输出锁存器的8位移位寄存器)。移位寄存器的使用对于保存Arduino的输出端口非常重要,并且仅需Arduino的3个输出即可控制显示。

有两个突破:一个用于温度(?C-摄氏/°F-华氏度)和湿度(%)的传感器,另一个用于RTC(实时时钟)。组装非常简单,但是必须注意跳线的连接。

时间显示

温度显示

湿度显示

二、材料清单

1 x DS1307(实时时钟)

1 x DHT11(温度和湿度传感器)

2 x 74HC595(带输出锁存器的8位移位寄存器-3状态)

8个150欧姆的电阻器(棕色-绿色-棕色)

1 x FYQ-5642BX(共阳极LED显示屏为04位数字和07段或等效的数字,但请注意引脚号)

1个Arduino Uno

1 x面包板

1 x跳线套件

实时时钟

Led显示屏

Arduino Uno R3

DHT11(温度和湿度传感器)

1 x FYQ-5642BX(共阳极LED显示屏为04位数字和07段

三、组装

零部件的组装非常简单,但是由于电线连接,您需要仔细遵循原理图。此项目中有2个移位寄存器:一个用于控制显示的每个部分,另一个用于控制显示的内容。

重要提示:如果要使用其他类型的LED显示屏,则需要检查其数据表以更新74HC595的输出接线(跳线),并且还必须更新Arduino软件的相应逻辑。

四、代码

以下二进制数据表示LED显示屏的数字(0至9)与段(A至G)之间的关系:

为了在LED显示屏上依次显示时间,温度和湿度的所有数据,我使用了带有功能millis和while的“计时器” 。在这种情况下,每条信息的03秒钟后将依次在显示屏上显示每条信息,十分简单高效。

您可以通过几种不同的方式应用此函数millis来管理程序运行期间的时间。在许多情况下,您可以使用它代替某些计时器。

另一个有用的功能是digitalWrite 可以简化将数据写入移位寄存器的过程。

digitalWrite的详细介绍:

描述:

将HIGH或LOW值写入数字引脚。

如果将引脚配置为OUTPUTwith pinMode,则其电压将设置为相应的值:5V(在3.3V板上为3.3V)HIGH,0V(接地)LOW。

如果该引脚配置为INPUT,digitalWrite将启用(HIGH)或禁用(LOW)输入引脚上的内部上拉电阻。建议将设置为pinMode,INPUT_PULLUP以启用内部上拉电阻。

如果您未将设置pinMode为OUTPUT,而是将LED连接到引脚,则在调用时digitalWrite(HIGH),LED可能会变暗。如果未明确设置pinMode,digitalWrite将启用内部上拉电阻,其作用类似于大限流电阻。

语法:

digitalWrite(pin, value)

参数:

pin:Arduino引脚号。

value:HIGH或LOW。

返回:

无返回

范例程式码:

该代码使数字引脚13 an OUTPUT变为HIGH与LOW在1秒之间交替切换。

voidsetup( ) {

pinMode( 13, OUTPUT); // sets the digital pin 13 as output

}

voidloop( ) {

digitalWrite( 13, HIGH); // sets the digital pin 13 on

delay( 1000); // waits for a second

digitalWrite( 13, LOW); // sets the digital pin 13 off

delay( 1000); // waits for a second

}

注意和警告:

模拟输入引脚可用作数字引脚,称为A0,A1等。唯一的例外是Arduino Nano,Pro Mini和Mini的A6和A7引脚,它们只能用作模拟输入。

五、RTC模块的第一次调整

1.要调整RTC模块的时间,请加载并运行程序“ SetTime ”(您可以在Arduino IDE的库/ DS1307RTC的示例中找到它)。

2.重新加载并再次运行“数字时钟”程序。

按照此步骤,由于已安装RTC模块的电池组,因此RTC模块将保持正确的时间,并且您无需在每次使用时都重新编译“ Digital Clock”程序。

免责声明:本文由作者原创,文章内容系作者个人观点,电子发烧友网转载仅作为传达一种不同的观点,不代表电子发烧友网对该观点的赞同或支持,如有异议,欢迎联系电子发烧友网。

聚合阅读