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

    第13章AT89S51单片机的应用设计与调试.ppt

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

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

    第13章AT89S51单片机的应用设计与调试.ppt

    1,第13章 AT89S51单片机的应用 设计与调试,1,成都理工大学工程技术学院自动化工程系,2,2,第13章 目录13.1 单片机应用系统的设计步骤13.2 单片机应用系统设计 13.2.1 硬件设计应考虑的问题 13.2.2 典型的单片机应用系统 13.2.3 系统设计中的地址空间分配与总线驱动 13.2.4 AT89S51单片机的最小应用系统 13.2.5 应用设计举例水温测控系统的硬件设计 13.2.6 软件设计考虑的问题 13.2.7 软件的总体框架设计,3,13.3 单片机应用系统的仿真开发与调试 13.3.1 仿真开发系统简介 13.3.2 用户样机的仿真调试13.4 单片机应用系统的抗干扰与可靠性设计 13.4.1 AT89S51片内看门狗定时器的使用 13.4.2 指令冗余和软件陷阱 13.4.3 软件滤波 13.4.4 开关量输入/输出软件抗干扰设计 13.4.5 过程通道干扰的抑制措施-隔离,4,13.4.6 印刷电路板抗干扰布线的基本原则 13.4.7 掉电保护设计和硬件“看门狗”13.5 单片机应用系统的I/O功率驱动 13.5.1 AT89S51与外围集成数字驱动电路的接口 13.5.2 AT89S51与光电耦合器的接口 13.5.3 AT89S51与集成功率电子开关输出接口,5,内容概要本章介绍AT89S51单片机应用系统的设计。主要内容:设计步骤和方法,硬件设计,程序的总体框架设计以及设计举例。此外,介绍目前仿真开发工具以及如何利用仿真开发工具对单片机应用系统进行开发调试。最后介绍单片机应用系统的抗干扰和可靠性设计。,6,13.1 单片机应用系统的设计步骤以单片机为核心,配以一定的外围电路和软件、能实现用户所要求的测控功能的系统。设计工作,需经过深入细致需求分析,周密科学方案论证才能使系统设计工作顺利完成。需求分析包括:被测控参数的形式(电量、非电量、模拟量、数字量等)、被测控参数的范围、性能指标、系统功能、工作环境、显示、报警、打印要求等。注意,方案确定时候,简单的方法往往可以解决大问题,切忌“简单的问题复杂化”。,6,7,一个应用系统设计,一般可分为4个阶段。(1)明确任务和需求分析以及拟定设计方案阶段明确系统要完成的任务十分重要,是设计工作的基础以及系统设计方案正确性的保证。(2)硬件和软件设计阶段根据拟定的方案,设计系统硬件电路。硬件设计的前提是必须能够完成系统的要求和保证可靠性。在硬件设计时,如能将硬件电路设计与软件设计结合起来考虑效果会更好。因为当有些问题在硬件电路中无法完成时,,7,8,当软件编写程序很麻烦时,通过稍改动硬件电路(或尽可能不改动)可能会使软件变得简单。另外在要求系统实时性强、响应速度快的场合,往往必须用硬件代替软件来完成某些功能。可直接由软件来完成(如软件滤波、校准功能等)。所以硬件设计时,最好与软件的设计结合起来,统一考虑,合理地安排软、硬件的比例,使系统具有最佳性价比。当硬件电路设计完成后,就可以进行硬件电路板绘制和焊接工作了。接下来介绍软件设计。正确编程方法就是根据需求分,8,9,析,先绘制出软件的流程图,该环节十分重要。流程图绘制往往不能一次成功,需多次修改。绘制可由简到繁逐步细化,先绘制系统大体上需要执行的程序模块,然后将这些模块按照要求组合在一起(如主程序、子程序以及中断服务子程序等),在大方向没问题后,再将每个模块细化,最后形成流程图,程序编写速度就会很快,同时为后面的调试工作带来很多方便,如调试中某模块不正常,就可以通过流程图来查找问题的原因。一定要克服不绘制流程图直接在计算机上编写程序的习惯。,9,10,设计者也可在上述软硬件设计完成后,先使用单片机的EDA软件仿真开发工具Proteus,来进行仿真设计。用软件仿真开发工具Proteus设计的系统与用户样机在硬件上无任何联系,是一种完全用软件手段来对单片机硬件电路和软件进行设计、开发与仿真调试的开发工具。如果先在软件仿真工具的软环境下进行系统设计并调试通过,虽然还不能完全说明实际系统就完全通过,但至少在逻辑上是行得通的。软件仿真通过后,再进行软硬件设计与实现,可大大减少设计上所走的弯路。这也是目前世界上流行的一种开发方,10,11,法。(3)硬件与软件联合调试阶段下一步就是软硬件的联合调试。需通过硬件仿真开发工具来进行,具体的调试方法和过程,在本章后面介绍。所有软件和硬件电路全部调试通过,并不意味系统设计成功,还需通过运行来调整系统的运行状态,例如系统中的A/D转换结果是否正确,如果不正确,是否要调零和调整基准电压等。(4)资料与文件整理编制阶段系统调试通过,就进入资料与文件整理编制阶段。,11,12,资料与文件包括:任务描述、设计的指导思想及设计方案论证、性能测定及现场试用报告与说明、使用指南、软件资料(流程图、子程序使用说明、地址分配、程序清单)、硬件资料(电原理图、元件布置图及接线图、接插件引脚图、线路板图、注意事项)。文件不仅是设计工作的结果,而且是以后使用、维修以及进一步再设计的依据。因此,要精心编写,描述清楚,使数据及资料齐全。,12,13,13.2 单片机应用系统设计介绍如何进行系统的设计。主要从硬件设计和软件设计两方面考虑。13.2.1 硬件设计应考虑的问题硬件设计时,应重点考虑以下问题。1尽可能采用功能强的芯片(1)单片机选型。单片机的集成度越来越高,许多外围部件都已集成在芯片内,有的单片机本身就是一个系统,这可省去许多外围部件的扩展工作,使设计工作简化。,13,14,第1章已介绍较为流行的各种单片机,根据需求,选择合适机型。例如,目前市场上较为流行的美国Cygnal公司的C8051F020 8位单片机,片内集成有8通道A/D、两路D/A、两路电压比较器,内置温度传感器、定时器、可编程数字交叉开关和64个通用I/O口、电源监测、看门狗、多种类型的串行总线(两个UART、SPI)等。用1片C8051F020 单片机,就构成一个应用系统。再如,如系统需要较大的I/O驱动能力和较强的抗干扰能力,可考虑选用AVR单片机。,14,15,(2)优先选片内有闪存的产品。例如,使用ATMEL公司的AT89C5x系列产品,Philips公司的89C58(内有32KB的闪速存储器)等,可省去片外扩展程序存储器的工作,减少芯片数量,缩小系统体积。(3)RAM容量的考虑。多数单片机片内的RAM单元有限,当需增强数据处理功能时,往往觉得不足,这就要求系统配置外部RAM,如6264、62256芯片等。如果处理的数据量大,需要更大的数据存储器空间,可采用数据存储器芯片DS12887,其容量为256KB,内有锂电池保护,保存数据可达10年以上。,15,16,(4)对I/O端口留有余地。在样机研制出来现场试用时,往往会发现一些被忽视的问题,而这些问题是不能单靠软件措施来解决的。如有新的信号需要采集,就必须增加输入检测端;有些物理量需要控制,就必须增加输出端。如果在硬件设计之初就多设计留有一些I/O端口,这些问题就会迎刃而解。(5)预留A/D和D/A通道。与上述I/O端口同样原因,留出一些A/D和D/A通道将来可能会解决大问题。,16,17,2以软代硬原则上,只要软件能做到且能满足性能要求,就不用硬件。硬件多不但增加成本,而且系统故障率也会提高。以软带硬的实质,是以时间换空间,软件执行过程需要消耗时间,因此带来的问题就是实时性下降。在实时性要求不高的场合,以软代硬是很合算的。3工艺设计包括机箱、面板、配线、接插件等。须考虑到安装、调试、维修方便。另外,硬件抗干扰措施(将在本章后面介绍)也须在硬件设计时一并考虑进去。,17,18,13.2.2 典型的单片机应用系统典型单片机应用系统框图如图13-1所示。图13-1 单片机典型应用系统框图,18,19,主要由单片机基本部分、输入部分和输出部分组成。(1)单片机基本部分由单片机及其扩展的外设及芯片,如键盘、显示器、打印机、数据存储器、程序存储器、数字I/O等组成。(2)输入部分“测”的部分,被“测”的信号类型有:数字量、模拟量和开关量。模拟量输入检测的主要包括信号调理电路以及A/D转换器。A/D转换器中又包括多路切换、采样保持、A/D转换电路,目前都集成在A/D转换器芯片中,或直接集成在单片机片内。,19,20,连接传感器与A/D转换器之间的桥梁是信号调理电路,传感器输出的模拟信号要经信号调理电路对信号进行放大、滤波、隔离、量程调整等,变换成适合A/D转换的电压信号。信号放大通常由单片式仪表放大器承担。仪表放大器对信号进行放大比普通运算放大器具有更优异的性能。如何根据不同的传感器正确地选择仪表放大器来进行信号调理电路的设计,请读者参阅有关资料和文献。(3)输出部分是应用系统“控”的部分,包括数字量、开关量控制信号的输出和模拟量控制信号(常用于伺服控制)的输出。,20,21,13.2.3 系统设计中的地址空间分配与总线驱动一个AT89S51应用系统有时往往是多芯片系统,这时会遇到两个问题:一是如何把64KB程序存储器和64KB数据存储器的空间分配给各个芯片;二是如何实现AT89S51单片机对多片芯片的驱动。本小节介绍单片机应用系统设计时经常遇到的地址空间分配和总线驱动问题,供设计参考。,21,22,1地址空间分配扩展多片芯片的应用系统,首先应考虑如何把64KB程序存储器和64KB数据存储器的空间分配给各个芯片。第8章已介绍地址空间分配的两种方法:线选法和译码法。下面通过一个例子来说明如何解决这个问题。图13-2所示为一个全地址译码的系统实例。图中所示的AT89S51单片机扩展的各器件芯片所对应的地址见表13-1。,22,23,23,图13-2 全地址译码的系统实例,24,24,25,因6264、2764都是8KB,故需要13条低位地址线(A12A0)进行片内寻址,低8位地址线A7A0经8D锁存器74LS373输出(图中没有画出),其他3条高位地址线A15A13经3线-8线译码器74LS138译码后作为外围芯片的片选线。图中尚剩余3条地址选择线,还可扩展3片存储器芯片或外围I/O接口芯片。2总线驱动扩展多片芯片时,注意AT89S51单片机4个并行双向口的P0P3口的驱动能力。下面首先讨论这个问题。,25,26,AT89S51的P0、P2口通常作为总线端口,当扩展芯片较多,可能造成负载过重,致使驱动能力不够,通常要附加总线驱动器或其他驱动电路。因此在多芯片应用系统设计中首先要估计总线的负载情况,以确定是否需要对总线的驱动能力进行扩展。图13-3为AT89S51单片机总线驱动扩展原理图。P2口需单向驱动,常见的单向总线驱动器为74LS244。图13-4为74LS244引脚图和逻辑图。8个三态驱动器分成两组,分别由1 和2 控制。,26,27,27,图13-3 AT89S51单片机总线驱动扩展原理图,28,P0口作为数据总线,双向传输,其驱动器应为双向驱动、三态输出,由两个控制端来控制数传方向。如图13-3所示,数据输出允许控制端DBEO有效时,数据总线输入为高阻状态,输出为开通状态;数据输入允许控制端DBEI有效时,则状态与上相反。常见双向驱动器为74LS245,图13-5为引脚图和逻辑图。驱动方向由、DIR两个控制端控制,控制端控制驱动器有效或高阻态,在 控制端有效(=0)时,DIR控制端控制驱动器的驱动方向,DIR=0时驱动方向为从B至A,DIR=1时则相反。,28,29,图13-6所示为AT89S51系统总线驱动扩展电路图。P0口的双向驱动采用74LS245,如图13-6(a)所示;P2口的单向驱动器采用74LS244,如图13-6(b)所示。图13-4 单向驱动器74LS244引脚图和逻辑图,29,30,30,图13-5 74LS245的引脚图和逻辑图,31,31,图13-6 AT89S51单片机应用系统中的总线驱动扩展电路图,32,P0口双向驱动器74LS245的 接地,保证芯片一直处于工作状态,而输入/输出的方向控制由单片机的数据存储器的“读”控制引脚()和程序存储器的取指控制引脚()通过与门控制DIR引脚实现。无论是“读”数据存储器中数据(有效)还是从程序存储器中取指令(有效),都能保证对P0口的输入驱动;除此以外的时间(及 均无效),保证对P0口的输出驱动。对于P2口,因为只用作单向的地址输出,故74LS244的驱动门控制端1、2 接地。,32,33,13.2.4 AT89S51单片机的最小应用系统AT89S51内部有4KB闪速存储器,本身就是一个数字量输入/输出的最小应用系统。在构建AT89S51单片机最小应用系统时,AT89S51单片机需要外接时钟电路和复位电路即可,如图13-7所示。注意,本最小应用系统只能作为小型的数字量的测控单元。,33,34,图13-7 AT89S51单片机构成的最小应用系统,35,13.2.5 应用设计举例水温测控系统的硬件设计水温测控是经常遇到的测控对象之一。下面介绍AT89S51为核心的水温测控系统的设计。采用3位LED显示器显示水温度,温度控制采用改进的PID数字控制算法。该系统具有如下基本功能:(1)温度控制的范围为2550,最小分辨率为0.1;(2)偏差0.6,静态误差0.4;(3)实时显示当前的温度值;(4)命令按键4个:复位键、功能转换键、加1键和减1键。,35,36,1硬件电路设计从功能模块上来划分有:主机电路;数据采集电路;键盘、显示电路;控制执行电路。(1)硬件功能结构框图。图13-8 硬件功能结构框图硬件功能结构框图如图13-8所示。,36,37,(2)数据采集电路的设计主机采用AT89S51单片机,系统时钟采用12MHz,内部含有4KB的闪烁存储器,无须外扩程序存储器。本系统需实时采集水温数据,然后经过A/D转换为数字信号,存入AT89S51单片机的内部数据存储器,送显示器显示,并与设定值进行比较,经过PID算法得到控制量并由单片机输出去控制电炉加热或开动风扇进行降温。,37,38,数据采集电路主要由温度传感器、信号调理、A/D转换器等组成,具体电路如图13-9。温度传感器采用常见的二端式电流型集成温度传感器AD590。温度每变化1,其输出电流变化1A,在25时,其输出电流为298.2A。AD590具有较高精度和重复性,测温的范围为55+150,重复性优于0.1,通过激光平衡调整,校准精度可达0.5。由于AD590的上述特点,使其在温度测控领域中得到了广泛应用。,38,39,39,图13-9 数据采集电路图,40,A/D转换器采用AD0809。考虑到水温信号为缓变信号,足以满足转换速度的要求,而且还可以根据需要扩展最多测量8路温度信号。如果对A/D转换器的转换精度要求更高,可采用12位的A/D转换器,如AD1674等。放大电路采用低温稳定、高精度的普通运算放大器OP07,它将温度传感器的电压信号放大至A/D转换器,以便A/D转换器进行转换。,40,41,(3)控制执行电路的设计由单片机的输出开关量来控制风扇或电炉。采用光电耦合器进行强电和弱电的隔离,但还要考虑输出信号要对晶闸管进行触发,以便接通风扇或电炉电路,所以晶闸管选用既有光电隔离又有触发功能的MC3041(有关MC3041的介绍请见13.5节)。电路中使用P1.0控制电炉的开关,使用P1.1控制风扇的开关,如图13-10所示。,41,42,42,图13-10 单片机的控制执行电路,43,此外,在设计中还要考虑当水温超出所能控制的上下限温度时,要有越限报警;当温度低于25时,黄色发光二极管亮,当温度高于50时红色发光二极管亮。(4)键盘与显示器电路的设计键盘共有4个键(包括复位键K1),判断K2K4键是否按下,可采用软件查询和中断的方法,当某个键按下时,低电平有效。4个键K1K4的功能定义见表13-2。,43,44,表13-2K1K4键的定义,44,45,按键K2与(P3.2)相连,采用外部中断方式,且优先级定为高优先级。K3和K4分别与P1.7和P1.6相连,采用软件查询方式,K1为复位键,与RC构成复位电路。显示电路利用串口来实现3位LED的共阳静态显示,显示内容为温度的十位、个位以及小数点后的一位。利用串行口扩展74LS164实现LED的共阳静态显示的工作原理及软件编程,请见10.3.1小节。,45,46,2软件设计采用模块化设计,由主程序模块、功能实现模块和运算控制模块3大模块组成。(1)主程序模块。流程如图13-11所示。先给定PID算法参数,然后循环显示当前温度,以等待中断,并且使键盘外部中断1(P3.2)为高优先级,以使主程序能实时响应K2按下的处理。设定时器T0为5s定时,无键按下时,应每隔5s响应一次,来采集温度传感器并经A/D转换的温度信号。设置定时器T1为嵌套在T0之中的定时中断,初值由PID算法子程序提供,以用来执行对电炉或风扇的控制。,46,47,47,图13-11 主程序流程图,48,(2)功能实现模块主要由A/D转换、中断处理、键盘处理和显示子程序等组成。下面仅介绍几个中断处理子程序。T1中断子程序。该中断是单片机内部5s定时中断,为低优先级,却是最重要的子程序。在该中断响应中,单片机要完成如下工作:A/D转换和数据采集、数字滤波、判断是否超限、标度变换处理、显示当前温度、与设定值进行比较,调用PID算法子程序并输出控制信号等。,48,49,键盘中断子程序。作为高优先级的功能控制键,系统要实时准备响应该中断。在该中断的响应过程中,系统要显示上一次的温度设定值,并且可以通过K3、K4键来实现加1、减1的输入修改。鉴于所控制的温度的上下限,程序实现加1直到上限50,再加1则为下限25;减1到25时,再减1则为上限50。T0中断子程序。T0定时中断嵌套在T1中断之中,为高优先级中断。T0的定时初值由PID算法子程序提供,T0的中断响应时间用于输出对电炉或风扇的控制信号。,49,50,(3)运算控制模块涉及标度变换、PID算法及算法调用的乘法子程序等。标度变换子程序。该子程序的作用是将温度信号(00HFFH)转换为对应的温度值,以便显示或与设定在相同量纲下的温度值进行比较。所用的线性标度变换式为 Tx=(TmT0)(NxN0)/(NmN0)+T0式中,Tx为实际测量的温度值;Tm为50;T0为25;Nm为FEH;N0为01H。采用定点运算。,50,51,PID算法子程序。采用常用的位置型PID数字控制,且结合本系统进行算法改进,形成“变速积分PID-积分分离PID”控制相结合的自动识别控制算法。算法如下:ui(n)ur=e(n)式中,ui(n)为第n次温度采样值;ur为设定值。若e(n)|,采用PD算法。若e(n),采用PID算法。该算法可大大减少超调,且可有效克服积分饱和的影响,使控制精度大大提高。,51,52,13.2.6 软件设计考虑的问题在系统总体设计时,软件设计和硬件设计应统一考虑,相互结合进行。当系统的硬件电路设计定型后,软件的任务也就明确了。一般来说,软件的功能分为两大类。一类是执行软件,能完成各种实质性的功能,如测量、计算、显示、打印、输出控制等;另一类是监控软件,专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度的角色。在进行程序设计时应从以下几个方面考虑。,52,53,(1)根据软件功能要求,将系统软件分成若干相对独立的部分,设计出合理的软件总体结构,使其清晰、简洁、流程合理。(2)各功能程序实行模块化、子程序化。既便于调试、链接,又便于移植、修改。(3)在编写应用软件之前,应绘制出程序流程图。多花一些时间来设计程序流程图,就可以节约几倍于源程序的编辑和调试时间。(4)要合理分配系统资源,包括ROM、RAM、定时器/计数器、中断源等。其中最关键的是片内RAM分配。,53,54,片内RAM指00H7FH单元,这128个字节的功能不完全相同,分配时应充分发挥其特长,物尽其用。例如,工作寄存器的R0和R1具有指针功能,避免作为他用;20H2FH 16个字节有位寻址功能,存放各种标志位、逻辑变量、状态变量等;设置堆栈区时应先估算出子程序和中断嵌套深度及堆栈操作指令使用情况,大小应留有余量。若扩展RAM存储器,应把使用频率最高的数据缓冲器安排在片内RAM中,以提高处理速度。当RAM资源规划好后,应列出一张详细的RAM资源分配表,以备编程时查用方便。,54,55,13.2.7 软件的总体框架设计设计者在软件设计时,感觉比较困难的是如何进行系统软件的总体框架设计。下面举一个典型例子,供软件设计时参考。【例13-1】有一个AT89S51应用系统,假设5个中断源都已用到,应用系统的程序框架如下:ORG 0000H;系统程序入口 LJMP MAIN;跳向主程序入口MAINORG 0003H;外中断0中断向量入口 LJMP IINT0P;跳向外中断0入口IINT0PORG 000BH;T0中断向量入口 LJMP IT0P;跳向T0中断入口IT0P,55,56,ORG 0013H;外中断0中断向量入口 LJMP IINT1P;跳向外中断1入口IINT1PORG 001BH;T1中断向量入口 LJMP IT1P;跳向T1中断处理程序入口IT1P ORG 0023H;串行口中断向量入口 LJMP ISIOP;跳向串行口中断处理程序入口ISIOP ORG 0040H;主程序入口MAIN:;对片内各功能部件以及扩展的各个;I/O接口芯片初始化;MOV SP,#60H;对堆栈区进行初始化主处理程序段(根据实际处理任务编写),56,57,ORG xxxxHIINT0P:外中断0中断处理;外中断0中断处理入口 RETI ORG yyyyH IT0P:T0中断处理;T0中断处理入口 RETIORG zzzzHIINT1P:外中断1中断处理;外中断1中断处理入口 RETI,57,58,ORG uuuuHIT1P:T1中断处理;T1中断处理子程序IT0P入口 RETIORG vvvvHISIOP:串行口中断处理;串行口中断处理子程序入口 RETIEND上述程序框架仅供参考,当然在实际中,5个中断源也未必全用。,58,59,13.3 单片机应用系统的仿真开发与调试当用户样机完成硬件和软件设计,全部元器件安装完毕后,在用户样机的程序存储器中放入编写好的应用程序,系统即可运行。但应用程序运行一次性成功几乎是不可能的,多少会存在一些软件、硬件上的错误,需借助单片机的仿真开发工具进行调试,发现错误并加以改正。AT89S51只是一个芯片,既没有键盘,又没有CRT、LED显示器,无法进行软件的开发(如编辑、汇编、调试程序等),必须借助某种开发工具(也称为仿真开发系统)所提供的开发手段。一般来说,仿真开发工具应具有如下最基本功能。,59,60,(1)用户样机程序的输入与修改。(2)程序的运行、调试(单步运行、设置断点运行)、排错、状态查询等功能。(3)用户样机硬件电路的诊断与检查。(4)有较全的开发软件。用户可用汇编语言或C语言编制应用程序;由开发系统编译连接生成目标文件、可执行文件。配有反汇编软件,能将目标程序转换成汇编语言程序;有丰富的子程序可供用户选择调用。(5)将调试正确的程序写入到程序存储器中。,60,61,介绍常用的仿真开发工具。13.3.1 仿真开发系统简介目前国内使用较多的仿真开发系统大致分为如下两类。1通用机仿真开发系统目前设计者使用最多的一类开发装置,是一种通过PC机的并行口、串行口或USB口,外加在线仿真器的仿真开发系统,如图13-12所示。在线仿真器一侧与PC机的串口(或并口、USB口)相连。在线仿真器另一侧的仿真插头插入到用户样机的单片机插座上,对样机的单片机进行“仿真”。从仿真插头,61,62,62,图13-12 通用机仿真开发系统,63,向在线仿真器看去,看到的就是一个“单片机”。这个“单片机”是用来“代替”用户样机上的单片机。但是这个“单片机”片内程序的运行是由PC机上的软件控制的。由于在线仿真器有PC机及其仿真开发软件的强大支持,可以在PC机的屏幕上观察用户程序的运行情况,可以采用单步、设断点等手段逐条跟踪用户程序并进行修改和调试,以及查找软、硬件故障。在线仿真器除了“出借”单片机外,还“出借”存储器,即仿真RAM。就是说,在用户样机调试期间,仿真器把开发系统的一部分存储器“变换”成为用户样机的存储器。,63,64,这部分存储器与用户样机的程序存储器具有相同的存储空间,用来存放待调试的用户程序。在调试用户程序时,仿真器的仿真插头必须插入用户样机空出的单片机插座中。当仿真开发系统与PC机联机后,用户可利用PC机上的仿真开发软件,在PC机上编辑、修改源程序,然后通过交叉汇编软件将其汇编成机器代码,传送到在线仿真器中的仿真RAM中。这时用户可用单步、断点、跟踪、全速等方式运行用户程序,系统状态实时地显示在屏幕上。程序调试通过,再使用编程器器,把调试完毕的程序,64,65,写入到单片机内的Flash存储器中或外扩的EPROM中。此类仿真开发系统是目前最流行的仿真开发工具。配置不同的仿真插头,可以仿真开发各种单片机。通用机仿真开发系统中还有另一种仿真器:独立型仿真器。该类仿真器采用模块化结构,配有不同外设,如外存板、打印机、键盘/显示器等,用户可根据需要选用。在工业现场,往往没有PC机的支持,这时使用独立型仿真器也可进行仿真调试工作,只不过要输入机器码,稍显麻烦一些。,65,66,2.软件仿真开发工具Proteus 是一种完全用软件手段对单片机应用系统进行仿真开发的。软件仿真开发工具与用户样机在硬件上无任何联系。通常这种系统是由PC机上安装仿真开发工具软件构成,可进行应用系统的设计、仿真、开发与调试。Proteus软件是英国Lab Center electronics 开发的EDA工具软件,它为各种实际的单片机系统开发提供了功能强大的EDA工具,已有近20年的历史。它除了具有和其他EDA工具一样的原理编辑、印制电路板自动或人工布线及电路仿真功能外,最大特色是其对,66,67,单片机硬件电路的仿真是交互的、可视化的。通过Proteus软件的虚拟仿真技术,用户可以对基于单片机应用系统连同所有的外围接口、电子器件以及外部的测试仪器一起仿真。针对单片机的应用,可直接在基于原理图的虚拟模型上进行编程,并实现源代码级的实时调试。Proteus软件具有如下特点。(1)能够对模拟电路、数字电路进行仿真。(2)除仿真51系列单片机外,Proteus软件还可仿真68000系列、AVR系列、PIC12-18系列等其他系列单片机。,67,68,(3)具有硬件仿真开发系统中的全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态。(4)该软件提供各种单片机与丰富的外围接口芯片、存储器芯片组成的系统仿真、RS-232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能。(5)提供丰富的虚拟仪器,如示波器、逻辑分析仪、信号发生器等。利用虚拟仪器在仿真过程中可以测量系统外围电路的特性,设计者可充分利用Proteus软件提供的虚拟仪器,来进行系统的软件仿真测试与调试。总之,Proteus软件是一款功能强大的单片机软件仿真开发工具。,68,69,在使用Proteus软件进行仿真开发时,编译调试环境可选用Keil C51 Vision 3软件。该软件支持众多不同公司的MCS-51架构的芯片,集编辑、编译和程序仿真等于一体,同时还支持汇编和C语言的程序设计,界面友好易学,在调试程序、软件仿真方面有很强大的功能。用Proteus软件调试不需任何硬件在线仿真器,也不需要用户硬件样机,直接就可以在PC机上开发和调试单片机软件。调试完毕的软件可以将机器代码固化,一般能直接投入运行。,69,70,尽管Proteus软件具有开发效率高,不需要附加的硬件开发装置成本。但是软件模拟器是使用纯软件来对用户系统仿真,对硬件电路的实时性还不能完全准确地模拟,不能进行用户样机硬件部分的诊断与实时在线仿真。因此在系统开发中,一般是先用Proteus设计出系统的硬件电路,编写程序,然后在Proteus环境下仿真调试通过。然后依照仿真的结果,完成实际硬件设计。再将仿真通过的程序烧录到编程器中,然后安装到用户样机硬件板上去观察运行结果,如有问题,再连接硬件仿真器去分析、调试。,70,71,13.3.2 用户样机的仿真调试介绍如何使用仿真开发工具进行汇编语言源程序编写、调试以及与用户样机硬件联调工作。1用户样机的程序调试用户源程序调试过程如图13-13所示,分以下4个步骤。(1)输入用户源程序。用户使用编辑软件WS,按照汇编语言源程序要求的格式、语法规定,把源程序输入到PC机中,并保存在磁盘上。,71,72,图13-13 用户样机软件设计、调试的过程,73,(2)在PC机上,利用汇编程序对用户源程序进行汇编,直至语法错误全部纠正为止。如无语法错误,则进入下一个步骤。(3)动态在线调试。这一步对用户的源程序进行调试。上述的步骤(1)、步骤(2)是一个纯粹的软件运行过程,这一步,必须要有在线仿真器配合,才能对用户源程序进行调试。用户程序中分为与用户样机硬件无关以及与用户样机紧密相关的程序。,73,74,对于与用户样机硬件无关的程序,如计算程序,虽然没有语法错误,但可能存在逻辑错误,使计算结果不正确,此时必须借助于在线仿真器的动态在线调试手段,如单步运行、设置断点等,发现逻辑错误,然后返回到步骤(1)修改,直至逻辑错误纠正为止。对于与用户样机硬件紧密相关的程序段(如接口驱动程序),一定要先把在线仿真器的仿真插头插入用户样机的单片机插座中(见图13-12),进行在线仿真调试,利用仿真开发系统提供单步、设置断点等调试手段来进行系统的调试。,74,75,部分程序段运行不正常,可能是软件逻辑上有问题,也可能是硬件有故障,必须先通过在线仿真调试程序提供的调试手段,把硬件故障排除以后,再与硬件配合,对用户程序进行动态在线调试。对于软件的逻辑错误,则返回到第一步进行修改,直至逻辑错误消除为止。在调试这类程序时,硬件调试与软件调试是不能完全分开的。许多硬件错误是通过软件的调试而发现和纠正的。(4)将调试完毕的用户程序通过编程写入器(也称烧写器),固化在程序存储器中。,75,76,2用户样机的硬件调试用户样机全部焊接完毕,就可对样机的硬件进行调试。首先进行静态调试,目的是排除明显的硬件故障。(1)静态调试分两步:第一步在样机加电之前,根据硬件设计图,用万用表等工具,仔细检查样机线路是否连接正确,并核对元器件型号、规格和安装是否符合要求,应特别注意电源系统的检查,防止电源的短路和极性错误,并重点检查系统总线(地址总线、数据总线、控制总线)是否存在相互之间短路或与其他信号线短路。,76,77,第二步加电后检查各芯片插座上有关引脚的电位,测量各点电平是否正常,尤其应注意AT89S51插座的各点电位,若有高压,与在线仿真器联机调试时,将会损坏在线仿真器。具体步骤如下。电源检查。当用户样机板连接或焊接完成之后,先不插主要元器件,通上电源。通常用+5V直流电源(这是TTL电源),用万用表电压挡测试各元器件插座上相应电源引脚电压数值是否正确,极性是否符合。如有错误,要及时检查、排除,以使每个电源引脚的数值都符合要求。,77,78,各元器件电源检查。断开电源,按正确的元器件方向插上元器件。最好是分别插入,分别通电,逐一检查每个元器件上的电源是否正确,直到最后全部插上元器件。通电后,每个元器件上电源值应正确无误。检查相应芯片的逻辑关系。通常采用静态电平检查法,即在一个芯片信号输入端加入一个相应电平,检查输出电平是否正确。单片机系统大都是数字逻辑电路,使用电平检查法可首先检查出逻辑设计是否正确,选用的元器件是否符合要求,逻辑关系是否匹配,元器件连接关系是否符合要求等。,78,79,(2)在线仿真与动态调试用户样机中的硬件故障(如各个部件内部存在的故障和部件之间连接的逻辑错误)主要靠联机在线仿真来排除的。在断电情况下,除单片机外,插上所有的元器件,并把在线仿真器的仿真插头插入样机上AT89S51单片机的插座(见图13-12),然后分别打开用户样机和仿真器电源后便可开始联机在线仿真调试。前面已介绍,硬件调试和软件调试是不能完全分开的,许多硬件错误是在软件调试中发现和被纠正的。,79,80,所以,在之前介绍的有关用户样机软件调试的第(3)步的动态在线调试中,即包括联机仿真、硬件在线动态调试以及硬件故障的排除。下面介绍在仿真开发机上如何利用简单调试程序检查用户样机。利用仿真开发系统对用户样机进行硬件检查,常常按其功能及I/O通道分别编写相应简短的实验程序,来检查各部分功能及逻辑是否正确,下面简单介绍。,80,81,检查各地址译码输出通常,地址译码输出是一个低电平有效信号。因此在选到某一个芯片时(无论是内存还是外设),其片选信号用示波器检查应该是一个负脉冲信号。由于使用的时钟频率不同,其负脉冲的宽度和频率也有所不同。注意,在使用示波器测量用户样机板的某些信号时,要将示波器电源插头上的地线断开,这是由于示波器测量探头一端连到外壳,在有些电源系统中,保护地和电源地是连在一起的,有时会将电源插座插反,将交流220V直接引到测量端,而将用户样机板全部烧毁,并且会殃及在线仿真器。,81,82,下面讨论如何检查地址译码器输出。例如,一片6116存储芯片地址为200027FFH,则可在开发系统上执行如下程序:LOOP:MOV DPTR,#200OH MOVXA,DPTR SJMP LOOP程序执行后,应该从6116存储器芯片的片选端看到等间隔的一串负脉冲,说明该芯片连接正确,不插入该存储器芯片,只测量插座相应片选引脚也会有上述结果。,82,83,用同样的方法,可将各内存及外设接口芯片的片选信号逐一进行检查。如出现不正确的现象,就要检查片选线连线是否正确,有无接触不良或错线、断线问题。检查RAM存储器检查RAM存储器时可编写程序,对RAM进行写入,然后再读出,将写入和读出的数据进行比较,发现错误,立即停止。将存储器芯片插上,执行如下程序:,83,84,MOVA,#00HMOV DPTR,#RAM;首地址LOOP:MOVXDPTR,AMOVR0,AMOVX A,DPTRCLR CSUBB A,R0JNZ LOOP1INC DPTRMOVA,R0INC ASJMP LOOPLOOP1:出错停止,84,85,如RAM 的每个单元都出现问题,则可能是控制信号连接不正确;如一片RAM芯片中一个或几个单元出现问题,则可能芯片本身不好,可换一片再测试一下。检查I/O扩展接口对可编程接口芯片,如81C55、82C55,首先要对该接口芯片进行初始化,再对其I/O端口进行I/O操作。初始化要按设计要求进行,这个初始化程序调试好后就可作为正式编程的相应内容。初始化后,可对其端口进行读/写。对开关量I/O,在样机上可利用钮子开关和发光二极管模拟,也可接上驱动板检查。一般情况下,用户样机先调试,驱动板单独进行调试,这样故障排除更方便些。,85,86,如用自动程序检查端口状态不易观察时,可用开发系统的单步功能,单步执行程序,检查内部寄存器的有关内容或外部相应信号状态,并确定开关量输入/输出通道连接是否正确。若外扩一片82C55,端口地址为B000B003H,A口方式0输入,B口、C 口为方式0输出,可用下述程序检查:MOV DPTR,#0B003HMOV A,#90H;90H为方式控制字MOVXDPTR,ANOP,86,87,MOV DPTR,#0B000HMOVX A,DPTR;将A口输入状态读入累加器,;单步执行完此步后暂停检查;PA口外部开关状态同A中相;应位状态是否一致CLR CMOV A,#01HINC DPTRLP:MOVX DPTR,A;将01H送B口,指令执行后,;暂停。看B口的发光二极管状;态,第0位是否是高电平,87,88,RLC A;将1从A的D0位移到D1位JNZ LPINC DPTRRLC ALP1:MOVX DPTR,A;01H送C口,指令执行完后,;看C口第0位输出状态RLC A JNZ LP1对于锁存器和缓冲器,可直接对其端口进行读/写

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开