PCF8563实时时钟模块功能实现
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实时时钟模块功能实现相关推荐
- 【51单片机快速入门指南】4.6:I2C 与 PCF8563实时时钟日历芯片
目录 硬知识 概述 特性 功能描述 报警功能模式 定时器模式 CLKOUT输出 复位低电压检测器和时钟监视器 低电压检测器和时钟监视器 寄存器结构 寄存器概述 BCD编码格式寄存器概述 Control ...
- GD32F303调试小记(三)之IIC(硬件IIC+PCF8563实时时钟)
前言 前面的文章介绍了在单片机中常用的两种通信协议(USART和SPI),并给出了GD32F303对应的配置流程.这次介绍第三种常见的通信协议IIC.这此使用GD32的硬件IIC通信PCF8563实时 ...
- ESP8266-Arduino编程实例-PCF8563实时时钟(RTC)驱动
PCF8563实时时钟(RTC)驱动 1.PCF8563介绍 PCF8563 是针对低功耗优化的 CMOS 实时时钟 (RTC) 和日历. 还提供了可编程时钟输出.中断输出和低电压检测器. 所有地址和 ...
- linux设置rx8010时间,【经验】实时时钟模块RX8010SJ精度的软件校准方法
RX8010SJ,由于使用简单.标准SOP8封装和高性价比等特点,已经被广泛的应用于各种电子产品的设计中.虽然RX8010SJ内置出厂时经过校准的32.768KHz的晶体单元,能够很大程度上保证了其精 ...
- 树莓派基础实验32:DS1302实时时钟模块实验
一.介绍 现在有很多流行的串行时钟芯片,如DS1302,DS1307,PCF8485等,由于简单的接口,低成本和易用性,他们被广泛应用于电话.传真.便携式仪器等产品领域.在本实验中,我们将使用DS ...
- pcf8563c语言程序,PCF8563实时时钟C源程序
PCF8563实时时钟C源程序 与单片机通信实现实时时钟的外围电路! 最佳答案 #include #include #define uchar unsigned char #define uint u ...
- 关于实时时钟模块DS1302使用心得
最近在做万年历,用到实时时钟DS1302模块,花了两天时间看资料和写驱动,想记录一下我的学习经过,顺便做一下总结. 首先就是在图书馆查各种资料,于是查到的大多是这些,主要时硬件方面的资料: 其实能查到 ...
- 传感器自学笔记第十章——DS1302实时时钟模块(附51程序)
作者:GWD 时间:2019.06.28 一. 学习要点 1.问:DS1302的(双)总线与DHT11的单总线区别? 答:DS1302的总线是一条数据线,一条时钟线,此类总线"上写下读&qu ...
- 【ESP32】17.DS1302实时时钟模块实验(ThreeWire库 / RtcDS1302库)
上一篇: [ESP32]16.RFID门禁系统实验(SPI总线 / MFRC522库) 前言: 先放电路连接图: DS1302 RTC模块,内置Tri流充电器的实时时钟(RTC),或Timekeepi ...
最新文章
- 【大数据学习】数学基础及应用
- 网络推广公司浅析网站栏目页该如何优化?
- Gradle 2.0用户手册——总览(译)(转)
- 正则表达式之 NFA 引擎匹配原理详解
- join left semi_HIVE--left semi join
- 发卡网源码 去后门 可以扩展码支付
- TortoiseGit 分支管理策略
- jQuery EasyUI DataGrid Checkbox 数据设定与取值
- 交个朋友回应罗永浩3年还清6亿元:争取年底还完
- 集成阿里云视频播放器
- tictac 立体井字棋
- Proteus 封装 全加器 FA
- Matlab | 画图线型及颜色符号汇总
- 隔离模块介绍-隔离信号模块-光耦
- java调用python库pyd_Java怎么调用pyd文件
- java导出excel 边框不全_POI导出excel,合并单元格后没有边框
- 对于硬件成品测试,可以设计哪些测试用例?
- 零零信安-DD数据泄露报警日报【第43期】
- java tab标签_js-tab选项卡
- python爬取必应首页壁纸,Windows每日自动运行
热门文章
- 点餐小程序实战教程03-店铺信息展示
- delphi11中使用python4delphi组件
- 学生php作业,作业作业作业作业作业
- 淘宝系商品详情系统架构设计
- Markdown插入网易云音乐播放模块
- pr调整图层java,glm`prepected()`错误:没有适用于'predict'的方法应用于类“list”的对象...
- 基于Python实现的简易微信系统
- Nature子刊 定制饮食去除半胱氨酸和蛋氨酸可诱导细胞自毁进而治疗脑瘤?
- Redis源码初探(1)简单动态字符串SDS
- Centos7设置1920x1080分辨率