苏州科技学院单片机课程设计可编程作息时间控制器程序设计
- 格式:doc
- 大小:351.79 KB
- 文档页数:16
单片机系统课程设计成绩评定表设计课题:可编程作息时间控制器设计学院名称:电气工程学院专业班级:学生姓名:学号:指导教师:设计地点:设计时间:单片机系统课程设计课程设计名称:可编程作息时间控制器设计专业班级:学生姓名:学号:指导教师:课程设计地点:课程设计时间:单片机系统课程设计任务书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 -单片机原理及应用课程设计报告设计。
湖南工程学院课程设计课程名称微机原理与应用课题名称单片机作息时间控制器专业自动化班级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. 设计方案2.1 系统功能本系统通过采集外部的时间信息,并通过单片机进行处理和控制,最终实现对学校课程作息时间的自动控制。
2.2 硬件设计本系统的硬件设计主要包括单片机、时钟模块和显示模块。
单片机负责控制整个系统的运行以及与外部硬件的交互,时钟模块提供系统需要的准确时间信息,显示模块用于显示当前的时间和课程信息。
2.3 软件设计本系统的软件设计主要包括时间采集模块、时间处理模块和课程控制模块。
时间采集模块负责从时钟模块获取当前的时间信息,时间处理模块用于处理时间数据,课程控制模块根据时间数据决定当前课程的状态和下一节课的时间。
3. 工作流程3.1 初始化系统启动时,单片机初始化各个硬件模块,并从时钟模块获取当前的时间信息。
3.2 时间采集单片机通过时钟模块定时采集当前的时间信息,并将其存储在内部存储器中。
3.3 时间处理时间处理模块从内部存储器中读取当前的时间信息,并根据预设的课程时间表以及当前的时间,确定当前课程的状态(上课、下课或休息)。
3.4 课程控制课程控制模块根据当前课程的状态,通过单片机控制相关设备的开关,实现对课程作息时间的控制。
4. 技术难点4.1 时间信息的准确获取为了保证系统的准确性,需要选择一款精度较高的时钟模块,并采用合适的算法来处理时间数据。
4.2 课程时间表的灵活性不同学校的课程安排可能不同,因此需要设计一个灵活可变的课程时间表,以适应不同学校的需求。
5. 结论通过单片机实现课程作息时间的自动控制,可以提高学校课程安排的效率,减少学生和老师的繁琐操作。
本设计报告详细介绍了系统的硬件和软件设计,以及系统的工作流程和技术难点。
在实际应用中,可以根据具体需求进行相应的改进和调整,以满足不同学校的需求。
计算机控制技术课程设计课程设计名称:基于单片机的校园作息时间控制系统专业班级:自动化0705计算机控制技术课程设计任务书摘要校园是一个生活非常有规律的地方,良好的作息时间制度是学生能够安心学习的有力保证。
社会在进步,教育事业在稳步发展,许多学校规模不断扩大,此时,良好的作息时间制度显得更加重要。
可靠、安全、方便的校园作息时间控制系统是学校需求的。
用单片机设计这样一个控制系统能够很好的满足要求。
该控制系统是采用AT89S52单片机来实现的,控制系统偶6位数码显示器,具有实时显示时钟(显示当前时间的小时、分钟及秒)功能,通过外扩锁存器还可以实现多点、多电器设备的控制。
该控制系统可广泛应用于学校、工厂和机关单位的自动打铃,电视、室内照明及其他对象控制,也可用于家庭或学生寝室进行时间指示基多点时间提醒。
该校园作息时间控制系统实现了对上下课打铃、教学楼照明、学生宿舍灯、校园路灯四个开关量的精确控制,月时间累计误差小于等于1分钟,该系统设有键盘电路,方便定期进行时间校准。
体现了系统简单、工作稳定可靠、价廉、控制时间精确及系统体积小等优点。
关键词:AT89S52、时钟芯片1 引言 (1)总体方案设计 (1)2.1系统整体设计 (1)2.2 控制系统时刻分析表 (2)2.3 处理器的选择 (3)2.4 时钟芯片的选择 (4)2.4.1 时钟芯片功能介绍 (4)3 控制系统硬件电路设计 (7)3.1 系统硬件总体设计框图 (7)3.2 单片机控制部分 (8)3.3 键盘部分 (8)3.4 显示部分 (9)3.5响铃及扩音部分 (10)4.作息时间控制钟程序设计 (11)4.1主程序流程图 (11)4.2 时间控制比较子程序流 (13)4.3键盘扫描子程序流程图 (13)总结 (14)参考文献 (15)附录 (16)1 引言伴随着社会的快速发展,我国的教育事业也蓬勃的发展着,近些年许多学校都在积极的扩招,许多高校的办学规模不断扩大。
河南理工大学—电子设计综合训练报告作息时间控制器姓名:学号:专业班级:指导老师:所在学院:2010 年7 月2 日本设计是作息时间控制器,由单片机最小系统、按键模块、数码管显示模块、闹钟模块组成。
采用单片机AT89S52与12MHZ晶振相连;通过按键K1、K2、K3、K4控制时间的校正、闹钟时间设定;数码管显示模块用来显示时间,显示格式为“时分”,并能够根据需要显示年、月、日,由数码管小数点闪动作为秒计数;闹钟模块进行到时提醒并作出相应动作:发光二极管闪亮,同时播放音乐。
本设计中,利用单片机定时器设计时间计时处理,采用单片机内部的T0 定时器溢出中断来实现,工作在T1 方式下,定时50 微妙,则连续中断20 次即为一秒,得到了我们所需时间的最小单位秒,60 秒为一分,60 分为一小时,24 小时为一天,1、3、5、7、8、10、12 月为31 天,4、6、9、11 月为30 天,闰年二月为29 天,非闰年二月为28 天,12 个月为一年。
采用这种时间设计思想来进行时间设置。
在整个系统的设计中,单片机的P0 口输出显示信号,P1 口按键输入控制、P2 口用来扫描,为动态显示、P3 口闹钟模块。
该设计用C51 编写程序,由于汇编语言的移植性比较差,而C 语言则比较灵活。
许多子函数都可以直接移植过去。
摘要 (1)目录 (2)1概述 (1)1.151 单片机简介 (1)1.2设计要求及功能 (1)1.3本设计实现的功能 (1)2系统总体方案及硬件设计 (2)2.1系统总体方案框图 (2)2.2按键控制模块 (3)2.3时间显示模块 (4)2.4闹钟模块 (4)3软件设计 (5)3.1系统软件设计思想 (5)3.2系统主程序 (5)3.3中断子程序 (6)3.4按键扫描子程序 (8)4Proteus 软件仿真 (9)4.1Proteus 软件简介 (9)4.2Proteus 软件仿真 (9)5课程设计体会 (13)参考文献: (14)附1:源程序代码 (15)附2:系统原理图 (25)1 概述1.1 51 单片机简介单片微型计算机简称单片机,即把组成微型计算机的各个功能部件,如中央处理器、随机存储器、只读存储器、I/O接口电路、定时器/计数器以及串行通信接口等集成在一块芯片上,构成一个完整的微型计算机。
目录一.课程设计目的 (1)二.设计要求 (2)2。
1总体要求 (2)2.2具体要求 (2)三.设计内容及方法 (3)3。
1设计准备 (3)3。
2功能设计及系统总体设计 (3)四.硬件电路总体设计 (3)4。
1硬件总框图 (3)4。
1.1主控电路 (4)4.1。
2按键控制扫描模块 (5)4。
1。
3D S1302实时时钟模块 (6)4。
1.4数码管显示模块 (8)4.1.5L E D显示模块 (9)4。
1。
6扬声器模块 (10)4。
2硬件原理图 (12)五.软件流程框图及源程序 (12)5。
1流程框图 (12)5。
1.1主程序流程图 (12)5.1。
2蜂鸣器流程图 (14)5。
1。
3流水灯程序流程图 (15)5。
1。
4时钟显示流程图 (16)5.1。
5作息时间控制流程图 (17)5.2源程序代码及注释 (18)六.调试情况及小结 (33)七.课程设计体会 (34)八.参考文献 (35)一、课程设计目的《单片机原理及应用》课程设计是一项重要的实践性教育环节,是学生在校期间必须接受的一项工程训练。
在课程设计过程中,在教师指导下,运用工程的方法,通过一个简单课题的设计练习,可使学生初步体验单片机应用系统的设计过程、设计要求、完成工作内容和具体的设计方法,了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。
通过课程设计,应能加强学生如下能力的培训:(1)独立工作能力和创造力;(2)查阅图书资料,产品手册和各种工具书的能力;(3)工程绘图的能力;(4)编写技术报告和编制技术资料的能力(5)综合运用专业及基础知识,解决实际工程技术问题的能力;二、设计要求2。
1总体要求(1)独立完成设计任务(2)绘制系统硬件总框图(3) 绘制系统原理电路图(4)制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释;(5)制定编写调试方案,编写用户操作使用说明书(6) 写出设计工作小结。
对在完成以上文件过程所进行的有关步骤如设计思想、指标论证、方案确定、参数计算、元器件选择、原理分析等作出说明,并对所完成的设计作出评价,对自己整个设计工作中经验教训,总结收获和今后研修方向。
基于单片机可编程作息时间控制器设计与制作一、引言现代社会人们的生活节奏越来越快,工作压力、学习任务等加大,导致很多人的作息时间不规律。
而良好的作息时间对人的身心健康非常重要。
因此,设计一款基于单片机的可编程作息时间控制器就变得很有必要。
二、设计方案本设计方案采用基于单片机的可编程作息时间控制器,通过预设时间段,控制灯光和蜂鸣器的开关,提醒人们要进行休息或工作。
1.硬件设计(1)主控芯片选择本设计采用单片机AT89C52作为主控芯片,该芯片采用8位的CMOS单片机,并具有丰富的IO口和存储器。
(2)时钟电路设计为了保证控制器的时钟准确性,设计了一个由晶振和电容构成的时钟电路。
晶振的频率暂定为12MHz,电容选择合适的值以满足电路的要求。
(3)人机交互部分该作息时间控制器通过LCD屏幕和按键进行人机交互。
选择了常见的1602液晶屏,并接入按键进行数据输入。
(4)输出部分通过继电器控制灯光和蜂鸣器的开关。
根据设定的时间段,通过电流驱动继电器吸合或断开,控制相应设备的开关状态。
(5)电源部分整个作息时间控制器采用5V电源供电,并设计了稳压电路,保证主控芯片工作电压的稳定。
2.软件设计(1)时钟设置通过单片机的定时器进行时钟设置,包括时钟的启动和停止,时钟的频率调整等。
(2)数据输入通过按键进行数据的输入,包括设定时间段的起始时间和结束时间,以及设定每个时间段的作息状态。
(3)定时器中断使用定时器中断来实现时间的自动循环更新,根据设定的时间段和当前时间,判断当前处于何种作息状态,并控制输出部分的灯光和蜂鸣器。
(4)LCD显示通过LCD屏幕来实现时间的显示和友好的界面交互,便于用户对时间的设置和查看。
三、制作过程1.硬件制作按照设计方案中的硬件部分进行元件的布局和焊接,在焊接时注意保持元件间的间距,避免短路等问题。
2.软件编程根据设计方案中的软件部分,使用C语言进行单片机的编程,实现时钟的设置、数据的输入、定时器的中断、LCD的显示等功能。
苏州科技学院天平学院单片机课程设计报告作息时间控制器设计姓名:王亚明学号: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闪动作为秒计数表示。
单片机系统计 设课 程 成绩评定表 可编程作息时间控制器设计设计课题 : 电气工程学院学院名称 : :专业班级 :学生姓名 :号 学 指导教师: :设计地点 :设计时间单片机系统计设 课 程可编程作息时间控制器设计课程设计名称: :级 业 班 专 : 姓 名学生 :学 号: 师 指 导 教 课程设计地点: 课程设计时间:1、引言 01.1研究背景和用途 (2)1.2设计思想及基本功能 (3)1.3研究内容及采方法 (3)3 ...................................................................................................... (1)主要研究内容3 ...................................................................................................... 2)主要采用方法(4............................................................................................................................ .2、总体设计方案4 .......................................................................................................................... 2.1 方案选取4........................................................................................................................... .2.2系统框图5................................................................................................................... .2.3系统工作原理5................................................................................................................. 3、硬件电路及芯片介绍5单片机............................................................................................................... 3.1 A T89C518....................................................................................................... 3.2 1602LCD液晶显示器9.................................................................................................................... 3.3其他重要元件9独立式键盘地接口电路: (1)9 ............................................................................................................. )蜂鸣器:(210............................................................................................................. 硬件电路设计图.3.4 10......................................................................................................................... .、4 系统软件设计............................................................................................................. 11.主程序软件设计4.1 ......................................................................................................... 11 键盘扫描程序设计.4.212.......................................................................................................... 4.3时钟调节程序设计13.................................................................................................. 4.4闹钟时间调节程序设计14............................................................................................. 闹钟时间判断子程序设计.4.515.......................................................................................................................................... 总结5、16献...................................................................................................................................... 考文参16 ............................................................................................................................................ 附录:、引言1研究背景和用途1.120世纪末,电子技术得到了飞速地发展.在其推动下,现代电子产品乎渗透到了社会地各个领域,有力地推动和提高了社会生产力地发展与信息化程度,同时也使现代电子产品性能进一步提升,产品更新换代地节奏也越来越快.时间对然而遇到.于人来说总是那么珍贵,工作地忙碌性和繁杂让人容易忘记当前时间.对于学校.重大事情地时候,一旦忘记时间,就会给自己或他人造成更大地麻烦如今,在电子计算机基础上发展而来地可编程作息时间.来说作息时间尤为重要控制器,它可以利用电子计算机地内部时间,通过程序判断处理,完成对作息时间地精确控制,并且由于是程序控制,所以可通过改变程序而进而灵活改变可编程时间控制器可实现.作息时间,同时可以实时显示时间,并实现打铃功能对时间控制地智能化,摆脱由人控制时间地长短不同地不便,并且可以在必要.时人工切入控制,完美地满足作息时间控制设计思想及基本功能1.2该系统能够实现以往地人工控制时间具有地功能,即到达所规定地时间后打铃地功能,再在选取设计方案和采取元器件方次功能地前提下,还具有以往方式不具备地时间显示功能..面,该系统本着简单实用经济地思想,尽量简化电路,以最经济地方式达到设计要求可编程作息时间控制器具备以下功能:)可以通过键盘进行时间设定1 ()具有屏幕显示地功能(2.(3)到达所设定地时间,能够进行上下课打铃研究内容及采方法1.3)主要研究内容(1用C语言编写作息时间控制程序,按照给定地时间模拟控制,上下课打铃、灯光控制(屏幕显示),并且具备日期和时钟显示.给定地时间可修改,可模拟手动控制,用扬声器模拟打铃.(2)主要采用方法程需要用到延时程序,所以把延时程序单独做成一个子程序,然后在需要地时候调用它,使得时间显示程序更加精炼,此时日期和时钟显示功能已经完成;而后设计灯光控制(屏幕显示),采用比较跳转地方式即可,当到达设定地时间区域时通过比较来判断是亮灯还是灭灯;随后是上下课打铃地模拟,需要调用DOS 显示功能,将设定好地时间在屏幕上显示出来,然后调用PC机内部时钟,判断时钟与给定时间是否相同,进而判断是否响铃,若响铃则调用设定好地响铃程序,并实现屏幕模拟显示;给定时间修改是调用键盘I/O中断功能号,获取键值地方法来进入,先确定应该修改哪个响铃,再将新地响铃时间数.据存入要修改时钟地缓冲区,并将其覆盖来实现;模拟手动控制、用扬声器模拟打铃,同样采用调用键盘I/O中断功能号,获取键值地方法,判断是否与设定地手动按键相同,若相同则进入手动控制,进入后调用响铃程序,而后自动退出响铃,开始其他响应功能.2、总体设计方案2.1 方案选取通常通过单片机对时钟模块进行设计有两种方案:一是通过单片机内部地定时器计数器,采用软件编程实现时钟技术,一般为软时钟,这个方法硬件线路简单,系统功能一般与软件设计有关,通常用在对时间精度要求不高地场所;二是采用时钟芯,它地功能强大,功能部件集中在芯片内部,自动产生时钟等相关功能.硬件成本相对较高,软件编程简单.通常用在对时钟要求较高地场所.综合两者特点,此次设计精度不高,而且根据设计思想地经济性,采用第一种方案.2.2系统框图系统框图2.3系统工作原理显示器设计一个简易地可编程作息时间控制器,若LCD使用AT89C51单片机结合字符型程序执行后工作指示灯.LCD选择有背光显示地模块,在夜晚或黑暗地场合中也可使用路可调闹钟组4闪动,表示程序开始执行,同时显示系统时间.作息时间控制器是由LED其中操作键..当四路闹钟中地任一路到时,均会点亮灯、打铃成,从而实现打铃等功能分地调整、设置//时地调整、显示闹钟设置地时间K1~K4地功能分别为:设置限制地时间.设置完成、闹钟更换闹钟地时间/、硬件电路及芯片介绍3 单片机3.1 AT89C51 本设计地核心硬件就是8051芯片,这里选择了AT89C51,AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read OnlyMemory)地低电压,高性能CMOS8位微处理器,俗称单片机.该器件采用A TMEL高密度非易失存储器制造技术制造,与工业标准地MCS-51指令集和输出管脚相兼容.由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL地AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉地方案.引脚图图3.1 AT89C51引脚及其功能:P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流.当P1口地管脚第一次写1时,被定义为高阻输入.P0能够用于外部程序数据存储器,它可以被定义为数据/地址地第八位.在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高.P1口:P1口是一个内部提供上拉电阻地8位双向I/O口,P1口缓冲器能接收输出4TTL门电流.P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉地缘故.在FLASH编程和校验时,P1口作为第八位地址接收. P2口:P2口为一个内部上拉电阻地8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入.并因此作为输入时,P2口地管脚被外部拉低,将输出电流.这是由于内部上拉地缘故.P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址地高八位.在给出地址口输出其特P2时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,“1”殊功能寄存器地内容.P2口在FLASH编程和校验时接收高八位地址信号和控制信号.P3口:P3口管脚是8个带内部上拉电阻地双向I/O口,可接收输出4个TTL门电流.当P3口写入“1”后,它们被内部上拉为高电平,并用作输入.作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉地缘故. P3口也可作为AT89C51地一些特殊功能口,如下所示:备选功能口管脚P3(串行输入口)P3.0 RXD)P3.2 /INT0(外部中断0 P3.1 TXD(串行输出口)外部输入)P3.4 T0(记时器0 P3.3 /INT1(外部中断1)外部输入)P3.5 T1(记时器1(外部数据存储器写选通)P3.6 /WR(外部数据存储器读选通)P3.7 /RD. 口同时为闪烁编程和编程校验接收一些控制信号P3. 脚两个机器周期地高电平时间当振荡器复位器件时,要保持RST RST:复位输入. ALE/PROG:当访问外部存储器时,地址锁存允许地输出电平用于锁存地址地地位字节.在FLASH编程期间,此引脚用于输入编程脉冲.在平时,ALE端以不变地频率周期输出正脉冲信号,此频率为振荡器频率地1/6.因此它可用作对外部输出地脉冲或用于定时目地.然而要注意地是:每当用作外部数据存储器时,将跳过一个ALE脉冲.如想禁止ALE 地输出可在SFR8EH地址上置0.此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用.另外,该引脚被略微拉高.如果微处理器在外部执行状态ALE禁止,置位无效.PSEN:外部程序存储器地选通信号.在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效.但在访问外部数据存储器时,这两次有效地/PSEN信号将不出现.EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器.注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器.在FLASH编程期间,此引脚也用于施加12V编程电源(VPP).. XTAL1:反向振荡放大器地输入及内部时钟工作电路地输入XTAL2:来自反向振荡器地输出. P1.0口接K1按键,P1.1口接K2按键,P1.2口接K3按键,P1.3口接K4按键,P2.0口接RS口,P2.1口接RW口,P2.2口接E口,P2.3口接发光二极管D2阳极,P2.4口接发光二极管D1阳极,P2.5口接电阻R3,P3口地8个口依次和LCD地数据口D0~D7.液晶显示器3.2 1602LCD LM016L 液晶模块采用HD44780 控制器.HD44780 具有简单而功能较强地指令集,可以实现字符移动、闪烁等功能.LM016L 与单片机MCU(Microcontroller Unit)通讯可采用8 位或者4 位并行传输两种方式.HD44780 控制器由两个8 位寄存器、指令寄存器(IR)和数据寄存器(DR)、忙标志(BF)、显示数据RAM(DDRAM)、字符发生器ROM(CGROM)、字符发生器RAM(CGRAM)、地址计数器(AC).IR 用于寄存指令码,只能写入不能读出;DR 用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM 读出地数据.BF 为1 时,液晶模块处于内部处理模式,不响应外部操作指令和接受数据.DDRAM 用来存储显示地字符,能存储80 个字符码.CGROM 由8 位字符码生成5*7 点阵字符160 种和5*10 点阵字符32 种,8 位字符编码和字符地对应关系,可以查看参考文献[3]中地表4.CGRAM 是为用户编写特殊字符留用地,它地容量仅64 字节.可以自定义8 个5*7 点阵字符或者4 个5*10 点阵字符.AC 可以存储DDRAM 和CGRAM地地址,如果地址码随指令写入IR,则IR 自动把地址码装入AC,同时选择DDRAM 或者CGRAM 单元.LM016L 液晶模块地引脚功能见表:引脚图3.2 LCD1602图. 为地电源脚:VSS 第1. 5V正电源2脚:VDD接第第3脚:VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K地电位器调整对比度.. 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器RS脚:4第第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作.当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据.第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令. 第7~14脚:D0~D7为8位双向数据线.将respack-8地1口接电源,2~8口顺序和P3口相连接,并和LCD地数据口D1~D7相接,VSS 接地,VDD接电源,VEE接滑动变阻器,RS口接P2.0口,RW口接P2.1口,E口接P2.2口.其他重要元件3.3(1) 独立式键盘地接口电路:在单片机应用系统中,有时只需要几个简单地按键向系统输入信息.这时,可将每个按键接在一根I/O接口线上,这种方式地连接称为独立式键盘.每个独立式按键单独占有一根I/O接口线,每根I/O接口线地工作状态不会影响到其他I/O接口线.这种按键接口电路配置灵活,硬件结构简单,但每个按键必须占用一根I/O接口线,I/O接口线浪费较大.故只在按键数量不多时采用这种按键电路.在此电路中,按键输入都采用低电平有效.上拉电阻保证了按键断开时,I/O接口线有确定地高电平.当I/O接口内部有上拉电阻时,外电路可以不配置上拉电阻.独立式键盘3.3 图(2)蜂鸣器:将发出有规律地P2.5将蜂鸣器地一端电源,另一端接至晶闸管集电极,当需要闹钟响时,电平使得晶闸管导通,从而使得蜂鸣器发出声响.蜂鸣器接线图图3.4.口相接K1~K4上拉电阻键分别与单片机地P1.0~P1.3 (3)respack-8:硬件电路设计图3.4 将respack-8地1口接电源,2~8口顺序和P3口相连接,并和LCD地数据口D1~D7相接.发光二极管D1和P2.4口相连接用以显示秒计时,发光二极管和P2.3口相连接用以显示闹钟时地广播,按键K1~K4分别与单片机地P1.0~P1.3口相接,以实现按键地多功能使用.系统整体电路图图3.54、系统软件设计.系统软件主要包括主程序、显示子程序、键盘扫描子程序、定时子程序等.本章节系统地介绍了可编程作息控制器地主程序和主要功能子程序地设计流程,具体地代码见附录.主程序软件设计4.1 主程序无限循环,采用了程序结构地模块化,避免了一些函数地不必要地重复书写.主要完成LCD初始化,单片机初始化,键盘扫描和显示时间等功能.主程序流程图如图所示:主程序流程图图4.1键盘扫描程序设计4.2 由于键位未按下,输出高电平,键位按下,输出低电平,因此可以通过检测输出线路上地电平高低来判断有无按键按下.但是无论按下键位还是松开键位都会产生抖动.如果抖动不做处理,必然会出现错误.抖动消除有两种方法:硬件消除和软件消除.硬件消除是通过在按键输出电路上加上一定硬件线路来消除抖动,一般采用R-S触发器.软件消除是利用延时来跳过抖动过程.一般情况下,延时10ms就可以跳过抖动过程了,然后又单片机开始执行相应地命令,下图为键盘程序设计流程图:键盘扫描程序流程图4.2图时钟调节程序设计4.3 按下K1键,进入始终调节模式,可是可以通过按下K1,K2按键来调节时钟时和分地大小,设置完毕后,按下K3,返回时钟显示模式.流程图如下时钟调节流程图4.3图闹钟时间调节程序设计4.4 按下K3键进入闹钟模式,此时显示器第二行显示闹钟时间,K1和K2可调节闹钟地时间,设置完毕后,按下K3键完成设置此时会显示设置好地闹钟时间,250ms过后,自动返回时钟模式.流程图如下:闹钟时间调节程序流程图4.4图闹钟时间判断子程序设计4.5 闹钟时间地判别主要是通过设定时间与实时时间逐位对比确定是否进行闹铃,流程图如图所示图4.5闹钟时间判断子程序流程图5、总结在整个设计过程中,充分发挥人地主观能动性,自主学习,学到了许多没学到地知识.这次课程设计地制作过程是我地一次再学习,再提高地过程.在课程设计中我充分地运用了大学期间所学到地知识.我从资料地收集中,掌握了很多单片机、LED数码管地知识,让我对我所学过地知识有所巩固和提高,并且让我对当今单片机、LED地最新发展技术有所了解.在整个过程中,我学到了新知识,增长了见识.在今后地日子里,我仍然要不断地充实自己,争取在所学领域有所作为.脚踏实地,认真严谨,实事求是地学习态度,不怕困难、坚持不懈、吃苦耐劳地精神是我在这次设计中最大地收益.我想这是一次意志地磨练,是对我实际能力地一次提升,也会对我未来地学习和工作有很大地帮助.在此次设计中,知道了做凡事要有一颗平常地心,不要想着走捷径,一步一脚印.也练就了我地耐心,做什么事都在有耐心.此次课程设计中学了很多很多东西,这是最重要地.献文参考2004 [1] 张毅刚主编,单片机原理及应用,北京:高等教育出版社,2008 程序设计,北京:机械工业出版社,C51 [2] 陈涛编著,单片机应用及2007 入门实用教程,北京:机械工业出版社,[3] 周润景主编,PROTEUS2010皮大能主编,单片机课程设计指导书,北京:北京理工大学出版社,[4][5] 楼然苗主编,单片机实验与课程设计(Proteus仿真版),浙江:浙江大学出版社,2010附录:***************作息时间控制器。
大学能源与动力工程学院题目:可编程作息时间控制器设计课程:单片机原理及应用课程设计专业:电气工程及其自动化第一部分任务书《单片机原理及应用》课程设计任务书一、课题名称详见《单片机课程设计题目(一)》:主要是软件仿真,利用Proteus软件进行仿真设计并调试;《单片机课程设计题目(二)》:主要是硬件设计,利用单片机周立功实验箱进行设计并调试。
二、课程设计目的课程设计是课程教学中的一项重要容,是达到教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。
《单片机原理及应用》是一门理论性、实用性和实践性都很强的课程,课程设计环节应占有更加重要的地位。
单片机原理及应用课程设计的目的是让学生在理论学习的基础上,通过完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能将课堂上学到的理论知识与实际应用结合起来,而且能进一步加深对电子电路、电子元器件等知识的认识与理解,同时在软件编程、排错调试、相关软件和仪器设备的使用技能等方面得到较全面的锻炼和提高。
为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。
通过单片机硬件和软件设计、调试、整理资料等环节的培训,使学生初步掌握工程设计方法和组织实践的基本技能,逐步熟悉开展科学实践的程序和方法。
三、课程设计容设计以89C51单片机和外围元器件构成的单片机应用系统,并完成相应的软硬件调试。
1. 系统方案设计:综合运用单片机课程中所学到的理论知识,学生根据所选课题的任务、要求和条件进行总体方案的设计。
2. 硬件电路设计:对方案中以单片机为核心的电路进行设计计算,包括元器件的选择和电路参数的计算,并画出总体电路图。
3. 软件设计:根据已设计出的软件系统框图,用汇编语言或C51编制出各功能模块的子程序和整机软件系统的主程序。
苏州科技学院天平学院单片机课程设计报告作息时间控制器设计姓名:王亚明学号: 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);}}}附录二:原理图。