电子日历课程设计(完整版)

上传人:第*** 文档编号:57351906 上传时间:2018-10-21 格式:PDF 页数:21 大小:240.29KB
返回 下载 相关 举报
电子日历课程设计(完整版)_第1页
第1页 / 共21页
电子日历课程设计(完整版)_第2页
第2页 / 共21页
电子日历课程设计(完整版)_第3页
第3页 / 共21页
电子日历课程设计(完整版)_第4页
第4页 / 共21页
电子日历课程设计(完整版)_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《电子日历课程设计(完整版)》由会员分享,可在线阅读,更多相关《电子日历课程设计(完整版)(21页珍藏版)》请在金锄头文库上搜索。

1、 学科基础课硬件课程设计 设计说明书 电子日历设计 学 生 姓 名 叶 友 波 学号 0618014059 班级 计 本 062 成绩 指 导 教 师 陆 慧 玲 计算机科学与技术系 2009 年 9 月 5 日 学科基础课硬件 课程设计评阅书 题目 电子日历设计 学生姓名 叶友波 学号 0618014059 指导教师评语及成绩 指导教师签名 年 月 日 答辩评语及成绩 答辩教师签名 年 月 日 教研室意见 总成绩 室主任签名 年 月 日 课程设计任务书 20082009 学年第一学期 专业 计算机科学与技术 学号 0618014059 姓名叶友波 课程设计名称 学科基础课硬件课程设计 设计题

2、目电子日历设计 完成期限自 2009 年 8 月 31 日至 2009 年 9 月 11 日共 2 周 设计依据、要求及主要内容可另加附页 设计任务 1电子钟具有显示年、月、日、时、分、秒及星期功能可识别闰年. 2给出流程图编写并调试程序。 3撰写设计报告。 设计要求 完成系统的软件设计及调试。 完成系统的硬件设计及调试。 自行设计系统原理图及程序流程图。 指导教师签字 教研室主任签字 批准日期 年 月 日 摘 要 电子日历具有性能稳定、 精确度高、成本低、 易于产品化 以及方便、实用等特点。 本次设计可分为两部分硬件系统、软件系统。硬件主要有8088CPU38译码器LED 数码管显示器等。

3、通过键盘的按键来决定显示的是年月日还是时分秒。 利用 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 1 课题描述 在现今的电子日历具有性能稳定、精确度高、成本低、易于产品化以及方便、实用 等特点。本次设计可分为两部分硬件系统、软件系统。利用 LED 显示器能显示

4、出当前 的时间包括年月日时分秒并且能计算出闰年的功能的电子日历装置。由于 LED 显示器只 有六个数码管所以不能同时显示年月日和时分秒。 所以通过键盘的按键来决定显示的是年 月日还是时分秒利用单片机将 RC 复位电路、动态显示电路、电源电路、去抖电路等正 确的连接在一起并通过单片机的编程来实现本次设计任务中的要求 2 2 设计过程 2.1 硬件电路原理 一、实现电子钟计时的基本方法 (1) 计数初值计算: 把定时器设为工作方式1定时时间为50ms则计数溢出20次即得时钟计时最小单位 秒而100次计数可用软件方法实现。 假设使用 T/C0方式150ms 定时fosc=12MHz。 则初值 X 满

