苏州科技学院单片机课程设计可编程作息时间控制器程序设计
可编程作息时间控制器设计单片机课程设计

单片机系统课程设计成绩评定表设计课题:可编程作息时间控制器设计学院名称:电气工程学院专业班级:学生姓名:学号:指导教师:设计地点:设计时间:单片机系统课程设计课程设计名称:可编程作息时间控制器设计专业班级:学生姓名:学号:指导教师:课程设计地点:课程设计时间:单片机系统课程设计任务书1、引言 (1)1.1研究背景和用途 (3)1.2设计思想及基本功能 (3)1.3研究内容及采方法 (3)(1)主要研究内容 (3)(2)主要采用方法 (4)2、总体设计方案 (4)2.1 方案选取 (4)2.2系统框图 (4)2.3系统工作原理 (5)3、硬件电路及芯片介绍 (5)3.1 AT89C51单片机 (5)3.2 1602LCD液晶显示器 (8)3.3其他重要元件 (9)(1) 独立式键盘的接口电路: (9)(2)蜂鸣器: (10)3.4硬件电路设计图 (11)4、系统软件设计 (12)4.1主程序软件设计 (12)4.2键盘扫描程序设计 (13)4.3时钟调节程序设计 (14)4.4闹钟时间调节程序设计 (15)4.5闹钟时间判断子程序设计 (16)5、总结 (17)参考文献 (18)附录: (19)1、引言1.1研究背景和用途20世纪末,电子技术得到了飞速的发展。
在其推动下,现代电子产品乎渗透到了社会的各个领域,有力的推动和提高了社会生产力的发展与信息化程度,同时也使现代电子产品性能进一步提升,产品更新换代的节奏也越来越快。
时间对于人来说总是那么珍贵,工作的忙碌性和繁杂让人容易忘记当前时间。
然而遇到重大事情的时候,一旦忘记时间,就会给自己或他人造成更大的麻烦。
对于学校来说作息时间尤为重要。
如今,在电子计算机基础上发展而来的可编程作息时间控制器,它可以利用电子计算机的内部时间,通过程序判断处理,完成对作息时间的精确控制,并且由于是程序控制,所以可通过改变程序而进而灵活改变作息时间,同时可以实时显示时间,并实现打铃功能。
单片机课程设计报告(作息时间表)

单片机课程设计报告项目:作息时间表系统设计班级:通信工程04本姓名:XX ———X号实验指导老师: 李强一、题目作息时间表系统设计——用89C51设计一个6位LED数码显示“作息时间表系统”,显示时间为00—00—00 ~ 23时—59分—59秒,每秒自动加一。
另设计4个按钮,分别是“分状态”按键、“分加1”按键、“时状态”按键,“时加1”按键。
用于进行小时和分钟的调整。
这就是一个完整的具有时、分、秒显示的单片机实时钟系统。
二、增加功能在上述实时钟系统的基础上,在控制软件钟增加一个“作息时间表”,如图1 所示,并增加对该表的查询功能模块,依据对该表的查询结果,控制喇叭,进行课间打铃提示,完成单片机作息时间表系统的设计。
也完成本次课程设计。
三、内容提要本设计利用单片机的定时器/计数器定时和记数的原理,结合sl-100、sl-200系统上的集成电路芯片8052、LED数码管以及按键来设计计时器。
将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。
其中本设计中的四个开关按键:其中一个按键按下去时,系统进入秒调整状态,然后,秒加1键每按一次,秒计时器加1。
时状态按下时,系统进入时调整状态,时按键每按一次,时计数器加1。
本设计运行开始时,各按键回到各初始位置,即都处于1状态。
计时显示从00:00:00开始,依据秒加1为单位进行显示计时。
三、实验目的1、通过本次课程设计加深对单片机课程的全面认识复习和掌握,对嵌入式系统的应用进一步的了解。
2、掌握定时器、外部中断的设置和编程原理。
3、通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
四、意义该实验通过单片机的定时器/计数器定时和计数原理,设计单片机作息时间表系统,拥有正确的计时、显示、时间调整等功能,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义。
五、本人所做工作根据相关的单片机材料,利用所学的单片机知识,结合sl-100单片机微机实验系统中的软件和硬件(集成电路芯片8952,七段数码管,开关电路及时钟信号电路,按键等),编写能够实现该设计的软件程序,最后将软、硬件有机的结合起来,进行有效的调试,达到完成该实验课程设计的目的要求。
可编程作息时间控制器设计

