蓝桥杯DS1302驱动代码

举报
yd_274589494 发表于 2023/07/24 14:19:29 2023/07/24
【摘要】 @TOC 前言 一、DS1302时钟芯片工作原理:DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.0V~5.5V。这个芯片经常被使用在单片机上面,用来显示时间。 二、代码解析下面函数需要自己编写//DS1302写时钟地址:0x8c,0x8a,0x88,0x86,0x84,0x82...

@TOC

前言

一、DS1302时钟芯片

工作原理:
DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.0V~5.5V。这个芯片经常被使用在单片机上面,用来显示时间。

二、代码解析

下面函数需要自己编写

//DS1302写时钟地址:0x8c,0x8a,0x88,0x86,0x84,0x82,0x80
//地址分别对应年月周日时分秒
//DS1302读时钟地址:0x8d,0x8b,0x89,0x87,0x85,0x83,0x81
void set_Time(unsigned char hor,unsigned char min,unsigned char sec)
{
	Write_Ds1302_Byte(0x8e,0x00);//关闭写保护
	Write_Ds1302_Byte(0x80,(sec/10)*16+sec%10);//写入秒
	Write_Ds1302_Byte(0x82,(min/10)*16+min%10);//写入分
	Write_Ds1302_Byte(0x84,(hor/10)*16+hor%10);//写入时
	Write_Ds1302_Byte(0x8e,0x80);//打开写保护
}

//调用函数设置时间
set_Time(23,59,50);//调用此函数我们就可以去设置时间了

读取时间
hor1=Read_Ds1302_Byte(0x85);
min1=Read_Ds1302_Byte(0x83);
sec1=Read_Ds1302_Byte(0x81);
hor=(hor1/16)*10+hor1%16;
min=(min1/16)*10+min1%16;
sec=(sec1/16)*10+sec1%16;

有些小伙伴可能疑问了为什么不直接写入sec、min、hor呢,读取的时候也可以直接读取。DS1302寄存器使用的是压缩BCD码,所以在写入的时候我们要把十进制转换为BCD码格式,读取的时候我们要的是十进制格式所以又得进行一次转换,这样才能得到我们想要显示出来的时间。

BCD码和十进制的转换大家可以百度找找资料。

总结

DS1302的核心就在于这个Set_time函数编写,还有后面的写入和读取步骤。
只要注意好这些相信DS1302对于大家也不算什么了。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。