《基于单片机控制的多功能计时器系统的设计与实现.pdf》由会员分享,可在线阅读,更多相关《基于单片机控制的多功能计时器系统的设计与实现.pdf(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第一章第一章 系统的总体设计系统的总体设计1 1。1 1 功能要求功能要求本系统要求能能完成电子时钟显示,调整,节能运行,电子秒表记数等多种功能,由按键电路或遥控电路完成功能的设置,秒表时钟计时器要求用六位 LED 数码管显示时、分、秒,以 24h(小时)计时方式。使用按键开关或遥控开关可实现时分调整、秒表时钟功能转换、省电(关闭显示)等功能。1 1。2 2 方案论证方案论证为了实现 LED 显示器的数字显示,可以采用静态显示法和动态显示法。由于静态显示法需要数据锁存器等硬件,接口复杂一些。考虑时钟显示只有六位,且系统没有其它复杂的处理任务,所以决定采用动态扫描法实现 LED的显示。单片机采用
2、易购的 AT89C51系 列,这 样 单 片 机 可 具 有 足 够 的 空 余 硬 件 资 源 实 现 其 它 的 扩 充 功能,如考虑到要使用电池供电的话,则可采用 LV 系列单片机。硬件系统的总体构成框架如图 1 所示。图 1 单片机控制的多功能计时器系统的设计总体框图1.31.3 系统总体设计系统总体设计本单片机控制的多功能计时器系统,采用单片机作为控制核心,具有控制灵活,简单可靠,造价便宜等诸多优点。单片机虽然是一个五脏俱全的计算机,但由于本身无开发能力,必须借肋开发工具来开发应用软件以及对硬件系统进行诊 断。因此,我们要研制一个较完整的单片机产品时,必须完成以下几步工作:硬件电路设
3、计、组装、调试应用软件的编制、调试应用软件的链接调试、固化、脱机运行(即脱离开发装置)。本单片机控制系统的开发过程包括总体设计、硬件设计、软件设计等几个阶段,但各阶段不是绝对分开的,有时是交叉进行的。本系统在设计上特点有如下所示1 1)系统硬件结构结合应用软件方案一并考虑。因为硬件结构与软件设计方案会产生相互影响,我们考虑的原则是:软件能实现的功能尽可能由软件来实现,以简化硬件结构。但必须注意如用软件来实现的硬件功能,其响应时间要比直接用硬件来实现花的时间长,而且占用 CPU 时间。因此,选择软件方案时,要考虑到这此因素。2 2)整个系统中相关的器件要尽可能做到性能匹配。3 3)可 靠 性 及
4、 抗 干 扰 设 计 是 硬 件 系 统 设 计 不 可 缺 少 的 一 部分,它 包括芯片、器 件选择、去 耦滤波、印 刷电路板布线、通 道隔离等。14 4)单片机外接电路较多时,必须考虑其驱动能力.驱动能力不足时,系统工作不可靠,解决的办法是增加驱动能力,增设线驱动器或者减少芯片功耗,降低总线负载.本电路的硬件设计包括:加 1 电路、减 1 电路、复位电路、振荡电路与驱动电路、显示电路等。在完成各个单元电路的设计与调试后,我们与软件系统进行了联调,且达到了一个较为理想的结果.单片机控制的多功能计时器系统总体开发与设计的流程图如图 2 所示。图 2 单片机控制的多功能计时器系统 总体开发与设
5、计的流程图第二章第二章系统硬件电路设计系统硬件电路设计2.12.1 硬件系统设计应考虑的问题硬件系统设计应考虑的问题本 单 片 机 控 制 的 多 功 能 计 时 器 系 统 在 硬 件 系 统 设 计 上 主 要 考 虑 下列几点:(1)尽可能选择典型电路(2)系统 的扩 充 与 外围 装置,应 充 分 满足 应用 系 统的 要 求,并留一些扩充槽,以便进行二次开发。(3)硬件结构应结合应用软件一并考虑。软 件有执行的功能尽可能由软件来执行,以简化硬件结构。但必须注意,由软件执行硬件的功能,其响应时间比直接使用硬件要长,且占用 CPU 时间。(4)整个系统器件尽可能做到性能匹配.(5)可靠性
6、及抗干扰设计是硬件设计极其重要的部分,包括器件选择、电路板布线、通道隔离等。(6)单片机微处理器外接电路较多时,必 须考虑其驱动能力,驱动能力不足时,系统工作不可靠。解决办法是增加驱动能力,或减少 IC 功耗,降低总线负载。2 2。2 2 电路各部分硬件电路介绍电路各部分硬件电路介绍1)单片机控制的多功能计时器系统的设计 总体框图如图 3 所示。图 3 单片机控制的多功能计时器系统的设计总体 框图2)控制核心采用目前较为流行的、且价格低廉的 89C51 为控制核心,主要包括:单片机电路、加 1 电路、减 1 电路、复位电路、振荡电路、数 字驱动与显示电路,下 面我们一一进行阐明。硬 件电路原理
7、图如图 4 所示.图 4 硬件电路原理图2 2。2.1 2.1 单片机单片机 AT89C51AT89C51 及其特点及其特点2本系统以单片机 AT89C51为控制核心,AT89C51是一种带 4K字节闪烁可编程可擦除只读存储器(FPEROM Falsh Programmableand Erasable Read Only Memory)的低电压,高性能 CMOS8 位微处理器,俗称单片机.单片机的可擦除只读存储器可以反复擦除 100次.该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51指令集和输出管脚相兼容。由于将多功能 8 位 CPU和闪烁存储器组合在单个芯片
8、中,ATMEL 的 AT89C51是一种高效微控制器.AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。1 1主要特性主要特性:与 MCS-51兼容4K 字节可编程闪烁存储器寿命:1000 写/擦循环数据保留时间:10 年全 静态工作:0Hz 24Hz三 级程序存储器锁定128 8 位内部 RAM32 可编程 I/O 线两 个 16 位定时器/计数器5 个中断源可 编程串行通道低 功耗的闲置和掉电模式片 内振荡器和时钟电路图图 4 89C20514 89C2051引引脚脚排排列列图图和和主主要要参参数数2 2管脚说明管脚说明:VCC:供电电压.GND:接地.P0 口:P0 口
9、为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1 口的管脚第一次写 1 时,被定义为高阻输入.P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位.在FIASH 编程时,P0口作为原码输入口,当 FIASH 进行校验时,P0输出原码,此时 P0 外部必须被拉高。P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可 用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收。P
10、2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2口缓冲器可接收,输 出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且 作为输入.并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或 16 位地址外部数据存储器进行存取3时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容.P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口
11、,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它 们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。P3 口也可作为 AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2/INT0(外部中断 0)P3。3/INT1(外部中断 1)P3。4 T0(记时器 0 外部输入)P3。5 T1(记时器 1 外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3 口同时为闪烁编程和编程校验接收一些控制信号。RST:复位
12、输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE脉冲。如想禁止 ALE 的输出可在 SFR8EH地址上置 0。此时,ALE只有在执行 MOVX,MOVC指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。/PS
13、EN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每 个机器周期两次/PSEN 有效。但 在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现./EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式 1时,/EA 将内部锁定为 RESET;当/EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入.XTAL2:来自反向振荡器的输出.43 3芯片擦除:芯片擦除:整个 PEROM 阵列和三个
14、锁定位的电擦除可通过正确的控制信号组合,并 保持 ALE 管脚处于低电平 10ms来完成。在 芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可 以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU 停止工作.但 RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存 RAM 的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止.2.22.2。2 2 振荡器电路振荡器电路单片机振荡器电路如图所指示.XTAL1 和 XTAL2 分别为反向放大器的输入和输出。该反向放大器
15、可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2 应不接.有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。如图()所示:图()振荡电路2.2.32.2.3 复位电路复位电路:MCS-51单片机的复位条件是在 RST端出现正脉冲,并能保持10ms以上的高电平,其复位电路一般采用上电复位和开关复位两种形式,本系统复位如图所示:图系统复位电路2 2。2 2。4 4 驱动与显示电路驱动与显示电路。缓冲器。缓冲器 74LS24474LS244本系统为了加大驱动显示能力采用 74LS244作为驱动器
16、,74LS244是一种三态输出的八缓冲器和线驱动器。74LS244缓冲器主要用于三态输出的存储地址驱动器、时 钟驱动器 和 总 线 定 向 接 收 器 等。其 管 脚 图 如 图7 所 指 示,参 数 表 如 表174LS244是三态输出的八缓冲器,由 2 组、每组四路输入、输出构成。每组有一个控制端,由控制端的高或低电平决定该组数据被接通还是断开。图774LS244管脚排列图.5.5 数码管显示电路数码管显示电路本系统数码管显示电路如图所示,采用 6 个数码管,数码管管脚排列图如图所指示,在电子钟里能分别显示小时,分和秒,如13.26。21,在电子秒表中,分别显示,分,表和毫秒,如 99.5
17、6。586数码管管脚排列图在本系统中,由于用到的 LED 显示器的位数较多时,为减少 I/O口数目,简化电路,降低成本,我们在 LED 显示器采用动态显示方式,如图 8 所示。动态 LED 显示器接口及工作原理动态 LED 显示器的电路连接特点是将各位 LED 显示器的所有对应段线并联在一起,由一个 8位 I/O 口控制输出字段码,而每位 LED 显示器的公共端(共阳极点或共阴极点)不 直接接地或+5V 电源,而 是分别由另外的 I/O 口线控制(称为位选).LED 显示器的显示内容通过段码 I/O 口和位选I/O 口的相互配合控制,以动态扫描显示的工作方式输出待显示的内容。我们通过软件程序系
18、统,发出控制信号,用 P2.0-P2。5 动态控制各个三极管的导通,来达到动态扫描的效果。图 8第三章第三章系统软件电路设计系统软件电路设计3 31 1 系统软件设计概述系统软件设计概述在系统软件设计时,应根据系统软件功能要求,将系统软件分成若干个相对独立的部分,并根据它们的联系和时间上的关系,设计出合理的软件总体结构。通常在编制程序前先根据系统输入和输出变量建立起正确的数学模型,然后画出程序流程框图,要求流程框图结构清晰、简捷、合理,画流程框图时还要对系统资源作具体的分配和说明。编制程序时一般采用自顶向下的程序设计技术,先设计监控程序再设计各应用程序模块。各功能程序应模块化、子程序化,这样不
19、仅便于调试、链接,还便于个性和移植。在进行应用系统的总体设计时,软件设计和硬件设计应统一考虑,相结 合 进行。当系 统 的电 路 设计 定型 后,软 件的 任 务也 就 明确了。下图为多功能计时器系统设计流程图及系统框图 9:开始图 9多功能计时器系统设计流程图3 32 2)系统软件程序介绍)系统软件程序介绍在线仿真调试主程序主程序系统定义本设计中计时采有定时器 To 中断完成,其余状态循环调用显示子程序,当端口开按下时,转入相应功能程序.基主程序执行流程见图 10软件结构设计程序是否有错图 10 程序执行流程。显示子程序。显示子程序:数建立数学模型码管显示的数据存放在内存单元 70H75H中
20、。其 70H 71H存放秒数据,72H 73H 存放分数据,74H 75H 存时数据,每一地修改程序真址单元内均为十进制 BCD 码。由于采用软件动态扫描实现数据显示功能,显示用十进制 BCD 码数据的对应段码存放在 ROM 表中。显绘制程序流程图示时,先取出 70H 75H 某一地址中的数据,然后查得对应的显示编写程序6固化程序汇编用段码,并从 P0 口输出,P2 口将对应的数码管选中供电,就能显示该地址单元的数据值。为了显示小数点及“一”、“A等特殊字符,在显示班级及计时时采用不同的显示子程序。定定时时器器 T0T0 中中断断服服务务程程序序:定时器 T0 用于时间计时。定时溢,出中断周期
21、可分设为 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(秒)表功
22、能时有 100)进位,T0 中断服务程序执行流程见图 11图 11T1 中断服务程序T1 中断服务程序用于指示调整单元数字的亮闪.在时间调整状态 下,每 过0.3s,将 对 应 单 元 的 显 示 数 据 换 成“熄 灭 符”数 据(#0AH)。这样在调整时间时,对应调整单元的显示数据会间隔闪亮。调时功能程序调时功能程序的设计方法是:按下 P1。0 口按键,若按下时间短于 1s,则进入省电状态(数码管不亮,时钟不停);否则 进入调分状态,等待操作,此时计时器停止走动.当再按下按钮时,若按下时间短于 0.5s,则时间加 1 分;若按下时间长于 0。5s,则进入 小时调整状态。在小时调整状态下,当
23、按键按下的时间长于0。5s 时,退出调整状态,时钟继续走动.P1。1 口按键在调时状态下可实现减功能。时钟秒表功能程序在正常计时状态下,若按下 P1.1 口按键,则进行时钟秒表功能的转换,转换后计时从零开始。当按下 P1.2 口的按键时,可实现清、计时启动、暂停功能。第四章第四章 系统调试与系统调试与 调调试试及及抗抗干干扰扰设计设计4.14.1 硬件调试硬件调试硬件调试时,可先检查印制及焊接的质量情况,在检查无误后,可通电检查显示器的点亮状况,若亮度不理想,可以调整口的电阻大小,一般情况下,取 电阻即可获得满意的亮度效果。实验室制作时,可结合示波器测试晶振及、端口7的波形情况,进行综合硬件测
24、试分析。我们对硬件电路进行了调试,主要包括:(1)在焊接前元器件要一一检查是否完好,在焊接过程中逐一检查电路是否接通。(2)管座、元件焊接完毕,还要仔细检查元件面各元件之间裸露部分有无相互接触现象,焊接面的各捍点间、焊点与近邻线有无连接,对布线密或未加阴处理的应注意检查,这此可能造 成短路的原因.(3)在完成检查后,先 空载上电(未插芯片),检 查线路各管脚级插件的电位是否正常,特别是单片机管脚注上的各点电位(若有高压,联机调试时会通过仿真线进入仿真系统,损坏有关器件)。若 一切 下 沉 将芯 片 插 入各 管 座,再 通 电 检查 各 点 电压 是 否 达到 要求,逻辑电平是否符合电路或器件
25、的逻辑关系.若有问题,掉电后再认真检查故障原因。4.24.2 软件调试软件调试软件调试在 Wave E 000 编译器下进行,源程序编译及仿真调试应分段或以子程序为单位一个一个进行,最后可结合硬件实时调试。系统调试包括硬件调试和软件调试。硬件调试的任务是排除系统的硬件电路故障,包括设计性错误和工艺性故障.软件调试是利用开发工具进行在线仿真调试,除发现和解决程序错误外,也可以发现硬件故障。程 序 调 试 一 般 是 一 个 模 块 一 个 模 块 地 进 行,一 个 子 程 序 一 个 子程度地调试,最后联起来统调。利用开发工具的单步和断点运行方式,通 过检查应用系统的 CPU 现场、RAM 和
26、 SFR 的内容以及 I/O 口的状态,来检查程序的执行结果和系统 I/O 设备的状态变化是否正常,从中发现程序的逻辑错误,转移地址错误以及随机的录入错误等。也可以发现硬件设计与工艺错误和软件算法错误。在调试过程中,要不断调整、修改系统的硬件和软件,直到其正确为止.联机调试运行正常后,将 软件固化到 EPROM 中,脱 机运行,并 到生产现场投入实际工作,检验其可靠性和抗干扰能力,直到完全满足要求,系统才算研制成功.4 4 3 3 系统抗干扰设计系统抗干扰设计在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视.下面以 MCS-51单片机系统为例,对微机
27、系统软件抗干扰方法进行研究。1 1软软件件抗抗干干扰扰方方法法的的研研究究在工程实践中,软件抗干扰研究的内容主要是:一、消除模拟输入信号的嗓声(如数字滤波技术);二、程序运 行混乱时使程序重入正轨的方法。本文针对后者提出了几种有效的软件抗干扰方法.1 1。1 1 指指令令冗冗余余8CPU 取指令过程是先取操作码,再取操作数.当 PC 受干扰出现 错 误,程 序 便 脱 离 正 常 轨 道“乱 飞”,当 乱 飞 到 某 双 字 节 指 令,若取指令时刻落在操作数上,误将操作数当作操作码,程序将出错.若“飞”到了三字节指令,出错机率更大。在关键地方人为插入一些单字节指令,或将有效单字节指令重写称为
28、指令冗余。通常是在双字节指令和三字节指令后插入两个字节以上的 NOP。这 样即使乱飞程序飞到操作数上,由 于空操作指令 NOP 的存在,避免了后面的指令被当作操作数执行,程序自动纳入正轨。此外,对系统流向起重要作用的指令如 RET、RETI、LCALL、LJMP、JC 等指令之前插入两条 NOP,也可将乱飞程序纳入正轨,确保这些重要指令的执行.1 1。2 2 拦拦截截技技术术所谓拦截,是指将乱飞的程序引向指定位置,再进行出错处理。通常用软件陷阱来拦截乱飞的程序.因此先要合理设计陷阱,其次要将陷阱安排在适当的位置。1.21.2。1 1 软软件件陷陷阱阱的的设设计计当乱飞程序进入非程序区,冗余指令
29、便无法起作用。通过软件陷阱,拦截乱飞程序,将其引向指定位置,再进行出错处理。软件陷阱是指用来将捕获的乱飞程序引向复位入口地址 0000H的指令。通常在 EPROM 中非程序区填入以下指令作为软件陷阱:NOPNOPLJMP 0000H其机器码为 0000020000。1 1。2.22.2陷陷阱阱的的安安排排通常在程序中未使用的 EPROM空间填 0000020000.最后一条应填入 020000,当乱飞程序落到此区,即可自动入轨。在用户程序区各模块之间的空余单元也可填入陷阱指令.当使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱,能及时捕获错误的中断。如某应用系统虽未用到外部中断 1
30、,外部中断 1 的中断服务程序可为如下形式:NOPNOPRETI返回指令可用“RETI,也可用“LJMP 0000H”。如果故障诊断程序与系统自恢复程 序的设计可靠、完善,用“LJMP 0000H”作返回指令可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行。考虑到程序存贮器的容量,软件陷阱一般 1K 空间有 2-3 个就可以进行有效拦截.1 1。3 3 软软件件“看看门门狗狗 技技术术若失控的程序进入“死循环”,通常采用“看门狗”技术使程序脱离“死循环”。通过不断检测程序循环运行时间,若发现程9序循环时间超过最大循环运行时间,则认为系统陷入“死循环”,需进行出错处理.“看门狗”技术可由硬
31、件实现,也可由软件实现。在工业应用中,严重的干扰有时会破坏中断方式控制字,关闭中断.则系统无法定时“喂狗”,硬件看门狗电路失效。而软件看门狗可有效地解决这类问题。在实际应用中,采用环形中断监视系统。用定时器 T0 监视定时器 T1,用 定时器 T1 监视主程序,主 程序监视定时器 T0。采 用这种环形结构的软件“看门狗具有良好的抗干扰性能,大大提高了系统可靠性.对于需经常使用 T1 定时器进行串口通讯的测控系统,则定时器 T1 不能进行中断,可改由串口中断进行监控(如果用的是 MCS-52系列单片机,也可用 T2 代替 T1 进行监视)。这种软件“看门狗”监视原理是:在主程 序、T0 中断服务
32、程序、T1 中断服务程序中各设一运行观测变量,假设为 MWatch、T0Watch、T1Watch,主程序每循环一次,MWatch加,同样 T0、T1 中断服务程序执行一次,T0Watch、T1Watch加.在 T0 中断服务程序中通过检测T1Watch的变化情况判定 T1 运行是否正常,在 T1 中断服务程序中检测 MWatch的变化情况判定主程序是否正常运行,在主程序中通过检测 T0Watch的变化情况判别 T0 是否正常工作.若检测到某观测变量变化不正常,比如应当加 1 而未加 1,则转到出错处理程序作排除故障处理。当 然,对 主程序最大循环周期、定 时器 T0 和 T1 定时周期应予以
33、全盘合理考虑.2 2系系统统故故障障处处理理、自自恢恢复复程程序序的的设设计计单片机系统因干扰复位或掉电后复位均属非正常复位,应进行故障诊断并能自动恢复非正常复位前的状态.2.12.1非非正正常常复复位位的的识识别别程序的执行总是从 0000H开始,导致程序从0000H开始执行有四种可能:一、系统开机上电复位;二、软件故障复位;三、看门 狗 超时 未 喂 狗 硬件 复 位;四、任 务正 在 执行 中 掉 电 后来 电复位。四种情况中除第一种情况外均属非正常复位,需加以识别。2.12.1。1 1 硬硬件件复复位位与与软软件件复复位位的的识识别别此处硬件复位指开机复位与看门狗复位,硬件复位对寄存器
34、有影响,如复位后 PC=0000H,SP07H,PSW 00H 等.而软件复位则对 SP、SPW 无影响。故对于微机测控系统,当程序正常运行时,将 SP 设置地址大于 07H,或者将 PSW 的第 5 位用户标志位在系统正常运行时设为 1.那么系统复位时只需检测 PSW。5 标志位或 SP值便可判此是否硬件复位。图 12 是采用 PSW.5 作上电标志位判别硬、软件复位的程序流程图。图 12硬、软件复位识别流程图此外,由于硬件复位时片内 RAM 状态是随机的,而软件复位片内RAM 则可保持复位前状态,因 此可选取片内某一个或两个单元作为上电标志。设40H 用来做上电标志,上电标志字为 78H,
35、若系统复位后 40H 单元内容不等于 78H,则认为是硬件复位,否则认为是软件复位,转向出错处理。若用两个单元作上电标志,则这种判别方10法的可靠性更高。2.1.22.1.2开开机机复复位位与与看看门门狗狗故故障障复复位位的的识识别别开机复位与看门狗故障复位因同属硬件复位,所以要想予以正确识别,一般要借助非易失性 RAM 或者 EEROM.当系统正常运行时,设置一可掉电保护的观测单 元。当系统正常运行时,在定时喂狗的中断服务程序中使该观测单元保持正常值(设为AAH),而在主程中将该单元清零,因观测单元掉电可保护,则开机时通过检测该单元是否为正常值可判断是否看门狗复位.2 2。1 1。3 3 正
36、正常常开开机机复复位位与与非非正正常常开开机机复复位位的的识识别别识 别 测 控 系 统 中 因 意 外 情 况 如 系 统 掉 电 等 情 况 引 起 的 开 机复位与正常开机复位,对于过程控制系统尤为重要.如某以时间为控制标准的测控系统,完成一次测控任务需 1 小时。在已执行测控50 分钟的情况下,系统电压异常引起复位,此时若系统复位后又从头开始进行测控则会造成不必要 的时间消耗.因此可通过一监测单元对当前系统的运行状态、系统时间予以监控,将控制过程分解为若干步或若干时间段,每执行完一步或每运行一个时间段则对监测 单 元 置 为 关 机 允 许 值,不 同 的 任 务 或 任 务 的 不
37、同 阶 段 有 不 同 的值,若系统正在进行测控任务或正在执某时间段,则将监测单元置为非正常关机值。那么系统复位后可据此单元判系统原来的运行状态,并跳到出错处理程序中恢复系统原运行状态。2.22.2非非正正常常复复位位后后系系统统自自恢恢复复运运行行的的程程序序设设计计对顺序要求严格的一些过程控制系统,系统非正常复位否,一般都要求从失控的那一个模块或任务恢复运行。所以测控系统要作好重要数据单元、参数的备份,如系统运行状态、系统的进程值、当前输入、输出的值,当前时钟值、观测单元值等,这些数据既要定时备份,同时若有修改也应立即予以备份。当在已判别出系统非正常复位的情况下,先要恢复一些必要的系统数据
38、,如显示模块的初始化、片外扩展芯片的初始化等。其次再对测控系包括显示界面等的恢复。之后再把复位前的任务、参数、运行时间等恢复,再进入系统运行状态.应当说明的是,真实地恢复系统的运行状态需要极为细致地对系统的重要数据予以备份,并加以数据可靠性检查,以保证恢复的数据的可靠性。其次,对 多任务、多 进程测控系统,数 据的恢复需考虑恢复的次序问题,笔者实际应用的数据恢复过程流程图如图13 所示.统的系统状态、运行参数等予以恢复,图 13系统自恢复程序流程图图中恢复系统基本数据是指取出备份的数据覆盖当前的系统数据。系 统基本初始化是指对芯片、显 示、输 入输出方式等进行初始化,要注意输入输出的初始化不应
39、造成误动作。而复位前任务的初始化是指任务的执行状态、运行时间等。3 3结结束束语语对于软件抗干扰的一些其它常用方法如数字滤波、RAM数据保11护与纠错等,限于篇幅,本文未作讨论.在工程实践中通常都是几种抗干扰方法并用,互相补充完善,才能取得较好的抗干扰效果。从根本上来说,硬件抗干扰是主动的,而软件是抗干扰是被动的。细致周到地分析干扰源,硬件与软件抗干扰相结合,完善系统监控程序,设计一稳定可靠的单片机系统是完全可行的。4.44.4 性能分析性能分析按照设计程序分析,显示器动态扫描的频率约为z,实际使用观察时完全没有闪烁。由于计时中断程序中加了中断延时误差处理,所以实际计时的走时精度非常高,可满足
40、多种场合的应用需要;另 外上电时的班级、学 号、制 作日期 滚动显示可以方便学生设计作业的辩认区别。系系统统程程序序清清单单中断入口程序主程序1s计时程序T0中断服务程序秒表计时程序闪动调时程序T1中断服务程序,用作时间调整时调整单元闪烁指示加1子程序分减1子程序时减1子程序清0程序时钟调整程序显示程序ST子程序,上电时显示年月班级用,采用移动显示延时程序控制源程序清单以下是秒表时钟计时器的控制源程序AT89C5 秒表时钟程序定时器、溢出周期为 ms(ms),T0 为调整时闪烁用,1.0、P1.1、P1.2 为调整按钮,口为字符输出口,采用共阳显示管。中断入口程序ORG 0000H程序执行开始
41、地址LJMP START跳到标号 START 执行ORG 0003H驶外中断中断程序入口RETI外中断中断返回ORG 000BH定时器 T0 中断程序入口LJMP INTT0跳至 INTT0 执行12ORG 0013H外中断中断程序入口RETI外断中断返回ORG 001BH定时器 T1 中断程序入口LJMP INTT1跳至 INTT1 执行ORG 0023H串行中断程序入口地址RETI串行中断程序返回主程序START:LCALL ST上电显示年月日及班级学号MOV R0,#70H清 70H 7AH 共 11 个内存单元MOV R7,#0BHCldisp:MOVR0,00hINC R0DJNZ
42、R7,CLdispMOV 20H,#00H清 20H(标志用)MOV7AH,#0AH放 入“熄 灭 符”数据MOV TMOD,11H设 T1、T1 为 16 时器MOV TL0,#0B0H50 定时初值(计时用)MOV TH0,#3CH50 定时初值MOV TL1,0B0H50ms 定时初值(T1内烁定时用)MOV TH1,3CH50ms 定时初值SETB EA总中断开放SETB ET0允许 T0 中断SETB TR0开启 T0 定时器MOV R4,#14H1s定时用初值(50msX20)START1:LCALLDISPLAY调 用 显 示 子 程序JNB P1.0,SETMM1P1.0 口为
43、 0 时,转时间调整程序JNB P1。1,FUNSS秒表功能,P1。1 按键调时时作减 1 操作JNB P1。2,FUNPTSTOP,PUSE,CLRSJMP START1P1.0 口为 1 时跳回 START1SETMM1:LJMP SETMM转到时间调整程序 SETMM13FUNSS:LCALL DS20MSJB P1.1,start1WAIT11:JNB P1.1,WAIT11CPL 03HMOV 70H,00HMOV 71H,00HMOV 76H,00HMOV 77H,00HMOV 78H,00HFUNPT:WAIT22:WAIT33:WAIT66:个内存单元CLEARP:WAIT44
44、:WAIT55:WAIT21:WAIT31:wait41:WAIT51:WAIT61:;1s 计时程序MOV 79H,00HAJMP START1LCALL DS20MSJB P1。2,START1JNB P1.2,WAIT21CLR ET0CLR TR0JB P1。2,WAIT31LCALL DS20MSJB P1.2,WAIT33JNB P1。2,WAIT61MOV R0,#70HMOV R7,0AHMOVR0,00HINC R0DJNZ R7,CLEARPJB P1.2,WAIT41LCALL DS20MSJB P1。2,WAIT44JNB P1.2,WAIT51SETB ET0SETB
45、 TR0AjmP START1LCALL DISPLAYAJMP WAIT22LCALL DISPLAYAJMP WAIT33lcall displayajmpwait44LCALL DISPLAYAJMP WAIT55LCALL DISPLAYAJMP WAIT6614清 70H79H共10T0 中断服务程序INTT0:PUSH ACC累加器入栈保护PUSH PSW状态字入栈保护CLR ET0关 T0 中断允许CLR TR0关闭定器 T0JB 03H,FSS标志为 1 转秒表处理程序(10ms 定时)MOV A,0B7H中断响应时间同步修正ADD A,TL0低 8 位初值修正MOV TL0,
46、AMOV A,#3CHADDC A,TH0MOV TH0,ASETB TR0DJNZ R4,OUTT0ADDSS:MOV R4,#14H值MOVR0,71H(71H79H)ACALL ADD1MOV A,R3十进制数组合)CLR CCJNE A,60H,ADDMMADDMM:JC OUTT0AcALL CLR0时单元清 0MOVR0,#77H(76H77H)ACALL ADD1MOVA,R3CLR CCJNE A,60H,ADDHHADDHH:JC OUTT0ACALL CLR0时单元清 0MOVR0,#79H(78H79H)ACALL ADD1MOV A,R3CLR CJB 03H,OUTT
47、0CJNE A,24H,HOURHOUR:JC OUTT015重装初值(低 8 位修正值)高 8 位初值修正重装初值(高 8 位修正值)开启定时器 T020 次中断未到中断退出20 次中断到(1s)重赋初指 向 秒 计 时 单 元调用加 1 程序(加 1s 操作)秒数据放入 A(R3 为 2 位清进位标志短于 60s 时中断退出长于或等于 60s 时对秒计指 向 分 计 时 单 元分计时单元加 1min分数据放入 A清进位标志短于 60min 时中断退出长于或等于 60min时分计指 几 小 时 计 时 单 元小时计时单元加 1h时数据放入 A清进位标志秒表时最大数为 99短于 24h 中断退
48、出ACALLCLR0长于或等于 24h 小时计时单元清 0OUTT0:MOV 72H,76H中断退出时将分、时 计时单元数据移MOV 73H,77H入对应显示单元MOV 74H,78HMOV 75H,79HPOP PSW恢复状态字(出栈)POP ACC恢复累加器SETB ET0开放 T0 中断RETI中断返回秒表计时程序(10min加 1),低 2 位为 0.1、0。01 秒,中间 2位为秒,最高压锅位为分最大计数值为 99 分 59.99 秒FSS:MOV A,#0F7H重装初 值(10ms),中断响应时间同步修正ADD A,TL0低 8 位初值修正MOV TL0,A重装初值(低 8 位修正
49、值)MOV A,0D8H高 8 位初值修正ADDC A,TH0mov th0,a重装初值(高 8 位修正值)setb tr0开启定时器 T0MOV R0,71H指向秒计时单元(71H 72H)ACALL ADD1调用加 1 程序(加 1s 操作)CLR CMOV A,R3JZ FSS1加 1 后为 00,C=0SETB C加 1 后不为 00,C=1FSS1:AJMP ADDMM;闪动调时程序T1 中断服务程序,用作时间调整时调整单元闪烁指示INTT1:PUSH ACC中断现场保护PUSH PSWMOV TL1,#0B0H装定时器 T1 定时初值MOV TH1,3CHDJNZ R2,IN1OU
50、T0。3s 未到,退出中断(50ms 中断 6 次)MOV R2,#06H重装 0。3s 定时用初值CPL 02H0.3s定时到,对闪烁16标志取“反”JB 02H,FLASH102H 位为 1 时,显示单元“熄灭”MOV 72H,76H02H 位为 0 时,正常显示MOV 73H,77HMOV 74H,78HMOV 75H,79Hin1out:POP PSW恢复现场POP ACCRETIFLASH1:JB 01H,FLASH2时熄灭控制MOV 72H,7AH灭符”数据放入分MOV73H,7AH75H),将不显示分数据MOV 74H,78HMOV 75H,79HAJMP IN1OUTFLASH