可编程作息时间控制器设计作息时间控制器是一种用来帮助人们管理健康作息时间的设备。
它可以根据个人的需求和习惯自定义作息时间,并通过可编程功能来控制各种任务和提醒。
作息时间控制器的设计主要分为硬件和软件两个部分。
硬件部分包括显示屏、按钮、电源供应和时钟模块等,用于显示时间和设置参数。
软件部分则负责运行用户设置的程序,实现相应的功能。
首先,用户可以通过硬件部分的按钮界面来设置睡眠时间和起床时间。
可以根据个人需要设置每天起床时间、睡眠时间、午休时间和提醒时间等。
用户还可以设置不同的作息时间表,如工作日和周末的作息时间可以不一样。
其次,作息时间控制器可以通过软件部分的程序来控制各种任务和提醒。
用户可以设置不同的任务,如早晨运动、午休、提醒喝水等,控制器会在设定的时间触发相应的提醒。
此外,控制器还可以通过定时器功能来控制其他设备,如自动开启关闭灯光、咖啡机等。
最后,作息时间控制器还可以提供统计和分析功能来帮助用户更好地管理作息时间。
它可以记录用户的作息时间,并生成相应的报告,帮助用户了解自己的作息情况和睡眠数据,以便做出相应的调整。
总而言之,可编程作息时间控制器是一种方便实用的设备,它能够帮助人们管理健康的作息时间。
通过具备硬件和软件的设计,用户可以自定义作息时间、设置任务和提醒,并通过统计和分析数据来实现更好的作息管理。
作息时间对于个人的健康和生活品质有着重要的影响。
良好的作息时间可以提高工作和学习效率,增加身体健康和免疫力,改善睡眠质量和心理状态。
然而,现代社会的快节奏和各种干扰因素往往使人们难以维持规律的作息时间。
为了帮助人们更好地管理作息时间,可编程作息时间控制器成为了一种理想的解决方案。
硬件部分是可编程作息时间控制器的基础,它主要由显示屏、按钮、电源供应和时钟模块组成。
显示屏用于显示当前时间、设置参数以及展示任务和提醒的信息。
用户可以通过按钮来操作控制器,包括设置作息时间、添加任务和提醒等。
电源供应保证控制器的正常运行,时钟模块则提供精准的时间计量,确保作息时间的准确性和可靠性。
作息时间控制器的设计

前言本次毕业设计的课题是《作息时间控制器》控制的设计,用时间来控制自动打铃,开(熄)学生宿舍灯等。
在指导老师的悉心指导及本组成员的共同努力下,完成了0~24小时循环显示的程序、自动打铃程序、开(熄)学生宿舍灯程序的设计,及电路板的制作。
通过本次设计领悟了作为一名技术员所具备分析、解决问题的能力,为今后的工作打下基础。
由于时间仓促、能力有限,程序难免有不足之处,请老师批评指正。
目录一、设计任务1、作息时间控制器控制设计大纲 (4)2、设计步骤 (4)二、设计过程1、时间控制显示程序 (5)1.1秒脉冲显示程序 (5)1.2分钟显示程序 (6)1.3小时显示程序 (7)1.4星期显示程序 (9)1.5自动扫描秒程序 (11)1.6开机显示 (12)2、电铃控制程序 (14)2.1作息时间电铃控制 (16)2.2双休日电铃控制 (17)3、学生宿舍开(熄)灯程序 (18)4、控制器输入输出点分配 (19)5、PCB接线图及元器件 (21)5.1 PCB的外部接线图 (21)5.2 元器件 (22)6、作息时间控制器控制梯形图 (22)7、作息时间控制器使用说明 (23)三、设计总结 (24)概述PLC即可编程控制器(Programmable logic Controller),是指以计算机技术为基础的新型工业控制装置。
PLC是一种专门为在工业环境下应用而设计的数字运算操作的电子装置。
它采用可以编制程序的存储器,用来在其内部存储执行逻辑运算、顺序运算、计时、计数和算术运算等操作的指令,并能通过数字式或模拟式的输入和输出,控制各种类型的机械或生产过程。
PLC及其有关的外围设备都应该按易于与工业控制系统形成一个整体,易于扩展其功能的原则而设计。
20世纪70年代中末期,可编程控制器进入实用化发展阶段,计算机技术已全面引入可编程控制器中,使其功能发生了飞跃。
更高的运算速度、超小型体积、更可靠的工业抗干扰设计、模拟量运算、PID功能及极高的性价比奠定了它在现代工业中的地位。
单片机课程设计报告-可编程作息时间控制器

