找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2205|回复: 5
打印 上一主题 下一主题
收起左侧

想实现DS1302显示时间,做出来了,但是年份,我想弄成2021,但是老是出错

[复制链接]
跳转到指定楼层
楼主

下边是时钟程序,我本来是想着四位数转BCD码,千位除以1000再乘以16,不过那样不对



void DS1302_SetTime()
{
        DS1302_WriteByte(DS1302_WP,0x00);
        DS1302_WriteByte(Year,DS1302_Time[0]/10*16+DS1302_Time[0]%10);   
        DS1302_WriteByte(Month,DS1302_Time[1]/10*16+DS1302_Time[1]%10);
        DS1302_WriteByte(Date,DS1302_Time[2]/10*16+DS1302_Time[2]%10);
        DS1302_WriteByte(Hour,DS1302_Time[3]/10*16+DS1302_Time[3]%10);
        DS1302_WriteByte(Minute,DS1302_Time[4]/10*16+DS1302_Time[4]%10);
        DS1302_WriteByte(Second,DS1302_Time[5]/10*16+DS1302_Time[5]%10);
        DS1302_WriteByte(Day,DS1302_Time[6]/10*16+DS1302_Time[6]%10);
        DS1302_WriteByte(DS1302_WP,0x80);
}


void DS1302_ReadTime()                    
{
        unsigned char Temp;
        Temp=DS1302_ReadByte(Year);
        DS1302_Time[0]=Temp/16*10+Temp%16;
       
        Temp=DS1302_ReadByte(Month);
        DS1302_Time[1]=Temp/16*10+Temp%16;
       
        Temp=DS1302_ReadByte(Date);
        DS1302_Time[2]=Temp/16*10+Temp%16;
       
        Temp=DS1302_ReadByte(Hour);
        DS1302_Time[3]=Temp/16*10+Temp%16;
       
        Temp=DS1302_ReadByte(Minute);
        DS1302_Time[4]=Temp/16*10+Temp%16;
       
        Temp=DS1302_ReadByte(Second);
        DS1302_Time[5]=Temp/16*10+Temp%16;
       
        Temp=DS1302_ReadByte(Day);
        DS1302_Time[6]=Temp/16*10+Temp%16;
       
}


5ba7e20264165613cbc8fc68d63f2b7.png (16.81 KB, 下载次数: 49)

5ba7e20264165613cbc8fc68d63f2b7.png

3622c4e1cefd0949641eab6818c8526.png (13.41 KB, 下载次数: 45)

3622c4e1cefd0949641eab6818c8526.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:429003 发表于 2021-10-21 14:54 | 只看该作者
DS1302年的字段数值范围0-99,显示时年份数值加2000!!!
回复

使用道具 举报

板凳
ID:624769 发表于 2021-10-21 15:06 | 只看该作者
DS1302 只有两位计年法, 按千年虫准则,你把 >= 21的年份,前面给20, <21的年份前面给21的话,你这个钟可以用100年不需要改程序,百年后就算这个钟没坏,也已经不需要你操心了。
回复

使用道具 举报

地板
ID:973696 发表于 2021-10-21 16:33 | 只看该作者
xstong 发表于 2021-10-21 14:54
DS1302年的字段数值范围0-99,显示时年份数值加2000!!!

谢谢,我懂了
回复

使用道具 举报

5#
ID:973696 发表于 2021-10-21 16:34 | 只看该作者
188610329 发表于 2021-10-21 15:06
DS1302 只有两位计年法, 按千年虫准则,你把 >= 21的年份,前面给20,

谢谢了,懂了
回复

使用道具 举报

6#
ID:960157 发表于 2021-10-22 13:07 | 只看该作者
换用DS12C887.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表