51单片机入门_江协科技_23~24_OB记录的笔记DS1302时钟

23. DS1302实时时钟

  • 23.1. DS1302介绍
    •DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能
    •RTC(Real Time Clock):实时时钟,是一种集成电路,通常称为时钟芯片
    在这里插入图片描述

  • 23.2. DS1302引脚定义和应用电路
    在这里插入图片描述

  • 23.3. DS1302内部结构框图
    在这里插入图片描述

  • 23.4. 寄存器定义
    在这里插入图片描述

  • 23.5. 时序定义
    在这里插入图片描述

  • 23.6. BCD码
    •BCD码(Binary Coded Decimal‎),用4位二进制数来表示1位十进制数
    •例:0001 0011表示13,1000 0101表示85,0001 1010不合法
    •在十六进制中的体现:0x13表示13,0x85表示85,0x1A不合法
    •BCD码转十进制:DEC=BCD/1610+BCD%16; (此公式只有2位BCD可用)
    •十进制转BCD码:BCD=DEC/10
    16+DEC%10; (此公式只有2位BCD可用)

  • 23.7. Proteus中仿真环境搭建

    • 在目前的仿真环境中插入 DS1302时钟芯片,其引脚连接如图,同时注意晶振直接搜索Crystal找到通用晶振插入,插入后将震动频率设置为32768Hz

    • 在这里插入图片描述

    • 在这里插入图片描述

    • 为了防止后续程序仿真过程中调用LCD1602与之前一节8x8点阵屏出现问题,此处我在点阵屏接P0口之前加了一组8位DIPSW手动开关用于切断点阵屏参与本节实验;

    • 在这里插入图片描述

  • 23.8. 示例程序,指定一个初始的时间并显示在LCD1602屏上面,包括第一行的年月日,第二行开始的时分秒。需要之前程序样例中的LCD1602.c与LCD1602.h的模块化程序,并新建DS1302.c与DS1302.h的针对DS1302时钟芯片的模块化程序,用于时钟芯片初始化,写入数据函数,读入数据函数,设定时间,读取时间的操作

    • DS1302.h的程序如下:
	#ifndef _DS1302_H_ 
#define _DS1302_H_  

extern unsigned char DS1302_Time[];//数组声明外部可调用

void DS1302_Init(void);
void DS1302_WriteByte(unsigned char Command,Data);
unsigned char DS1302_ReadByte(unsigned char Command); //返回
void DS1302_SetTime(void);
void DS1302_ReadTime(void);

#endif
  • DS1302.c的程序如下:
#include <REGX52.H>

sbit DS1302_SCLK=P3^6; 
sbit DS1302_IO=P3^4;
sbit DS1302_CE=P3^5;

#define DS1302_SECOND 0x80 //定义DS1302秒的写入地址
#define DS1302_MINUTE 0x82 //定义DS1302分钟的写入地址
#define DS1302_HOUR   0x84 //定义DS1302小时的写入地址
#define DS1302_DATE   0x86 //定义DS1302天的写入地址
#define DS1302_MONTH  0x88 //定义DS1302月份的写入地址
#define DS1302_DAY    0x8A //定义DS1302星期的写入地址
#define DS1302_YEAR   0x8C //定义DS1302年的写入地址
#define DS1302_WP     0x8E //定义DS1302清空


char DS1302_Time[]={24,04,06,22,56,56,6};//初始化时钟2024年4月6日22时56分56秒周六数组

void DS1302_Init(void) //DS130
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值