单片机原理及应用课程设计报告目录目录 (1)1 设计任务书 (2)1.1 基本设计要求 (2)2 设计阐明 (2)12.1设计内容 (2)1.2设计要求 (2)1.3设备及工作环境 (3)3 系统方案整体设计 (3)3.1 设计思路 (4)3.2 系统整体框图 (4)4 硬件设计 (4)4.1 系统硬件设计 (4)4.1.1 键盘扫描 (5)4.1.2 LCD显示器 (5)4.2 系统工作原理论述 (5)5 软件设计 (5)5.1 分析论证 (5)5.1.1 显示模块 (6)5.1.2 运算模块 (6)5.1.3 校时模块 (6)3.1.4 启动/暂停,复位模块 (6)5.1.5 整体功效 (6)5.2程序清单 (7)6 调试过程及分析 (24)7 设计总结 (25)参考文献 (26)- 1 -单片机原理及应用课程设计报告1 设计任务书1.1 基本设计要求(1)在综合单片机实验箱的硬件结构上编写软件完成设计。
(2)程序的首地址应使目标机可以直接运行,即从0000H开端。
在主程序的开端部分必须设置一个合适的栈底。
程序放置的地址须持续且靠前,不要在中间留下大批的空间地址,以使目标机可以应用较少的硬件资源。
(3)2*16位LCD显示器从左到右分辨显示闹钟时间和现在时间,采用24小时标准计时制。
(4)在4个键控开关上选定2个键分辨作为小时. 分的调校键。
每按一次键,对应的显示值便加1。
分. 秒加到59后变为00;小时加到23后再按键即变为00.再调校时均不向上一单位进位(例如分加到59后变为00;但小时不产生转变)。
(5)软件设计应用片内定时器,采用定时中断结构,应用软件延时法。
2 设计阐明12.1设计内容用ZY15MCU12BD型综合单片机实验箱及串口电路设计实现显示现在时间和闹钟时间并能够调校现在时间和闹钟时间的时钟,还能够实现闹钟的复位功能以及广播和蜂鸣器的响应。
说明设计中包含的内容1.2设计要求(1)在ZY15MCU12BD型综合单片机实验箱的硬件结构上编写软件完成- 5 -单片机原理及应用课程设计报告设计。
(完整word版)单片机课程设计,校园作息时间系统

湖南工程学院课程设计课程名称微机原理与应用课题名称单片机作息时间控制器专业自动化班级0702学号200701020216姓名罗琦指导教师王迎旭、李晓秀、林国汉2010年 6 月20日湖南工程学院课程设计任务书课程名称微机原理与应用课题单片机作息时间控制器专业班级自动化0702学生姓名罗琦学号200701020216指导老师王迎旭、李晓秀、林国汉审批任务书下达日期2010年 6 月7日任务完成日期2010年 6 月20日、目录第一章引言 (7)1.1简介及技术要求 (7)1。
2计时方案 (7)1.3键盘/显示方案 (7)第二章硬件设计.........................................................8 2.1 电路原理图 (8)2。
2 系统工作流程 (9)2。
3 系统使用说明 (10)第三章系统软件设计 (10)3。
1 软件设计 (10)3。
2 系统工作流程 (11)第四章程序模块设计 (15)4.1主程序模块 (16)4。
2定时中断服务程序模块 (18)4.3扫描显示模块 (22)4.4键扫描子程序 (23)4。
5键值处理子程序 (27)4.6移位键处理程序模块 (30)第五章调试及分析 (32)第六章课程总结 (33)参考文献 (34)附录 (35)第1章引言因为单片机的种类多,而型号杂,也是我们学习中的困难,所以就MCS—51系列的产品来说,就是一个典型的学习方法.对于类似汇编的单片机编程过程,也是一个十分有趣的过程.为了更好的说明,我以上介绍先从应用电路切入,同时介绍它们的使用方法,以便能快速掌握它们的应用。
1。
1简介及技术要求校园作息时间控制系统主要用于学校,对一些以24小时为周期的开关量进行自动控制。
如上下课打铃及扩音设备的开与关、教学楼照明的定时开与关、学生宿舍灯及校园路灯的定时开关的控制。
技术要求如下:(1)定时准确,月误差《=10%。
可编程作息时间控制器设计

武汉工程大学单片机课程设计可编程作息时间控制器设计姓学学专班名:号:院:业:级:陈文斌1004030105电气信息学院电子信息工程电信一班指导老师:赵振华2012 年12月27日可编程作息时间控制器程序设计摘要:本次课题是应用AT89C51为核心控制器件的作息时间控制钟,由键盘、声音输出模块、电源转换模块和存储模块四部分组成。
它利用AT89C51的定时/计数器来计算时间,并用存储器记录数据,保证了系统的可靠性。
AT89C51单片机是整个设计的核心控制器件,根据从键盘接受的数据控制整个系统的工作流程。
整体性好,人性化强、可靠性高,实现了对时间控制的智能化,摆脱了传统由人来控制时间的长短的不便,可对一些以24小时为周期的开关量进行自动控制。
如上下课打铃及扩音设备的开与关。
采用AT89C51单片机来实现对上述开关量的控制,利用24C02芯片来存储数据,设有六位数码管、可以实时显示时间、系统还设有输入键盘,用以修改实时时钟,体现了系统简单、工作稳定可靠、价廉、控制时间精确及系统体积小等优点。
关键词:AT89C51单片机动态扫描仿真设计时钟电路1.概述1.1设计目的:通过本次课程设计,我们就所学习的MCS-51单片机进行一次实践上的设计与仿真,对以前我们所学习的理论知识进行进一步的巩固和深化,更重要的是学习以MCU为控制核心的应用的实际设计流程及基本的实践能力。
通过课程设计,培养我们独立工作能力,为将来毕业设计打好基础。
1.2设计要求:(1)用汇编语言或C语音编写作息时间控制程序(2)按照给定的时间模拟控制,实现广播、上下课打铃、灯光控制(屏幕显示)(3)具备日期和时钟显示1.3扩充功能:(1)给定的时间可修改(2)可模拟手动控制(3)用扬声器模拟打铃给定的时间可修改;可模拟手动控制;用扬声器模拟打铃2.系统总体方案及硬件设计2.1 电路设计方案图根据设计要求画出系统框图,如图2.1所示:图2.1系统总体框图该系统是由微处理器、存储器、数码显示部分以及键盘输入部分所组成。
单片机作息时间控制器设计方案

