蓝桥杯DS1302驱动代码

简介: 蓝桥杯DS1302驱动代码

前言

一、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对于大家也不算什么了。


相关文章
|
19天前
|
网络安全 数据安全/隐私保护 计算机视觉
2024蓝桥杯网络安全-图片隐写-缺失的数据(0基础也能学会-含代码解释)
2024蓝桥杯网络安全-图片隐写-缺失的数据(0基础也能学会-含代码解释)
|
19天前
蓝桥杯真题代码记录(直线
蓝桥杯真题代码记录(直线
12 0
|
19天前
蓝桥杯真题代码记录(卡片
蓝桥杯真题代码记录(卡片
15 0
|
19天前
蓝桥杯真题代码记录(最优清零方案
蓝桥杯真题代码记录(最优清零方案
8 0
|
19天前
蓝桥杯真题代码记录(蜂巢
蓝桥杯真题代码记录(蜂巢
10 0
|
19天前
蓝桥杯真题代码记录(数位排序
蓝桥杯真题代码记录(数位排序
13 0
|
19天前
蓝桥杯真题代码记录(纸张尺寸
蓝桥杯真题代码记录(纸张尺寸
10 0
|
19天前
蓝桥杯真题代码记录(保险箱
蓝桥杯真题代码记录(保险箱
13 1
蓝桥杯真题代码记录(保险箱
|
19天前
|
传感器
蓝桥杯真题代码记录(管道
蓝桥杯真题代码记录(管道
16 2
|
19天前
|
索引
蓝桥杯真题代码记录(松散子序列
蓝桥杯真题代码记录(松散子序列
11 0