1、目录第 1 章 概述 .21.1 设计要求 .21.2 设计目的 .21.3 设计意义 .2第 2 章 系统总体方案选择与说明 .3第 3 章 硬件电路设计 .43.1 按键控制模块 .43.2 时间显示模块 .53.3 打铃模块 .6第 4 章 应用软件设计 .84.1 系统软件设计思想 .84.2 系统主程序 .84.3 中断子程序 .94.4 按键扫描子程序 .11第 5 章 系统仿真调试 .125.1 软件简介 .125.2 软件仿真 .12第 6 章 硬件调试与结果分析 .15结束语 .17致谢 .18参考文献 .19附录 A 系统硬件电路原理图 .20附录 B 程序清单 .21评分
2、表 .29第 1 章 概述1.1 设计要求本设计要求设计学校作息时间控制器,其设计实现的功能主要有:使用 4 位七段显示器来显示现在的时间,显示格式为“时分” ,由 LED 闪动作为秒计数表示,到响应时间打铃,可冬夏季切换。可以设定作息时间,并进行到时提示。能够根据预先设定好的作息时间表自动启停控制电路,完成对外部设备的实时控制。1.2 设计目的增强对单片机的认识,与理解,提高时间能力与水平。学会使用proteus 仿真软件,充分把所学电路、模数电理论与实践结合,了解和掌握单片机设计软件与硬件设计结合过程、方法和实现,以及掌握单片机的内部模块的应用。1.3 设计意义用单片机及 c 语言编程模拟
3、学校作息时间 ,到时打铃,以及冬季夏季手动切换打铃时间。第 2 章 系统总体方案选择与说明由按键控制模块控制单片机最小系统的时间、月份、年以及打铃时间,在有单片机控制数码管显示以及蜂鸣器。本次设计实现的功能主要有:使用 4 位七段显示器来显示现在的时间,显示格式为“时分” ,由LED 小数点闪动作为秒计数表示。可以设定作息时间,并进行到时提示。能够根据预先设定好的作息时间表自动启停控制电路,完成对外部设备的实时控制。由按键输入控制设置年月日以及当前时间、并可设置闹钟定时,时间到由蜂鸣器发出响声。按 键 控 制 模 块单片机最小系统数 码 管 显 示 模 块闹 钟 模 块图 2-1第 3 章 硬
4、件电路设计3.1 按键控制模块按键控制模块主要有由五个按键组成:K1、K2、K3、K4、K5。分别接 P1.3-P1.7 口。K1 的功能是模式切换键;K2 的作用是加一;K3 的作用是闹钟使能;K4 的作用是减一;K5 的作用是冬夏季切换。图 3-1当需要设定时间或是校正时间,即可按下模式切换键来进行。校正时间:按第一次 K1 键,进入小时校正状态,通过按 K2、K4 键进行小时校正,按一下 K2 键则加一,按一下 K3 键则减一。按第二次 K1 键,进入分校正状态,通过按 K2、K4 键进行分钟校正。按第三次 K1 键,进入小时设定状态,此时若不需要设置则不操作。按第四次 K1 键,进入分
5、钟设定状态,若此时不需要设置则不操作。按第五次 K1 键进入月份校正状态,通过按 K2、K4 键进行月份校正。按第六次 K1 键,进入日校正状态,通过按 K2、K4 键进行日校正。按下第七次 K1 键进入年份校正状态,通过按 K2、K4 键来进行年份校正。校正完毕后,再按一次 K1 键,则退出时间校正状态,并显示当前校正后的准确时间。设定时间:按第一次 K1 键进入小时校正状态,此时若不需要设置,则不操作;以此类推。第三次按下 K1 键,进入小时设定状态,通过按 K2、K4 键进行小时设定。按下第四次 K1 键,进入分钟设定状态,通过按 K2、K4 键进行分钟设定。设定完毕后,按一下 K3 键
6、(闹钟使能) 。继续按 K1 键,若不需要设置,则不操作,以此类推,到按最后一次 K1 键则退出时间设定状态并显示当前时间,当时间与我们设定的时间一致时,通过闹钟电路响声提示。若要关闭闹钟,此时再按一次 K3 键即可停止响声。若 k5=1,执行冬季打铃时间。若 k5=0,则执行夏季打铃时间。3.2 时间显示模块本设计采用四位七段共阳数码管做显示模块,其中前两位做时、月份显示,其余两位作为分、日显示,选取前两位的一个 dp 点作为秒点。单片机 P0.0-P0.7 分别接七段数码管的 abcedfg 和 dp 引脚。P2.0-P2.3分别作为四个七段数码管的片选端。图 3-2时间显示模块主要由四位
7、数码管来显示,配合按键控制模块的校正与设定时间,相应的显示。时间正常显示时,LED 每闪动 60 次,分钟自动加一;每六十分钟小时自动加一;每 24 小时天自动加一。3.3 打铃模块单片机 p3.7 口控制蜂鸣器,若数码管显示时间与设定的学校作息时间相同,蜂鸣器模拟打铃一分钟。图 3-3打钟模块快的主要功能:闹铃。当设定时间与当前时间一致时,则闹钟自动闹铃进行提示,一分钟后,自动退出响铃状态,若按 K3 键,闹钟退出响铃状态。第 4 章 应用软件设计4.1 系统软件设计思想本系软件设计中,利用单片机定时器设计时间计时处理,采用单片机内部的 T0 定时器溢出中断来实现,工作在 T1 方式下,定时
8、 50 微妙,则连续中断 20 次即为一秒,得到了我们所需时间的最小单位。该设计用 C51 编写程序,由于汇编语言的移植性比较差,而 C 语言则比较灵活。许多子函数都可以直接移植过去。在程序中除了有主函数外还包含许多子函数,如延时函数、按键扫描函数、初始化函数、时间显示函数、设定闹钟显示函数、设定日期显示函数、设定年份显示函数、月份选择函数、年份显示辅助函数、冬夏季作息时间切换函数。4.2 系统主程序在主控程序循环中主要工作为扫描是否有按键,若有按健则做相应的功能处理,同时也扫描显示器显示时间数据,并检查所设置的时间是否到了。时间计时处理程序是等过了 1s 后,则更新时间数据,将最新的时、分的
9、数据转换为数字数据并显示在七段显示器上。蜂 鸣 器 初 始 化定 时 器 初 始 化按 键 扫 描判 断 标 志 位 X设定闹钟显示函数校正时间显示函数日期显示函数时间显示函数年份显示函数X = 0X = 1 、 2X = 3 、 4 X = 5 、 6X = 7图 3-2 主程序流程图4.3 中断子程序中断子程序的主要功能:提供时间基准。当连续中断 20 次时,即为一秒,此时秒加一。当秒值为 60 时,分钟加一,同时秒清零;当分钟值为 60 时,小时加一,同时分钟值清零。当小时为 24 时,天值加一,同时小时清零。由于每月天数不定,1、3、5、7、8、10、12 月为 31 天,当计数到此类
10、月份时,天值为 32 时,月值加一,同时天值为 1;4、6、9、11 月为 30 天,当计数到此类月份时,天值为 31 时,月值加一,同时天值为1。如果是闰年,则 2 月为 29 天,当计数到此类月份时,天值为 30 时,月值加一,同时天值为一。如果不是闰年,则 2 月为 28 天,当计数此类月份时,天值为 29 时,月值加一,同时天值为一。当月值为 13 时,则年值加一,同时月值为一。设 置 定 时 器 初 值是 否 到 一 秒 ?秒 变 量 加 一是 否 到 6 0 秒 ?秒 值 清 零 、 分 值 加 一是 否 到 6 0 分 ?分 值 清 零 、 小 时 加 一是 否 到 2 4 小 时 ?小 时 清 零 、 天 值 加 一是 否 到 一 月 ?天 值 为 1 、 月 值 加 一是 否 到 一 年 ?月 值 为 1 、 年 值 加 一返 回 主 函 数YYYYYYNNNNNN