一个基于51单片机,DS1302,LCD1602的万年历程序。
设置日期的时候,程序基于蔡勒(Zeller)公式会自动计算星期,包含了BCD码的处理转换。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- uchar calc_week(uchar y,uchar m,uchar d)
- {
- uint temp = 0,m_tmp=0;
- uchar week_temp;
- y = bcd_to_dec(y);
- m = bcd_to_dec(m);
- d = bcd_to_dec(d);
-
- if(m > 2)
- {
- m_tmp = m+1;
- temp = 26*m_tmp;
- temp /= 10;
- week_temp = (y+(y/4)+(temp&0xff)+d-36)%7;
- }
- else
- {
- m_tmp = m+13;
- temp = 26*m_tmp;
- temp /= 10;
- week_temp = (y - 1+((y - 1)/4)+(temp&0xff)+d-36)%7;
- }
- return week_temp;
- }
复制代码 全部资料51hei下载地址:
Calendar.zip
(125.7 KB, 下载次数: 673)
|