5、足216-X1/12MHz12 s =50000 s X=1553600111100101100003CB0H (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 数码显示管原理很简单 是通过同名管脚上所加电平的高 低来控制发光二极管是否点亮从而现实不

6、同的字形的。 如图 2.1 为共阳八段 LED 数码显示 管原理图。图 2.2 中所有发光二极管阳极共连后接到 G 脚。正常显示时 G 脚接+5V各 发光二极管是否点亮取决于 aSP 各引脚上是否是低电平 0 伏。 2.1 LED 显示结构 2.2 LED 显示原理 3 2.1.2 电路原理设计 2.3 电路原理图4 2.2 软件设计思想及流程图 2.2.1软件设计思想 程序的设计主要有 T0 中断服务程序动态显示程序数字分离程序键盘扫描程序 键处理程序设置时间设置年月日初值判闰年程序清除显示缓冲区程序这几个功能 模块。 运用汇编语言,设计一个简单的电子日历,在6位LED七段显示器动态的显示出

7、来 年、 月、日、和时、分、秒实现计时秒到 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 天闰年

8、的 二月 29 天。 2.2.2 程序设计模块 1.本程序采用模块化设计的方法主要由主函数显示模块判断是否闰年模块提取系 统日期模块组成 以下是对各个模块的说明 1 主函数。主函数体现着本程序设计的基本思路。从程序流程图上可以看到主函数执 行的过程这里不再赘述。需要注意的是主程序中有一段循环结构其作用是为了等待停 止中断服务的申请即键盘按键一旦检测到有键盘按键则跳出循环根据按键的内容 来判断下一步应要做什么。 2 显示模块。程序中 INITJM 子程序作为显示界面的初始化程序主要实现显示输 入字符提示语和显示当前日期的提示语 根据光标定位的不同分别将其显示在不同的位置 5 2.主要模块流程图

9、开始堆栈初始化显示状态标志初始将(20H)-P1调用SHEZHI设置年月日初值重置显示状态标志10-(40H)开中断TO工作于方式1设初值计时将TRO置1调用KEY调用KEYC2-2-1 主程序流程图 6 3.数字分离程序 R0 为计时单元地址R1 为显示缓冲区地址。因为时分秒都需分离则设置 R2 的循 环次数为 3。先将 41H 单元内的时传送给累加器 A再与 0F 与保留低四位这样就使得 时的低位被分离出来了。分离后送与显示缓冲区 R1 的 50H 单元。再将 41H 单元内的时传 送给累加器 A 使高低位交换。 交换之后 再与 0F 进行与运算。 使时的高位也分离出来 并送给显示缓冲区的

10、 51H 单元内。分和秒的分离方法与时一样最终的分离结果为时分 秒在 50H55H 内显示。同理年月日其分离方法也是同时分秒的分离原理一样。 其分离程序的流程图如下所示 存放时分秒区单元 (00H)不等于1存放年月日单元 (02H)不等于1显示时分秒单元 (01)=1?显示时分秒显示年月日将R1设置为显示缓冲3-(R2)(R0)-A保留(A)的低四位(R1+1)-R1 (R0)-A将(A)的高四位装 换后保留低四位(A)-(R1) (R1+1)-R1 (R0+1)-R0(R2-1)不等于0恢复现场结束开始YYYYNNNN2-2 数字分离流程图7 4.设置年月日初值程序 先清除显示区的内容因为年

11、是四位而月日是一起显示也是 4 位所以将 R0 指向 显示区 53H 单元并设置循环次数为 4再调用键盘扫描程序判断是否有键按下设置年 然后将 R0 指向 30H 单元键值区。等到输入四个数即年份。这是年份在数码管上的显 示再将其低、高两位分别存放在 46H47H 存储区内。其设置月日的的方法与设置年的 方法也是一样的但将日月分别存放在 44H、45H 存储区里。 开始清除缓冲区R0,R7初始 化按键查表R0减1R7=0?R1,R6初始化R0AA+R5R0+1 A将A的高低位互 换A+R5R1R0加1R1加1R6=0 NYNY2-3 设置年月日初值程序流程图8 5.动态显示程序 动态显示程序实

12、现的功能是将年月日时分秒在 LED 管中显示出来。使用第一组工作 寄存器组 再调用数字分离程序 数字分离程序能将键如的数值在 LED 数码管正确显示出 来。然后设置循环次数为 6 再将其存入 R2 中 再将 R3R0 分别指向地址为 01H 和 50H。 将显示管字型表首址放如 DPTR 中再将 50H 单元的内容送到 A 中接着 R0 加 1查字型码 表。循环 6 次查字型码表即可在 LED 上显示出时分秒年月日。 2-4 动态显示程序流程图 开保护现场,设置工作寄存 器组为第一组 调用 DISP1,实 现数字分离 6(R2),50R0,01将对应的数字在显示表里显恢复现场 结束 9 6.判

13、断闰年 因为年是四位而月日是一起显示也是 4 位。让 A 指向 46H 单元判断里面的内容是 不是世纪年若是世纪年则要判断能不能被 400 整除。能就是闰年不能就不是若不 是世纪年要判断能不能被 4 整除不能被 100 整除。满足这两个条件就是闰年不满足 就不是。在判断过程中使用 A 中的高低位互换再让 A 中的内容与 03H 相与若结果为 0则是闰年若不为 0则不是闰年。 低2位能否被4整除Y将年份低2位送入A是否为0为世纪年高2位送入A是否被4整除非闰年NNN闰年YY2-5 判断闰年流程图10 2.2.3 汇编源程序 主程序 LP1: MOV AH,1 ;从键盘输入单个字符 INT 21H

14、 CMP AL,M ;AL=M JNE LP5 CALL DATE ;显示系统日期 LP2: MOV AH,1 ;从键盘输入单个字符 INT 21H CMP AL,M ;AL=M JNE LP5 CALL TIME ;显示系统时间 LP3: MOV AH,1 ;从键盘输入单个字符 INT 21H CMP AL,M ;AL=M JNE LP4 CALL STOPWATCH ;显示秒表 LP4: MOV AH,1 ;从键盘输入单个字符 INT 21H CMP AL,M ;AL=M JNE LP5 CALL RING LP5: CMP AL,Q ;AL=Q JNE LP1 MOV AH,4CH ;返回 DOS 状态 INT 21H ;- ;显示日期子程序 DATE PROC NEAR DISPLAY: MOV AH,2AH ;取日期 CX:DH:DL=年:月:日 AL=星期 INT 21H MOV SI,0 MOV AX,CX MOV BX,100 DIV BL MOV BL,AH CALL BCDASC1 ;日期数值转换成相应的 ASCII 码字符 MOV AL,BL CALL BCDASC1 11 INC SI MOV AL,DH CALL BCDASC1 INC SI MOV AL,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号