查看: 1733|回复: 1

【赚周年币】技术贴——Fireduino的RTC功能学习

[复制链接]
  • TA的每日心情
    奋斗
    2023-6-27 14:09
  • 签到天数: 943 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2016-12-29 16:28:12 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 9robot 于 2016-12-29 16:36 编辑

           在这几天的学习当中发现Fireduino的串口并不是十分好用,有时会经常出现错误导致报错,因此决定尽量不适用串口来显示信息。上个帖子搞定了IIC接口的OLED屏,今天就可以使用OLED屏来显示Fireduino运行时的一些信息。Fireduino自带了RTC模块。
    RTC芯片是HYM5863,
    RTC -- HYM5863
    HYM8563是一款低功耗CMOS实时时钟/日历芯片,它提供一个可编程的时钟输出,一个中断输出和一个掉电检测器,所有的地址和数据都通过I2C总线接口串行传递。最大总线速度为400Kbit/s,每次读写数据后,内嵌的字地址寄存器会自动递增。

    Fireduino RTC
    Fireduino RTC 使用外接设备为I2C 接口的HYM5863,挂接在Wire1 接口

    Fireduino RTCTime 相关结构体
    //datetimeInfo struct
    typedef struct
    {   
    unsigned short year;//year (1900 ~ 2099)   
    unsigned char  mon;//month,begin from 1 to 12   
    unsigned char  week;//week (0:Sunday 1:Monday ... 6:Saturday)   
    unsigned char  day;//day,begin from 1 to 31   
    unsigned char  hour;//hour,24-hour   
    unsigned char  min;//minute   
    unsigned char  sec;//second
    }RTCTime;


    Fireduino RTC APIgetTime(RTCTime *time)  
    说明        获取RTCTime   
    语法        RTC.getTime(&time);   
    参数        RTCTime 类型指针   
    返回        无

    setTime(RTCTime *time)
    说明         设置RTCTime   
    语法         RTC.setTime(&time);   
    参数         RTCTime 类型指针   
    返回         无

    这次试验没有键盘,因此不能通过手动设置时间和日期,这部分功能还需要补充。代码部分列出了与RTC有关的操作,省略了其他函数,可以在附件里找到全部内容。
    1. #include "Arduino.h"
    2. #include "Wire.h"
    3. #include "RTC.h"
    4. #include "oledfont.h"

    5. RTCTime time;
    6. #define OLED_ADDRESS  (0x78>>1) //通过调整0R电阻,屏可以0x78和0x7A两个地址 -- 默认0x78
    7.   char Year[10];
    8.   char Month[10];
    9.   char Day[10];
    10.   char Hour[10];
    11.   char Minute[10];
    12.   char Second[10];
    13. void setup() {
    14.   Serial.begin(9600);
    15.   delay(100);
    16.   pinMode(3, OUTPUT);
    17.   digitalWrite(3,HIGH);
    18.   Serial.println("setup");  
    19.   Wire.begin();  //初始化I2C
    20.   delay(100);
    21.   OLED_Init();

    22.   time.year  = 2016;//year (1900 ~ 2099)
    23.   time.mon   = 12;//month,begin from 1 to 12
    24.   time.week  = 4 ;//week (0:Sunday 1:Monday ... 6:Saturday)
    25.   time.day   = 28;//day,begin from 1 to 31
    26.   time.hour  = 23;//hour,24-hour
    27.   time.min   = 59;//minute
    28.   time.sec   = 50;//second
    29.   Wire1.begin();
    30.   RTC.setTime(&time);

    31. }

    32. void loop() {
    33.   char tab[]={"Fireduino"};
    34.   char date1[20]={};
    35.   char time1[20]={};
    36.   OLED_ClearScr();
    37. while(1)
    38. {
    39.    RTC.getTime(&time);

    40.    date1[0]=(time.year)/1000+'0';
    41.    date1[1]=(time.year)%1000/100+'0';
    42.    date1[2]=(time.year)%100/10+'0';
    43.    date1[3]=(time.year)%10+'0';
    44.    date1[4]='-';
    45.    date1[5]=(time.mon)/10+'0';
    46.    date1[6]=(time.mon)%10+'0';
    47.    date1[7]='-';
    48.    date1[8]=(time.day)/10+'0';
    49.    date1[9]=(time.day)%10+'0';
    50.    
    51.    time1[0]=(time.hour)/10+'0';
    52.    time1[1]=(time.hour)%10+'0';
    53.    time1[3]=(time.min)/10+'0';
    54.    time1[4]=(time.min)%10+'0';
    55.    time1[6]=(time.sec)/10+'0';
    56.    time1[7]=(time.sec)%10+'0';
    57.    time1[2]=':';
    58.    time1[5]=':';

    59.    LCD_P8x16Str(0,0,date1);
    60.    LCD_P8x16Str(0,2,time1);

    61.   
    62. //  digitalWrite(3,HIGH);
    63. //  delay(100);
    64. //  digitalWrite(3,LOW);
    65. //  delay(100);
    66.   }

    67. }
    复制代码
    IMG_20161229_161054.jpg
    IMG_20161229_161111.jpg

    i2c.zip

    4.81 KB, 下载次数: 0

    评分

    参与人数 1 +30 收起 理由
    loveeeboard + 30

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2017-10-15 13:21
  • 签到天数: 183 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2016-12-30 09:32:26 | 显示全部楼层
    谢谢分享                                   
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-19 08:55 , Processed in 0.133299 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.