您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 第十章单片机应用系统设计课件
单片机应用系统设计第十章1.0.1可靠性高可靠性是单片机系统应用的前提,在系统设计的每一个环节,都应该将可靠性作为首要的设计准则。提高系统的可靠性通常从以下几个方面考虑:1.使用可靠性高的元器件2.采用双机系统3.设计电路板时布线和接地要合理,严格安装硬件设备及电路10.1单片机应用系统设计的基本准则4.对供电电源采用抗干扰措施5.输入输出通道抗干扰措施6.进行软硬件滤波7.系统自诊断功能10.1.2操作维护方便10.1.3性价比10.1.4设计周期短。10.2.1系统总体设计系统总体设计是单片机系统设计的前提,合理的总体设计是系统成败的关键。总体设计关键在于对系统功能和性能的认识和合理分析,系统单片机及关键芯片的选型,系统基本结构的确立和软、硬件功能的划分10.2单片机应用系统的设计方法开始明确任务选机型及外围主要芯片划分软、硬件功能硬件设计软件设计联机仿真调试排除故障、修改软件固化程序,独立运行系统研制完成图11.1单片机系统研制过程1.明确系统的功能与性能2.系统单片机选型3.划分系统软、硬件功能4.确定系统结构组成1.程序存储器2.数据存储器3.I/O接口4.译码电路5.总线驱动器6.抗干扰电路10.2.2硬件设计开始系统定义软件结构设计建立数学模型绘制程序流程图编写程序汇编在线仿真调试程序有错否?修改程序固化到EPROM结束YN11.3软件设计流程图10.2.3软件设计软件设计通常分作系统定义、软件结构设计和程序设计等三个步骤,图11.3给出了软件设计的流程图。1.系统定义①定义说明各输入/输出口的功能,确定信息交换的方式、与系统接口方式、所占口地址、读取和输出方式等。②在程序存储器和数据存储器区域中,合理分配存储空间,其中包括系统主程序、常数表格、数据暂存区域、堆栈区域和入口地址等。③对面板控制开关、按键等输入量以及显示、打印等输出量也必须给予定义,以此作为编程依据。④针对可能出现的由干扰引起的错误进行容错设计,给出错误处理方案,以达到提高软件可靠性的目的。⑤明确所设计的用户程序应达到的精度、速度指标。2.软件结构设计3.程序设计用户实时监控程序模块1模块2模块n模块1.1模块2.1模块n.1模块n.2模块n.2.1…………调度调用图10.4系统调试包括硬件调试、软件调试和软、硬件联调。根据调试环境不同,系统调试又分为模拟调试与现场调试。各种调试所起的作用是不同的,它们所处的时间段也不一样,不过它们的目的都是为了查出用户系统中存在的错误或缺陷。系统调试的一般过程如图11.5。10.2.4系统总体调试系统调试开始硬件调试软件调试系统联调现场调试调试结束模拟调试图10.51.单片机应用系统调试工具(1)单片机开发系统(2)万用表(3)逻辑笔(4)逻辑脉冲发生器与模拟信号发生器(5)示波器(6)逻辑分析仪2.单片机应用系统的一般调试方法(1)硬件调试①静态调试②动态调试(2)软件调试①先独立后联机②先分块后组合③先单步后连续(3)系统联调①软、硬件能否按预定要求配合工作。②系统运行中是否有潜在的设计时难以预料的错误。③系统的动态性能指标(包括精度、速度参数)是否满足设计要求。(4)现场调试10.3数码管时钟电路的设计10.3.1系统设计引言LED数码管时钟电路采用24h计时方式,时、分、秒用六位数码管显示。该电路采用AT89C2051单片机,使用3V电池供电。10.3.2系统设计原理以AT89C2051单片机来实现时钟计时显示有如下几个要点:1.计算计数初值时钟计时的关键问题是秒的产生,因为秒是最小时钟单位,但使用MCS-51的定时器/计数器进行定时,即使按工作方式1,其最大定时时间也只能达到131ms,离1s还差很远。为此,我们把秒计时用硬件定时和软件计数相结合的方法实现,即:把定时器的定时时间定为125ms,这样计数溢出8次就可得到1s,而8次计数可用软件方法实现。为得到125ms定时,我们可使用定时器/计数器0,以工作方式1进行,假定单片机为6MHZ晶振,设计数初值为X,则有如下等式:(216–X)×2=125000计算得计数初值X=3036,二进制表示为110011011100B,十六进制表示为0CDCH。2.设定定时器定时方式定时器采用中断定时方式完成,以便于通过中断服务程序进行溢出次数(每次125ms)的累计,计满8次即得到秒计时。3.实现方法通过在程序中的数值累加和数值比较来实现从秒到分和从分到时的计时。4.设置时钟显示及显示缓冲区假定时钟时间在6位LED数码管上进行显示(时、分、秒各占两位)。为此,要在内部RAM中设置显示缓冲区,共6个单元,与数码管对应关系如图11.12所示。显示缓冲区从左向右依次存放时、分、秒的数值。LED5LED4LED3LED2LED1LED07EH7DH7CH7BH7AH79H图10.12LED显示器的缓冲单位10.3.3系统硬件设计数码管时钟电路如图11.13所示,其采用AT89C2051单片机最小化应用设计,LED显示用动态扫描方式实现,P1口输出段码数据,P3.0~P3.5口作扫描输出,P3.7接按钮开关。了提供LED数码管的驱动电流,用三极管9012作电源驱动输出。为了提高秒计时的精确中。本设计中的计时采用定时器T0中断完成,其余状态循环调用显示子程序,当P3.7端口开关按下时,转入调时功能程序。P1.012P1.113P1.214P1.315P1.416P1.517P1.618P1.7191RST2P3.03P3.14XTAL25XTAL16P3.27P3.38P3.49P3.510VSSVCC40P3.711+5VSET2SET14.7K+5V10K10uF12MHZ30pFP3.5P3.4P3.3P3.2P3.1P3.089C2051图10.13采用AT89C2051的六位时钟电路10.3.4系统软件设计1.主程序(MAIN)主程序的主要功能是进行定时器/计数器的初始化编程,然后通过反复调用显示子程序的方法,等待125ms定时中断的到来。系统主程序流程图如图10.14所示。调用显示子程序设置循环次数开中断定时开始计数初值定时器0工作方式1显示缓冲区单元清0定义堆栈区MAIN等待定时中断请求图10.14主程序流程ORG0000H;程序执行开始地址LJMPSTART;跳到标号START执行ORG000BH;定时器0中断程序入口LJMPINTTO;跳到标号INTTO执行ORG0030HSTART:MOVSP,#60H;确立堆栈区MOVR0,#79H;显示缓冲区首地址MOVR7,#06H;显示位数ML1:MOV@R0,#00H;显示缓冲单元清0INCR0DJNZR7,ML1主程序清单如下:MOVTMOD,#01H;设置定时器0为方式1MOVTL0,#0DCH;装计数器初值MOVTH0,#0CHSETBEA;总中断开放SETBET0;允许T0中断SETBTR0;开启T0定时器MOV30H,#08H;计数溢出次数ML0:LCALLDISPLAY;调用显示子程序JNBP3.7SETMM1;调整程序SJMPML0SETMM1:LJMPSETMM;转到调整程序2.加1子程序(DAADl)加1子程序用于完成对秒、分和时的加1操作,中断服务程序中在秒、分、时加1时共有三处调用此子程序。加l操作共包括以下三项内容:加1子程序清单:DAA1:MOVA,@R0;加1子程序,十位送ADECR0SWAPA;十位数占高4位ORLA,@R0;个位数占低4位ADDA,#01H;加1DAA;十进制调整MOVR2,A;全值暂存R2中ANLA,#0FH;屏蔽十位数,取个位数MOV@R0,A;个位值送显示缓冲单元MOVA,R2INCR0ANLA,#0F0H;屏蔽个位数取出十位数SWAPA;使十位数占低4位MOV@R0,A;十位数送显示缓冲单元RET;返回十位数送缓冲单元把十位数交换到低半字节个位数送缓冲单元十进制调整加1取个位数,并占A低半字节使十位数占A高半字节取十位数DISPLAY图10.5加1子程序流程3.中断服务程序(PITO)中断服务程序的主要功能是进行计时操作。程序开始先判断计数溢出是否满了8次,不满8次表明还没达到最小计时单位秒,中断返回;如满8次则表明已达到最小计时单位秒,程序继续向下执行,进行计时操作。中断服务程序流程如图11.16所示。中断子程序清单:INTT0:PUSHACC;现场保护PUSHPSWSETBPSW.3;选1组通用寄存器MOVTL0,#0DCH;计数器重新加载MOVTH0,#0CHMOVA,30H;循环次数减1DECAMOV30H,AJNZRET0;不满8次转移MOV30H,#08H;满8次开始计时MOVR0,#7AH;秒显示缓冲单元ACALLDAAD1;秒加1MOVA,R2;加1后秒值在R2XRLA,#60H;判是否到60秒JNZRET0;不到转移ACALLCLR0;到60S显示单元清0MOVR0,#7CH;分显示缓冲单元地址ACALLDAAD1;分加1MOVA,R2XRLA,#60H;判是否到60分JNZRET0ACALLCLR0;到60分显示单元清0MOVR0,#7EH;时显示缓冲单元地址ACALLDAAD1;时加1MOVA,R2XRLA,#24H;判是否24小时JNZRET0ACALLCLR0;到24小时清缓冲单元RET0:POPACC;现场恢复POPPSWRET1;中断返回CLR0:CLRA;清缓冲单元子程序MOV@R0,A;十位数缓冲单元清0DECR0MOV@R0,A;个位数缓冲单元清0RET;返回4、清缓冲单元子程序:秒显示缓冲单元清0秒加1循环次数减1计数器重新加载现场保护PITO是否满8次是否60秒时显示缓冲单元清0是否24小时是否60分分值加1现场恢复时值加1分显示缓冲单元清0返回图10.16中断服务程序流程5.显示子程序数码管显示的数据存放在内存单元79H一7EH中,其中79H~7AH存放秒数据,7BH~7CH存放分数据,7DH~7EH存放时数据,每一地址单元内均为十进制BCD码。由于采用软件动态扫描实现数据显示功能,显示用十进制BCD码数据的对应段码存放在ROM表中。显示时,先取出79H~7EH某一地址中的数据,然后查得对应的显示用段码从P1口输出。P3口将对应的数码管选中,就能显示该地址单元的数据值。DISPLAY:MOVR0,#79H;建立显示缓冲区首址MOVR3,#FEH;从右数第一位显示MOVA,R3;扫描字放入ALD0:MOVP3,A;从P3口输出MOVA,@R0;取显示数据到AMOVDPTR,#TAB;取段码表地址MOVCA,@A+DPTR;查显示数据对应段码MOVP1,A;段码放P1口ACALLDL1MS;延时1msINCR0;指向下一地址MOVA,R3JBACC.5LD1;ACC.5=0一次显示结束RLA;A中数据循环左移MOVR3,A;将位控码送R3保存AJMPLD0;继续扫描LD1:RETTAB:DBC0H;字形代码表0DBF9H;1DBA4H;2DBB0H;3DB99H;4DB92H;5DB82H;6DBF8H;7DB80H;8DB90H;9DB88H;ADBFFH;灭DL1MS:MOVR6,#14H;1ms延时程序DL1:MOVR7,#19HDL2:DJNZR7,DL2DJNZR6,DL1RET
本文标题:第十章单片机应用系统设计课件
链接地址:https://www.777doc.com/doc-3107716 .html