找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8622|回复: 27
收起左侧

分享51单片机+DS1302+LCD1602万年历程序,包括星期自动计算功能

  [复制链接]
ID:541464 发表于 2019-5-18 16:16 | 显示全部楼层 |阅读模式
一个基于51单片机,DS1302,LCD1602的万年历程序。
设置日期的时候,程序基于蔡勒(Zeller)公式会自动计算星期,包含了BCD码的处理转换。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
TIM截图20190518160844.png

单片机源程序如下:
  1. uchar calc_week(uchar y,uchar m,uchar d)
  2. {
  3.     uint temp = 0,m_tmp=0;
  4.     uchar week_temp;
  5.     y = bcd_to_dec(y);
  6.     m = bcd_to_dec(m);
  7.     d = bcd_to_dec(d);
  8.    
  9.     if(m > 2)
  10.     {
  11.         m_tmp = m+1;
  12.         temp = 26*m_tmp;
  13.         temp /= 10;
  14.         week_temp = (y+(y/4)+(temp&0xff)+d-36)%7;
  15.     }
  16.     else
  17.     {
  18.         m_tmp = m+13;
  19.         temp = 26*m_tmp;
  20.         temp /= 10;
  21.         week_temp = (y - 1+((y - 1)/4)+(temp&0xff)+d-36)%7;
  22.     }
  23.     return week_temp;
  24. }
复制代码
全部资料51hei下载地址:
Calendar.zip (125.7 KB, 下载次数: 671)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:546378 发表于 2019-6-16 19:07 | 显示全部楼层
真实有效,完全是对的,从来没有遇到过这么良心的帖子,太感谢了
回复

使用道具 举报

ID:568573 发表于 2019-6-21 09:01 | 显示全部楼层
谢谢楼主~好资料,51黑有你更精彩!!! 完美运行了
回复

使用道具 举报

ID:84745 发表于 2019-10-20 12:23 来自手机 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:517955 发表于 2019-11-7 11:03 | 显示全部楼层
非常好
回复

使用道具 举报

ID:517955 发表于 2019-11-7 11:04 | 显示全部楼层
代码写的真的不错
回复

使用道具 举报

ID:97678 发表于 2019-12-8 16:32 | 显示全部楼层
值得研究,好好的看看!
回复

使用道具 举报

ID:468209 发表于 2019-12-16 09:53 来自手机 | 显示全部楼层
很感谢
回复

使用道具 举报

ID:670001 发表于 2019-12-21 18:38 | 显示全部楼层
为什么会报错呢
电子钟.c(1): error C129: missing ';' before 'calc_week'
回复

使用道具 举报

ID:675802 发表于 2019-12-27 23:56 来自手机 | 显示全部楼层
有错误啊
回复

使用道具 举报

ID:653737 发表于 2020-1-6 21:42 | 显示全部楼层
谢谢,正需要
回复

使用道具 举报

ID:468209 发表于 2020-1-10 00:51 来自手机 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

ID:656060 发表于 2020-1-12 19:51 | 显示全部楼层
没有仿真吗
回复

使用道具 举报

ID:541464 发表于 2020-2-24 19:50 | 显示全部楼层

有仿真的呀
回复

使用道具 举报

ID:541464 发表于 2020-2-24 19:50 | 显示全部楼层
露西亚想沙 发表于 2019-12-21 18:38
为什么会报错呢
电子钟.c(1): error C129: missing ';' before 'calc_week'

是不是不小心按到键盘了,我这里没问题。
回复

使用道具 举报

ID:541464 发表于 2020-2-24 19:52 | 显示全部楼层

哈,哪里出错了?
回复

使用道具 举报

ID:700745 发表于 2020-3-7 13:48 | 显示全部楼层
有用,感谢楼主
回复

使用道具 举报

ID:704511 发表于 2020-3-8 13:16 | 显示全部楼层
报错了: error C129: missing ';' before 'calc_week'
回复

使用道具 举报

ID:846185 发表于 2020-11-23 20:41 | 显示全部楼层
咋加个闹钟呢
回复

使用道具 举报

ID:117930 发表于 2020-11-24 21:22 | 显示全部楼层
非常好的例子  感谢楼主无私的分享
回复

使用道具 举报

ID:88256 发表于 2020-11-24 22:13 | 显示全部楼层
阿喀琉斯 发表于 2020-3-8 13:16
报错了: error C129: missing ';' before 'calc_week'

本来我是不想下载的,看到有错误特意下载想看看能不能找出错误提高自己的阅读水平,结果编译是0错误0警告。
错误提示的是“calc_week”之前缺少“;”  ,整个工程搜索calc_week只有两处,一处在在276行的函数上,前后的大括号都是配对的,符号也正常;另一处在327行上,也是前后都是正确的,所以出错应该是你自己那边的问题,下载的程序是没错的。
回复

使用道具 举报

ID:849846 发表于 2020-11-26 20:24 | 显示全部楼层

同问加闹钟
回复

使用道具 举报

ID:870180 发表于 2021-1-2 14:50 | 显示全部楼层
楼主,
为啥源码打开keil就无响应
回复

使用道具 举报

ID:870180 发表于 2021-1-5 13:09 | 显示全部楼层
楼主,烧录后显示器只有第二行有黑格子,也没有数据
回复

使用道具 举报

ID:619259 发表于 2021-1-23 12:47 | 显示全部楼层
有错误,打不开
回复

使用道具 举报

ID:882946 发表于 2021-12-30 18:02 | 显示全部楼层
为什么所有的注释都是乱码
回复

使用道具 举报

ID:71233 发表于 2021-12-30 18:11 | 显示全部楼层
有没有带农历功能?
回复

使用道具 举报

ID:120219 发表于 2022-3-20 18:04 | 显示全部楼层
18年之前的星期转换都不对,比如2017-03-01显示星期日,真实是星期三
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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