1.概述

PCF8563是为低功耗而优化的CMOS实时时钟/日历。提供了可编程时钟输出、中断输出和低电压检测器。所有地址和数据都是通过两路双向IIC总线串行传输的。最大总线速度为400kbits/s。内置的字地址寄存器在每个写入或读取数据字节后自动递增。

2.特点

■ Provides year, month, day, weekday, hours, minutes and seconds based on 32.768 kHz quartz crystal
■ Century flag
■ Wide operating supply voltage range: 1.0 to 5.5 V
■ Low back-up current; typical 0.25 µA at VDD = 3.0 V and Tamb = 25 °C ■ 400 kHz two-wire I2C-bus interface (at VDD = 1.8 to 5.5 V)
■ Programmable clock output for peripheral devices: 32.768 kHz, 1024 Hz,32 Hz and 1 Hz
■ Alarm and timer functions
■ Voltage-low detector
■ Integrated oscillator capacitor
■ Internal power-on reset
■ I2C-bus slave address: read A3H; write A2H
■ Open drain interrupt pin.

3.硬件描述

电路结构框图

引脚排列顺序

4.软件实现

1.启动/关闭闹钟

/*****************************************************************************
***@name:启动、关闭时钟
***@input:0:关闭时钟;1:启动时钟
*****************************************************************************/
void start_stop(uint8_t status)
{if(status == 0){iic_send_add_byte(0x00,0x20);//关闭时钟}else if(status == 1){iic_send_add_byte(0x00,0x00);//开启时钟}
}

2.BCD/十进制相互转换

/******************BCD转十进制***************************/
uint8_t bcd_dec(uint8_t bat)
{uint8_t temp1,temp2,tol;temp1=bat&0x0f;temp2=(bat&0xf0)>>4;tol=temp2*10+temp1;return tol;
}
/******************十进制转BCD***************************/
uint8_t dec_bcd(uint8_t bat)
{return ((bat%10) & 0x0F) | (((bat/10) << 4) & 0xF0);;
}
/***

3.初始化当前时间

void time_init(uint8_t year,uint8_t moom,uint8_t dat,uint8_t hour,uint8_t min,uint8_t sec)
{sec = dec_bcd(sec);min = dec_bcd(min);hour = dec_bcd(hour);dat = dec_bcd(dat);moom = dec_bcd(moom);year = dec_bcd(year);iic_send_add_byte(0x02,sec);         iic_send_add_byte(0x03,min);          iic_send_add_byte(0x04,hour);                    iic_send_add_byte(0x05,dat);         iic_send_add_byte(0x07,moom);         iic_send_add_byte(0x08,year);
}

4.获取当前时间并转换

void get_time(void)
{date.sec=0x7f&iic_rec_add_byte(0x02);    //读取秒date.min=0x7f&iic_rec_add_byte(0x03);   //读取分钟date.hour=0x3f&iic_rec_add_byte(0x04);  //读取小时date.dat=0x3f&iic_rec_add_byte(0x05);   //读取天数date.moom=0x1f&iic_rec_add_byte(0x07);  //读取月date.year=0xff&iic_rec_add_byte(0x08);    //读取年date.sec1=bcd_dec(date.sec);                   //将读取的BCD码秒转换成十进制秒以便运算date.min1=bcd_dec(date.min);date.hour1=bcd_dec(date.hour);date.dat1=bcd_dec(date.dat);date.moom1=bcd_dec(date.moom);date.year1=bcd_dec(date.year);//printf("20%d年%d月%d日%d时%d分%d秒\r\n",date.year1,date.moom1,date.dat1,date.hour1,date.min1,date.sec1);
}

5.设置闹钟

void P8563_alarm(uint8_t day,uint8_t hour,uint8_t min)
{day = dec_bcd(day);hour = dec_bcd(hour);min = dec_bcd(min); iic_send_add_byte(0xc,0x1);   //星期报警iic_send_add_byte(0xb,day); /*日期报警*/    iic_send_add_byte(0xa,hour); /*小时报警*/   iic_send_add_byte(0x9,min); /*分钟报警*/iic_send_add_byte(0x01,0x12); /*报警有效*/ //使能报警器和定时器发出中断请求}

6.清除闹钟中断

/******************清除中断拉高电平***************************/
void clear_alarm(void)
{iic_send_add_byte(0x01,0x02);//清中断标志
}
/******************关闭闹钟中断***************************/
void close_alarm(void)
{iic_send_add_byte(0x01,0x00);//禁止中断
}

5.总结

该模块通过IIC与单片机进行通信,单片机只需往对应的寄存器发送数据即可实现所需要的功能,适合任意一款具备IIC通信外设的8位/32位单片机。

PCF8563实时时钟模块功能实现相关推荐

  1. 【51单片机快速入门指南】4.6:I2C 与 PCF8563实时时钟日历芯片

    目录 硬知识 概述 特性 功能描述 报警功能模式 定时器模式 CLKOUT输出 复位低电压检测器和时钟监视器 低电压检测器和时钟监视器 寄存器结构 寄存器概述 BCD编码格式寄存器概述 Control ...

  2. GD32F303调试小记(三)之IIC(硬件IIC+PCF8563实时时钟)

    前言 前面的文章介绍了在单片机中常用的两种通信协议(USART和SPI),并给出了GD32F303对应的配置流程.这次介绍第三种常见的通信协议IIC.这此使用GD32的硬件IIC通信PCF8563实时 ...

  3. ESP8266-Arduino编程实例-PCF8563实时时钟(RTC)驱动

    PCF8563实时时钟(RTC)驱动 1.PCF8563介绍 PCF8563 是针对低功耗优化的 CMOS 实时时钟 (RTC) 和日历. 还提供了可编程时钟输出.中断输出和低电压检测器. 所有地址和 ...

  4. linux设置rx8010时间,【经验】实时时钟模块RX8010SJ精度的软件校准方法

    RX8010SJ,由于使用简单.标准SOP8封装和高性价比等特点,已经被广泛的应用于各种电子产品的设计中.虽然RX8010SJ内置出厂时经过校准的32.768KHz的晶体单元,能够很大程度上保证了其精 ...

  5. 树莓派基础实验32:DS1302实时时钟模块实验

    一.介绍   现在有很多流行的串行时钟芯片,如DS1302,DS1307,PCF8485等,由于简单的接口,低成本和易用性,他们被广泛应用于电话.传真.便携式仪器等产品领域.在本实验中,我们将使用DS ...

  6. pcf8563c语言程序,PCF8563实时时钟C源程序

    PCF8563实时时钟C源程序 与单片机通信实现实时时钟的外围电路! 最佳答案 #include #include #define uchar unsigned char #define uint u ...

  7. 关于实时时钟模块DS1302使用心得

    最近在做万年历,用到实时时钟DS1302模块,花了两天时间看资料和写驱动,想记录一下我的学习经过,顺便做一下总结. 首先就是在图书馆查各种资料,于是查到的大多是这些,主要时硬件方面的资料: 其实能查到 ...

  8. 传感器自学笔记第十章——DS1302实时时钟模块(附51程序)

    作者:GWD 时间:2019.06.28 一. 学习要点 1.问:DS1302的(双)总线与DHT11的单总线区别? 答:DS1302的总线是一条数据线,一条时钟线,此类总线"上写下读&qu ...

  9. 【ESP32】17.DS1302实时时钟模块实验(ThreeWire库 / RtcDS1302库)

    上一篇: [ESP32]16.RFID门禁系统实验(SPI总线 / MFRC522库) 前言: 先放电路连接图: DS1302 RTC模块,内置Tri流充电器的实时时钟(RTC),或Timekeepi ...

最新文章

  1. 【大数据学习】数学基础及应用
  2. 网络推广公司浅析网站栏目页该如何优化?
  3. Gradle 2.0用户手册——总览(译)(转)
  4. 正则表达式之 NFA 引擎匹配原理详解
  5. join left semi_HIVE--left semi join
  6. 发卡网源码 去后门 可以扩展码支付
  7. TortoiseGit 分支管理策略
  8. jQuery EasyUI DataGrid Checkbox 数据设定与取值
  9. 交个朋友回应罗永浩3年还清6亿元:争取年底还完
  10. 集成阿里云视频播放器
  11. tictac 立体井字棋
  12. Proteus 封装 全加器 FA
  13. Matlab | 画图线型及颜色符号汇总
  14. 隔离模块介绍-隔离信号模块-光耦
  15. java调用python库pyd_Java怎么调用pyd文件
  16. java导出excel 边框不全_POI导出excel,合并单元格后没有边框
  17. 对于硬件成品测试,可以设计哪些测试用例?
  18. 零零信安-DD数据泄露报警日报【第43期】
  19. java tab标签_js-tab选项卡
  20. python爬取必应首页壁纸,Windows每日自动运行

热门文章

  1. 点餐小程序实战教程03-店铺信息展示
  2. delphi11中使用python4delphi组件
  3. 学生php作业,作业作业作业作业作业
  4. 淘宝系商品详情系统架构设计
  5. Markdown插入网易云音乐播放模块
  6. pr调整图层java,glm`prepected()`错误:没有适用于'predict'的方法应用于类“list”的对象...
  7. 基于Python实现的简易微信系统
  8. Nature子刊 定制饮食去除半胱氨酸和蛋氨酸可诱导细胞自毁进而治疗脑瘤?
  9. Redis源码初探(1)简单动态字符串SDS
  10. Centos7设置1920x1080分辨率