77范文网 - 专业文章范例文档资料分享平台

单片机万年历(5)

来源:网络收集 时间:2019-04-23 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

0000年~9999年星期算法 -------------------------------------------------------------------------------- ---------*/

unsigned char WeekDay(unsigned char c, unsigned char y, unsigned char m,unsigned char d) {

unsigned char week, day; c &= 0x03;//百年%4

c = c | (c << 2);//百年%4*5 day = WeekTab[m - 1];//月表 week = day >> 5;//月星期数 day &= 0x1f;//月天数

if ((m < 3) && !((c == 0) | (y & ((y & 0x03) == 0)))){//平年

if (m == 2) day--;//平年月天数 week++;//平年月表+1 }

y = y + (y >> 2);//年+年/4

week = (week + c + y + d + 2) % 7;//(星期=百年%4*5+年+年/4+月表+日+2)%7

return (week << 5) | day;//返回星期和月天数 }

unsigned char BcdToBin(unsigned char val) {

val = (val >> 4) * 10 + (val & 0x0f);//将BCD码转换为10进制数

return val;//返回10进制数 }

void main(void) {

unsigned char c, y, m, d;

21

unsigned char cx, yx, mx, dx; unsigned char WDay, Week, Day;

/*--------------------------------------------------------- 0001年1月1日 星期天

---------------------------------------------------------*/ c = 0x00; y = 0x01; m = 0x01; d = 0x01;

cx = BcdToBin(c);//百年 yx = BcdToBin(y);//年 mx = BcdToBin(m);//月 dx = BcdToBin(d);//日

WDay = WeekDay(cx, yx, mx, dx);//取星期和月天数 Week = WDay >> 5;//得到星期

Day = WDay & 0x1f;//得到最大月天数

/*--------------------------------------------------------- 1918年1月21日 星期一

---------------------------------------------------------*/ c = 0x19; y = 0x18; m = 0x01; d = 0x21;

cx = BcdToBin(c);//百年 yx = BcdToBin(y);//年 mx = BcdToBin(m);//月 dx = BcdToBin(d);//日

WDay = WeekDay(cx, yx, mx, dx);//取星期和月天数 Week = WDay >> 5;//得到星期

Day = WDay & 0x1f;//得到最大月天数

/*--------------------------------------------------------- 9999年12月31日 星期天

---------------------------------------------------------*/ c = 0x00;

22

y = 0x01; m = 0x01; d = 0x01;

cx = BcdToBin(c);//百年 yx = BcdToBin(y);//年 mx = BcdToBin(m);//月 dx = BcdToBin(d);//日

WDay = WeekDay(cx, yx, mx, dx);//取星期和月天数 Week = WDay >> 5;//得到星期

Day = WDay & 0x1f;//得到最大月天数

/*--------------------------------------------------------- 2004年6月18日 星期五

---------------------------------------------------------*/ c = 0x20; y = 0x04; m = 0x06; d = 0x18;

cx = BcdToBin(c);//百年 yx = BcdToBin(y);//年 mx = BcdToBin(m);//月 dx = BcdToBin(d);//日

WDay = WeekDay20(yx, mx, dx);//取星期和月天数 Week = WDay >> 5;//得到星期

Day = WDay & 0x1f;//得到最大月天数

/*--------------------------------------------------------- 2018年3月8日 星期四

---------------------------------------------------------*/ c = 0x20; y = 0x18; m = 0x03; d = 0x08;

cx = BcdToBin(c);//百年 yx = BcdToBin(y);//年 mx = BcdToBin(m);//月

23

dx = BcdToBin(d);//日

WDay = WeekDay20(yx, mx, dx);//取星期和月天数 Week = WDay >> 5;//得到星期

Day = WDay & 0x1f;//得到最大月天数 while(1); }

5 心得与体会

回顾起此次单片机课程设计,我仍感慨颇多,从选题到定稿,从理论到实践,可以学到很多很多的的东西。课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。但是整个系统只实现了一些最基本的功能,还有许多不足和可以扩展的地方。例如实现公历和农历的转换、闹钟报时等,这些有待以后来弥补,还望各位老师予以指正和修改。

6参考文献

【1】.张靖武.周灵彬.单片机原理、应用与PROTEUS仿真; 【2】.江志红.51单片机技术与应用系统开发案例精选; 【3】.周润景.基于PROTEUS的51单片机设计与仿真; 【4】.王守中.51单片机开发入门与典型实例; 【5】.张齐.朱宁西.单片机系统设计与开发; 【6】.周立功单片机开发网

24

答辩记录

1、例举设计过程中遇到的问题及其解决方法(至少两例)。 答:(1)问题说明:

解决方法:

(2)问题说明:

解决方法:

2、教师现场提的问题记录在此。 答:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3、问卷(对此次课程设计评价)

满意 ( ) 理由或建议: 一般 ( ) 不满意( )

25

26

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库单片机万年历(5)在线全文阅读。

单片机万年历(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/621655.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: