大数跨境
0
0

LabVIEW+Arduino之RTC

LabVIEW+Arduino之RTC 沛华测控
2020-04-20
2
导读:好久不见呀!

点击上方蓝字【沛华测控】订阅我们


沛华LabVIEW基础课程|第33讲

LabVIEW+Arduino

RTC


Hello大家好,好久不见!由于这次疫情与其他乱七八糟的事情,最近一直没时间更新,今天开始又可以恢复更新啦!由于在家办公,暂时也只能用手上现有的材料来做内容,今天我们就来看一下RTC吧~


    RTC (Real_Time Clock)实时时钟在许多电子设备中都非常常见,最常见的就是我们PC主板上的RTC了,没错,就是那块纽扣电池与RTC电路,让PC断电后也能保持日期的更新

 

一般在PC上我们习惯在BIOS设置RTC时间,这次我们则通过LabVIEW来设置RTC模块的时间,模仿这一过程



DS1307 RTC实时时钟模块


DS1307是非常典型的RTC模块,一般买回来后店家都会附赠一颗纽扣电池CR2032;这里使用Arduino UNO


Arduino UNO开发板


实物接线图

DS1307 接线图


IIC接线如图所示:


LabVIEW程序框图

LabVIEW程序通过串口与Arduino通信


第1部分 初始化串口,波特率设置为115200,与Arduino一致;


第2部分 获取电脑系统时间后将数据转换为字符串


第3部分 相应的字符串发送Arduino


第4部分 Arduino接收LabVIEW发送下来的6个字节的字符(分别为年月日时分秒)后配置到RTC,紧接着返回Timestamp给LabVIEW


第5部分 退出循环后关闭串口。


Arduino源代码

向上滑动查看Arduino源代码


#include <uRTCLib.h>//这里要先安装相Naguissa的库DS1307

#include <Wire.h>//IIC libraries

uRTCLib rtc(0x68);//rtc_address


char TimeStampWrite[6]; // LabVIEW下发的时间戳

char TimeStampReturn[14]; //Arduino要返回的时间戳


void setup() {

  Serial.begin(115200); //初始化串口,波特率115200,与LabVIEW保持一致

  Wire.begin();


  //rtc.set(Second_set, Minute_set, Hour_set, 5, Day_set, Month_set, Year_set);

  //  RTCLib::set(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year)

}


void loop() {


  if (Serial.available() > 7)//LabVIEW程序运行后,发送字符下来,如果”Serial.available() > 7”成立,运行以下程序

  {

    if (Serial.read() == 0x55) {

      if (Serial.read() == 0xAA) {//如果串口读取到的字符为“55AA”,运行以下程序

        for (int i = 0; i < 6; i++)

        {

          TimeStampWrite[i] = Serial.read();//将串口读取到的字符赋值到数组TimeStampWrite[]里

        }

        rtc.set(TimeStampWrite[5], TimeStampWrite[4], TimeStampWrite[3], 5, TimeStampWrite[2], TimeStampWrite[1], TimeStampWrite[0]);//配置LabVIEW发下来的时间戳

        // RTCLib::set(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year)  

               

        rtc.refresh();//RTC模块更新“rtc.set”所配置的时间 

        sprintf(TimeStampReturn, "20%02d-%02d-%02d %02d:%02d:%02d", rtc.year(), rtc.month(), rtc.day(), rtc.hour(), rtc.minute(), rtc.second());//读取RTC时间并格式化

        Serial.println(TimeStampReturn);//将RTC模块的时间通过串口返回给LabVIEW,“Serial.println”带回车换行符,labview程序默认将其视为结束符

      }

    }

  }

}



先安装Naguissa的DS1307库(6.2.4版本),再将Arduino源码烧录到Arduino开发板上,运行LabVIEW后,可以实现以下动图效果:



以上就是今天的内容~我是Shania,咱们下期再会!




微信又双叒叕改版

为了不失联&获取最新最好玩的信息

记得星标&置顶我们公众号哟!



置顶方式


1.点击蓝字&扫描二维码进入公众号;

2.按右上方的【●●●】符号;

3.再点击【设为星标】就可以啦!!!



【声明】内容源于网络
0
0
沛华测控
这儿有好玩的LabVIEW基础教程!深圳市沛华测控有限公司/沛华电子科技有限公司是专注于系统设计、研发、软件硬件互相配合并提供整体方案的快速发展的高科技公司,也是NI公司在中国华南地区的合作伙伴。
内容 56
粉丝 0
沛华测控 这儿有好玩的LabVIEW基础教程!深圳市沛华测控有限公司/沛华电子科技有限公司是专注于系统设计、研发、软件硬件互相配合并提供整体方案的快速发展的高科技公司,也是NI公司在中国华南地区的合作伙伴。
总阅读6
粉丝0
内容56