嵌入式系统及应用实验设计.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统及应用实验设计

嵌入式系统及应用实验设计报告 班级:网络工程1班 姓名:马全武 学号:1105020319 设计简介 本次设计为电子时钟,总共分为两个模块,第一个模块为时间显示模块,用来显示时、分、秒,并且可以调整到自己想要的时间,第二个模块为日期显示,可以显示年、月、日,可以根据当前的日期来调整显示。 注:本来想加入星期显示的可是最后没14天为循环日期总会出错,所以删除了放弃日期显示。 功能需求 系统具备以下基本模块: 2.1显示时间:能够显示正常的时分秒。 2.2调整时间:能够调整时间显示。 2.3显示日期:能够显示正常的年月日。 2.4调整日期:能够调整日期的显示。 2.5在显示日期中加入了平年闰年的判断和月份天数的判断。 规格说明 本系统的所有显示均在八位数码管实现: 时分秒的显示示例为12 23 40,其中第1位和第2位显示时,第3位不显示,第4位和第5位显示分,第6位不显示,第7位和第8位显示秒; 年月日的显示示例为2015 06 20,其中第1位到第4位显示年份,第5位和第6位显示月份,第7位和第8位显示日期; 时间的显示和日期的显示通过K1来切换; 在时间显示状态下,通过K3来调整时的显示,每次按下,时+1,到24重置为0;通过K2来调整分的显示,每次按下分+1,秒置0,到60重置为0,时+1; 在日期显示状态下,通过K2来调整的显示,每次按下,月份+1,当到达最大值12时,年份+1,因大月和小月的区别,再调整月份的过程中可能会出现6月31号的情况,所以在系统中又加入了日期判断模块,会判断当天数大于所调整的月份的最大天数时会自动置为当前月份的最大天数,如:当从5月31号,当按下K3时,日期会自动变为6月30号。 通过K3来调整日的显示,每次按下,年份+1;因大月和小月的区别,再调整月份的过程中可能会出现6月31号的情况,所以在系统中又加入了判断模块,会判断当天数大于所调整的月份的最大天数时会自动置为当前月份的最大天数,如:当从5月31号,当按下K3时,日期会自动变为6月30号。 至于如何判断当前年份的2月是28天还是29天呢?系统中添加了年份判断模块和日期判断模块、如平年或者闰年的判断,其中大小月份独立分开,另外若为闰年2月为29天,平年2月为28天。 构件设计 功能流程图: 1、时间和年份显示是通过参数show来控制当show=0显示时间show=1显示日期; 2、时间显示和调整模块: while(1) { LED_SEL=0; // week=check_week(year,month,day); //显示时间 if(show==0) { for(i=0;7*i1000;i++) { key=KEY_Scan(); if(key==1){ show=1; } if(key==2){ minute++; second=0; if(minute==60) { minute=0; } } if(key==3){ hour++; if(hour==24) { hour=0; } } // SetLed(0,week); // delay_ms(1); SetLed(0,hour/10); delay_ms(1); PortationDisplay(1,hour%10); delay_ms(1); SetLed(2,minute/10); delay_ms(1); PortationDisplay(3,minute%10); delay_ms(1); SetLed(4,second/10); delay_ms(1); SetLed(5,second%10); delay_ms(1); } second++; if(second==60) { second=0; minute++; } if(minute==60) { minute=0; hour++; } if(hour==24) { hour=0; day++; } if(daydayl) { day=1; month++; } if(month12) { month=1; year++; } dayl=check_day(year,month); // week=check_week(year,month,day); } 3、年份显示和调整模块: { for(i=0;9*i1000;i++) { key=KEY_Scan(); if(key==1){ show=0; } if(key==2){ day++; if(daycheck_day(year,

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档