单片机作息时间控制器设计方案第1章总体方案设计1.1 设计要求本课题要求以单片机为核心,设计一个具有定时和计数功能的智能化作息时间控制器,用于学校教学楼的时间控制,实现时间基准定时,并配合“启动”、“复位”等按键的操作,并按作息时间显示的容要求有有以下功能:(1)按作息时间接通/断开电铃;(2)课间接通/断开播放音乐设备;(3)时间的设置与值显示(显示的容要求有时、分、秒各两位)1.2优点及意义本课题要求设计一个具有定时和计数功能的智能化作息时间控制器,用于学校教学楼的时间控制,实现时间基准定时。
数码管显示电路采用LED动态控制方式,显示时分秒。
按键电路控制定时计时。
闹铃指示电路控制铃声。
1.3 系统硬件电路设计本方案采用一种是用以STC89C52为核心,外加8位数码管,蜂鸣器,继电器和按键完成系统的设计要求。
系统硬件设计框图。
根据设计要求,确定系统的设计方案,图1-1为系统总体设计计框图。
硬件电路由6个部分组成,即单片机时钟电路、复位电路、键盘输入电路、LED数码管显示电路、蜂鸣器电路、继电器电路。
1.4初步设计思路(1)定义一组数表,存字形码(2)定义4个数据缓冲区,对应4个数码管,将要显示的字符的偏移量存入。
通过查表指令从P1口输出。
(3)LED数码管通过驱动电路,显示相应的状态。
位选由P2口高四位产生,(4)通过P3口接通继电器和蜂鸣器。
(5)系统设置3个按键,分别是选择键、时间加键、时间减键。
第2章硬件电路设计2.1时钟电路设计单片机工作的时间基准是由时钟电路提供的,在单片机的XTAL1和XTAL2两个引脚间,接一只晶振及两只电容就构成了单片机的时钟电路,如图2-1所示。
图2-1时钟电路电路中器件选择可以通过计算和实验确定,也可以参考一些典型电路参数。
电路中,电容器C1和C2对振荡频率有微调作用,同时帮助晶振起振,通常取值围在22±0.1PF,一般晶振为12MHZ,电容取22PF。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
苏州科技学院天平学院单片机课程设计报告作息时间控制器设计姓名:王亚明学号: 0930117114专业班级:电气0921指导老师:徐树梅2012年6月2日目录1 概述 ....................................................... - 3 -1.1 课程设计的目的和意义.................................... - 3 -1.2 单片机课程设计的要求.................................... - 3 -1.3 作息时间控制器的设计要求................................ - 3 -2 系统总体方案及硬件设计 (3)2.1 系统总体设计 (3)2.2 系统各个部分的电路设计 (4)3 软件的设计 (6)3.1 概述 (6)3.2 主模块的设计 (6)3.3显示模块设计 (7)3.4 时间设定模块设计 (7)3.5 声光显示功能的实现 (8)4 Proteus软件仿真 (8)4.1仿真结果 (8)4.2性能及误差分析 (9)5课程设计体会 (10)参考文献 (10)附1 程序源代码 (10)附2原理图 (15)第一部分概述1.1 课程设计的目的和意义:综合利用所学单片机知识完成一个单片机应用系统设计并仿真、由硬件实现,从而加深对单片机软硬知识的理解,获得初步的应用经验,为走出校门从事单片机应用的相关工作打下良好基础。
1.2 单片机课程设计的要求:1、进一步熟悉和掌握单片机的内部结构和工作原理,了解单片机应用系统设计的基本方法和步骤;2、掌握单片机仿真软件Proteus的使用方法;3、掌握键盘和显示器在的单片机控制系统中的应用。
4、掌握撰写课程设计报告的方法。
1.3 作息时间控制器的设计要求:1、设计制作一个单片机数字钟及控制电路。
2、使用LED显示器来显示现在的时间。
显示格式为“时-分-秒”,由LED闪动作为秒计数表示。
3、可以设定作息时间,并进行到时提示。
4、能够根据预先设定好的作息时间表自动启停控制电路,完成对外部设备的实时控制。
5、可以设置现在的时间及显示定时设置时间。
第二部分系统总体方案及硬件设计2.1 系统总体设计:1、方案设计:用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,2、单片机的选型:AT89C52是低功耗、高性能的CMOS型8位单片机。
片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。
另外, AT89C51的指令系统和引脚与8051完全兼容,片内有128B 的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。
基于以上优点,本设计采用AT89C52单片机。
3、总体电路的设计:时间作息控制的主体电路应包括秒信号发生器、时间显示电路、按键电路、供电电源以及闹铃指示电路等几部分。
按键功能说明:K1设置时间;K2 加一;K3,减一;K4;声光控制开关。
时间作息控制的系统框图1如下所示:图12.2 系统各个部分的电路设计:1、系统复位电路的设计:专用µ程序。
图22、系统时钟电路设计:对于时间要求不是很高的系统,只要按图进行设计就能使系统可靠起振并稳定运行。
但由于实际工作过程中的C1、C2电容起着系统时钟频率微调和稳定的作用,因此,在实际应用中一定要注意正确选择参数(30±10 PF),并保证对称性(尽可能匹配),这两个电容元件对闹钟的走时误差有很大关系,并且选用正规的瓷片或云母电容,如果可能的话,温度系数要尽可能低。
另外,瓷片电容的实际焊接距离不应该离单片机太远否则误差较大。
具体的时钟电路如图三所示:图 33、声光指示电路设计:声光指示可以有声或光两种形式。
本系统采用声音和光混合指示。
关键元件是蜂鸣器和发光二极管。
闹钟电路是用比较器来比较计时系统和定时系统的输出状态,如果计时系统和定时系统的输出状态相同,则发出一个脉冲信号,再和一个高频信号混合,送到放大电路驱动扬声器发声,从而实现定时闹响的功能。
其电路设计参见系统原理图。
4、显示电路的设计:本设计采用了4位数码管显示电路。
在4位LED 显示时,为了简化电路,降低成本,采用动态显示的方式,4个LED 显示器共用一个8位的I/O, 4位LED 数码管的位选线分别由相应的P2.2~P2. 5控制,而将其相应的段选线并联在一起,由一个8位的I/O 口控制,即P0口。
由于采用了四位数码管,所以数码管显示“时”、“分”;秒的显示选用了一个发光二极管,两灭周期为两秒,即点亮和熄灭时间均为一秒。
到达定时时间时,由计时系统的输出状态产生一脉冲信号,然后去触发蜂鸣器实现闹铃。
校时电路是用来对“时”、“分”、“秒”显示数字进行校对调整的。
具体的电路设计如图4示:图45、定时和调时电路的设计:本设计因为使用到的键数目比较少,不宜采用矩阵式键盘,采用了功能直观简洁方便的独立式键盘,而且考虑了键盘的消抖问题。
比较容易理解。
每个键的具体功能如下:K1设置时间;K2 加一;K3,减一;K4;声光控制开关。
按键定义如图5所示:图5第三部分 软件的设计3.1 概述:软件设计的重点在于秒脉冲信号的产生、显示的实现、以及按键的处理等方面。
基于软件的秒脉冲信号通常有延时法和定时中断法。
延时法一般采用查询方式,在延时子程序前后必然需要查询和处理的程序,导致误差的产生,因此其秒脉冲的精度不高;中断法的原理是,利用单片机内部的定时器溢出中断来实现。
本设计使定时器每50ms 中断1次,则20次的周期为1s 。
这种实现法的特点是精度高,秒脉冲的发生和其他处理可以并行进行。
本系统中所使用的晶振频率为12MHZ 。
3.2 主模块的设计:主模块是系统软件的主框架。
结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建。
它的合理与否关系到程序最终的功能的多少和性能的好坏。
本系统的主模块的程序框图如下图6所示:图63.3显示模块设计:显示是由显示代码取得相应的段码,显示段码数据的并行发送,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
程序流程如图7所示。
图七3.4 时间设定模块设计:时间设定模块的设计要点是按键的去抖处理与多种状态公用一个键的处理问题。
即只涉及4个键完成了4位时间参数的设定。
软件法去抖动的实质是用延时,即检测到某一键状态变化后延时一段时间,再检测该按键的状态是否还保持着,如是则作为按键处理,否则,视为抖动,不予理睬。
去抖中的延时时间一般参考资料多描述为10ms左右,实际应用中,应大于20ms,否则,会导致按一次作多次处理,影响程序正常执行。
按键消抖流程图原理如图8所示:图83.5声光功能的实现:闹铃功能的实现涉及到两个方面:闹铃时间设定和是否闹铃判别与相应处理。
闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题。
闹铃判别与闹铃处理的关键在于判别何时要进行闹铃。
在每次循环扫描的过程中,判断现在的时间和定时的时间是否一致。
一致的话,闹铃电路根据计时系统的输出状态产生一脉冲信号,然后加上一个高频或低频信号送到放大电路驱动蜂鸣器发声实现报时。
时间调节电路根据不同状态下的具体按键意义将相对应的计数器加以改变,并通过数码管显示出来。
第四部分 Proteus软件仿真本次课程设计所采用的程序调试软件为wave6000集成调试软件,所采用的仿真软件为proteus professional软件。
本设计在Proteus软件上进行了仿真,实现了设计所要求的具体内容。
4.1仿真结果:1、启动初值(如图9)图92、声光控制报警(如图10)图103、定时响铃功能(如图11)图114.2性能及误差分析:该作息时间控制器有四个按键: K1, K2,K3和K4。
初始加电时数码管显示时钟计数初值并运行。
按K1键进行校时,可以分别按K2和K3键进行对时及分进行单独校时,使其校正到标准时间;并按K4键退出。
时钟正常显示运行状态时,按K2键显示闪烁并进行定时时间设置,按K1键和K3进行分和时的定时时间设定;并按K4键退出。
该电路显示的误差主要由晶振自身的误差所造成,晶振的误差约为0. 0001~0. 000001。
在软件的编程过程中所产生的误差比较小,另外在中断的过程中,只会在第一次计时时产生时间的偏移,而它所产生累计误差很小,可以忽略。
综合以上分析,本次设计时钟误差较小,能得到比较理想结果,性能稳定。
第五部分课程设计体会在整个设计过程中,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识。
这次毕业论文的制作过程是我的一次再学习,再提高的过程。
在论文中我充分地运用了大学期间所学到的知识。
我从资料的收集中,掌握了很多单片机、LED显示屏的知识,让我对我所学过的知识有所巩固和提高,并且让我对当今单片机、LED显示屏的最新发展技术有所了解。
在整个过程中,我学到了新知识,增长了见识。
在今后的日子里,我仍然要不断地充实自己,争取在所学领域有所作为。
脚踏实地,认真严谨,实事求是的学习态度,不怕困难、坚持不懈、吃苦耐劳的精神是我在这次设计中最大的收益。
我想这是一次意志的磨练,是对我实际能力的一次提升,也会对我未来的学习和工作有很大的帮助。
在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。
也练就了我们的耐心,做什么事都在有耐心。
此次论文中学了很多很多东西,这是最重要的。
我认为这个收获应该说是相当大的。
一开始我们从参考书上找来了课题,但是毕竟是参考书,做到后来发现很多程序都是不完整的,这让我们伤透了脑筋。
看着别的小组都弄得有模有样了,可是我们连一个课题都还没有定好。
好不容易又找到了课题,可是结果还是很不尽人意。
程序接线什么的都弄好了,调试也没有问题,可是就是无法达到预期想要的结果。
参考书毕竟只是一个参考,设计这种东西最后还是要靠自己动脑筋。
然后我们大家一起齐心协力,从平时做的实验﹑老师上课的举例﹑书本上的知识和其他同学的帮助下终于完成了。
应该说这是通过我们小组成员的共同努力和动脑完成的,虽然内容并不是很复杂,但是我们觉得设计的过程相当重要,学到了很多,收获了很多。
我觉得课程设计反映的是一个从理论到实际应用的过程,但是更远一点可以联系到以后毕业之后从学校转到踏上社会的一个过程。
小组人员的配合﹑相处,以及自身的动脑和努力,都是以后工作中需要的。
参考文献:[1] 余发山,王福忠编著. 单片机原理及应用技术.徐州:中国矿业大学出版社,2008.[2] 陈奥初,窦振中等编著.单片机应用系统设计与实践.北京:北京航空航天大学出版社,1991.[3]陈伟人编著.MCS-51系列单片机实用子程序集锦[M].北京:清华大学出版社.1993.附录附录一:程序源代码#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit E=P3^4;sbit RS=P3^5;sbit key1=P2^4;sbit key2=P2^5;sbit key3=P2^6;sbit key4=P2^7;sbit mbkey=P2^2;sbit beep=P2^3;ucharcount,shi=1,fen=59,miao=58,key1num,flag ,flag1,xqnum;//flag闹钟ucharkey2num,jinzhi=3,naonum=1,ms,mbmiao,mbf en,mbkeynum,num; //ms秒表进数,mbmiao.mbfen秒表的秒.分 key2num是key5的计数 jinzhi进制转换参数uint nian=2009,yue=11,ri=19,count2; uchar code table[]=" 2012-6-06 WED"; uchar code table1[]="24d 01:59:58 ON "; uchar code table2[]="MON,TUE,WED,THU,FRI,SAT,SUN"; uchar code table3[]="am ,pm ,24d"; uchar code table4[]="ON ,OFF";uchar code table5[]=" 00:00:00 mb "; void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);} void di(uint x) //蜂鸣器发声函数 { beep=0; delay(x); beep=1; } void write_com(uchar com)//给写液晶命令 { RS=0; P0=com; delay(5); E=1; delay(5); E=0; } void write_date(uchar date)//给液晶写数据 { RS=1; P0=date; delay(5); E=1; delay(5); E=0; } void init() //初始化函数 { uchar num; E=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01);//清零 write_com(0x80); for(num=0;num<16;num++) { write_date(table[num]); delay(20); } write_com(0x80+0x40); //第二行 for(num=0;num<16;num++) { write_date(table1[num]); delay(20); } TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; TH1=(65536-10000)/256; TL1=(65536-10000)%256; ET1=0; TR1=0; } void write_nian(uchar add , uint date) //年显示函数 { uchar qian,bai,shi,ge; qian=date/1000; bai=(date-1000*qian)/100; shi=(date-qian*1000-bai*100)/10; ge=date%10; write_com(0x80+add); write_date(0x30+qian); write_date(0x30+bai); write_date(0x30+shi); write_date(0x30+ge); } void write_yue(uchar add , uchar date) //月显示函数 { uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+add); write_date(0x30+shi); write_date(0x30+ge); } void write_ri(uchar add , uchar date) //日显示函数 { uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+add); write_date(0x30+shi); write_date(0x30+ge); } void write_sfm(uchar add ,uchar date) //秒显示函数 { uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge); } void write_week(uchar week) //星期显示函数 { uchar week_num; week_num=week; switch(week_num) { case 1: write_com(0x80+13); write_date(table2[0]); write_date(table2[1]); write_date(table2[2]); write_com(0x80+13); break; case 2: write_com(0x80+13); write_date(table2[4]); write_date(table2[5]); write_date(table2[6]); write_com(0x80+13); break; case 3: write_com(0x80+13); write_date(table2[8]); write_date(table2[9]); write_date(table2[10]); write_com(0x80+13); break; case 4: write_com(0x80+13); write_date(table2[12]); write_date(table2[13]); write_date(table2[14]); write_com(0x80+13); break; case 5: write_com(0x80+13); write_date(table2[16]);write_date(table2[17]);write_date(table2[18]);write_com(0x80+13);break;case 6: write_com(0x80+13);write_date(table2[20]);write_date(table2[21]);write_date(table2[22]);write_com(0x80+13);break;case 7: write_com(0x80+13);write_date(table2[24]);write_date(table2[25]);write_date(table2[26]);write_com(0x80+13);break;}}void write_jinzhi(uchar jinzhi)//jinzhi进制显示函数{uchar jznum;jznum=jinzhi;switch(jznum){case 1: write_com(0x80+0x40+0);write_date(table3[0]);write_date(table3[1]);write_date(table3[2]);write_com(0x80+0x40+0);break;case 2: write_com(0x80+0x40+0);write_date(table3[4]);write_date(table3[5]);write_date(table3[6]);write_com(0x80+0x40+0);break;case 3: write_com(0x80+0x40+0);write_date(table3[8]);write_date(table3[9]);write_date(table3[10]);write_com(0x80+0x40+0);break;}}void write_nao(uchar nao)//闹钟开关显示函数{uchar naonum;naonum=nao;switch(naonum){case 1: write_com(0x80+0x40+13);write_date(table4[0]);write_date(table4[1]);write_date(table4[2]);write_com(0x80+0x40+13);break;case 2: write_com(0x80+0x40+13);write_date(table4[4]);write_date(table4[5]);write_date(table4[6]);write_com(0x80+0x40+13);break;}}void keyboard() //按键扫描函数{if(flag==1){//闹钟暂停函数if(key4==0){delay(5);if(key4==0){while(!key4);beep=1;flag=0;}}}if(key1==0){delay(5);//消斗if(key1==0){key1num++;while(!key1);// di(1);if(key1num==1){TR0=0;write_com(0x80+0x40+10);write_com(0x0f);//光标闪烁}if(key1num==2){write_com(0x80+0x40+7);}if(key1num==3){write_com(0x80+0x40+4);}if(key1num==4){write_com(0x80+0x40);}if(key1num==5){write_com(0x80+2);}if(key1num==6){write_com(0x80+7);}if(key1num==7){write_com(0x80+10);}if(key1num==8){write_com(0x80+13);}if(key1num==9){write_com(0x80+0x40+13);}if(key1num==10){key1num=0;write_com(0x0c);//光标停止闪烁TR0=1;//打开定时器}}}if(key1num!=0){if(key2==0){delay(5);if(key2==0){while(!key2);//等待松手di(100);if(key1num==1){miao++;if(miao==60)miao=0;write_sfm(10,miao);write_com(0x80+0x40+10);}if(key1num==2){fen++;if(fen==60)fen=0;write_sfm(7,fen);write_com(0x80+0x40+7);}if(key1num==3){shi++;if(jinzhi==3){if(shi==24)shi=0;}else{if(shi>12) shi=shi-12;}write_sfm(4,shi);write_com(0x80+0x40+4);}if(key1num==4){jinzhi++;if(jinzhi==4)jinzhi=1;write_jinzhi(jinzhi);}if(key1num==5){nian++;write_nian(2,nian);write_com(0x80+2);}if(key1num==6){yue++;if(yue==13)y ue=1;write_yue(7,yue);write_com(0x80+7);}if(key1num==7){ri++;if(ri==32)ri=1;write_ri(10,ri);write_com(0x80+10);}if(key1num==8){xqnum++;if(xqnum==8)xqnum=1;write_week(xqnum);}if(key1num==9){naonum++;if(naonum==3)naonum=1;write_nao(naonum);}if(key1num==10){key1num=0;write_com(0x0c);//光标停止闪烁TR0=1;//打开定时器}}}if(key3==0){delay(5);if(key3==0){while(!key3);di(100);if(key1num==1){miao--;if(miao==-1)miao=59;write_sfm(10,miao);write_com(0x80+0x40+10);}if(key1num==2){fen--;if(fen==-1)fen=59;write_sfm(7,fen);write_com(0x80+0x40+7);}if(key1num==3){shi--;/* if(shi==-1)shi=23;*/if(jinzhi==3){if(shi==-1)shi=23;}else{if(shi<1)shi=shi+12;}write_sfm(4,shi);write_com(0x80+0x40+4);}if(key1num==4){jinzhi--;if(jinzhi==0)jinzhi=3;write_jinzhi(jinzhi);}if(key1num==5){nian--;write_nian(2,nian);write_com(0x80+4);}if(key1num==6){yue--;if(yue==0)yue=12;write_yue(7,yue);write_com(0x80+7);}if(key1num==7){ri--;if(ri==0)ri=31;write_ri(10,ri);write_com(0x80+13); /* if(key1num==8){xqnum--;if(xqnum==0)xqnum=7;write_week(xqnum); write_com(0x80+10);}if(key1num==9){naonum--;if(naonum==0)naonum=2;write_nao(naonum); write_com(0x80+0X40+13);}*/}}}}}void mbiao( )//秒表函数{if(mbkey==0){mbkeynum++;while(!mbkey);if(mbkeynum==1)//关闭时钟定时器{TR0=0;ET0=0;write_com(0x80+0x40);for(num=0;num<16;num++)write_date(table5[num]);ms=0;mbmiao=0;mbfen=0;TR1=0;ET1=0;}if(mbkeynum==2)//打开秒表定时器关闭时钟定时器{TR1=1;ET1=1;TR0=0;ET0=0;}if(mbkeynum==3)//关闭秒表定时器{TR1=0;ET1=0;TR0=0;ET0=0;}if(mbkeynum==4)//显示时钟状态打开时钟定时器{TR0=1;ET0=1;TR1=0;ET1=0;write_sfm(10,miao);write_sfm(7,fen);write_sfm(4,shi);write_jinzhi(jinzhi);write_com(0x80+0x40+13);write_date(' ');write_date('O');write_date('N');mbkeynum=0;}}}void main(){init();while(1){keyboard();mbiao();if(count==20)//液晶变化{count=0;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(jinzhi==3)//24进制时钟{if(shi==24)shi=0;}else{if(shi>12)//12进制时钟{shi=shi-12;jinzhi++;if(jinzhi==3)jinzhi=1;}}write_sfm(4,shi);write_jinzhi(jinzhi);}write_sfm(7,fen);}write_sfm(10,miao);if(miao==0&&fen==0&&shi==0||(jinzhi ==2&&shi==12&&fen==0&&miao==0))//日期和星期递变{write_com(0x80+9);ri++;if(ri==32){ri=1;yue++;if(yue==13){yue=1;nian++;write_nian(2,nian);}write_yue(7,yue);}write_ri(10,ri);xqnum++;write_week(xqnum);}if(fen==0&&miao>=0&&miao<=5)//整点报时{flag=1;beep=~beep;}if(naonum==1&&shi==07&&fen==15&&mia o>=0&&miao<=5)//闹钟{flag=1;beep=~beep;}}}}void timer0() interrupt 1//时钟定时器{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;}void timer1() interrupt 3//秒表定时器{TH1=(65536100000)/256;TL1=(65536100000)%256;ms++;write_sfm(10,ms);if(ms==1*30){mbmiao++;write_sfm(7,mbmiao);ms=0;if(mbmiao==60){mbmiao=0;mbfen++;write_sfm(4,mbfen);}}}附录二:原理图。