基于单片机控制的多功能计时器系统的设计与实现毕业设计.docx
- 文档编号:10657795
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:47
- 大小:183.05KB
基于单片机控制的多功能计时器系统的设计与实现毕业设计.docx
《基于单片机控制的多功能计时器系统的设计与实现毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机控制的多功能计时器系统的设计与实现毕业设计.docx(47页珍藏版)》请在冰豆网上搜索。
基于单片机控制的多功能计时器系统的设计与实现毕业设计
第一章系统的总体设计
1.1功能要求
本系统要求能能完成电子时钟显示,调整,节能运行,电子秒表记数等多种功能,由按键电路或遥控电路完成功能的设置,秒表/时钟计时器要求用六位LED数码管显示时、分、秒,以24h(小时)计时方式。
使用按键开关或遥控开关可实现时分调整、秒表/时钟功能转换、省电(关闭显示)等功能。
1.2方案论证
为了实现LED显示器的数字显示,可以采用静态显示法和动态显示法。
由于静态显示法需要数据锁存器等硬件,接口复杂一些。
考虑时钟显示只有六位,且系统没有其它复杂的处理任务,所以决定采用动态扫描法实现LED的显示。
单片机采用易购的AT89C51系列,这样单片机可具有足够的空余硬件资源实现其它的扩充功能,如考虑到要使用电池供电的话,则可采用LV系列单片机。
硬件系统的总体构成框架如图1所示。
图1单片机控制的多功能计时器系统的设计总体框图
1.3系统总体设计
本单片机控制的多功能计时器系统,采用单片机作为控制核心,具有控制灵活,简单可靠,造价便宜等诸多优点。
单片机虽然是一个五脏俱全的计算机,但由于本身无开发能力,必须借肋开发工具来开发应用软件以及对硬件系统进行诊断。
因此,我们要研制一个较完整的单片机产品时,必须完成以下几步工作:
硬件电路设计、组装、调试
应用软件的编制、调试
应用软件的链接调试、固化、脱机运行(即脱离开发装置)。
本单片机控制系统的开发过程包括总体设计、硬件设计、软件设计等几个阶段,但各阶段不是绝对分开的,有时是交叉进行的。
本系统在设计上特点有如下所示
1)系统硬件结构结合应用软件方案一并考虑。
因为硬件结构与软件设计方案会产生相互影响,我们考虑的原则是:
软件能实现的功能尽可能由软件来实现,以简化硬件结构。
但必须注意如用软件来实现的硬件功能,其响应时间要比直接用硬件来实现花的时间长,而且占用CPU时间。
因此,选择软件方案时,要考虑到这此因素。
2)整个系统中相关的器件要尽可能做到性能匹配。
3)可靠性及抗干扰设计是硬件系统设计不可缺少的一部分,它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等。
4)单片机外接电路较多时,必须考虑其驱动能力。
驱动能力不足时,系统工作不可靠,解决的办法是增加驱动能力,增设线驱动器或者减少芯片功耗,降低总线负载。
本电路的硬件设计包括:
加1电路、减1电路、复位电路、振荡电路与驱动电路、显示电路等。
在完成各个单元电路的设计与调试后,我们与软件系统进行了联调,且达到了一个较为理想的结果。
单片机控制的多功能计时器系统总体开发与设计的流程图
如图2所示。
图2单片机控制的多功能计时器系统总体开发与设计的流程图
第二章 系统硬件电路设计
2.1硬件系统设计应考虑的问题
本单片机控制的多功能计时器系统在硬件系统设计上主要考虑下列几点:
(1)尽可能选择典型电路
(2)系统的扩充与外围装置,应充分满足应用系统的要求,并留一些扩充槽,以便进行二次开发。
(3)硬件结构应结合应用软件一并考虑。
软件有执行的功能尽可能由软件来执行,以简化硬件结构。
但必须注意,由软件执行硬件的功能,其响应时间比直接使用硬件要长,且占用CPU时间。
(4)整个系统器件尽可能做到性能匹配。
(5)可靠性及抗干扰设计是硬件设计极其重要的部分,包括器件选择、电路板布线、通道隔离等。
(6)单片机微处理器外接电路较多时,必须考虑其驱动能力,驱动能力不足时,系统工作不可靠。
解决办法是增加驱动能力,或减少IC功耗,降低总线负载。
2.2电路各部分硬件电路介绍
1)单片机控制的多功能计时器系统的设计总体框图如图3所示。
图3单片机控制的多功能计时器系统的设计总体框图
2)控制核心采用目前较为流行的、且价格低廉的89C51为控制核心,主要包括:
单片机电路、加1电路、减1电路、复位电路、振荡电路、数字驱动与显示电路,下面我们一一进行阐明。
硬件电路原理图如图4所示。
图4硬件电路原理图
2.2.1单片机AT89C51及其特点
本系统以单片机AT89C51为控制核心,AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
1.主要特性:
·与MCS-51兼容
·4K字节可编程闪烁存储器
寿命:
1000写/擦循环
数据保留时间:
10年
·全静态工作:
0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
图489C2051引脚排列图和主要参数
2.管脚说明:
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/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器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:
来自反向振荡器的输出。
3.芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
2.2.2振荡器电路
单片机振荡器电路如图所指示。
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
如图(5)所示:
图(5)振荡电路
2.2.3复位电路:
MCS-51单片机的复位条件是在RST端出现正脉冲,并能保持10ms以上的高电平,其复位电路一般采用上电复位和开关复位两种形式,本系统复位如图6所示:
图6系统复位电路
2.2.4驱动与显示电路
1.缓冲器74LS244
本系统为了加大驱动显示能力采用74LS244作为驱动器,74LS244是一种三态输出的八缓冲器和线驱动器。
74LS244缓冲器主要用于三态输出的存储地址驱动器、时钟驱动器和总线定向接收器等。
其管脚图如图7所指示,参数表如表174LS244是三态输出的八缓冲器,由2组、每组四路输入、输出构成。
每组有一个控制端,由控制端的高或低电平决定该组数据被接通还是断开。
图774LS244管脚排列图
2.2.5数码管显示电路
本系统数码管显示电路如图所示,采用6个数码管,数码管管脚排列图如图所指示,在电子钟里能分别显示小时,分和秒,如13.26.21,在电子秒表中,分别显示,分,表和毫秒,如99.56.86
数码管管脚排列图
在本系统中,由于用到的LED显示器的位数较多时,为减少I/O口数目,简化电路,降低成本,我们在LED显示器采用动态显示方式,如图8所示。
动态LED显示器接口及工作原理动态LED显示器的电路连接特点是将各位LED显示器的所有对应段线并联在一起,由一个8位I/O口控制输出字段码,而每位LED显示器的公共端(共阳极点或共阴极点)不直接接地或+5V电源,而是分别由另外的I/O口线控制(称为位选)。
LED显示器的显示内容通过段码I/O口和位选I/O口的相互配合控制,以动态扫描显示的工作方式输出待显示的内容。
我们通过软件程序系统,发出控制信号,用P2。
0-P2。
5动态控制各个三极管的导通,来达到动态扫描的效果。
图8
第三章系统软件电路设计
3.1系统软件设计概述
在系统软件设计时,应根据系统软件功能要求,将系统软件分成若干个相对独立的部分,并根据它们的联系和时间上的关系,设计出合理的软件总体结构。
通常在编制程序前先根据系统输入和输出变量建立起正确的数学模型,然后画出程序流程框图,要求流程框图结构清晰、简捷、合理,画流程框图时还要对系统资源作具体的分配和说明。
编制程序时一般采用自顶向下的程序设计技术,先设计监控程序再设计各应用程序模块。
各功能程序应模块化、子程序化,这样不仅便于调试、链接,还便于个性和移植。
在进行应用系统的总体设计时,软件设计和硬件设计应统一考虑,相结合进行。
当系统的电路设计定型后,软件的任务也就明确了。
下图为多功能计时器系统设计流程图及系统框图9:
图9多功能计时器系统设计流程图
3.2)系统软件程序介绍
主程序
本设计中计时采有定时器To中断完成,其余状态循环调用显示子程序,当端口开按下时,转入相应功能程序。
基主程序执行流程见图10
图10程序执行流程
2.显示子程序:
数码管显示的数据存放在内存单元70H~75H中。
其70H~71H存放秒数据,72H~73H存放分数据,74H~75H存时数据,每一地真址单元内均为十进制BCD码。
由于采用软件动态扫描实现数据显示功能,显示用十进制BCD码数据的对应段码存放在ROM表中。
显示时,先取出70H~75H某一地址中的数据,然后查得对应的显示用段码,并从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。
为了显示小数点及“一”、“A”等特殊字符,在显示班级及计时时采用不同的显示子程序。
定时器T0中断服务程序:
定时器T0用于时间计时。
定时溢,出中断周期可分设为50ms和10ms。
中断进入后,先判断是时钟计时还是秒表计时,时钟计时累计中断20次(即1s)时,对秒计数单元进行加1操作,秒表计时每10ms进行加1操作.时钏计数单元地址分别在70H~71H(秒)、76H~77H(分)和78H~79H(时),最大计时值为23时59分59秒.而秒表计数单元地址也在70H~71H(0.001毫秒)、76H~77H(秒)和78H~79H(分),最大工业计时值为99分59.99秒。
7AH单元内存放“熄灭符”数据(#0AH)。
在计数单元中采用十进制BCD码计数,满60(秒)表功能时有100)进位,T0中断服务程序执行流程见图11
图11
T1中断服务程序
T1中断服务程序用于指示调整单元数字的亮闪。
在时间调整状态下,每过0.3s,将对应单元的显示数据换成“熄灭符”数据(#0AH)。
这样在调整时间时,对应调整单元的显示数据会间隔闪亮。
调时功能程序
调时功能程序的设计方法是:
按下P1.0口按键,若按下时间短于1s,则进入省电状态(数码管不亮,时钟不停);否则进入调分状态,等待操作,此时计时器停止走动。
当再按下按钮时,若按下时间短于0.5s,则时间加1分;若按下时间长于0.5s,则进入[小]时调整状态。
在[小]时调整状态下,当按键按下的时间长于0.5s时,退出调整状态,时钟继续走动。
P1.1口按键在调时状态下可实现减1功能。
时钟/秒表功能程序
在正常计时状态下,若按下P1.1口按键,则进行时钟/秒表功能的转换,转换后计时从零开始。
当按下P1.2口的按键时,可实现清、计时启动、暂停功能。
第四章系统调试与调试及抗干扰设计
4.1硬件调试
硬件调试时,可先检查印制及焊接的质量情况,在检查无误后,可通电检查LED显示器的点亮状况,若亮度不理想,可以调整P0口的电阻大小,一般情况下,取200Ω电阻即可获得满意的亮度效果。
实验室制作时,可结合示波器测试晶振及P0、P2端口的波形情况,进行综合硬件测试分析。
我们对硬件电路进行了调试,主要包括:
(1)在焊接前元器件要一一检查是否完好,在焊接过程中逐一检查电路是否接通。
(2)管座、元件焊接完毕,还要仔细检查元件面各元件之间裸露部分有无相互接触现象,焊接面的各捍点间、焊点与近邻线有无连接,对布线密或未加阴处理的应注意检查,这此可能造成短路的原因。
(3)在完成检查后,先空载上电(未插芯片),检查线路各管脚级插件的电位是否正常,特别是单片机管脚注上的各点电位(若有高压,联机调试时会通过仿真线进入仿真系统,损坏有关器件)。
若一切下沉将芯片插入各管座,再通电检查各点电压是否达到要求,逻辑电平是否符合电路或器件的逻辑关系。
若有问题,掉电后再认真检查故障原因。
4.2软件调试
软件调试在WaveE6000编译器下进行,源程序编译及仿真调试应分段或以子程序为单位一个一个进行,最后可结合硬件实时调试。
系统调试包括硬件调试和软件调试。
硬件调试的任务是排除系统的硬件电路故障,包括设计性错误和工艺性故障。
软件调试是利用开发工具进行在线仿真调试,除发现和解决程序错误外,也可以发现硬件故障。
程序调试一般是一个模块一个模块地进行,一个子程序一个子程度地调试,最后联起来统调。
利用开发工具的单步和断点运行方式,通过检查应用系统的CPU现场、RAM和SFR的内容以及I/O口的状态,来检查程序的执行结果和系统I/O设备的状态变化是否正常,从中发现程序的逻辑错误,转移地址错误以及随机的录入错误等。
也可以发现硬件设计与工艺错误和软件算法错误。
在调试过程中,要不断调整、修改系统的硬件和软件,直到其正确为止。
联机调试运行正常后,将软件固化到EPROM中,脱机运行,并到生产现场投入实际工作,检验其可靠性和抗干扰能力,直到完全满足要求,系统才算研制成功。
4.3系统抗干扰设计
在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。
下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。
1 软件抗干扰方法的研究
在工程实践中,软件抗干扰研究的内容主要是:
一、消除模拟输入信号的嗓声(如数字滤波技术);二、程序运行混乱时使程序重入正轨的方法。
本文针对后者提出了几种有效的软件抗干扰方法。
1.1指令冗余
CPU取指令过程是先取操作码,再取操作数。
当PC受干扰出现错误,程序便脱离正常轨道“乱飞”,当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序将出错。
若“飞”到了三字节指令,出错机率更大。
在关键地方人为插入一些单字节指令,或将有效单字节指令重写称为指令冗余。
通常是在双字节指令和三字节指令后插入两个字节以上的NOP。
这样即使乱飞程序飞到操作数上,由于空操作指令NOP的存在,避免了后面的指令被当作操作数执行,程序自动纳入正轨。
此外,对系统流向起重要作用的指令如RET、RETI、LCALL、LJMP、JC等指令之前插入两条NOP,也可将乱飞程序纳入正轨,确保这些重要指令的执行。
1.2拦截技术
所谓拦截,是指将乱飞的程序引向指定位置,再进行出错处理。
通常用软件陷阱来拦截乱飞的程序。
因此先要合理设计陷阱,其次要将陷阱安排在适当的位置。
1.2.1软件陷阱的设计
当乱飞程序进入非程序区,冗余指令便无法起作用。
通过软件陷阱,拦截乱飞程序,将其引向指定位置,再进行出错处理。
软件陷阱是指用来将捕获的乱飞程序引向复位入口地址0000H的指令。
通常在EPROM中非程序区填入以下指令作为软件陷阱:
NOP
NOP
LJMP0000H
其机器码为0000020000。
1.2.2陷阱的安排
通常在程序中未使用的EPROM空间填0000020000。
最后一条应填入020000,当乱飞程序落到此区,即可自动入轨。
在用户程序区各模块之间的空余单元也可填入陷阱指令。
当使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱,能及时捕获错误的中断。
如某应用系统虽未用到外部中断1,外部中断1的中断服务程序可为如下形式:
NOP
NOP
RETI
返回指令可用“RETI”,也可用“LJMP0000H”。
如果故障诊断程序与系统自恢复程序的设计可靠、完善,用“LJMP0000H”作返回指令可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行。
考虑到程序存贮器的容量,软件陷阱一般1K空间有2-3个就可以进行有效拦截。
1.3软件“看门狗”技术
若失控的程序进入“死循环”,通常采用“看门狗”技术使程序脱离“死循环”。
通过不断检测程序循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷入“死循环”,需进行出错处理。
“看门狗”技术可由硬件实现,也可由软件实现。
在工业应用中,严重的干扰有时会破坏中断方式控制字,关闭中断。
则系统无法定时“喂狗”,硬件看门狗电路失效。
而软件看门狗可有效地解决这类问题。
在实际应用中,采用环形中断监视系统。
用定时器T0监视定时器T1,用定时器T1监视主程序,主程序监视定时器T0。
采用这种环形结构的软件“看门狗”具有良好的抗干扰性能,大大提高了系统可靠性。
对于需经常使用T1定时器进行串口通讯的测控系统,则定时器T1不能进行中断,可改由串口中断进行监控(如果用的是MCS-52系列单片机,也可用T2代替T1进行监视)。
这种软件“看门狗”监视原理是:
在主程序、T0中断服务程序、T1中断服务程序中各设一运行观测变量,假设为MWatch、T0Watch、T1Watch,主程序每循环一次,MWatch加1,同样T0、T1中断服务程序执行一次,T0Watch、T1Watch加1。
在T0中断服务程序中通过检测T1Watch的变化情况判定T1运行是否正常,在T1中断服务程序中检测MWatch的变化情况判定主程序是否正常运行,在主程序中通过检测T0Watch的变化情况判别T0是否正常工作。
若检测到某观测变量变化不正常,比如应当加1而未加1,则转到出错处理程序作排除故障处理。
当然,对主程序最大循环周期、定时器T0和T1定时周期应予以全盘合理考虑。
2 系统故障处理、自恢复程序的设计
单片机系统因干扰复位或掉电后复位均属非正常复位,应进行故障诊断并能自动恢复非正常复位前的状态。
2.1非正常复位的识别
程序的执行总是从0000H开始,导致程序从0000H开始执行有四种可能:
一、系统开机上电复位;二、软件故障复位;三、看门狗超时未喂狗硬件复位;四、任务正在执行中掉电后来电复位。
四种情况中除第一种情况外均属非正常复位,需加以识别。
2.1.1硬件复位与软件复位的识别
此处硬件复位指开机复位与看门狗复位,硬件复位对寄存器有影响,如复位后PC=0000H,SP=07H,PSW=00H等。
而软件复位则对SP、SPW无影响。
故对于微机测控系统,当程序正常运行时,将SP设置地址大于07H,或者将PSW的第5位用户标志位在系统正常运行时设为1。
那么系统复位时只需检测PSW.5标志位或SP值便可判此是否硬件复位。
图12是采用PSW.5作上电标志位判别硬、软件复位的程序流程图。
图12硬、软件复位识别流程图
此外,由于硬件复位时片内RAM状态是随机的,而软件复位片内RAM则可保持复位前状态,因此可选取片内某一个或两个单元作为上电标志。
设40H用来做上电标志,上电标志字为78H,若系统复位后40H单元内容不等于78H,则认为是硬件复位,否则认为是软件复位,转向出错处理。
若用两个单元作上电标志,则这种判别方法的可靠性更高。
2.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 控制 多功能 计时器 系统 设计 实现 毕业设计