电子日历课程设计(完整版)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学科基础课硬件课程设计
设计说明书
电子日历设计
学生姓名叶友波
学号0618014059
班级计本062
成绩
指导教师陆慧玲
计算机科学与技术系
2009年9月5日
学科基础课硬件课程设计评阅书
题目电子日历设计
学生姓名叶友波学号0618014059 指导教师评语及成绩
指导教师签名:
年月日答辩评语及成绩
答辩教师签名:
年月日
教研室意见
总成绩:
室主任签名:
年月日
课程设计任务书
2008—2009学年第一学期
专业:计算机科学与技术学号: 0618014059 姓名:叶友波
课程设计名称:学科基础课硬件课程设计
设计题目:电子日历设计
完成期限:自 2009 年 8月31日至 2009年 9月 11日共 2 周
设计依据、要求及主要内容(可另加附页):
⒈设计任务:
(1)电子钟具有显示年、月、日、时、分、秒及星期功能,可识别闰年.
(2)给出流程图,编写并调试程序。
(3)撰写设计报告。
⒉设计要求:
⑴完成系统的软件设计及调试。
⑵完成系统的硬件设计及调试。
⑶自行设计系统原理图及程序流程图。
指导教师(签字):教研室主任(签字):
批准日期:年月日
摘要
电子日历具有性能稳定、精确度高、成本低、易于产品化,以及方便、实用等特点。本次设计可分为两部分:硬件系统、软件系统。硬件主要有:8088CPU,38译码器,LED 数码管显示器等。通过键盘的按键来决定显示的是年月日还是时分秒。利用proteus仿真软件进行仿真测试。
关键词:电子日历; LED数码管;proteus仿真
目录
1 课题描述 (1)
2 设计过程 (2)
2.1硬件电路原理 (2)
2.1.1 LED显示 (2)
2.2 软件设计思想及流程图 (4)
2.2.1.软件设计思想 (4)
2.2.2 程序设计模块 (4)
2.2.3汇编源程序 (10)
3 测试 (14)
总结 (14)
参考文献 (16)
1 课题描述
在现今的电子日历具有性能稳定、精确度高、成本低、易于产品化,以及方便、实用等特点。本次设计可分为两部分:硬件系统、软件系统。利用LED显示器能显示出当前的时间包括年月日时分秒并且能计算出闰年的功能的电子日历装置。由于LED显示器只有六个数码管所以不能同时显示年月日和时分秒。所以通过键盘的按键来决定显示的是年月日还是时分秒,利用单片机将RC复位电路、动态显示电路、电源电路、去抖电路等正确的连接在一起,并通过单片机的编程来实现本次设计任务中的要求
2 设计过程
2.1硬件电路原理
一、实现电子钟计时的基本方法:
(1) 计数初值计算:
把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒,而100次计数可用软件方法实现。
假设使用T/C0,方式1,50ms定时,fosc=12MHz。
则初值X满足(216-X)×1/12MHz×12μs =50000μs
X=15536→0011110010110000→3CB0H
(2) 采用中断方式进行溢出次数累计,计满20次为秒计时(1秒);
(3) 从秒到分和从分到时的计时是通过累加和数值比较实现。
2.1.1 LED显示
6个LED数码显示可以采用P0、P2口实现。此次设计是基于MCS-51对LED的接口,选用八段共阳LED。八段LED显示管由八只发光二极管组成,编号是a,b,c,d,e,f,g和SP,分别与同名管脚相连。八段LED数码显示管原理很简单,是通过同名管脚上所加电平的高低来控制发光二极管是否点亮从而现实不同的字形的。如图2.1为共阳八段LED数码显示管原理图。图2.2中,所有发光二极管阳极共连后接到G脚。正常显示时G脚接+5V,各发光二极管是否点亮取决于a~SP各引脚上是否是低电平0伏。
2.1 LED显示结构 2.2 LED显示原理
2.1.2 电路原理设计
2.3 电路原理图
2.2 软件设计思想及流程图
2.2.1.软件设计思想
程序的设计主要有T0中断服务程序,动态显示程序,数字分离程序,键盘扫描程序,键处理程序,设置时间,设置年月日初值,判闰年程序,清除显示缓冲区程序这几个功能模块。
运用汇编语言,设计一个简单的电子日历,在6位LED七段显示器动态的显示出来年、月、日、和时、分、秒,实现计时,秒到60,分加1分到60,时加1 在通过键盘按键的切换小时到24时天加1,由于公历是比较有规律的,1、3、5、7、8、10、12月为大月,每月31天;4、6、9、11月为小月,每月只有30天;而2月份,则要根据当前的年份来决定,平年,2月份有28天,闰年,2月份有29天。所以处理2月份天数前要先判断是平年还是闰年。因为每个月份的天数不同,则需要设置一个月值表,通过查表找到相应月的天数,先判断到哪个月份,再从月份表中查出此月份的天数值。实现月加1,月到12时候年再加1.,还需请注意:平年与闰年的二月份的天数不同,平年二月28天,闰年的二月29天。
2.2.2 程序设计模块
1.本程序采用模块化设计的方法,主要由主函数,显示模块,判断是否闰年模块,提取系统日期模块组成
以下是对各个模块的说明:
(1)主函数。主函数体现着本程序设计的基本思路。从程序流程图上可以看到主函数执行的过程,这里不再赘述。需要注意的是主程序中有一段循环结构,其作用是为了等待停止中断服务的申请,即键盘按键,一旦检测到有键盘按键,则跳出循环,根据按键的内容来判断下一步应要做什么。
(2)显示模块。程序中INITJM子程序,作为显示界面的初始化程序,主要实现显示输入字符提示语和显示当前日期的提示语,根据光标定位的不同分别将其显示在不同的位置