历史上的今天
返回首页

历史上的今天

今天是:2024年10月23日(星期三)

正在发生

2019年10月23日 | 使用MSP430连接RTC模块(DS2321)制作数字时钟

2019-10-23 来源:eefocus

在本篇文章中,我们将使用MSP430连接RTC模块DS3231来制作一款数字时钟,然后在1602液晶显示屏上显示时间和日期。 MSP-EXP430G2是德州仪器提供的开发工具,也称为LaunchPad,用于学习和练习如何使用其微控制器。该电路板属于MSP430产品线,我们可以对所有MSP430系列微控制器进行编程。


所需的材料

●    MSP430开发板

●    DS3231 RTC模块

●    电位器10k

●    LCD模块1602

●    连接导线

●    面包板


什么是RTC?

RTC是一个实时时钟模块。它用于维护大多数电子项目的日期和时间。该模块具有自己的纽扣电池电源,即使主电源被移除或MCU被硬件复位,也可使用该纽扣电池电源维持日期和时间。所以一旦我们在这个模块中设置了日期和时间,它会一直保持下去。RTC的型号很多,如DS1307、DS3231等。



将DS3231 RTC与MSP430进行连接

基于MSP430微控制器的数字时钟的电路图如下。如前所述,DS3231通信方式采用I2C,它包含一个串行时钟(SCL)和一个串行数据(SDA)引脚,该引脚必须连接到我们的MSP430的引脚9上的I2C引脚(引脚 2.1 、SCL)和引脚10(引脚2.2、SDA)。


MSP430能够提供3.3V的Vcc,但我们需要5V来连接LCD和RTC模块。所以,我们将在USB电缆连接器有一个跳线,名为TP1。你可以从那里得到5V。


使用MSP430连接RTC模块的电路图如下:



为RTC模块编程MSP430

在这里我们使用Energia IDE进行编程。它与Arduino IDE相同并易于使用。如果您对MSP430和energia IDE不熟悉,那么请参考链接:使用Energia IDE开发MSP430G2微控制器入门指南 - 闪烁LED。为了连接RTC模块,我们需要这个电路板的库。从此链接下载RTC库,然后进行安装。

我们还需要Wire(用于I2C通信)和liquidcrystal库,它们都预装在Energia IDE中。


本文最后给出了此MSP430数字时钟的完整代码。代码简单易懂。这里我们简单介绍它的几个部分。


首先,我们必须包括必要的库。

下面的库用于RTC模块和MSP430之间的I2C通信。这个库中已经定义了SDA和SCK引脚,所以我们不必单独声明这些引脚。

  1. #include


然后,我们包含了RTClib.h库用于RTC时钟以及LiquidCrystal.h用于LCD功能。

  1. #include "RTClib.h"

  2. #include    


之后,我们必须创建一个实例来初始化我们的RTC模块。

  1. RTC_DS3231 rtc;


然后制作一个大小为7的数组,并存储所有7天的名称。

  1. char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};


这里是LCD显示器使用的MSP430的引脚声明:(RS(P2.0),EN(P1.4),D4(P1.5),D5(P2.3),D6(P2.4),D7 (P2.5))

  1. LiquidCrystal lcd(8 ,6, 7,11,12,13);   



在void setup()中,我们初始化了LCD屏幕和RTC的接口,并指定了显示器的尺寸(宽度和高度),begin()需要在任何其他库命令之前调用。

  1. void setup () {

  2. lcd.begin(16, 2);

  3.    lcd.setCursor(3,0);

  4.   lcd.print("RTC Clock");

  5.   delay(3000);

  6.   lcd.clear();

  7.   rtc.begin();

  8.   //  rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

  9. }



注意:在上述函数中,注释的行代码很重要。如果未设置时间和日期,请取消注释该行并上载该程序。此功能在编译时存储计算机的时间,因此请确保您的计算机的时间是正确的。


现在,显示屏上显示的时间是正确的,但出现问题,每次重新启动/复位微控制器时,LCD都会显示您上传代码的时间。这是因为rtc.adjust()函数已经存储了计算机的时间,所以当您重置时,它会从那个时间开始。


