单片机作息时间控制器课程设计
- 格式:doc
- 大小:1.84 MB
- 文档页数:63
单片机系统课程设计成绩评定表设计课题:可编程作息时间控制器设计学院名称:电气工程学院专业班级:学生姓名:学号:指导教师:设计地点:设计时间:单片机系统课程设计课程设计名称:可编程作息时间控制器设计专业班级:学生姓名:学号:指导教师:课程设计地点:课程设计时间:单片机系统课程设计任务书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世纪末,电子技术得到了飞速的发展。
在其推动下,现代电子产品乎渗透到了社会的各个领域,有力的推动和提高了社会生产力的发展与信息化程度,同时也使现代电子产品性能进一步提升,产品更新换代的节奏也越来越快。
时间对于人来说总是那么珍贵,工作的忙碌性和繁杂让人容易忘记当前时间。
然而遇到重大事情的时候,一旦忘记时间,就会给自己或他人造成更大的麻烦。
对于学校来说作息时间尤为重要。
如今,在电子计算机基础上发展而来的可编程作息时间控制器,它可以利用电子计算机的内部时间,通过程序判断处理,完成对作息时间的精确控制,并且由于是程序控制,所以可通过改变程序而进而灵活改变作息时间,同时可以实时显示时间,并实现打铃功能。
第1章系统设计要求与方案确定1.1设计要求以单片机为核心,设计一个具有定时和计数功能的智能化作息时间控制器。
该控制器要求的功能有:按作息时间接通/断开电铃;课间接通/断开播放音乐设备;时钟显示。
作息时间控制器常用于学校教学楼的时间控制,利用单片机内部定时器实现时间基准定时,并配合“启动”、“复位”等按键的操作完成铃声、音乐的开/停控制,显示的内容要求有时、分、秒各两位。
1.2设计思路根据设计要求,初步思路如下:1)计时单元由单片机内部的定时器/计数器T1来实现。
2)时间显示功能通过LED数码管动态扫描来实现。
动态扫描的定时时间由单片机内部的定时器/计数器T0实现。
3)LED数码管的段码输入和位码输入由8051的P0口、P1口产生。
4)时间调整通过接入按钮电路来实现。
系统共设三个键,分别定义为:①SET功能:设置当前时间,即当电子时钟的时间有误差时,需要随时对它进行调整,使用SET键与+1键、RET键配合来完成这一功能。
②+1调整键功能:分别对时间值的小时十位、小时个位、分的十位、分的个位进行+1调整,即该按键每按下一次,对应的时间调整位+1。
③RET确认键功能:确认,即对+1调整位进行确认,该键按下时,说明被调整位的值已经确定,转去调整下一位。
5)打铃是用P1口输出来控制继电器的闭合,从而控制打铃和放音乐。
为了方便观察,用发光二极管来代替继电器,即P1.7对应的发光二极管亮代表电铃接通,若不亮代表电铃断开,P1.6对应的发光二极管亮代表放音机接通,若不亮代表放音机断开。
第2章控制系统硬件电路设计2.1硬件电路的设计方案及框图根据设计要求与设计思路,确定该系统的控制方案,图1所示为开系统设计方案的硬件电路的设计框图。
硬件电路由8个部分组成,即单片机按键输入电路、单片机时钟电路、单片机复位电路、6位LED动态扫描电路、语音输出与打铃电路。
下面将分别对硬件电路的设计和器件的选择做详细介绍。
图1 硬件电路设计框图2.2单片机的选择当今单片机厂商琳琅满目,产品性能各异。
目录第一章引言 (3)选题背景及其意义 (3)877A单片机的介绍 (3)设计要求及其功能 (4)本设计实现的功能 (4)第二章系统整体方案 (5)系统整体方案框图 (5)设计要求 (5)按照设计要求画出系统框图 (5)控制系统时刻分析表 (6)处置器的选择 (6)时钟芯片的选择 (7)液晶显示器的选择 (7)第三章硬件部份的设计 (7)系统部份 (7)键盘接口电路 (8)显示部份 (9)第四章控制系统软件部份 (10)软件介绍 (10)程序流程图 (11)按键的扫描子程序 (12)铃声控制程序 (12)仿真电路 (13)第五章总结 (15)参考文献 (16)致谢 (16)基于单片机的可编程作息时刻控制器的设计何欢(伊犁师范学院电子与信息工程学院电子信息科学与技术09-2班,新疆伊宁市 835000)摘要:本设计是作息时刻控制器,由单片机最小系统、按键模块、数码管显示模块、铃声模块组成。
采用PIC16F877A单片机、主频4MHZ晶振,通过按键STATE、TEN、UNIT控制时刻的校正时刻和铃声设定;数码管显示模块用来显示时刻,显示格式为“时分”,并能够按照需要显示年、月、日,由数码管小数点闪动作为秒计数;铃声模块进行到时提示并出相应动作:发光二极管闪亮,同时播放音乐。
时钟芯片采用的是DS1302,此芯片是DALLAS 公司推出的涓流充电时钟芯片,其内含有一个实不时钟/日历和31 字节静态RAM,并通过简单的串行接口与单片机进行通信。
实不时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每一个月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM 指示决定采用24 或12 小时格式。
DS1302 工作时功耗很低,维持数据和时钟信息时功率小于1mW。
该设计采用C语言编写程序,由于汇编语言的移植性比较差,而C语言则比较灵活,许多子函数都能够直接移植过去。
关键词:PIC16F877A单片机;晶振;液晶显示器;源程序Based on single chip microcomputer controller design ofprogrammable calendarHehuan(ili normal college of electronic and information engineering college of electronic information science and technology 09-2 class, xinjiang yining city, 835000 )Abstract:This is the time schedule controller designed by single chip microcomputer minimum system module, buttons, digital tube display module, alarm module. Using PIC16F877A MCU, 4 MHZ crystal vibration main frequency, through the button STATE, TEN, UNIT control time correction time and set ring; Digital tube display module is used to display time, display format of"time", and can according to need to display year, month, day, by the digital tube decimal counting flashing as seconds; Bell module to remind and make the corresponding action: light-emitting diodes, play music at the same time.Used clock chip DS1302, this chip is DALLAS company to launch a trickle charging the clock chip, containing a real-time clock/calendar and 31 bytes static RAM, and communicate with single chip microcomputer with simple serial interface. Real-time clock/calendar circuit provides seconds, minutes, and information day, date, month, year, number of days per month and leap year the number of days can be automatically adjusted, clock operation by an AM/PM indicator decided to adopt 12 or 24 hour format. DS1302 power consumption is low, while working to keep data and clock information when the power is less than 1 mw.This design USES the C language program, due to the portability of assembly language, but C is more flexible, Many functions can be directly transplanted in the past.Keywords: PIC16F877A MCU;crystals and liquid crystal display; the source program第一章引言选题背景和意义自从人类学会计时开始,计时方式由在木棍和骨头上刻标记,随着人类的智慧的进展,到后面利用计时工具不断的改良,由最开始的圭表、日晷、漏壶、漏箭、机械闹钟、秒表、沙漏、怀表、自摆钟、石英钟等。
课程设计(论文)题目:作息时间控制器院(系):电子工程与自动化学院专业:测控技术与仪器学生姓名:吉哲学号: 0900820413指导教师:徐翠锋职称:讲师2012年12月27日摘要本次作息时间控制器设计是采用AT89S52单片机作为系统的核心元件,在其最小系统基础上与DS1302时钟芯片配合,四个独立按键控制,六位七段数码管显示,无源蜂鸣器发声。
单片机最小系统作为核心处理和控制单元;时钟芯片用来实现实时时间的精准输出和闹钟信息的存储,并可用纽扣电池供电以保持时间的连续运行;独立按键用于进行时间及闹钟的设定;数码管用于显示时间及闹钟信息;蜂鸣器用于在达到设定的时间后进行及时提醒。
关键词:时间控制;AT89S52;单片机;DS1302;时钟芯片;闹铃;定时报警AbstractThis work and rest time controller design is to use AT89S52 SCM as the core of the system components, in its minimum system with DS1302 clock chip based on coordination, four independent key control, six seven period of digital tube display, passive buzzer sound. Single chip microcomputer minimum system as the core processing and control unit; Clock chip to realize real-time time accurate output and alarm information storage, and use button batteries to keep continuous operation time, Independent key for time and alarm clock Settings; Digital tube is used to display the time and alarm information; Buzzer to reach a set time for timely remind.Key words:Time control; AT89S52 devices; SCM; DS1302; Clock chip; Alarm; Timing alarm目录引言 (1)1 课程设计任务及要求 (1)2 硬件设计 (1)2.1 总体设计思路及系统框图 (1)2.2 中央处理控制器 (2)2.3 晶振电路 (3)2.4 时钟信号产生电路 (3)2.5 显示电路 (4)2.6 控制电路 (6)2.7 闹铃电路 (8)2.8 电源及下载电路 (8)3 程序设计 (9)3.1 主程序流程图 (9)3.2 按键扫描程序流程图 (9)3.3 响铃扫描程序 (10)4 制板、组装与调试 (11)4.1 PCB制作 (11)4.2 制作PCB板流程 (11)4.3 调试 (11)5 方案总结 (11)心得体会 (12)谢辞 (13)参考文献 (14)附录 (15)引言时间是人类生活必不可少的重要元素,从古至今它都扮演着一个非常重要的角色。
单片机原理及系统课程设计专业:电气工程及其自动化班级:姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2014 年1 月13 日单片机原理及系统课程设计报告基于单片机的作息时间控制器设计1. 课程设计目的(1)进一步熟悉和掌握单片机的最小系统结构及其工作原理。
(2)掌握单片机的接口技术和键盘扫描、数码管显示的原理及拓展使用方法。
(3)通过课程设计,提高综合运用所学知识的能力,掌握单片机程序设计、调试,应用电路设计、分析及调试检测。
2. 设计方案及原理本设计是作息时间控制器,设计其实现的功能主要有:使用4位七段显示器来显示当前的时间,由LED闪动作为秒计数表示,显示格式为“时分”,并可显示日期,显示格式为“月日”,年份单独显示。
由4个按键来作功能设置,可以设置现在的日期、时间及定时设置时间,一旦设置的时间到则作出相应动作:发光二极管闪亮,同时播放音乐。
单数码管显示模块片机最按键控制模块小系闹钟模块统系统方框图图13. 硬件设计3.1单片机AT89C52提供以下标准功能:8K字节FLASH闪存,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。
3.2 按键控制模块按键设定部分比较简单,因为本系统按键少,所以在设计上采用了独立按键方式,程序的编制上也采用了简单的扫描方式。
按键控制模块主要有由四个按键1单片机原理及系统课程设计报告组成:K1、K2、K3、K4、。
其中K1的功能是模式切换键;K2的作用是加一;K3的作用是闹钟使能;K4的作用是减一。
K1KKK按键控制模23.3 数码管显示模块时间显示模块主要由四位七段数码管来显示,配合按键控制模块的校正与设定时间,相应的显示。
苏州科技学院天平学院单片机课程设计报告作息时间控制器设计姓名:王亚明学号:04专业班级:电气0921指导老师:徐树梅2012年6月2日目录1 概述 ........................................... 错误!未定义书签。
课程设计的目的和意义........................... 错误!未定义书签。
单片机课程设计的要求........................... 错误!未定义书签。
作息时间控制器的设计要求....................... 错误!未定义书签。
2 系统总体方案及硬件设计 (3)系统总体设计 (3)系统各个部分的电路设计 (4)3 软件的设计 (6)概述 (6)主模块的设计 (6)显示模块设计 (7)时间设定模块设计 (7)声光显示功能的实现 (8)4 Proteus软件仿真 (8)仿真结果 (8)性能及误差分析 (9)5课程设计体会 (10)参考文献 (10)附1 程序源代码 (10)附2原理图 (15)第一部分概述课程设计的目的和意义:综合利用所学单片机知识完成一个单片机应用系统设计并仿真、由硬件实现,从而加深对单片机软硬知识的理解,获得初步的应用经验,为走出校门从事单片机应用的相关工作打下良好基础。
单片机课程设计的要求:1、进一步熟悉和掌握单片机的内部结构和工作原理,了解单片机应用系统设计的基本方法和步骤;2、掌握单片机仿真软件Proteus的使用方法;3、掌握键盘和显示器在的单片机控制系统中的应用。
4、掌握撰写课程设计报告的方法。
作息时间控制器的设计要求:1、设计制作一个单片机数字钟及控制电路。
2、使用LED显示器来显示现在的时间。
显示格式为“时-分-秒”,由LED闪动作为秒计数表示。
3、可以设定作息时间,并进行到时提示。
4、能够根据预先设定好的作息时间表自动启停控制电路,完成对外部设备的实时控制。
5、可以设置现在的时间及显示定时设置时间。
单片机作息时间控制器设计方案第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. 结论通过单片机实现课程作息时间的自动控制,可以提高学校课程安排的效率,减少学生和老师的繁琐操作。
本设计报告详细介绍了系统的硬件和软件设计,以及系统的工作流程和技术难点。
在实际应用中,可以根据具体需求进行相应的改进和调整,以满足不同学校的需求。
河南理工大学—电子设计综合训练报告作息时间控制器姓名:学号:专业班级:指导老师:所在学院: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) 写出设计工作小结。
对在完成以上文件过程所进行的有关步骤如设计思想、指标论证、方案确定、参数计算、元器件选择、原理分析等作出说明,并对所完成的设计作出评价,对自己整个设计工作中经验教训,总结收获和今后研修方向。
基于单片机的作息时间控制器系统设计课程第一步是系统的需求分析。
在这个任务中,学生需要了解人们在日常生活中的作息规律,并确定系统的主要功能和特点。
学生需要设计一个可以根据设定时间点自动控制不同设备的系统,比如定时开关灯、开关窗帘、调节室内温度等。
在需求分析的过程中,学生需要考虑不同的需求,比如工作日和休息日的时间表不同等。
第二步是系统的硬件设计。
学生需要选择合适的单片机以及其他必要的传感器和执行器。
学生需要学习如何连接和配置这些硬件设备,并学会使用适当的编程语言来控制它们。
学生还需要设计电源电路以供系统运行,并考虑系统的稳定性和安全性。
第三步是系统的软件设计。
学生需要学习如何编写单片机的程序,以实现所需的功能。
学生需要掌握基本的编程概念和语法,并学会如何使用特定的开发环境和库。
学生需要编写可以读取时间的程序,并在设定的时间点执行相应的操作。
学生还需要考虑灵活性问题,比如能否通过手机或者电脑远程控制系统。
最后一步是系统的测试和调试。
学生需要使用合适的测试方法和工具来验证系统的功能和性能。
学生需要学习如何查找和修复软硬件问题,并考虑如何提高系统的可靠性和稳定性。
通过这门课程的学习,学生可以了解到基于单片机的系统设计的基本原理和方法。
学生通过设计和实现作息时间控制器系统,不仅可以提高自己的实践能力,还可以培养自己的创新思维和解决问题的能力。
在进一步研究基于单片机的作息时间控制器系统设计课程中,学生还可以学习更多的相关知识和技能。
一方面,学生可以学习更深入的电子技术知识。
他们可以了解电子元器件的工作原理和特性,学会使用不同的传感器来检测环境参数,比如温度、湿度和光照强度等。
他们还可以学习如何设计合适的电路来保护系统免受电压干扰和过载等问题的影响。
此外,学生还可以了解电源电路和通信接口的设计,以满足系统的需求。
另一方面,学生可以学习更高级的编程技术。
他们可以学习如何使用C语言来编写更复杂的程序,并学会使用编程工具来调试代码和优化性能。
毕业设计基于单片机的可编程作息时间控制器设计题目:可编程作息时刻操纵器设计课程:单片机原理及应用课程设计专业:电气工程及其自动化班级:姓名:学号:第一部分任务书《单片机原理及应用》课程设计任务书一、课题名称详见《单片机课程设计题目(一)》:要紧是软件仿真,利用Proteus软件进行仿真设计并调试;《单片机课程设计题目(二)》:要紧是硬件设计,利用单片机周立功实验箱进行设计并调试。
二、课程设计目的课程设计是课程教学中的一项重要内容,是达到教学目标的重要环节,是综合性较强的实践教学环节,它对关心学生全面牢固地把握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素养具有专门重要的意义。
《单片机原理及应用》是一门理论性、有用性和实践性都专门强的课程,课程设计环节应占有更加重要的地位。
单片机原理及应用课程设计的目的是让学生在理论学习的基础上,通过完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能将课堂上学到的理论知识与实际应用结合起来,而且能进一步加深对电子电路、电子元器件等知识的认识与明白得,同时在软件编程、排错调试、相关软件和仪器设备的使用技能等方面得到较全面的锤炼和提高。
为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。
通过单片机硬件和软件设计、调试、整理资料等环节的培训,使学生初步把握工程设计方法和组织实践的差不多技能,逐步熟悉开展科学实践的程序和方法。
三、课程设计内容设计以89C51单片机和外围元器件构成的单片机应用系统,并完成相应的软硬件调试。
1. 系统方案设计:综合运用单片机课程中所学到的理论知识,学生依照所选课题的任务、要求和条件进行总体方案的设计。
2. 硬件电路设计:对方案中以单片机为核心的电路进行设计运算,包括元器件的选择和电路参数的运算,并画出总体电路图。
3. 软件设计:依照已设计出的软件系统框图,用汇编语言或C51编制出各功能模块的子程序和整机软件系统的主程序。
课程设计课程名称微机原理与应用学科名称SCM 作息时间控制器课程设计作业书课程名称微机原理与应用主题微控制器作息时间控制器,目录第 1 章引言 (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)第4章程序模块设计。
(15)4.1 主程序模块 (16)4.2 定时中断服务程序模块 (18)4.3 扫描显示模块 (22)4.4 按键扫描子程序 (23)4.5 键值处理子程序……………………………………………………274.6 Shift键处理模块……………………………………………………30第五章调试与分析 (32)第 6 章课程总结 (33)参考 (34)附录 (35)第一章简介因为单片机种类多,模型复杂,我们学习起来也比较困难,所以对于MCS-51系列的产品来说,就是一种典型的学习方式。
对于类似于组装的MCU编程过程来说,这也是一个非常有趣的过程。
为了更好的说明,我先从应用电路入手,介绍它们的使用方法,以便我快速掌握它们的应用。
1.1 简介及技术要求校园作息时间控制系统主要用于学校,以24小时为周期自动控制一些开关量。
如钟声和扩音设备的开合,教学楼照明的定时开合,学生宿舍灯和校园路灯的定时开关的控制。
技术要求如下:(1)计时准确,月误差<=10%。
(2)有显示和上课时间功能。
(3)具有时间到时响铃的功能。
1.2 时序方案采用软件控制,利用MCS-51系列单片机的定时器/计数器进行数年计时,配合软件延时实现时分秒计时。
该方案节省了硬件成本,可以使读者锻炼和提高定时器/计数器的使用、年份和编程,因此本系统将采用软件的方式来实现计时。
单片机课程设计——时间控制器一.设计要求:设计一个以AT89 C52为核心的时间控制器。
可以实现时间显示和设置闹钟功能。
用89S52单片机设计一个时间控制器,有8位数码管显示年月日及时分秒,具有日历和时钟功能,有一路输出控制电灯,有一路输出控制蜂鸣器,可以设置年月日及时分秒,可以设置一张时间表,该时间表记录什么时间开、关电灯,什么时间开、关蜂鸣器,而单片机按这张时间表来控制电灯和蜂鸣器。
该时间表要求掉电时仍能保存不掉数据,所以需要用一片EEPROM来保存数据,如用24C02/04/08等。
二.设计原理:在AT80C52单片机内部对机器周期进行计数,从而得到定时。
由于AT89 C52的内部计数器是16位的,振荡脉冲频率为12MHZ,这样一个机器周期为1μs,计满一次为65536μs。
显示器选用8位共阳极数码管,分别表示时、分、秒。
同时选用两个74HC273作为片选和位选锁存器。
同时经过P0口外加四个键盘用以调整时间。
软件部分分为四大模块:调整初始时间、设置闹铃时间实现闹铃功能、显示时间和脉冲计数模块。
脉冲计数模块,通过AT89 C52的T0进行计数,设置T0计数溢出时,由内部硬件置位,同时开放中断,使系统进入中断服务程序。
在定时器运行前,在其中先预置入计数初值,为了计算方便,在次设置中预置的初值为(65536-1000),这样一次“硬件计时周期”就可定时1000μs。
在中断服务程序设置进行1000次“硬件计时周期”就可得到1S。
同理进行分、小时的计时。
三.流程图:四.设计原理图:五.程序清单:SYSTEM equ 0 NMLIGHTON equ 6 NMLIGHTOFF equ 7 NMALARMON equ 8 ANALARMOFF equ 9 YEAR1 equ 10H YEAR2 equ 11H YEAR3 equ 12H YEAR4 equ 13H MONTH1 equ 14H MONTH2 equ 15H DAY1 equ 16H DAY2 equ 17H HOUR1 equ 18H HOUR2 equ 19H MINUTE1 equ 1AH MINUTE2 equ 1BHSECOND1 equ 1CHSECOND2 equ 1DHWEEKDAY1 equ 1EHWEEKDAY2 equ 1FH;time tableLIGHTONT equ 100LIGHTOFF equ 200ALARMON equ 300ALARMOFF equ 400org 00hjmp startorg 03hjmp Int0Procorg 1BHjmp T1Procorg 13Hjmp Int1Procorg 30hstart: mov DPTR,#SYSTEMmovx A,@DPTRjnz Next3 ;have value in external ROMmov A,#01Hmovx @DPTR,Acall Initmov R4,#1 ;first display Dateclr C ;LED turn off in the firstmov P3.0,CNext3: mov TL1,#9cHmov TH1,#0ffHmov TMOD,#11H ;Timer 1 mode 1setb TR1setb ET1setb IT0 ;smart heresetb IT1setb PX0setb EX0setb EX1setb EASECOND: mov R5,#2call WaitSecondcpl P3.1jb P1.3, Next7call SetDateNext7: jb P1.4,Next8call SetTimeNext8: mov DPTR,#SECOND2movx A,@DPTRinc Amovx @DPTR,A ;seconds increase 1,then write to ROMxrl A,#10jnz SECONDmov A,#0mov DPTR,#SECOND2movx @DPTR,A ;clear SECOND2mov DPTR,#SECOND1movx A,@DPTRinc Amovx @DPTR,A ;inc SECOND1movx A,@DPTRxrl A,#6jnz SECONDmov A,#0movx @DPTR,AMINUTE: mov DPTR,#MINUTE2movx A,@DPTRinc Amovx @DPTR,A ;write to ROMmovx A,@DPTRxrl A,#10 ;BCD codejnz SECONDmov A,#0movx @DPTR,Amov DPTR,#MINUTE1movx A,@DPTRinc Amovx @DPTR,A ;write to ROMmovx A,@DPTRxrl A,#6jnz SECONDmov A,#0movx @DPTR,AHOUR: mov DPTR,#HOUR2movx A,@DPTRinc Amovx @DPTR,A ;write to ROMmovx A,@DPTRxrl A,#10 ;BCD codejnz Next4mov A,#0movx @DPTR,Amov DPTR,#HOUR1movx A,@DPTRinc Amovx @DPTR,A ;write to ROMjmp SECONDNext4: mov DPTR,#HOUR1movx A,@DPTRmov B,A ;save hour1 to Bmov A,#10mul ABmov R0,A ;save the result to R0mov DPTR,#HOUR2movx A,@DPTRmov R1,A ;save hour2 to R1mov A,B ;restore the resultadd A,R1xrl A,#24jnz SECONDmov A,#0mov DPTR,#HOUR2movx @DPTR,A ;reset HOUR2mov DPTR,#HOUR1movx @DPTR,Amp SECONDT1Proc: mov TH1,#0FfHmov TL1,#9cHcpl P3.1retiInt0Proc: push DPLpush DPHpush ACCclr EAmov A,R4jnz Next5call WriteTimejmp Return3Next5: call WriteDateReturn3: setb EApop ACCpop DPHpop DPLretiInt1Proc: push ACCpush Bclr EAinc R6 ;R6 to mark Date/Time on the LEDmov A,R6mov B,#3div ABmov A,B ;judge the remainderjz Next6mov R4,#0jmp Return5Next6: mov R4,#1HReturn5: setb EApop Bpop ACCretiWriteTime: inc R7 ;R7 to generate scan signal of LED mov A,R7xrl A,#8jnz I0mov R7,#0I0: mov A,R7xrl A,#0jnz I1call WriteHour1jmp Return4I1: mov A,R7xrl A,#1jnz I2call WriteHour2jmp Return4I2: mov A,R7xrl A,#2jnz I3call WriteMinute1jmp Return4I3: mov A,R7xrl A,#3jnz I4call WriteMinute2jmp Return4I4: mov A,R7xrl A,#4jnz I5call WriteSECOND1jmp Return4I5: mov A,R7xrl A,#5jnz I6call WriteSECOND2jmp Return4I6: mov A,R7xrl A,#6jnz I7call WriteWeekday1jmp Return4l7: mov A,R7xrl A,#7jnz Return4call WriteWeekday2 Return4: retWriteDate: inc R7mov A,R7xrl A,#8jnz IS0mov R7,#0IS0: mov A,R7xrl A,#0jnz IS1call WriteYear1jmp Return1IS1: mov A,R7xrl A,#1jnz IS2call WriteYear2jmp Return1IS2: mov A,R7xrl A,#2jnz IS3call WriteYear3jmp Return1IS3: mov A,R7xrl A,#3jnz IS4call WriteYeaR5jmp Return1IS4: mov A,R7xrl A,#4jnz IS5call WriteMonth1jmp Return1IS5: mov A,R7xrl A,#5jnz IS6call WriteMonth2jmp Return1IS6: mov A,R7xrl A,#6jnz IS7call WriteDay1jmp Return1IS7: mov A,R7xrl A,#7jnz Return1call WriteDay2Return1: retWriteYear1: mov DPTR,#YEAR1movx A,@DPTRanl P1,#11111000B ; P1=0mov P2,AretWriteYear2: mov DPTR,#YEAR2movx A,@DPTRorl P1,#00000001B ; P1=1mov P2,AretWriteYear3: mov DPTR,#YEAR3movx A,@DPTRxrl P1,#00000011B ;P1=2mov P2,AretWriteYeaR5: mov DPTR,#YEAR4 ;P1=3movx A,@DPTRorl P1,#00000001Bmov P2,AretWriteMonth1: mov DPTR,#MONTH1movx A,@DPTRxrl P1,#00000111B ;P1=4mov P2,AretWriteMonth2: mov DPTR,#MONTH2movx A,@DPTRorl P1,#00000001B ;P1=5mov P2,AretWriteDay1: mov DPTR,#DAY1movx A,@DPTRxrl P1,#00000011B ;P1=6mov P2,AretWriteDay2: mov DPTR,#DAY2movx A,@DPTRorl P1,#00000001B ;P1=7mov P2,AretWriteHour1: mov DPTR,#HOUR1movx A,@DPTRanl P1,#11111000B ; P1=0mov P2,AretWriteHour2: mov DPTR,#HOUR2movx A,@DPTRorl P1,#00000001B ; P1=1mov P2,AretWriteMinute1: mov DPTR,#MINUTE1movx A,@DPTRxrl P1,#00000011B ;P1=2mov P2,AretWriteMinute2: mov DPTR,#MINUTE2movx A,@DPTRorl P1,#00000001B ;P1=3mov P2,AretWriteSECOND1: mov DPTR,#SECOND1movx A,@DPTRxrl P1,#00000111B ;P1=4mov P2,AretWriteSECOND2: mov DPTR,#SECOND2movx A,@DPTRorl P1,#00000001B ;P1=5mov P2,AretWriteWeekday1: mov DPTR,#WEEKDAY1movx A,@DPTRxrl P1,#00000011B ;P1=6mov P2,AretWriteWeekday2:mov DPTR,#WEEKDAY2movx A,@DPTRorl P1,#00000001B ;P1=7mov P2,AretInit: mov A,#2mov DPTR,#YEAR1movx @DPTR,Amov A,#0mov DPTR,#YEAR2movx @DPTR,Amov A,#0mov DPTR,#YEAR3movx @DPTR,Amov A,#8mov DPTR,#YEAR4movx @DPTR,Amov A,#0mov DPTR,#MONTH1movx @DPTR,Amov A,#1mov DPTR,#MONTH2movx @DPTR,Amov A,#0mov DPTR,#DAY1movx @DPTR,Amov A,#1mov DPTR,#DAY2movx @DPTR,Amov A,#1mov DPTR,#HOUR1movx @DPTR,Amov A,#7mov DPTR,#HOUR2movx @DPTR,Amov A,#1mov DPTR,#MINUTE1movx @DPTR,Amov A,#6mov DPTR,#MINUTE2movx @DPTR,Amov A,#1mov DPTR,#SECOND1movx @DPTR,Amov A,#0mov DPTR,#SECOND2movx @DPTR,Amov A,#0mov DPTR,#WEEKDAY1movx @DPTR,Amov A,#2mov DPTR,#WEEKDAY2movx @DPTR,AretSetTime: clr EX1 ;forbid interrupt 1mov R4,#00H ;show time alwaysmov A,#0mov DPTR,#SECOND2movx @DPTR,A ;clear secondsmov DPTR,#SECOND1movx @DPTR,Asettime1:jb P1.4,Return7jb P1.5,Next9call SetHour ; P1.5=0 ,key pressNext9: jb P1.6,settime1call SetMinute ;P1.6=0,key pressjmp settime1Return7: setb EX1retSetMinute:mov DPTR,#MINUTE2movx A,@DPTRinc Amovx @DPTR,A ;increase Minute2xrl A,#10jnz Jmov A,#0movx @DPTR,ASetYear: mov DPTR,#YEAR4movx A,@DPTRinc Amovx @DPTR,Axrl A,#10jnz J5mov A,#0movx @DPTR,Amov DPTR,#YEAR3movx A,@DPTRinc Amovx @DPTR,Axrl A,#10jnz J5mov A,#0movx @DPTR,Amov DPTR,#YEAR2movx A,@DPTRinc Amovx @DPTR,Axrl A,#10jnz J5mov A,#0movx @DPTR,Amov DPTR,#YEAR1movx A,@DPTRinc Amovx @DPTR,Axrl A,#10jnz J5mov A,#0movx @DPTR,AJ5: jb P1.5,Return13 ;wait the key to releasejmp J5Return13:retWaitSecond: mov A,R5jz Return6WaitSecond1:mov TL0,#0B0H ;50000(0xc350) ticks before overflow = 0.5s at 1.2MHz Clock mov TH0,#3cHmov A,TMODorl A,#00000001Bmov TMOD,A ;Timer 0 mode 1setb TR0;Timer 0 runsWaitSecond2: jnb TF0,WaitSecond2clr TR0 ;Timer 0 stops(no interrupt,can't auto clear,so software clear)clr TF0dec R5mov A,R5jnz WaitSecond1Return6: retEND。
扬州大学能源与动力工程学院题目:可编程作息时间控制器设计课程:单片机原理及应用课程设计专业:电气工程及其自动化班级:姓名:学号:第一部分任务书《单片机原理及应用》课程设计任务书一、课题名称详见《单片机课程设计题目(一)》:主要是软件仿真,利用Proteus软件进行仿真设计并调试;《单片机课程设计题目(二)》:主要是硬件设计,利用单片机周立功实验箱进行设计并调试。
二、课程设计目的课程设计是课程教学中的一项重要内容,是达到教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。
《单片机原理及应用》是一门理论性、实用性和实践性都很强的课程,课程设计环节应占有更加重要的地位。
单片机原理及应用课程设计的目的是让学生在理论学习的基础上,通过完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能将课堂上学到的理论知识与实际应用结合起来,而且能进一步加深对电子电路、电子元器件等知识的认识与理解,同时在软件编程、排错调试、相关软件和仪器设备的使用技能等方面得到较全面的锻炼和提高。
为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。
通过单片机硬件和软件设计、调试、整理资料等环节的培训,使学生初步掌握工程设计方法和组织实践的基本技能,逐步熟悉开展科学实践的程序和方法。
三、课程设计内容设计以89C51单片机和外围元器件构成的单片机应用系统,并完成相应的软硬件调试。
1. 系统方案设计:综合运用单片机课程中所学到的理论知识,学生根据所选课题的任务、要求和条件进行总体方案的设计。
2. 硬件电路设计:对方案中以单片机为核心的电路进行设计计算,包括元器件的选择和电路参数的计算,并画出总体电路图。
3. 软件设计:根据已设计出的软件系统框图,用汇编语言或C51编制出各功能模块的子程序和整机软件系统的主程序。
第一章绪论1.1课题的提出及意义单片机作息时刻操纵实现了对时刻操纵的智能化,解脱了传统由人来操纵时刻的长短的不便,实现代学校必不可少的设备。
1.2设计的任务及要求1.作息时刻能操纵电铃2.作息时刻能启动和关闭放音机单片机作息时刻操纵的功能如下:●使用4位七段显示器来显示现在的时刻。
●显示格式为“时分〞●由LED闪动来作秒计数表示●具有4个按键来作功能设置,能够设置现在的时刻及显示定时设置时刻●一旦时刻到因此发出一阵声响,同时继电器启动,能够操纵放音机开启和关闭。
第二章总体方案设计2.1芯片对比单片机选型当今单片机厂商琳琅满目,产品性能各异。
常用的单片机有许多种:Intel8051系列、Motorola和M68HC系列、Atmel的AT89系列、台湾Winbond(华邦)W78系列、荷兰Pilips的PCF80C51系列、Microchip公司的PIC系列、Zilog 的Z86系列、Atmel的AT90S系列、韩国三星公司的KS57C系列4位单片机、台湾义隆的EM-78系列等。
我们最终选用了ATMEL公司的AT89C52单片机。
AT89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8Kbytes的可反复擦写的只读程序存储器〔PEROM〕和256bytes的随机存取数据存储器〔RAM〕,器件采纳ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引足兼容,片内置通用8位中心处理器〔CPU〕和FLASH存储单元,功能强大AT89C52单片机适用于许多较为复杂操纵应用场合。
LED显示器接口芯片的选择常用的显示器接口芯片有CD4511,CD4513,MC14499,8279,MAX7219,74HC164等,它们的功能有:1.CPU同意来自键盘的输进数据,并作预处理;2.数据显示的治理和数据显示器的操纵。
CD4511是BCD 锁存,7段译码,驱动器,但在显示6和9时,显示为b和q,不是特别好瞧。
河南理工大学单片机课程设计报告作息时间控制器姓名:张春娟学号:320319332320专业班级:09级电气工程及其自动化指导老师:张宏伟所在学院:河南理工大学成人教育学院2009年9月16日摘要本设计是基于AT89S52单片机的基本功能实现作息时间控制功能,采用了4位七段数码管,扫描键盘,蜂鸣器和相应的电路对当前时间以及定时时间的控制,并在设定的时间进行提醒。
本设计使用单片机内的定时器实现计时功能,利用按键分别控制切换当前时间和定时时间、小时+1、分钟+1以及关闭蜂鸣器。
试验采用了一个七段LED数码管显示时间,采用一个蜂鸣器进行到时提醒,一个发光二极管闪烁计秒。
本设计由2个30p的电容和一个11.0592MHz的晶振构成时钟电路,由一个按键和10uF电容构成上电加按钮复位,单片机、时钟电路和复位电路共同构成单片机最小系统。
数码管采用共阴极接法由P0口输出字形,P2口中的高四位输出段选。
P1.0~1.3接入按键对时间按进行操作,由P1.4连接发光二极管闪烁读秒,9013驱动蜂鸣器并由P1.5进行控制。
通过对硬件电路的设计和PROTEUS的仿真,本设计基本实现了:1. 使用4位七段显示器来显示现在的时间,显示格式为“时分”,由LED闪动作为秒计数表示。
2. 可以设定作息时间,并进行到时提示。
3. 能够根据预先设定好的作息时间表自动启停控制电路,完成对外部设备的实时控制。
4. 可以设置现在的时间及显示定时设置时间。
由于单片机的集成度高、功能强、通用性好、体积小巧、重量轻、能耗低、价格便宜、可靠性高、抗干扰能力强和使用方便,使单片机迅速得到了推广应用,所以学好单片机对我们以后的学习和工作有着至关重要的作用。
摘要 (1)1.概述 (3)1.1单片机的基本概念 (5)1.2设计任务及要求 (5)1.3设计思路 (5)2.系统总体方案及硬件设计 (6)2.1系统的总体设计方案 (6)2.2各模块功能介绍 (6)2.3各部分电路的硬件设计 (7)2.3.1时钟电路 (7)2.3.2复位电路 (8)2.3.3按键控制电路 (8)2.3.4读秒指示电路 (9)2.3.5提醒模块电路 (9)2.3.6显示模块电路 (10)3.软件设计 (11)3.1程序的总流程图 (11)3.2按键功能子程序流程图 (12)3.3参数计算 (12)4.PROTEUS仿真 (13)4.1仿真过程 (13)5.课程设计体会 (15)参考文献 (17)附录一程序 (18)附录二PROTEUS图 (24)1.概述1.1单片机的基本概念单片机是一种特殊的计算机,它是在一块半导体芯片上集成了CPU、存储器RAM、ROM以及输入输出接口电路,这种芯片习惯上被称为单片微型计算机,简称单片机。
单片机作息时间控制器课程设计湖南工程学院课程设计课程名称微机原理与应用课题名称单片机作息时间控制器1湖南工程学院课程设计任务书课程名称微机原理与应用课题单片机作息时间控制器专业班级自动化0702学生姓名罗琦学号200701020216指导老师王迎旭、李晓秀、林国汉审批任务书下达日期2010年 6 月7日任务完成日期2010年 6 月20日1111、目录第一章引言 (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)14.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(1)定时准确,月误差《=10%。
(2)有显示和校时功能。
(3)具备到时响铃功能。
1.2计时方案采用软件控制利用MCS-51 系列单片机内部的定时/计数器进行中数年定时,配合软件延时实现时、分、秒的计时。
该方案节省硬件成本,且能够使读者在定时/计数器的使用、中数年及程序设计方面得到锻炼与提高,因此本系统将采用软件方法实现计时。
1.3键盘/显示方案对于实时时钟而言,显示显然是另一个重要的环节。
如前所述,通常有两种显示方式:动态显示和静态显示。
直接利用MC51单片机的P0和P2口,LED动态显示。
该方案硬件连接简单,但动态扫描的显示方式需占用CPU较多的时间,在单片机没有太多实时测控任务的情况下可以采用。
第2章硬件设计考虑到在停电时本机仍需正常走时,故单片机选用COMS低功耗产品如MCS51,由于LED显示电路耗电量较大,可将其电源与单片机电源分开,从而使得在停电时蓄电池仅对单片机供电,而不对显示电路供电,延长电池的供电时间。
选用典型的并口扫描显示输出。
用MCS51的P0口和P2口作为段码和位码输出口,并由2片ULN2003作为每个端口的反相驱动。
利用P1口的低六位作为6个功能键的键盘线,P3口部分口作为冬季或夏季作息时间的选择线、临时报时处理设置线和打铃输出控制(输出部分加光电隔离)。
12.1电路原理框图报时钟电路的核心是MCS51单片机,其内部带有4KB的程序ROM,无须外扩程序存储器。
电脑时钟没有大量的运算和暂存数据,现有的128B片内RAM已能满足要求,也不必外扩片RAM。
系统配备5位LED 显示和6*1键盘,用P1口作为键盘接口电路,P2口作为5位LED 显示的位选通口,P0口则作为字形码输出口。
采用共阴极LED数码管,P0口、P2口和数码管之间串接了反相驱动芯片ULN2003,因此P2口输出高电平选中相应的位,而P0口输出低电平点亮相应的段。
P3。
2接用户自设定报时/作息时间报时的选择开关,开关闭合(P3。
2为低电平)时,仅对用户自设定的时间点进行报时;开关断开时,则进行固定的作息时间表报时。
P3。
3端口接夏令/冬令作息时间表,P3。
3=1时选择择冬令作息时间表。
P3。
4端口外接光电隔离器,驱动扩音机电源的控制开关,低电平有效。
图2.1 单片机原理框图2.2系统工作流程1本单片机报时控制系统具备以下功能:时钟显示。
5位LED从左到右依次显示时、分,采用24H计时。
图2.2 时间显示图(4)键盘功能。
采用4个独立按键,包括:移位键、加1键、减1键、校时置入键。
(5)移位键:(P1。
0=0)每按动移位键一次,小数点从左向右移动1位。
(6)加1键:(P1。
1=0)对小数点所在位的数什进行十进制加1。
(7)减1键:(P1。
2=0)对小数点所在位的数值进行十进制减1。
(8)校时置入键:(P1。
3=0)将显示的时间值置入实时时钟的计时缓冲区。
图2.3 键盘功能(9)扬声器驱动电路:图2.4 扬声器驱动电路2.3 系统的使用说明(1)时间显示。
通电后,系统自动进入时钟显示,从00:00:00:开始计时,此时可以设定当前时间。
(2)时间校对。
按下“移位”键,小数点从左向右移动,每按动1次,小数点便移动1位;要修改设置哪一位,只需将小数点移到该位,便可用“加1键”或“减1键”对该位进行数字设定;时间的校对设定一共有5位,从左到右依次为星期、小时十位、小时个位、他的十位、分的个位。
设置正确后“校时置入键”,时间校正便设置完成,报时钟开始按新设置的时间值开始走时和显示。
(3)用户报时时间设置/显示。
用户可以自行设定10组报时时间点,这时LED显示的最高位定义为组编号其他位定义不变;按下“报时设定键”,系统根据“组编号”将用记设定的报时时间点(小时和分)存入内部RAM相应存储单元中,用户如需修改和检查这些报时时间。
如需修改,可用“移位键”、“加1键”,“减1 键”来重新设定,然后用“报时设定键”来转入并结束显示。
(4)报时输出的驱动过程。
在报时处理程序上中,一旦当前时间与作息时间表中的某一时间点(时、分值)相同时,则建立F0报时标志,建立F1放音标志,扩音机播放报时音乐,并在26H中设置放音时间,放音时间到,则关闭驱动及清除F1标志位,完成1次报时驱动.第3章软件设计3.1系统资源分配(1)为方便阅读程序,先对系统的资源分配加以说明。
1)定时器。
定时器0用作时钟定时,按方式1工作,每隔100MS 溢出中断1次。
2)片内RAM及标志位的分配与定义见表1(2)软件流程。
根据上述工作流程,软件设计可分为以下几个功能模块: 1) 主程序:初始化与键盘监控。
2) 计时:为定时器0中断服务子程序,完成刷新计时缓冲区的功能。
3) 时间设置与报时设置:由键盘输入设置当前时间与定时启闭时间。
4) 显示:完成5位LED 动态显示。
5)键盘扫描:判断是否有键按下,并求取键号。
6)定时比较:判断报时时间到否,如时间到,则启动报时处理程序。
7)其他辅助功能程序,如键盘设置、拆字、合字、冬季或夏季时间表选择及假日停止报时等。
第4章程序模块设计程序的模块设计非常重要,有很多功能的程序,列表如表2表2 :4.1 主程序模块(MAIN)在主程序模块中,先对各端口进行初始化,对内部RAM区清零,设置堆栈和定时器初值,关闭显示器,启动定时及其中断。
然后检测时钟分值变更标志位F3是否建立,如果已建立,则进行报时处理,否则再检测有无按键按下,若有则进行按键处理,无则返回循环点。
ORG 0000HSTART: AJMP MAIN ;跳转入主程序0030HORG 000BHAJMP CTCINT ;跳转到定时器T0的中断服务程序入口ORG 0030HMAIN: NOP ;主程序入口地址:0030HNOPNOPMOV A,#OFFH ;关闭各输出口MOV P0,A ;P0口为字形口,低电平有效MOV P1,A ;P1口作为6个键输入口MOV P2,A ;P2口是字位口,低电平有效MOV P3,A ;P3口报时方式控制和驱动输出口SETB T0 ;关闭报时音乐输出(T0=1)SETB T1 ;关闭报时扩音机电源(T1=1)CJNE SP,#07H,NOT1MOV R0,#7FHMOV R1,#7DH ;否则RAM清零初始化CLR ALOOP0: MOV @R0,ADEC R0DJNZ R1, LOOP0 ;从内部RAM区03H到7FH均清零NOT1: MOV SP,#60H ;设置栈指针MOV IP,#02H;设置定时器T0为最高中断优先级MOV IE,#82H;定时器T0开中断MOV TMOD,#01H;设置定时器T0为方式1MOV TL0,#0B0H;设置定时器T0初值MOV TH0,#3CHSETB TR0;启动定时NOPNEXTT: NOPMOV SP,#60H ;重置堆栈底位置LCALL DISP ;调用显示子程序NOP ;检测标志是否出现,F3为定时分钟值变化的标志位JNB 0F3H,NEXT1 ;F3=0,则转键扫描,判断有无键按下NOP ;F3=1,调用报时处理子程序SETB INT0JNB INT0 , USERS;如INTO=0,则调用用户自设定报时点LCALL TIMERA;INTO=1,调用TIMERA,按作息时间表报时USERS: NOPLCALL TIMERB;TIMERB为用户自设定报时点报时NOPNEXT1:LCALL CHECKEY;调用按键扫描子程序,判断有无键按下JZ NEXTT;无键按下,返回重新扫描NOPLCALL KEYACC;有键按下,调用按键处理子程序NOPSJMP NEXTTNOPNOP4.2定时中断服务程序模块该多好模块完成下述工作:①对100毫秒(20H)、秒(21H)、分(22H)、小时(23H)进行累计计数,如果分值有计数变化并且无键按下,则将小时和分钟送显示缓冲区更新显示目录;②如有报是处理标志,则对报时扩音机电源和报时音乐输出分别进行定时控制。
CTCINT:NOP;T0的中断服务子程序MOV TL0,#0B4H;设置定时器T0初值MOV TH0,#3CHPUSH ACC;保护主程序现场数据PUSH PSWNOPSETB RS0;选择新的工作寄存器区(1区)CLR RS1;SELECT 1 AREAINC 20H;0.1S单元加1MOV A,20HJB OF4H,LCA;(F4H)为键处理标志位,在键处理过程中不显示秒点CJNE A,#05H,CTNUCCTNUC: JC LC2;小于0.4S则秒点闪亮,大于0.4S则秒点熄灭CLR 6CHSJMP LCALC2: SETB 6CHLCA: CJNE A,#0EH,RTNH;未计满1S则退出中断MOV 20H,#00H;毫秒计数单元清零JNB 0F0H,NEXTE;F0H=1为报时扩音机预热延时标志位MOV A,25H;(25H)中存放报时扩音机预热延时时间值JNZ NEXTFCLR OFOHCLR OFOHSETB OF1HMOV 26H,#1OH ;(26H)中存放报时放音的延时时间值CLR TONEXTE: JNB OF1H,NEXTF ;(F1H=1)为报时放音的延时标志位MOV A,26HDEC AMOV 26H,AJNZ NEXTF ;判断报时放音延时是否结束CLR OF1H ;延时时间到,清除报时放音标志位,关闭报时电源SETB T1SETB T2SETB TOSETB TONOPNEXTF: NOPMOV A,21H ;对秒计数单元(21H)进行累计计数ADD A,#01HDA AMOV 21H,ACJNE A,#06H,RTNH ;判断分计数是否计满CLR AMOV 21H,ASETB 0F3H ;(F3H)为分值有变更标志位NEXT: MOV A,22H ;对分(22H)进行累计计数ADD A,#01H;DA AMOV 22H,ACJNE A,#60H,RTDNMOV 22H,#00HMOV A,23HADD A,#01H ;时单元加1DA AMOV 23H,A ;对时(23H)进行累计计数CJNE A,#24H,TRNDMOV 23H,#00HMOV A,24HADD A,#01H ;星期计数单元(24H)加1DA AMOV 24H,ACJNE A,#07H,RTDNMOV 24H,#00HRTDN: NOPJNB OF3H,RTDH ;确认(F3=0)分值无变更,则返回JB OF4H,RTNH ;确认(F4=0)正在键处理,则返回LDDA: NOP ;将当前的时间值显示缓冲区NOPMOV R0,#24H ;(24H、23H、22H、)送(2FH~2BH)MOV R1,#2FHMOV R2,#02HMOV A,@R0ANL A,#0FHMOV @R1,ADEC R0DEC R1LD1: MOV A,@R0 ;将1字节压缩的BCD码拆成两个字节,数数值存放在低字节内ANL A,#OF0HSWAP AMOV @R1,ADEC R1MOV A,@R0ANL A,#0FHMOV @R1,ADEC R0DEC R1DJNZ R2,LD1NOPRTNH:NOP ;中断返回,并恢复现场数据NOPPOP PSWPOP ACCRETI4.3扫描显示模块该模块为5位LED扫描显示模块。