欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    第13章AT89C51单片机应用系统的设计与调试课件.ppt

    • 资源ID:3836771       资源大小:715.50KB        全文页数:90页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第13章AT89C51单片机应用系统的设计与调试课件.ppt

    13.1 AT89C51 单片机应用系统的设计步骤 设计一个单片机测控系统,一般可分为四个步骤:(1)需求分析,方案论证和总体设计需求分析:被测控参数的形式(电量、非电量、模拟量、数字量等)、被测控参数的范围、性能指标、系统功能、工作环境、显示、报警、打印要求等。方案论证:根据要求,设计出符合现场条件的软硬件方案,又要使系统简单、经济、可靠,这是进行方案论证与总体设计一贯坚持的原则。,(2)器件选择,电路设计制作,数据处理算法,软件的编制阶段。(3)系统调试与性能测定。(4)文件编制。文件包括:任务描述、设计的指导思想及设计方案论证、性能测定及现场试用报告与说明、使用指南、软件资料(流程图、子程序使用说明、地址分配、程序清单)、硬件资料(电原理图、元件布置图及接线图、接插件引脚图、线路板图、注意事项)。文件不仅是设计工作的结果,而且是以后使用、维修以及进一步再设计的依据。因此,一定要精心编写,描述清楚,使数据及资料齐全。,13.2 应用系统的硬件设计为使硬件设计尽可能合理,应重点考虑以下几点。1尽可能采用功能强的芯片(1)单片机的选型。随着集成电路技术的飞速发展,许多外围部件都已集成在芯片内,本身就是一个系统,这样可以省去许多外围部件的扩展工作,设计工作大大简化。例如,美国Cygnal公司的C8051F020 8位单片机,片内集成有8通道A/D、两路D/A、两路电压比较器,内置温度传感器、定时器、可编程数字交叉开关和64个通用I/O口、电源监测、看门狗、多种类型的串行总线(两个UART、SPI)等。,(2)优先选用片内带有闪烁存储器的产品。例如,使用ATMEL公司的89C51/89C52/89C55,PHILIPS公司的89C58(内有32KB的闪烁存储器),可省去扩展单片机程序存储器的工作,减少芯片数量,缩小体积。(3)考虑EPROM空间和RAM空间。目前EPROM容量越来越大,一般尽量选用容量大的EPROM。89C51内部的RAM单元有限,当需增强软件数据处理功能时,往往觉得不足,这就要求系统配置外部RAM,如6264,62256芯片等。如果处理的数据量大,需要更大的数据存储器空间,可采用数据存储器芯片DS12887,其容量为256KB,内有锂电池保护,保存数据可达10年以上。,(4)对I/O端口的考虑。在样机研制出来进行现场试用时,往往会发现一些被忽视的问题,而这些问题是不能单靠软件措施来解决的。如有些新的信号需要采集,就必须增加输入检测端;有些物理量需要控制,就必须增加输出端。如果在硬件设计之初就多设计出一些I/O端口,这些问题就会迎刃而解了。(5)预留A/D和D/A通道。和I/O端口同样的原因,留出一些A/D和D/A通道将来可能会解决大问题。,2以软代硬原则上,只要软件能做到且能满足性能要求,就不用硬件。硬件多了不但增加成本,而且系统故障率也会提高。以软带硬的实质,是以时间换空间,软件执行过程需要消耗时间,因此这种代替带来的问题就是实时性下降。在实时性要求不高的场合,以软代硬是很合算的。3工艺设计包括机箱、面板、配线、接插件等。必须考虑到安装、调试、维修的方便。另外,硬件抗干扰措施也必须在硬件设计时一并考虑进去。,13.3 AT89C51单片机系统设计举例首先介绍单片机应用系统设计时的地址空间分配和总线驱动问题,最后举一个应用系统设计的例子供读者参考。13.3.1 应用系统设计中的地址空间分配与总线驱动系统往往是多芯片系统,这时要遇到两个问题:一是如何把64KB程序存储器和64KB数据存储器的空间分配给各个芯片;二是如何实现89C51单片机对多片芯片的驱动。1地址空间分配图13-1是一个全地址译码的系统实例。各器件芯片所对应的地址如表13-1所示。,地址空间分配的两种方法:线选法和译码法。下面通过一个例子来说明如何解决这个问题。,图13-1,因6264、2764都是8KB,故需要13条低位地址线(A12A0)进行片内寻址,低8位地址线A7A0经8D锁存器74LS373输出,图中没有画出。其他三条高位地址线A15A13经3-8译码器74LS138译码后作为外围芯片的片选线。图中尚剩余三条地址选择线Y7*Y5*,可扩展三片存储器芯片或外围I/O接口电路芯片。2总线驱动设计时,有时要扩展多片芯片,注意AT89C51的I/O口驱动能力。AT89C51有4个并行双向口,P0、P1、P2、P3 4个口的驱动能力不同,P0口的驱动能力较大,每位可驱动8个LSTTL输入,当其输出高电平时,可提供400A的电流;,当其输出低电平(0.45V)时,可提供3.2mA的灌电流,如低电平允许提高,灌电流可相应加大。P1、P2、P3口的每一位只能驱动4个LSTTL。所以,任何一个口要想获得较大的驱动能力,只能用低电平输出。AT89C51通常将P0、P2口用作访问外部存储器,所以P1、P3口只能用作输入/输出口。P1、P3口的驱动能力有限,在低电平输出时,一般也只能提供不到2mA的灌电流。当应用系统规模过大时,可能造成负载过重,使驱动能力不够,系统不能可靠地工作,所以通常要附加总线驱动器或其他驱动电路。,多芯片应用系统中首先要估计总线的负载情况,以确定是否需要对总线的驱动能力进行扩展。图13-2为AT89C51单片机总线驱动扩展原理图。地址总线和控制总线的驱动器为单向驱动器,并具有三态输出功能。驱动器有一个控制端,以控制驱动器开通或处于高阻状态。通常,在单片机应用系统中不采用DMA功能时,地址总线及控制总线可一直处于开通状态,这时控制端接地即可。常用的单向总线驱动器为74LS244。图13-3为74LS244引脚图和逻辑图。8个三态驱动器分成两组,分别由1G*和2G*控制。,2总线的驱动,图13-2,图13-3,图13-4,常用的双向驱动器为74LS245,图13-4为其引脚图和逻辑图。,图13-5是AT89C51单片机应用系统总线驱动扩展电路。P0口的双向驱动采用74LS245,如图13-5(b)所示;P2口的单向驱动器采用74LS244,如图13-5(a)所示。,图13-5,13.4.2 AT89C51的最小系统AT89C51内部有4KB闪烁存储器,芯片本身就是一个最小系统。在能满足系统的性能要求的情况下,可优先考虑采用此种方案。这种最小系统简单、可靠。在用89C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图13-6所示。本最小应用系统只能用作一些小型的数字量的测控单元。,图13-6,13.4.3 应用设计举例-水温控制系统的设计,水温控制是经常遇到的过程控制。下面介绍以89C51为核心的水温控制系统的设计。本系统采用3位LED显示器显示水温度,温度控制采用改进的PID数字控制算法。具有如下基本功能:(1)温度控制的设定范围为 25-50,最小分辨率为0.1。(2)偏差0.6,静态误差0.4。(3)实时显示当前的温度值。(4)命令按键5个:复位键,功能转换键,加1键,减1键。,1.硬件电路设计硬件电路从功能模块上来划分有:主机电路数据采集电路键盘、显示电路控制执行电路(1)硬件功能结构框图硬件功能结构框图如图13-7所示。,图13-7,(2)数据采集电路的设计主机采用AT89C51,系统时钟采用12MHz,内部含有4K字节的闪烁存储器。无须外扩程序存储器。数据采集电路主要由温度传感器、A/D转换器、放大电路等组成,见图13-8。,图13-8,(3)控制执行电路的设计由单片机的输出来控制风扇或电炉。设计中要采用光电耦合器进行强电和弱电的隔离,但还要考虑到输出信号要对可控硅进行触发,以便接通风扇或电炉电路。可控硅选用了既有光电隔离又有触发功能的MC3041。其中使用P1.0控制电炉电路,P1.1控制风扇电路,如图13-9所示。,图13-9,(4)键盘与显示器电路的设计 键盘共有4个键,采用软件查询和外部中断相结合的方法来设计,当某个键按下时,低电平有效。4个键K1K4的功能定义如表13-2所示。,表13-2 4个键K1-K4的定义,按键K2与 INT0*(P3.2)相连,采用外部中断方式,且优先级定为高优先级。K3和K4分别与P1.7和P1.6相连,采用软件查询方式,K1为复位键,与RC构成复位电路。显示电路部分利用串行口来实现3位LED的共阳静态显示,显示内容为温度的十位、个位以及小数点后的一位。利用串行口实现LED的共阳静态显示的工作原理及软件编程请见9.5.2小节的有关内容。,2.软件设计模块化设计,三大模块:主程序模块、功能实现模块和运算控制模块。(1)主程序模块主程序流程如图13-10所示。在主程序中首先给定PID算法的参数值,然后通过循环显示当前温度,以等待中断,并且使键盘外部中断为高优先级,以便使主程序程序能实时响应键盘处理。设定定时器T0为5s定时,无键按下时,应每隔5s响应一次,以用来采集温度传感器并经A/D转换的温度信号。设置定时器T1为嵌套在T0之中的定时中断,初值由PID算法子程序提供,以用来执行对电炉或风扇的控制。,图13-10,(2)功能实现模块 T1中断子程序 键盘中断子程序 T0中断子程序(3)运算控制模块 标度变换子程序 PID算法子程序,13.4 应用系统的软件设计13.4.1 软件设计考虑的问题 在进行应用系统的总体设计时,软件设计和硬件设计应统一考虑,相互结合进行。当系统的电路设计定型后,软件的任务也就明确了。一般来说,软件的功能分为两大类。一类是执行软件,它能完成各种实质性的功能,如测量、计算、显示、打印、输出控制等;另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度的角色。设计人员在进行程序设计时应从以下几个方面加以考虑:,(1)根据软件功能要求,将系统软件分成若干相对独立的部分,设计出合理的软件总体结构,使其清晰、简洁、流程合理。(2)各功能程序实行模块化、子程序化。既便于调试、链接,又便于移植、修改。(3)在编写应用软件之前,应绘制出程序流程图。多花一些时间来设计程序流程图,就可以节约几倍于源程序的编辑和调试时间。(4)要合理分配系统资源,包括ROM、RAM、定时器/计数器、中断源等。其中最关键的是片内RAM分配。对AT89C51来讲,片内RAM指00H7FH单元,这128个字节的功能不完全相,同,分配时应充分发挥其特长,做到物尽其用。例如,在工作寄存器的8个单元中,R0和R1具有指针功能,是编程的重要角色,避免作为它用;20H2FH这16个字节具有位寻址功能,用来存放各种标志位、逻辑变量、状态变量等;设置堆栈区时应事先估算出子程序和中断嵌套技术及程序中栈操作指令使用情况,其大小应留有余量。若系统中扩展了RAM存储器,应把使用频率最高的数据缓冲器安排在片内RAM中,以提高处理速度。当RAM资源规划好后,应列出一张详细的RAM资源分配表,以备编程时查用方便。,13.4.2 系统软件的总体框架设计应用设计者在软件设计时,感觉比较困难的是如何进行系统软件的总体框架设计。下面给出一个典型的例子,供读者在软件设计时参考。例13-1 有一个AT89C51的应用系统,假设5个中断源都已用到,应用系统的程序框架如下:ORG 0000H;系统程序入口LJMP MAIN;跳向主程序入口ORG 0003H;外中断0中断向量入口LJMP IINT0P;跳向外中断0中断处理程;序入口IINT0PORG 000BH;T0中断向量入口LJMP IT0P;跳向T0中断入口IT0P,ORG 0013H;外中断0中断向量入口LJMP IINT1P;跳向外中断1中断处理程序入口IINT1PORG 001BH;T1中断向量入口LJMP IT1P;跳向T1中断处理程序入口IT1PORG 0023H;串行口中断向量入口LJMP ISIOP;跳向串行口中断处理程序入口ISIOPORG 0040H;主程序入口MAIN:对片内各功能部件,如定时器、串行口、中断系统进行初始化;对扩展的各个I/O接口芯片进行初始化MOV SP,#60H;对堆栈区进行初始化主程序(根据实际处理任务编写),ORG XXXXH;外中断0中断处理子程序IINT0P入口IINT0P:外中断0中断处理子程序RETIORG YYYYH IT0P:T0中断处理子程序RETIORG ZZZZH IINT1P:外中断1中断处理子程序RETIORG UUUUH IT1P:T1中断处理子程序RETIORG VVVVH ISIOP:串行口中断处理子程序RETI,上述程序框架仅供参考,5个中断源的中断入口XXXXHVVVVH要根据主程序、各中断源的中断处理程序的长度而定,不要重叠。,13.5 软件抗干扰设计单片机系统在噪声环境下运行,除了前面介绍的各种抗干扰的措施外,还可采用软件来增强系统的抗干扰能力。本节介绍几种常用软件抗干扰的方法。13.5.1 软件滤波对于实时数据采集系统,为了消除传感器通道中的干扰信号,硬件上,常采用模拟滤波器对信号实现频率滤波。同样,采用软件也可以完成硬件模拟滤波器类似的功能,这就是软件滤波。,1.算术平均滤波法对一点数据连续取n个值进行采样,然后算术平均。这种方法适用于对一般具有随机干扰的信号进行滤波。这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动。这种滤波法当n值较大时,信号的平滑度高,但是灵敏度低;当n值较小时,平滑度低,但灵敏度高。应视具体情况选取n,以使既节约时间,又滤波效果好。对于一般流量测量,通常取n=12;若为压力,则取n=4。一般情况下n=35次平均即可。,2.滑动平均滤波法上面介绍的算术平均滤波法,每计算一次数据需要测量N次。对于测量速度较慢或要求数据计算速度较快的实时控制系统,上述方法无法使用。下面介绍一种只需测量一次,就能得到当前算术平均值的方法-滑动平均滤波法。本法是把n个采样值看成一个队列,队列的长度为n,每进行一次采样,就把采样值放入队尾,而扔掉原来队首的一个采样值,这样在队列中始终有n个“最新”采样值。对队列中的n个采样值进行平均,就可以得到新的滤波值。,滑动平均滤波法对周期性干扰有良好的抑制作用,平滑度高,灵敏度低;但对偶然出现的脉冲性干扰的抑制作用差,不易消除由于脉冲干扰引起的采样值的偏差。因此它不适用于脉冲干扰比较严重的场合,而适用于高频振荡系统。通常观察不同N值下滑动平均的输出响应来选取N值,以便既少占有时间,又能达到最好滤波效果,其工程经验值为:,下例为滑动平均滤波法的参考程序。【例13-2】假定n个双字节型采样值,30H单元为采样队列内存单元首地址,n个采样值之和不大于16位。新的采样值存于2EH、2FH单元,滤波值存于50H、51H单元,AVGFIL为本程序调用的算术平均滤波子程序。参考程序如下:SAVGFIL:MOVR2,#n-1;采样个数MOV R0,#32H;队列单元首地址MOV R1,#33H LOOP:MOV A,R0;移动低字节DEC R0DEC R0,MOV R0,AMOV A,R0;修改低字节地址ADD A,#04HMOV R0,AMOV A,R1;移动高字节DEC R1DEC R1MOV R1,AMOV A,R1;修改高字节地址ADD A,#04HMOV R1,ADJNZ R2,LOOPMOV R0,2EH;存新的采样值MOV R1,2FHACALL AVGFIL;AVGFIL算术平均值子程序,设已编写RET,3.中位值滤波法本方法就是对某一被测参数接连采样n次(一般n取奇数),然后把n次采样值按大小排列,取中间值为本次采样值。中位值滤波能有效地克服因偶然因素引起的波动干扰。对温度、液位等变化缓慢的被测参数采用此法能收到良好的滤波效果。但对流量、速度等快速变化的参数一般不宜采用中位值滤波法。中位值滤波程序设计的实质是,首先把n个采样值从小到大或从大到小进行排序,然后再取中间值。n个数据按大小“冒泡法”(排序程序设计见第4章)进行比较,直到最大数沉底为止。然后再重新进行比较,把次大值放到n-1位,依此类推,则可将n个数从小到大顺序排列。,【例13-3】设采样值从8位A/D转换器输入5次,存放在SAMP为首地址的内存单元中,采用中位值滤波。程序如下:SAMP EQU 30H ORG 1000HINTER:MOV R2,#04H;置最大循环次数SORT:MOV A,R2;小循环次数(R3)MOV R3,AMOV R0,#SAMP;采样数据首地址(R0)LOOP:MOV A,R0INC R0,MOV R1,ACLR CSUBB A,R0MOV A,R1JC DONEMOV A,R0;(R0)(R0)+1)DEC R0XCH A,R0INC R0MOV R0,ADONE:DJNZ R3,LOOP;R30,小循环继续进行DJNZ R2,SORT;R20,大循环继续进行INC R0MOV A,R0RET,4.去极值平均值滤波法前面介绍的算术平均与滑动平均滤波法,在脉冲干扰比较严重的场合,则干扰将会“平均”到结果中去,故上述两种平均值法不易消除由于脉冲干扰而引起的误差。这时可采用去极值平均值滤波法。思想:连续采样n次后累加求和,同时找出其中的最大值与最小值,再从累加和中减去最大值和最小值,按n-2个采样值求平均,即可得到有效采样值。类似于体育比赛中的去掉最高、最低分,再求平均分的评分办法。,(2)打印机接口,为使平均滤波算法简单,n-2应为2,4,6,8或16,故n常取4,6,8,10或18。具体做法有两种:对于快变参数,先连续采样n次,然后再处理,但要在RAM中开辟出n个数据的暂存区;对于慢变参数,可一边采样,一边处理,而不必在RAM中开辟数据暂存区。实践中,为了加快测量速度,一般n取4。【例13-4】以n=4为例,即连续进行4次数据采样,去掉其中最大值和最小值,然后求剩下两个数据的平均值。R2R3存最大值,R4R5存最小值,R6R7存放累加和及最后结果。当然,连续采样不只限4次,可以进行任意次,这时,只需改变R0中的数值。参考程序(见教材),(3)A/D与D/A转换器与单片机的接口,13.5.2 指令冗余及软件陷阱单片机系统由于干扰而使运行程序发生混乱、导致程序乱飞或陷入死循环时,采取使程序纳入正规的措施,如指令冗余、软件陷阱等。1.指令冗余CPU取指令是先取操作码,再取操作码数。当单片机系统受干扰出现错误时,程序便脱离正常轨道“乱飞”。当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序有可能出错。,若乱飞到三字节指令,出错机率更大。在关键的地方人为地插入一些单字节指令或将有效单字节指令重写称为指令冗余。指令冗余无疑会降低系统的效率,通常是在双字节指令和三字节指令后插入两个字节以上“NOP”指令,可保护其后的指令不被拆散。因此,常在一些对程序流向起决定作用的指令之前插入两条NOP指令,此类指令有:RET、RETI、ACALL、LCALL、SJMP、AJMP、LJMP、JZ、JNZ、JC、JNC、JB、JNB、JBC、CJNE、DJNZ等,以保证乱飞的程序迅速纳入正轨。在某些对系统工作状态至关重要的指令,该措施可以减少程序乱飞的次数,使其很快纳入程序轨道。,但这并不能保证在失控期间不干坏事,更不能保证程序纳入正常轨道后就太平无事了。程序的运行事实上已经偏离了正常顺序,有可能做着它现在不该做的事情。解决这个问题还必须采用软件容错技术(限于篇幅,本书不作介绍),使系统的误动作减少,并消灭重大误动作。2.软件陷阱就是一条引导指令,强行将乱飞的程序引向一个指定的地址,在那里有一段专门对程序出错进行处理,的程序。如果我们把这段程序的入口标号称为ERR的话,软件陷阱即为一条LJMP ERR指令。为加强其捕捉效果,一般还在它前面加两条NOP指令。NOPNOPLJMP ERR软件陷阱一般安排在下列4种地方:(1)未使用的中断向量区:0003H-002FH当干扰使未使用的中断开放,并激活这些中断时,就会进一步引起混乱。如果在这些地方布上陷阱,就能及时捕捉到错误中断。,例如:系统共使用三个中断:INT0*、T0、T1,它们的中断子程序分别为PGINT0、PGT0、PGT1,建议按如下方式来设置中断向量区:,ORG 0000H0000 START:LJMP MAIN;跳向主程序入口0003 LJMP PGINT0;外中断0中断入口0006NOP;冗余和陷阱0007 NOP 0008 LJMP ERR 000B LJMP PGT0;T0中断正常入口0016 NOP;冗余和陷阱 0017 NOP 0018 LJMP ERR001B LJMP PGT1;T1中断正常入口001E NOP;冗余和陷阱 001F NOP0020 LJMP ERR,0023 LJMP ERR;串口中断未用0026 NOP;冗余和陷阱 0027 NOP0028 LJMP ERR 0030 MAIN:;主程序 从0030H开始再编写正式程序,(2)未使用的EPROM空间对于剩余EPROM空间,若维持原状态FFH,FFH是一条单字指令(MOV R7,A)程序弹飞到这一区域后将顺流而下,只要每隔一段设置一个陷阱,就一定能捕捉到乱飞的程序。软件陷阱一定要指向处理过程ERR。可以将ERR安排在0030H开始的地方,这样就可用00 00 02 00 30五个字节作为陷阱来填充EPROM中的未使用空间,或每隔一段设置一个陷阱(02 00 30),其它单元保持FFH不变。,(3)表格有两类表格,一类是数据表格,供MOVC A,A+PC或 MOVC A,A+DPTR指令使用,其内容完全不是指令。另一类是跳转表格,供JMP ADPTR指令使用,其内容为一系列的三字节指令LJMP或两字节指令AJMP。由于表格内容和检索值有一一对应关系,在表格中间安排陷阱将会破毁其连续性和对应关系,只能在表格的最后安排五字节陷阱(NOP,NOP,LJMP ERR)。由于表格区一般较长,安排在最后的陷阱不能保证一定捕捉住乱飞的程序,有可能在中途再次飞走。这时只好指望别处的陷阱或冗余指令来制服它了。,(4)程序区程序区是由一串串执行指令构成的,不能在这些指令传中间任意安排陷阱,否则影响正常执行程序。但是,在这些指令串之间常有一些断裂点,正常执行的程序到此便不会继续往下执行了,这类指令有LJMP、SJMP、AJMP、RET、RETI。这时PC的值应发生正常跳变。如果还要顺次往下执行,必然就出错了。我们在这种地方安排陷阱之后,就能有效地捕捉住它,而又不影响正常执行的程序流程。例如,在一个根据累加器的正、负、零情况进行三分支的程序中,软件陷阱的安置方式如下:,JNZ L1;A中内容非零,跳L1程序段;A中内容为零的处理程序段 AJMP L3;断裂点 NOP;冗余指令与软件陷阱 NOP LJMP ERRL1:JB ACC.7,L2 LJMP L3;断裂点NOP;冗余指令与软件陷阱 NOP LJMP ERR;,L2:L3:MOV A,R2;取结果RET NOP;冗余指令与软件陷阱 NOP LJMP ERR由于软件陷阱都安排在正常程序执行不到的地方,故不影响程序执行效率。在EPROM容量不成问题的条件下,还是多多设置陷阱有益。,13.5.3 开关量输入输出软件抗干扰设计如果干扰只作用在系统的I/O通道上,则可用如下方法减小或消除其干扰。1.开关量输入软件抗干扰措施干扰信号多呈毛刺状,作用时间短。利用这一特点,我们采用采集某一状态信号时,可多次重复采集,直到连续两次或多次采集结果完全一致时才可视为有效。若相邻的检测内容不一致,或多次检测结果不一致,则是伪输入信号。可停止采集,给出报警信号。,由于状态信号主要来自各类开关型状态传感器,对这些信号采集不能用多次平均方法,必须绝对一致才行。在满足实时性要求的前提下,如果在各次采集状态信号之间增加一段延时,效果就会更好,就能对抗较宽时间范围的干扰。延时时间在10100S左右。对于每次采集的最高次数限制和连续相同次数均可按实际情况适当调整。,2.开关量输出软件抗干扰措施输出信号中,有很多是驱动各种警报装置,各种电磁装置等的状态驱动信号。对这类信号的抗干扰有效输出方法是重复输出同一个数据,只要有可能,重复周期应尽量短。外部设备接收到一个被干扰的错误信息后,还来不及作出有效的反映,一个正确的输出信息又到来,就可以及时地防止错误动作的产生。,13.6 单片机应用系统的仿真开发与调试一个单片机应用系统(用户样机)经过总体设计,完成了用户样机的硬件和软件设计开发。元器件安装后,在用户样机的程序存储器中放入编制好的应用程序,系统即可运行。但程序运行一次性成功几乎是不可能的,多少会存在一些软件、硬件上的错误,这就需要借助单片机的仿真开发工具进行调试,发现错误并加以改正。AT89C51单片机只是一个芯片,既没有键盘,又没有CRT、LED显示器,也无法运行系统开发软件(如编辑、汇编、调试程序等),因此,必须借助某种仿真开发工具(也称为仿真开发系统)所提供的开发手段来进行。一般来说,仿真开发工具应具有如下最基本的功能。,(1)用户样机程序的输入与修改。(2)程序的运行、调试(单步运行、设置断点运行)、排错、状态查询等功能。(3)用户样机硬件电路的诊断与检查。(4)有较全的开发软件。用户可用汇编语言或C语言编制应用程序;由开发系统编译连接生成目标文件、可执行文件。配有反汇编软件,能将目标程序转换成汇编语言程序;有丰富的子程序可供用户选择调用。(5)将调试正确的程序写入到程序存储器中。下面介绍常用的仿真开发工具。13.6.1 仿真开发系统简介目前国内使用较多的仿真开发系统大致分为如下两类。,1.通用机仿真开发系统这是一种通过PC机的并行口、串行口或USB口,外加在线仿真器的的仿真开发系统,如图13-11所示。,图13-11,在线仿真器必须与PC的并行口、串行口或USB口相连,才能完成开发任务。在线仿真器是一个与被开发的用户样机具有相同单片机芯片的系统,它是借助开发系统的资源来模拟用户样机中的单片机,对用户样机的资源(如存储器、I/O接口)进行管理。同时在线仿真器还具有跟踪功能,它可将程序执行过程中的有关数据和状态在屏幕上显示出来,这给查找错误和调试程序带来了方便。同时,其程序运行的断点功能、单步功能可直接发现硬件和软件的问题。,调试用户样机时,在线仿真器的仿真插头必须插入用户样机空出的单片机插座中。当仿真开发系统通过串行口(或并行口、USB口)与PC联机后,用户可利用仿真开发软件,在计算机上编辑、修改源程序,然后通过交叉汇编软件将其汇编成机器代码,传送到在线仿真器中的仿真RAM中。这时用户可用单步、断点、跟踪、全速等方式运行用户程序,系统状态实时地显示在屏幕上。待程序调试通过后,再使用仿真开发系统提供的编程器或使用专用编程器,把调试完毕的程序写入到单片机内的Flash存储器中或外扩的EPROM中。此类仿真开发系统是目前最流行的仿真开发工具。配置不同的仿真插头,可以仿真开发各种单片机。,通用机仿真开发系统中还有另一种结构:独立型仿真结构。该类仿真器采用模块化结构,配有不同外设,如外存板、打印机、键盘/显示板等,用户可根据需要选用。在没有通用计算机支持的场合,利用键盘/显示板也可在工业现场完成仿真调试工作。2.软件仿真开发工具Proteus 软件仿真开发工具是一种完全用软件手段对单片机系统进行仿真开发的,与用户样机在硬件上无任何联系。由PC机上安装仿真开发工具软件构成,可进行系统的设计、仿真、开发与调试。Proteus软件是英国Lab Center electronics 开发的EDA工具软件,它为各种实际的单片机应用系统开发提供了功能强大的EDA工具,已有近20年的历史。它除了具有和其他EDA工具,一样的原理编辑、印刷电路板自动或人工布线及电路仿真功能外,最大特色是其对单片机硬件电路的仿真是交互的、可视化的。通过其虚拟仿真技术(VSM),用户可以对基于单片机应用系统连同所有的外围接口、电子器件以及外部的测试仪器一起仿真。针对单片机的应用,可以直接在基于原理图的虚拟模型上进行编程,并实现源代码级的实时调试。Proteus软件具有如下特点。(1)能够对模拟电路、数字电路进行仿真。(2)除了仿真51系列单片机外,Proteus软件还可仿真68000系列、AVR系列、PIC等其他各系列单片机。(3)具有硬件仿真开发系统中的全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态。,(4)该软件提供了各种单片机与丰富的外围接口芯片、存储器芯片组成的系统仿真、RS-232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能。(5)Proteus软件提供了丰富的虚拟仪器,如示波器、逻辑分析仪、信号发生器等。利用虚拟仪器在仿真过程中可以测量系统外围电路的特性,设计者可以充分利用Proteus软件提供的虚拟仪器,来进行系统的软件仿真测试与调试。总之,Proteus软件是一款功能极其强大的单片机软件仿真开发工具。目前,该软件已经在世界范围内得到了较为广泛的使用,很多从事单片机开发应用的工程师都在使用该软件。,在使用Proteus软件对51系列单片机系统进行仿真开发时,编译调试环境可选用Keil C51 uVision 2软件。该软件支持众多不同公司的MCS-51架构的芯片,集编辑、编译和程序仿真等于一体,同时还支持PLM、汇编和C语言的程序设计,界面友好易学,在调试程序、软件仿真方面有很强大的功能。用软件仿真开发工具Proteus软件模拟器调试软件不需任何硬件在线仿真器,也不需要用户硬件样机,直接就可以在PC机上开发和调试单片机软件。调试完毕的软件可以将机器代码固化,一般能直接投入运行。,尽管软件仿真开发工具Proteus具有开发效率高,不需要附加的硬件开发装置成本。但是软件模拟器是使用软件来模拟硬件,且不能完全准确地模拟硬件电路的实时性,因此不能进行用户样机硬件部分的诊断与实时在线仿真。因此,一般的做法是:先绘制原理图,编写程序,在Proteus仿真软件里首先调试通过。调试通过后,然后再将编译好的程序用编程器去烧录,然后安装到用户样机硬件板上去观察运行结果,如果有问题,再连接硬件仿真器去分析、调试。,13.6.2 用户样机的开发调试本节介绍如何使用仿真开发工具进行汇编语言源程序编写、调试以及与用户样机硬件联调工作。1用户样机的软件调试用户样机的软件联调过程如图13-12所示,可分为以下4个步骤。,图13-12,第一步,建立用户源程序。用户通过开发系统的键盘、CRT显示器及开发系统的编辑软件WS,按照汇编语言源程序所要求的格式、语法规定,把源程序输入到开发系统中,并存在磁盘上。第二步,在开发系统机上,利用汇编程序对第一步输入的用户源程序进行汇编,直至语法错误全部纠正为止。如无语法错误,则进入下一个步骤。第三步,动态在线调试。这一步对用户的源程序进行调试。上述的第一步、第二步是一个纯粹的软件运行过程,而在这一步,必须要有在线仿真器配合,才能对用户源程序进行调试。用户程序中分为与用户样机硬件无联系的程序以及与其样机紧密关联的程序。,对于与用户样机硬件无联系的程序,如计算程序,虽然已经没有语法错误,但可能存在逻辑错误,使计算结果不正确,此时必须借助于动态在线调试手段,如单步运行、设置断点等,发现逻辑错误,然后返回到第一步修改,直至逻辑错误纠正为止。对于与用户样机硬件紧密相关的程序段(如接口驱动程序),一定要先把在线仿真器的仿真插头插入用户样机的单片机插座中(如图13-11所示),进行在线仿真调试,仿真开发系统提供单步、设置断点等调试手段,来对用户样机进行调试。第四步,将调试完毕的用户程序通过编程写入器(也称烧写器),固化在程序存储器中。,2.用户样机的硬件调试对用户硬件样机进行调试,首先要进行静态调试,目的是排除明显的硬件故障。(1)静态调试。静态调试工作分为两步:第一步是在用户样机加电之前,先用万用表等工具,根据硬件逻辑设计图,仔细检查样机线路是否连接正确,并核对元器件的型号、规格和安装是否符合要求。应特别注意电源系统的检查,以防止电源的短路和极性错误,并重点检查系统总线(地址总线、数据总线、控制总线)是否存在相互之间短路或与其它信号线的短路。,第二步是加电后检查各芯片插座上有关引脚的电位,仔细测量各点电平是否正常,尤其应注意AT89C51插座的各点电位,若有高压,与在线仿真器联机调试时,将会损坏在线仿真器。具体步骤如下:电源检查 各元器件电源检查 检查相应芯片的逻辑关系(2)联机仿真、在线动态调试在静态调试中,对用户样机硬件进行了初步调试,只是排除了一些明显的静态故障。,用户样机中的硬件故障(如各个部件内部存在的故障和部件之间连接的逻辑错误)主要是靠联机在线仿真来排除的。在断电情况下,除AT89C51外,插上所有的元器件,并把在线仿真器的仿真插头插入样机上89C51的插座,然后与开发系统的仿真器相连,分别打开样机和仿真器电源后便可开始联机在线仿真调试。前面已经介绍硬件调试和软件调试是不能完全分开的,许多硬件错误是在软件调试中发现和被纠正的。所以,在前面介绍的软件设计过程中的第三步:动态在线调试中,也包括联机仿真、硬件在线动态调试以及硬件故障的排除。,下面介绍在仿真开发机上如何利用简单调试程序检查用户样机。利用仿真开发系统对用户样机进行硬件检查,常常按其功能及I/O通道分别编写相应简短的实验程序,来检查各部分功能及逻辑是否正确,下面做简单介绍。检查各地址译码输出通常,地址译码输出是一个低电平有效信号。因此在选到某一个芯片时(无论是内存还是外设),其片选信号用示波器检查应该是一个负脉冲信号。由于使用的时钟频率不同,其负脉冲的宽度和频率也有所不同。,注意,在使用示波器测量用户样机板的某些信号时,要将示波器电源插头上的地线断开,这是由于示波器测量探头一端连到外壳,在有些电源系统中,保护地和电源地是连在一起的,有时会将电源插座插反,将交流220V直接引到测量端而将用户样机板全部烧毁,并且会殃及仿真开发机。如何检查地址译码器输出?例如,一片6116存储芯片地址为200027FFH,则可在开发机上执行如下程序:LOOP:MOV DPTR,#200OH MOVX A,DPTRSJMP LOOP,程序执行后,应该从6116存储器芯片的片选端看到等间隔的一串负脉冲,说明该芯片片选信号连接是正确的,即使不插入该存储器芯片,只测量插座相应片选引脚也会有上述结果。用同样的方法,可将各内存及外设接口芯片的片选信号逐一进行检查。如出现不正确现象,就要检查片选线连线是否正确,有无接触不好或错线、断线问题。检查RAM存储器检查RAM存储器可编译程序,将RAM存储器进行写入,再读出,将写入和读出的数据进行比较,发现错误,立即停止。将存储器芯片插上,执行如下程序:,MOV A,#00HMOV DPTR,#RAM;首地址LOOP:MOVX DPTR,AMOV RO,AMOVX A,DPTRCLR CSUBB A,R0JNZ LOOP1INC DPTRMOV A,ROINC ASJMP LOOPLOOP1:出错停止,检查I/O扩展接口 若外设端口连接一片82C55,端口地址为B000B003H,A口为方式0输入,B口、C 口都为方式0输出,则可用下述程序进行检查:MOV DPTR,#0B003HMOV A,#90H;90H为方式控制字MOVX DPTR,ANOPMOV DPTR,#0B000HCLR CMOV A,#01H,INC DPTRLP:MOVX DPTR,A;将01H送B口,此指令执行完后,;暂停。看B口连接的发光二极管;状态,第0位是否是高电平 RLC A;将1从0位移到第1位 JNZ LP INC DPTR RLC A MOVX A,DPTR;将A口输入状态读入累加器A,;执单步行完此步后暂停,;检查PA口外部开关状态同A中相;应位状态是否一致,LP1:MOVX DPTR,A;将01H送C口,此指令;执行完后,看C口第0;位输出状态 RLC A JNZ LP1 对锁存器和缓冲器,可直接对端口进行读写,不存在初始化的问题。,通过上面介绍的调试用户样机过程,读者可以体会到离开了仿真开发系统就根本不可能进行用户样机的调试,而调试的 关键

    注意事项

    本文(第13章AT89C51单片机应用系统的设计与调试课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开