要解决这个问题,首先用rtc.adjust()函数上传程序,然后取消注释。然后立即评论同一行并再次上传程序。现在,您的日期和时间已经设置完毕,不会因复位微控制器而受到影响。


在循环函数中,我们从RTC模块获取日期和时间,并将其存储在预定义的now变量中,并使用lcd.print()函数将其显示在LCD上。

  1. void loop () {

  2.     DateTime now = rtc.now();

  3.     lcd.clear();

  4.      lcd.setCursor(3,0);

  5.    lcd.print(now.day(), DEC);

  6.     lcd.print("/");….

  7. …….



将代码下载到Arduino开发板中,运行效果如下:





代码

本篇文章使用的完整代码如下所示:

  1. #include

  2. #include "RTClib.h"

  3. #include

  4. RTC_DS3231 rtc;

  5. char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

  6. LiquidCrystal lcd(8 ,6, 7,11,12,13);

  7. void setup () {

  8. lcd.begin(16, 2);

  9.   lcd.setCursor(3,0);

  10.   lcd.print("RTC Clock");

  11.   delay(3000);

  12.   lcd.clear();

  13.   rtc.begin();

  14.   //  rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

  15. }


  16. void loop () {

  17.     DateTime now = rtc.now();

  18.     lcd.clear();

  19.     lcd.setCursor(3,0);

  20.     Serial.print(now.year(), DEC);

  21.     Serial.print('/');

  22.     lcd.print(now.day(), DEC);

  23.     lcd.print("/");

  24.     lcd.print(now.month(), DEC);

  25.     lcd.print("/");

  26.     lcd.print(now.year(), DEC);

  27.     lcd.setCursor(1,5);

  28.     lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);

  29.     lcd.print(",");

  30.     lcd.print(now.hour(), DEC);

  31.     lcd.print(":");

  32.     lcd.print(now.minute(), DEC);

  33.     lcd.print(":");

  34.     lcd.print(now.second(), DEC);

  35.     delay(1000);

  36. }


推荐阅读

史海拾趣

Charcroft Electronics Ltd公司的发展小趣事

随着社会对环境保护和可持续发展的关注度不断提高,Charcroft Electronics Ltd公司积极履行社会责任,推动绿色生产和可持续发展。公司采用环保材料和节能技术,减少生产过程中的环境污染和资源消耗。同时,公司还积极参与社会公益事业,为社会做出贡献,展现了企业的良好形象和社会责任感。

这些故事虽然基于假设,但反映了电子行业中企业成长的一般路径和关键要素。如果您需要更具体、更详细的故事,建议您查阅Charcroft Electronics Ltd公司的官方资料、新闻报道或行业分析报告,以获取更准确的信息。

Amphenol Nexus公司的发展小趣事

1998年,Amphenol Nexus Technologies经历了一次重要的领导层更迭。拜尔斯先生退休,弗雷德·法拉哈尼(Fred Farahani)收购了Nexus, Inc.的股份,并与弗拉纳根先生成为合伙人。在Fred的领导下,公司开始关注销售和开发方面的新机遇,产品基础也扩展到包括微型连接器系列。这一变革为公司带来了新的增长点,使其在激烈的市场竞争中保持了领先地位。

Federal Custom Cable公司的发展小趣事

Federal Custom Cable非常重视客户服务工作。他们建立了完善的客户服务体系,为客户提供从产品咨询、选型、定制到售后服务的全方位支持。同时,Federal Custom Cable还积极与合作伙伴建立长期稳定的合作关系,共同推动电缆行业的发展。这种以客户需求为导向、以合作伙伴关系为基础的经营模式,为Federal Custom Cable的持续发展提供了有力保障。

Aeroflex Metelics / Hi-Rel Components公司的发展小趣事

在电缆产品性能和质量得到提升的同时,Federal Custom Cable也积极开拓新的市场领域。他们深入了解不同行业对电缆的需求特点,针对不同行业推出了一系列定制化的电缆产品。这些产品广泛应用于通信、医疗、航空等领域,并赢得了客户的一致好评。同时,Federal Custom Cable还加强了品牌建设和市场推广力度,提高了品牌知名度和美誉度。

