单片机作息时间的控制系统毕业设计.docx
- 文档编号:9015885
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:29
- 大小:757.50KB
单片机作息时间的控制系统毕业设计.docx
《单片机作息时间的控制系统毕业设计.docx》由会员分享,可在线阅读,更多相关《单片机作息时间的控制系统毕业设计.docx(29页珍藏版)》请在冰点文库上搜索。
单片机作息时间的控制系统毕业设计
毕业设计
题目
单片机作息时间的控制系统
系别
电气工程系
专业
应用电子技术
班级
电技0801班
设计任务书
设计题目
作息时间的控制
设计要求:
(1)作息时间能控制电铃。
(2)作息时间能启动和关闭放音机,使用6位七段显示器来显示现在的时间。
(3)显示格式为“时分秒”从左到右依次显示。
(4)具有按键来作功能设置,可以设置现在的时间及显示定时设置时间一旦时间到则发出一阵声响,同时继电器启动,可以控制放音机开。
设计进度要求:
第一周:
领取题目,分析设计题目原理及设计思路。
第二周:
去图书馆查阅资料,制定大纲。
第三周:
编写程序,拟定论文。
第四周:
上机调试程序,验证实验效果。
第五周:
根据设计要求,进行编排电子稿。
第六周:
由指导教师审核,进行更改指正。
第七周:
交正规电子稿,由指导教师评阅。
第八周:
进行毕业论文答辩。
指导教师(签名):
摘要
本设计详细介绍了利用AT89C51单片机设计时间控制器的方法。
该时间控制器是以AT89C51单片机为核心,扩展一片XICOR公司的X5045组成的小系统,控制一路继电器:
可以设定一天中的时间,设定继电器的开启时间和关闭时间,可以清除不需要的定时,能够紧急启动:
所有的设定均通过键盘实现,按键具有连击功能,每个状态都有指示灯提示。
我们设计的作息时间控制是用单片机实现的,是为了更好的对时间控制智能化。
时间控制器包括硬件和软件。
硬件部分包括继电器,存储器和显示器接口芯片。
软件部分,主要是主程序设计。
软硬件结合在一起,先调试子程序,然后逐级叠加调试,最后系统调试通过。
时间控制系统可以准确的显示时间,在定时时间到时发出悦耳的铃声提醒同学们按时上下课。
关键词:
单片机,控制,时间
目录
摘要II
1总体设计方案1
2硬件电路设计2
2.1AT89C51单片机简介2
2.2LED动态显示接口5
2.3按键部分7
2.4中断的控制8
3软件设计9
3.1主程序的设计9
3.2中断服务程序设计10
3.3查时子程序流程图12
3.4按键子程序流程图12
4调试过程14
致谢17
参考文献18
附录A19
1总体设计方案
本设计题目是单片机作息时间的控制,根据设计要求,单片机作息时间的控制要实现时、分、秒的正常显示。
只有硬件和软件的有效结合才能实现单片机作息时间时、分、秒的正常显示。
硬件主要由AT89C51单片机、复位电路,按键电路、显示电路、继电器和电源组成,其核心部分是CPU。
总设计图如图1.1所示
图1.1总方案图
单片机即AT89C51芯片的主要功能是:
存储程序、对存储程序进行相应的处理从I/O口输出。
复位电路:
在单片机上有一输入复位引脚RST,在单片机外部用电容和电阻控制RST。
显示电路:
主要用以实现作息时间控制的结果。
电源部分:
采用+5V的电源供电。
2硬件电路设计
2.1AT89C51单片机简介
AT89C51是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器的8位COMS微控制器,使用高密度,非易失存储技术制造,并且与AT89C51引脚和指令系统完全兼容。
芯片上的FPEROM允许在线编程或采用通用的非易失存储编程器对存储器重复编程。
AT89C51具有多种功能的8位CPU与结合在一个芯片上,为很多嵌入式控制应用提供了非常灵活而又便宜的方案,其性能价格比远高于AT87C51。
由于片内带EPROM的AT87C51价格偏高,而片内带FPEROM的AT89C51价格低且与INTEL80C51兼容,这就显示出了AT89C51的优越性。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
2.1.1AT89C51性能及特点
(1)与MCS-51微控制器产品系列兼容。
(2)片内有4KB可在线重复编程的快闪擦写存储器(FlashMemory)。
(3)存储器可循环写入/擦除1000次。
(4)存储数据保存时间为10年。
(5)宽工作电压范围:
Vcc可为2.7V~6V。
(6)全静态工作:
可从0HZ到16MHZ。
(7)程序存储器具有3级加密保护。
(8)128*8位内部RAM。
(9)32条可编程I/O线。
(10)两个16位定时器/计数器。
(11)中断结构具有5个中断源和2个优先级。
(12)可编程全双工串行通道。
(13)空闲状态维持低功耗和掉电状态保存存储内容。
2.1.2片内快闪存储器
由于EPROM具有在线改写,并且在掉电状态保存存储数据的特点,可为用户的特殊应用提供便利。
但是擦除和写入对于要求数据高速吞吐的应用还显得时间过长,这是EPROM芯片的主要缺陷。
2.1.3AT89C51的引脚及管脚说明
AT89C51的内部硬件结构中除了程序存储器由FPEROM取代了87C51的EPROM外,其余部分完全相同。
AT89C51的引脚与AT87C51的引脚完全兼容。
如图2.1所示为AT89C51的引脚图:
图2.1引脚图
管脚说明:
VCC:
供电电压
GND:
接地
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口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下所示:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入;当振荡器复位器复位时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX、MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次
有效。
但在访问外部数据存储器时,这两次有效的
信号将不出现。
/VPP:
当
保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,
将内部锁定为RESET;当
端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
2.2LED动态显示接口
采用动态显示方式比较节省I/O接口,硬件电路也较静态显示方式简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,占用CPU较多的时间。
1、动态显示原理
LED动态显示就是利用单片机依次输出每一位数码管的段选码和对应于位码管的位选择控制信号。
一位一位轮流点亮七段数码管,对每位数码管来说,每隔一段时间点亮一次,如此循环,采用动态显示方式比较节省I/O接口,硬件电路也比静态显示方式简单。
并利用89C51的I/O接口控制数码管的段选码,同时采用动态扫描方式,依次循环点亮各位数码管,即可构成多位动态显示电路。
6位数码管均采用共阴极LED,P0口作为段选码输出口,P1口作为位选码输出口。
2、七段LED数码管结构
七段LED数码管构成“日”字形,还有一只发光二极管作为小数点。
因此,这种七段数码管又可称为八段数码管。
如图2.2a所示,这八段发光管分别称为a、b、c、d、e、f、g和dp。
通过8个发光段的不同组合,可以显示0-9和A-F等16个数字字母,从而可以实现十六进制整数和小数的显示。
LED数码管显示器可以分为共阴极和共阳极两种结构。
我本次设计所使用的是共阴极结构。
如图2.2b所示。
a、管脚配置b、共阴极
图2.2七段数码管
3、显示的控制
图2.3显示电路
如图2.3所示。
六位数码管均采用LED,P0接口作为段选码输出口,8路驱动采用74LS244总线驱动器作为字形驱动芯片,经过8路驱动电路后接至数码管的各段,字形驱动输出0时发光。
C接口作为位选码输出口,6路驱动采用74LS07(OC门驱动器),当C接口线输出1时,选通相应位的数码管工作。
2.3按键部分
我们此次的设计使用查询式按键,使用3个按键,是由单片机的P3接口接到查询式按键的接口的。
图2.4是按键的电路原理图:
图2.4按键电路
按下操作键K1-K3动作如下:
(1)操作键K1:
调整时;(K1由单片机P3.0控制)
(2)操作键K2:
调整分;(K2由单片机P3.1控制)
(3)操作键K3:
调整秒;(K3由单片机P3.2控制)
如果有按键按下,则相应输出为低,否则输出为高。
单片机通过识别,判断按下什么键,有键按下后,要有一定的延时,防止由于键盘抖动而引起误操作。
按键开关的去除抖动功能:
通常消除抖动影响的方法有硬件、软件两种。
在按键较少时,可采用硬件方法消除抖动。
在按键较多时,可采用软件方法消除抖动。
根据按键的抖动时间为5-10毫秒,稳定闭合时间一般为十分之几至几秒时间的特点,采用软件消除抖动的方法是:
在检测到有按键按下时,执行一个10毫秒左右的延时程序,而后,再确认该键电平是否仍保持闭合状态电平,则确认为该键处于闭合状态,这实际上是避开了按键按下时的抖动时间.同理在检测到该键释放后,也应采用相同的步骤进行确认,从而可消除抖动的影响.本次设计我们采用软件去抖的方式。
2.4中断的控制
1、中断是指CPU对系统发生的某个事件作出的一种反应:
CPU暂停正在执行的程序,保留现场后自动地转去执行相应的处理程序,处理完该事件后再返回断点继续执行被“打断”的程序。
对中断请求的整个处理过程是由硬件和软件结合起来而形成的一套中断机构实施的。
发生中断时,CPU暂停执行当前的程序,而转去处理中断。
这个由硬件对中断请求作出反应的过程,称之为中断响应。
一般说来,中断响应顺序执行下述三步动作:
(1)中止当前程序的执行;
(2)保存原程序的断点信息(主要是程序计数器PC和程序状态寄存器PS的内容);
(3)转到相应的处理程序。
2、实现同步工作:
计算机有了中断功能后,就解决了快速CPU与低速外设之间的矛盾,可以使CPU和外设同时工作。
CPU启动外设以后,继续执行主程序,同时外设也在工作。
当外设把数据准备好后,就发出中断请求,请求CPU中断正在执行的程序,转去执行中断服务程序,中断服务程序执行完之后,CPU恢复执行主程序,外设也继续工作。
这样CPU可以指挥多个外设同时工作,从而大大提高了CPU的效率。
3、实时处理:
在实时控制系统中,为使控制系统能保持在最佳工作状态,被控系统的各种控制参量可随时向计算机发出中断请求,要求CPU处理。
对此,CPU必须作出快速响应和及时处理这种实时处理功能只有靠中断技术才能实现。
我们的设计需要使用许多次中断,因为我们设计的时钟计数是在中断里面,还包括所设定的定时时间,都是有中断来完成的。
也就是每过1秒钟系统就会向中断申请中断请求,查看所设置的时间到了,如果时间到话中断允许请求,执行相应的中断请求。
也就是给单片机P2口送高电平使外接的电铃开始动作,执行此次的请求后,在进入下一次中断的扫描。
3软件设计
单片机作息时间控制的动作利用时间计时处理来做秒计数,当早晨所设置的起床时间6:
00到了,电铃就会自动开启,响十秒后电铃关闭,第一节课7:
50预备电铃开启10秒后自动关闭,10分钟之后上课铃响起,正式上课。
45分钟后,电铃又会自动打开提醒同学们下课。
当所设置的课间操时间9:
40到时继电器就会自动启动,由继电器开启放音机。
所设时间为20分钟到之后,由继电器关闭放音机。
到11:
50时电铃又会自动打开提醒同学们放学。
当14:
20分的时候电铃又会自动打开,提醒同学们该上课了,做好上课准备,到15:
15分的时候,电铃又开始工作提醒同学们下课,到16:
10分的时候继电器就会自动启动,下课铃响起,提醒同学们下课。
这一切的定时是由单片机定时器负责定时计数的,不会因为按键处理而中断时间秒数的增加,时,分,秒数据是存在变量内并写入七段显示器的缓冲区内,而由显示器扫描程序中定时扫描而显示出时间。
3.1主程序的设计
在主控程序循环中主要工作为扫描是否有按键,若有按键则应做相应的功能处理,同时也扫描显示器显示时间数据,并检查所设置的时间是否到了,图3.1为主程序控制的工作流程图。
时间计时处理程序是等过了1S后,则更新时间数据,将最新的时,分,秒的数据转换为数字数据并显示在七段显示器上。
程序中是这样判断是否过了1S的:
设一旧秒数变量,当新旧秒数变量不一样时,则表示已过了1S,要做相关程序时间处理了。
(主程序见附录A)
图3.1主程序流程图
3.2中断服务程序设计
我们的设计需要使用许多次中断,因为我们设计的时钟计数是在中断里面,还包括所设定的定时时间,都是有中断来完成的。
如3.2图所示的中断程序流程图。
也就是每过1秒钟系统就会向中断申请中断请求,查看所设置的时间到了,如果时间到话中断允许请求,执行相应的中断请求。
也就是给单片机P2口送高电平使外接的电铃开始动作,执行此次的请求后,在进入下一次中断的扫描。
(程序见附录A)
图3.2中断程序流程图
3.3查时子程序流程图
查时子程序的作用:
是将定义好的作息时间表调出来和电子钟的时间作比较,看是否到规定的时间。
若时间到进行报时,时间未到返回主程序。
如图3.3所示为查时子程序流程图。
图3.3查时子程序流程图
3.4按键子程序流程图
按键子程序的作用:
是将作息时间控制系统中的时钟程序进行调时。
本子程序的优点是在其中加了去抖动程序,两次判别按键是否按下,使程序不被误操作。
显示缓冲区用了三个字节单元,调时更容易,且节约了存储空间。
如图3.4所示为按键子程序流程图。
图3.4按键子程序流程图
4调试过程
打开Wave(伟福)软件/新建文件/在D盘下新建赵会军文件夹,文件名为zhaohuijun.asm保存在文件夹下。
输入程序进行编译,编译通过。
如4.1图所示
图4.1程序通过编译
打开keiluVision2project/newproject文件名为zhao保存在f盘下,然后选择Atmel下AT89C51点击Target1文件下的sourcegroup1STARTUP.A51文件,删除此文件。
右击Target1选择optionsforTarget“target1”把晶振改为11.0592点击Debug选中use:
keilmonttor-51Driver点击setting把Baudrate改为38400。
图4.3选择单片机型号
图4.4对setting进行设置
图4.5选择串行口并设置
图4.6效果图
调试是一项很复杂而庞大的工程。
它占据了整个设计的大部分时间。
调试的整体过程是:
分别对设计的各功能模块进行调试,然后再进行总的调试,经过努力,单片机作息时间的控制已经完成,效果也得到了实现。
致谢
毕业设计的结束让我感到了人生又到了一个新的转折点,借此机会我想向在我做毕业设计过程中给我帮助和支持的老师以及同学们表示衷心的感谢!
首先要向我的导师李老师致以诚挚的谢意。
李老师为我们提供了良好的学习环境,让我学到了知识,掌握了研究的方法,也获得了实践锻炼的机会。
李老师的治学严谨,平易近人,对工作的积极热情、认真负责、有条不紊、实事求是的态度,给我留下了深刻的印象,使我受益非浅。
在此我谨向李老师表示衷心的感谢和深深的敬意。
在今后的日子里,我不会辜负各位老师的栽培,把理论应用到实际工作当中,使在校所学到的知识得到完全的应用,同时我还会不断的扩展我的知识面,不断创新,努力工作,在平凡的工作岗位上做出应有的贡献。
在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!
最后我还要感谢培养我长大含辛茹苦的父母,谢谢您们!
衷心感谢在百忙之中抽出时间审阅本论文的各位领导和老师,祝各位领导和老师工作顺利,身体健康!
参考文献
[1]李朝青.单片机原理及其接口技术.北京.北京航空大学出版社,1998年
[2]张毅刚,彭喜元,孟升卫,刘兆庆.MCS-51单片机使用子程序设计.哈尔滨.哈尔滨工业大学出版社,2003年
[3]肖玲妮,袁增贵.Protel99SE印刷电路板设计教程.北京.清华大学出版社,2003年
[4]公茂法等.单片机人机接口实力集.北京.北京航空大学出版社,1998年
[5]先锋工作室,单片机程序设计实例.北京.清华大学出版社,2002年
[7]胡汉才.单片机原理及其接口技术.北京.清华大学出版社,1996年
[8]徐爱均.智能化仪表原理与设计.北京.北京航空大学出版社,1996年
[9]邬宽明.单片机外围器件实用手册.北京.北京航空大学出版社,1998年
[10]王德彪.单片机原理及接口技术.北京.电子工业出版社,2003年
附录A
ORG0000H
LJMPSTART
ORG000BH
LJMPCTC0
ORG0030H
START:
MOVTMOD,#11H;定时器初始化
MOVTH0,#3CH
MOVTL0,#0B0H
MOV47H,#00
MOV48H,#00
MOV49H,#00
MOV50H,#00
MOVP2,#00
MOVR7,#1;软件计数器初始化
SETBEA
SETBET0;开中断
SETBTR0;开定时器
W1:
LCALLTIME;调报时程序
LCALLPTDS;调显示缓冲区
LCALLDISPLAY;调显示
LCALLANJIAN;调按键
LJMPW1
DISPLAY:
MOVR0,#30H
MOVR3,#01H;
MOVDPTR,#TAB
N1:
MOVA,@R0;取数
MOVCA,@A+DPTR;查表取段码
MOVP0,A;段码送P0
MOVP1,R3;位码送P1
LCALLDELAY
MOVA,R3
JBACC.5,BACK1;循环结束了吗?
RLA;左移位码
MOVR3,A
INCR0;调整指针
LJMPN1
BACK1:
RET
显示缓冲程序
PTDS:
MOVR0,#30H
MOVR1,#50H
MOVR2,#03H
NEXT:
MOVA,@R1
ANLA,#0FH
MOV@R0,A
INCR0
MOVA,@R1
SWAPA
ANLA,#0FH
MOV@R0,A
INCR1
INCR0
DJNZR2,NEXT
RET
DELAY:
MOVR5,#05
LOOP2:
MOVR6,#00H
DJNZR6,$
DJNZR5,LOOP2
RET
TAB:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
CTC0:
PUSHACC
PUSHPSW;保护现场
DJNZR7,BACK;1S到了吗
MOVR7,#1
LCALLDSH;调查时子程序
MOVR1,#48H
NEXT1:
MOVA,@R1
ADDA,#01H
DAA
MOV@R1,A
CJNER1,#50H,NEXT2;到时计数单元了吗?
CJNEA,#24H,BACK;
MOV@R1,#00H;时单元清零
LJMPBACK
NEXT2:
CJNEA,#60H,BACK;与60H单元相等吗
MOV@R1,#00H;秒单元清零
INCR1;调整指针
LJMPNEXT1
BACK:
MOVTH0,#3CH
MOVTL0,#0B0H;软件计数器重装初值
POPPSW
POPACC;恢复现场
RETI
DSH:
MOV45H,#02H
MOV46H,#05H
MOVR4,#00H
MOVA,48H
CJNEA,#00H,L6;秒单元是否为零
MOV47H,#00H
L6:
MOVA,47H
CJNEA,#14H,L3
LJMPL4
L3:
MOV60H,R4
MOVR1,#49H
L2:
MOVA,R4
MOV40H,@R1
ADDA,#19H
MOVCA,@A+PC
CJNEA,40H,L1
INCR1
INCR4
DJNZ45H,L2
INC47
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 作息 时间 控制系统 毕业设计