AURORA公司的发展小趣事

AURORA公司深知自动驾驶技术的商业化落地需要与汽车制造商紧密合作。因此,AURORA积极与大众汽车集团、现代汽车等多家知名汽车制造商建立合作关系。通过共同研发和推广自动驾驶技术,AURORA成功帮助这些汽车厂商加速各自自动驾驶汽车的商用计划。这种深度合作不仅提升了AURORA的市场影响力,也为公司的长期发展奠定了坚实基础。

Deutron Electronics Corp公司的发展小趣事

Deutron Electronics Corp深知研发和创新对于公司发展的重要性。因此,公司始终保持着对研发的高投入,不断引进和培养人才。公司建立了完善的研发体系,鼓励员工参与创新活动,并为他们提供了充足的资源和支持。这些措施使得Deutron Electronics Corp在研发方面取得了显著成果,为公司的发展提供了源源不断的动力。

问答坊 | AI 解惑

车内音响的另类设计思路

把各类不同风格的音乐的播放由车速传感器和运行时间进行模糊技术选曲控制,给乘驾着一种车人合一的舒适感觉…

查看全部问答>

PAC的优缺点点评

缺点: 1、价格高,相对于PLC来说 2、可靠性低,这一点不要再争论,已争论很多次了,与体系架构相关系 3、体积大 4、对模拟量处理的精度和抗干扰能力低,与内部的结构和接口相关系 5、系统的抗干扰能力弱,因为自身内部的频率太高,体系是为商 ...…

查看全部问答>

下载有问题找版主!

新手的话可能新币不够用,下载不了,由于一些后续的工作还没有做好,利用现有的条件,建议直接找版主,因为版主下载附件不要芯币,也可以直接给你评分,直接加芯币就完事啦!看到新手抱怨下不了的帖子太多了,有点麻木了! 至于其他的现在还在考虑 ...…

查看全部问答>

找不到理想的器件,大家知道的话帮提个建议。

用avr做一个4位的led的动态显示,选了fdc6330l作为控制com端的开关。 结果显示1234的时候,第一位除了显示1,还显示2,只不过2的亮度很暗,后面这几位也是。 我认为是fdc6330l的响应速度太慢了。 所以想换个开关,开关要求耐压12v,5v的控制 ...…

查看全部问答>

如何用程序控制I/O口使得输出低电平以开启SIM300模块?

各位大虾:    今遇到一棘手问题:程序在使用SIM300模块进行通信的时候,发现SIM300模块开启的时候需要给它的PWRKEY引脚供低电平2秒钟,我怎么写程序能控制PWRKEY引脚呢?我用的是2440,硬件的连接我不清楚,但我估计应该是使用通用I/O ...…

查看全部问答>

SIM300C使用简单串口,上网时出现收发数据问题,谢谢

我使用的是SIM300C模块,用三线的简单串口与S3C2410连接。 现在网络是通上了,也能正常与服务器端进行发送接收! 当我向SIM300C发送命令的时候,他会反馈一些字符信息。 问题是当我正在向SIM300C发送命令、数据的时候,服务器端下发的数据也从串 ...…

查看全部问答>

请教:IIS和UDA1341工作原理

L3-interface用来控制音量,低音等,怎么控制的,控制信号是什么信号?PWM脉冲波?还是其他的 …

查看全部问答>

SOURCES书写问题。。

看门狗驱动程序 程序部分:                 PHYSICAL_ADDRESS RegPA; if (v_pWTDregs == NULL) {    RegPA.QuadPart = WDTIM_BASE;    v_pWTDregs = (volatile WDT_REGS_T *)MmM ...…

查看全部问答>

STM32定时器与PWM快速使用入门

STM32  定时器与 PWM 快速使用入门要求:在 万利的开发板 EK-STM32F 上产生 周期为1秒,占空比分别为 50% 10%的 PWM       并且点亮 板上 ...…

查看全部问答>