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

    第三章常用控制程序设计.ppt

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

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

    第三章常用控制程序设计.ppt

    第三章 常用控制程序设计,3.1 判断程序设计 3.2 巡回检测程序设计 3.3 数字滤波程序设计 3.4 标度变换程序设计 3.5 上下限报警处理程序设计 3.6 LED数码管显示程序设计 3.7 定时程序设计 3.8 键盘控制程序设计 3.9 抗干扰技术 3.10 电机控制程序设计 3.11 步进电机控制,3.1 判断程序设计,3.1.1 算术判断程序 3.1.2 逻辑判断程序 3.1.3 标志判断程序,返回本章首页,判断程序就是分支执行程序。程序在执行时,首先判定给定的条件是否满足,根据判定的结果(真或假)再执行相应的操作。例如:在转速控制系统中,电机的恒速运转一般是通过控制输入电压来实现的,首先检测出电机的实际转速,再比较电机的实际转速和给定转速,如果电机的转速低于给定转速,就需要增加输入电压;如果电机的转速高于给定转速,就需要降低输入电压。上述功能的执行过程如图3-1所示。,图3-1 判断程序框图,MCS-51系列的程序状态字(PSW)是一个用于存储程序运行状态信息的8位寄存器,其位定义如表3-1所示。其中有些位状态是根据程序运算结果由硬件自动设置;而有些位状态则是通过软件设定的。PSW的位状态可通过指令读出,以实现程序的转移。,返回本节,3.1.1 算术判断程序,1.两个8位无符号数比较 2.两个16位无符号数比较 3.两个8位有符号数的比较,两个8位无符号数比较,图3-2 8位无符号数的比较流程框图,CLRCY;进位标志清零 MOVA,M;AMSUBBA,N;求MNJZEQU;累加器A=0,则M=N,转EQUJCLESS;CY=1,有借位,则MN处理程序;无借位,则MN,执行BIG处理程序EQU:M=N处理程序LESS:MN处理程序,8位无符号数的比较程序清单:,2.两个16位无符号数比较,图3-3 16位无符号数的比较流程框图,16位无符号数的比较程序清单:,CLRCY;标志位清零 MOVA,MH;AMHMOVR2,NH;R2NHSUBBA,R2;高8位比较JZHEQU;高8位相等,转低8位比较 JCLESS;有借位,转MN 理程序,HEQU:CLRCY;标志位清零 MOVA,ML;AMLMOVR2,NL;R2NLSUBBA,R2;低8位比较JZEQU;A=0,则M=N,转EQUJCLESS;有借位,则MN处理程序;无借位,执行MN 理程序EUQ:M=N 处理程序 LESS:MN 处理程序,3.两个8位有符号数的比较,由于M和N均为有符号数,M和N两数在比较时,可能出现以下四种情况:(1)M0,N0,即两数均为正数。(2)M0,N0,即M为负数,N为正数。(4)M0,N0,即两数均为负数。,图3-4 8位有符号数的比较流程框图,8位有符号数比较程序清单:,MOVA,M;AMMOVR2,N;R2NSUBBA,R2;M和N 比较JZEQU;M和N相等,转相等处理程序JBPSW.2,FLOW;判断是否溢出JBACC.7,LESS;无溢出,且A的最高位为1,则MNFLOW:JBACC.7,BIG;有溢出,且A的最高位为1,则MNLESS:MN处理程序 EUQ:M=N处理程序,返回本节,3.1.2 逻辑判断程序,逻辑判断程序的设计步骤:(1)读入数据(开关状态或阀门的位置);(2)屏蔽不需要的状态位;(3)与所要求的状态比较;(4)判断比较结果,选择程序入口。,例3-1图3-5中A、B、C、D表示4个开关,当四个开关均闭合时,顺序执行相应的程序,否则,继续检测。逻辑判断程序流程框图如图3-6所示。,图3-5 开关位置检测图,图3-6 开关状态检测流程图,逻辑判断程序清单:,CHECK:MOVA,P1;读入开关状态 ANLA,#55H;屏蔽无用位XRLA,#00H;判断A、B、C、D是否全部闭合JNZCHECK;A、B、C、D没全部闭合,继续检测;否则顺序执行相应程序,返回本节,3.1.3 标志判断程序,标志判断的设计思想是:根据某一设定的标志单元(或标志位)的状态,决定程序的执行方向。电机旋转方向控制程序流程图如图3-7所示。,图3-7 电机旋转方向控制程序流程图,电机旋转方向控制程序清单:,FLAGBIT 00H;设定00H为电机旋转方向控制位 JBFLAGRIGHT;FLAG=1,转RIGHTLEFT:;FLAG=0,顺时针旋转控制程序 RIGHT:;逆时针旋转控制程序,返回本节,3.2 巡回检测程序设计,3.2.1 概述 3.2.2 巡回检测举例,返回本章首页,3.2.1 概述,所谓的巡回检测就是对生产过程中的各个参数按照一定的周期进行检查和测量,检测的数据通过计算机处理后可以进行显示、打印和报警等操作。巡回检测程序主要由以下几个方面构成:1.采样周期T的确定 2.采样开关通道号的控制 3.A/D转换 4.数据处理,返回本节,3.2.2 巡回检测举例,1.利用8位A/D转换芯片(ADC0809)2.采用12位A/D转换芯片(AD574A),1.利用8位A/D转换芯片(ADC0809),图3-8 炉温巡回检测电路原理图,系统的硬件电路介绍:,(1)测量元件和变送器(2)A/D转换电路(3)二分频电路,本程序由系统初始化程序和中断程序组成。初始化程序完成中断向量和定时器初值的设定;中断程序完成数据采样工作,实现对8个通道的巡回检测。初始化程序功能:设置定时器0、外部中断0和外部中断1的中断程序入口;设置定时器0的工作方式为方式1,定时时间为100ms;设置计数单元(30H)初值。初始化程序流程框图如图3-9所示。,图3-9 初始化程序流程图,初始化程序清单:,ORG0000H AJMPSTART ORG0003H AJMPSAMPLE;转采样中断程序 ORG000BH AJMPTIME0;转8秒定时中断程序ORG0013HAJMPEOC;转EOC中断处理程序START:MOVTMOD,#01H;置定时器0为工作方式1 MOVTH0,#3CH,MOVTL0,#0B0H;定时器初值设定 MOV30H,#00H;置计数初值SETBIT0;中断请求信号为脉冲方式 SETBIT1;中断请求信号为脉冲方式 SETBEX0;外部中断0中断允许SETBET0;定时器0中断允许 SETBEA;开中断SETBTR0;启动定时器HERE:AJMPHERE;等待中断,定时器中断程序流程框图如图3-10所示。,图3-10 定时器中断程序流程框图,定时器中断程序程序清单:,TIME0:CLREA;关中断INC30H MOVA,30H XRLA,#50H;判断是否到8秒JZS_8;8秒定时到,转至S_8AJMPRECOUN;未到8秒,继续计时S_8:SETBP3.2;触发外部中断0NOP CLRP3.2 NOPRECOUN:MOVTH0,#3CH MOVTL0,#0B0H;设定定时器初值SETBEA;开中断RETI;中断返回,数据采样程序流程框图如图3-11所示。,数据采样程序程序清单:,SAMPLE:SETB00H;设置标志位 MOVDPTR,#0F00H;设置通道初值 MOVR6,#08H;设置通道数 MOVR7,#05H;设置采样次数 MOVR0,#40H;设置数据区首址 TRAN_S:MOVXDPTR,A;启动A/D转换程序流程图WAIT:JB00H,WAIT;标志位为1等待A/D转换完成中断,SETB00H;置标志位INCDPTR;通道号加1INCR0INCR0INCR0INCR0INCR0;45H为下一通道采样数据存放首址DJNZR6,#TRAN_S;8个通道采样未完,继续采样MOVDPTR,#0F00H;8个通道采样结束,重置通道初值INCR0;修改采样数据存放地址DJNZR7,TRAN_S;未完成5次采样,继续;数据处理程序.RETI,2.采用12位A/D转换芯片(AD574A),图3-14 AD574A和8031的硬件接口电路图,图3-15 AD574A A/D转换程序流程框图,D574A A/D转换程序清单:,ORG0000HAJMPSTARTORG0003HAJMPSAMPLE;转至数据采样程序START:MOVDPTR,#0000H;建立AD574A的地址MOVR0,#40H;设置数据存储初址SETBEX0;允许外部中断0SETBIT0;设置外部中断0请求信号方式为脉冲方式SETBEA;中断允许MOVXDPTR,A;启动A/D转换HERE:AJMPHERE;等待中断,中断服务程序清单:,SAMPLE:CLREA;关中断MOVDPTR,#0002H MOVXA,DPTR;读A/D转换数据的高8位MOVR0,A;保存数据INCR0INCDPTR MOVXA,DPTR;读A/D转换数据的低4位SETBEA;开中断RETI,返回本节,3.3 数字滤波程序设计,3.3.1 概述 3.3.2 数字滤波的方法,返回本章首页,3.3.1 概述,和模拟滤波装置相比,数字滤波有以下几个优点:(1)数字滤波通过程序实现,不需硬件设备,系统的可靠性较高。(2)数字滤波可实现多通道共用。(3)可对低频信号(如0.01Hz)实现滤波。(4)采用不同的算法和参数就可实现对不同信号的滤波,使用起来灵活、方便。,返回本节,3.3.2 数字滤波的方法,1.程序判断滤波 2.中值滤波 3.算术平均滤波 4.加权平均滤波 5.一阶滞后滤波 6.防脉冲干扰平均值法,1.程序判断滤波,限幅滤波就是把相邻的两次采样值相减,求出其增量(以绝对值表示),然后与两次采样允许的最大偏差值(由被控对象的实际情况决定)y进行比较,如果小于等于y,则取本次采样值;如果大于y,则仍取上次采样值作为本次采样值。即:Yn-Yn-1y,则Yn=Yn,取本次采样值Yn-Yn-1 y,则Yn=Yn-1,取上次采样值(3-1),限幅滤波程序流程框图如图3-16所示。,图3-16 限幅滤波程序流程框图,限幅滤波程序程序清单:,PUSHPSW;保护现场PUSHA CLRC;进位标志位清零MOVDATA,DATA2 MOVA,DATA1SUBBA,DATA;求Yn-1-YnJNCCOMPARE;如果Yn-1-Yn0,转COMPARECPLA;如果Yn-1-Yn0,求补 INCA,COMPARE:CLRCSUBBA,LIMIT;Yn-Yn-1和y比较JCOVER;如果Yn-Yn-1y,DATA2DATAMOVDATA,DATA1;如果Yn-Yn-1y,DATA1DATAOVER:POPA;恢复现场 POPPSWRET;返回,限速滤波的滤波原理如下:,设在顺序采样时刻T1、T2、T3所采集的数据分别为Y1、Y2、Y3,则当Y2-Y1y,则Y2作为采样值;Y2-Y1y,则保留Y2,但不作为采样值,继续采样得Y3;如果Y3-Y2y,则Y3作为采样值;Y3-Y2y,则取作为采样值。,2.中值滤波,所谓中值滤波法就是对某一被测参数连续采样n次(n一般取奇数),然后把n次采样值按顺序排列,取其中间值做为本次采样值。中值滤波程序的流程框图如图3-17所示。,图3-17 中值滤波程序流程框图,中值滤波程序程序清单:,PUSHPSWPUSHASORT:MOVR0,DATA;数据存储区单元首址MOVR7,TIME;读比较次数CLRFLAG;清交换标志位 LOOP:MOVA,R0;取第一个数MOVFIRST,A;保存第一个数INCR0MOVSECOND,R0;保存第二个数CLRCSUBBA,R0;两数比较,JCNEXT;第一数小于第二数,不交换MOVR0,FIRST DECR0MOVR0,SECOND;交换两数INCR0SETBFLAG;置交换标志位NEXT:DJNZR7,LOOP;进行下一次比较JBFLAG,SORT;进行下一轮比较DECR0CLRCMOVA,TIME,RRCAMOVR7,ACONT:DEC R0DJNZR7,CONTMOVSAMP,R0;取中值POPAPOPPSWRET,3.算术平均滤波所谓算术平均滤波就是把n个采样值相加,然后取其算术平均值作为本次有效的采样信号,即:,图3-18 算术平均滤波程序流程图,算术平均滤波程序清单:(本例中取采样次数n=8),PUSHPSW;现场保护 PUSHAMOVFLAG,#00H;进位位清零MOVR0,DATA;设置数据存储区首址MOVR7,#08H;设置采样数据个数CLRA;清累加器LOOP:ADDA,R0;两数相加JNCNEXT;无进位,转NEXTINCFLAG;有进位,进位位加1NEXT:INCR0;数据指针加1DJNZR7,LOOP;未加完,继续加MOVR7,#03H;设置循环次数,DIVIDE:MOVTEMP,A;保存累加器中的内容MOVA,FLAG;累加结果除2CLRC RRCAMOVFLAG,A MOVA,TEMP RRCA DJNZR7,DIVIDE;未结束,继续执行 MOVSAMP,A;保存结果至SAMP中POPA;恢复现场POPPSW RET,4.加权平均滤波,在算术平均滤波程序中,n次采样值在最后的结果中所占的比重是相等的,这样虽然消除了随机干扰,但有用信号的灵敏度也随之降低。为了提高滤波效果,将各个采样值取不同的比重,然后再相加求平均值,这种方法称为加权平均滤波。一个n项加权平均式为:,图3-19 加权平均滤波程序流程图,加权平均滤波程序清单:,PUSHPSW;保护现场PUSHAMOVR7,TIME;数据个数设置MOVR0,DATA;数据区首址设置MOVR1,COEFF;系数存储首址设置MOVFLAG,#00H;累加结果存储区清零MOVSAMP_L,#00H MOVSAMP_H,#00HLOOP:MOVA,R0;读采样值MOVB,AMOVA,R1;读加权平均系数,MULABCLRCADDA,SAMP_L;累加和MOVSAMP_L,AMOVA,BADDCA,SAMP_HJNCNEXT INCFLAG NEXT:MOVSAMP_H,A INCR0;数据区地址加1 INCR1;系数地址加1 DJNZR7,LOOP;未加完,继续MOVR7,#07H;设置循环次数,DIV128:CLRCMOVA,FLAG;累加结果除2RRCA MOVFLAG,AMOVA,SAMP_HRRCAMOVSAMP_H,AMOVA,SAMP_LRRCAMOVSAMP_L,ADJNZR7,DIV128;未除完,继续MOVSAMP,SAMP_L;保存滤波后采样值POPA;恢复现场POPPSWRET,5.一阶滞后滤波,图3-20 一阶滞后滤波程序流程图,一阶滞后滤波程序清单:,MOVMUL1_H,COEFF1_HMOVMUL1_L,COEFF1_LMOVMUL2_H,DATA1_HMOVMUL2_H,DATA1_LACALLMULTD;MOVBUFF1,PR_H MOVBUFF2,PR_L MOVMUL1_H,COEFF2_H MOVMUL1_L,COEFF2_L,MOVMUL2_H,DATA2_HMOVMUL2_H,DATA2_L ACALLMULTD;CLRCMOVA,PR_H;ADDA,BUFF1 MOVPR_H,AMOVA,PR_LADDCA,BUFF2;MOVPR_L,A,双字节无符号位乘法子程序(MULTD)。,入口条件:乘数MUL1存于MUL1_H和MUL1_L单元中,被乘数MUL2存于MUL2_H和MUL2_L单元中。出口条件:乘积按顺序存于PR_H、PR_L、MUL1_H、MUL1_L单元中。,MULTD:CLR C;清进位标志位MOVPR_L,#00H;乘积高8位清零 MOVPR_H,#00HMOVR7,#11H;设置循环次数LOOP1:JNCLOOP2;进位标志位为零,转LOOP2MOVA,PR_L;PR+MUL2ADDA,MUL2_LMOVPR_L,AMOVA,PR_HADDCA,MUL2_HMOVPR_H,A,LOOP2:MOVA,PR_H;PR右移一位RRCAMOVPR_H,AMOVA,PR_LRRCAMOVPR_L,AMOVA,MUL1_H;MUL1右移一位RRCAMOVMUL1_H,AMOVA,MUL1_L RRCAMOVMUL1_L,A DJNZR7,LOOP1;循环未结束,继续,6.防脉冲干扰平均值法,图3-21 防脉冲干扰平均值法程序流程框图,防脉冲干扰平均值法程序清单:,PUSHA;保护现场PUSHPSWSORT:MOVR0,DATA;数据存储区单元首址MOVR7,#10H;读比较次数CLRCHANGE;清交换标志位 LOOP:MOVA,R0;取第一个数MOVFIRST,A;保存第一个数INCR0MOVSECOND,R0;保存第二个数CLRCSUBBA,R0;两数比较,JCNEXT;第一数小于第二数,不交换MOVR0,FIRST DECR0MOVR0,SECOND;交换两数INCR0SETBCHANGE;置交换标志位NEXT:DJNZR7,LOOP;进行下一次比较JBCHANGE,SORT;进行下一轮比较 MOVFLAG,#00H;进位位清零 INCDATA;去掉最小值MOVR0,DATA;设置数据存储区首址MOVR7,#08H;设置累加循环次数,去掉最大值 CLRA;清累加器 LOOP:ADDA,R0;两数相加 JNCNEXT;无进位,转NEXT INCFLAG;有进位,进位位加1,NEXT:INCR0;数据指针加1 DJNZR7,LOOP;未加完,继续加MOVR7,#03H;设置循环次数DIVIDE:MOVTEMP,A;保存累加器中的内容MOVA,FLAG;累加结果除2CLRC RRCAMOVFLAG,AMOVA,TEMPRRCA DJNZR7,DIVIDE;未结束,继续执行MOVSAMP,A;保存结果至SAMP中POPA;恢复现场POPPSWRET,返回本节,3.4 标度变换程序设计,对于一般的线性仪表而言,标度变换公式为:,为了简化程序设计,一般把被测参数的起点A0所对应的A/D转换值设定为0,即N0=0,这样式(3-6)可以改写为:,返回本章首页,例3-2某温度测量仪表的量程为100900,利用8031和ADC0809进行A/D转换。在某一时刻计算机采样并经过数字滤波后的的数字量为0CDH求此时对应的温度值是多少?(设仪表的量程是线性的)解:由式(3-7)可知,A0=100,Am=900,Nx=0CDH=(205)D,Nm=0FFH=(255)D,所以此时对应的温度为:,标度变换程序清单:,BDCHAN:MOVSUB1_L,AM;INCAM MOVSUB1_H,AMMOVSUB2_L,A0INCA0MOVSUB2_H,A0ACALLSUB2MOVMUL1_H,DIFF_HMOVMUL1_L,DIFF_LMOVSUB1_L,NX;,INCNX MOVSUB1_H,NXMOVSUB2_L,N0INCN0MOVSUB2_H,N0ACALLSUB2MOVMUL2_H,DIFF_HMOVMUL2_L,DIFF_LACALLMULTD;求MOVDIV1_H,PR_HMOVDIV1_L,PR_LMOVSUB1_L,NM;,INCNMMOVSUB1_H,NMMOVSUB2_L,N0INCN0MOVSUB2_H,N0ACALLSUB2MOVDIV2_H,DIFF_HMOVDIV2_L,DIFF_LACALLDUBDIV;CLRCMOVA,DIV1_L,ADDCA,A0MOVAX,AINCA0MOVA,DIV1_HADDCA,A0MOVAX,A;RET,双字节减法子程序(SUB2),双字节减法子程序(SUB2)程序入口:被减数放在SUB1_H、SUB1_L单元中,减数放在 SUB2_H、SUB2_L单元中;程序出口:差放在 DIFF_H、DIFF_L单元中。SUB2:CLRCMOVA,SUB1_L;ASUB1_LSUBBA,SUB2_L;低8位相减MOVDIFF_L,A;保存低8位差值MOVA,SUB1_H;ASUB1_HSUBBA,SUB2_H;高8位相减MOVDIFF_H,A;保存高8位差值RET,双字节无符号数除法(DUBDIV),程序入口:被除数存放在DIV1_H、DIV1_L单元中,除数存放在 DIV2_H、DIV2_L单元中;程序出口:商存放在 DIV1_H、DIV1_L单元中,余数存放在L_L和L_H单元中。DUBDIV:CLRA;余数单元清零MOVL_H,AMOVL_L,AMOVR0,#10H;设置除法移位次数 LOOP:CLRC;移位MOVA,DIV1_L,RLCAMOVDIV1_L,AMOVA,DIV1_HRLCAMOVDIV1_H,AMOVA,L_LRLCAMOVL_L,AMOVA,L_HRLCAMOVL_H,AMOVPSW.5,C,LP1:MOVA,L_L;余数单元减除数SUBBA,DIV2_LMOVR1,AMOVA,L_HSUBBA,DIV2_H JBPSW.5 ADD1JCSMALLADD1:MOVL_H,AMOVA,R1MOVL_L,AINCDIV1_L;商加一 SAMLL:DJNZR0,LOOP,MOV20H,L_H;四舍五入 JB07H,ADD_D;商的最高位为1,则转ADD_DCLRC;判断小数部分是否大于0.5MOVA,L_LRLCAMOVL_L,AMOVA,L_HRLCASUBBA,DIV2_H,JCRETURN;小数部分小于0.5,退出JNZADD1;小数部分大于0.5,则转ADD_DMOVA,L_LSUBBA,DIV2_LJCRETURNADD_D:CLRC;商加一INCDIV1_LMOVA,DIV1_HADDCA,#00HMOVDIV1_H,ARETURN:RET,返回本节,3.5 上下限报警处理程序设计,报警程序主要有以下几个步骤组成:(1)采样被测参数。(2)比较采样值和给定的上下限。(3)根据比较结果执行相应的处理程序。,返回本章首页,例3-3设计一简单的单字节上下限报警程序,当采样值超出上、下限时,分别执行相应的报警处理程序。设上限报警值存放在Amax单元,下限报警值存放在Amin单元,采样值存放在SAMP单元。简单上下限报警程序程序清单如下:,.CLRC;清进位标志位MOVA,Amax;读上限报警值SUBBA,SAMP;判断是否超过上限报警值 JCUPPER;超过上限,转报警处理程序MOVA,Amin;读下限报警值SUBBA,SAMP;判断是否超过下限报警值JNCLOWER;超过下限,转报警处理程序UPPER:超上限处理程序。LOWER:超下限处理程序。,例3-4 设计一报警处理程序。只有采样值连续3次异常时,系统才进行报警处理。报警程序流程框图如图3-23所示。,图3-23 报警程序流程框图,报警程序清单:,MOVNUM,#03HCHECK:CLRC;清进位标志位MOVA,Amax;读上限报警值SUBBA,SAMP;判断是否超过上限报警值 JCABNORMAL;超过上限,转ABNORMALMOVA,Amin;读下限报警值SUBBA,SAMP;判断是否超过下限报警值JNCABNORMAL;超过下限,转ABNORMAL,CLRFLAG;采样正常,清采样异常标志位AJMPRETUABNORMAL:JBFLAG,ABNOR_L;上次采样异常,转ABNOR_L MOVNUM,#03H;上次采样正常,重置允许连续异常次数SETBFLAG;置位采样异常标志位AJMPRETU ABNOR_L:MOVA,NUM;读允许连续采样异常次数JZALARM;允许采样异常次数=0,执行报警处理程序DECNUM;允许采样异常次数0,允许采样异常次数减1SETBFLAG;置位采样异常标志位AJMPRETUALARM1:.;报警处理程序.RETU:RET,返回本节,3.6 LED数码管显示程序设计,3.6.1 LED显示器件工作原理 3.6.2 LED显示方式 3.6.3 LED显示程序设计,返回本章首页,3.6.1 LED显示器件工作原理,LED显示器件是通过发光二极管显示字段的器件。在单片机控制系统中常用的是由7段LED数码管,它的显示块中有8个发光二极管,7个发光二极管组成字符“8”,1个发光二极管构成小数点,因此有人称7段LED数码管为8段显示器。LED数码管的管脚配置如图3-24所示。LED数码管有共阴极和共阳极两类,如图3-24所示。共阴极LED数码管的发光二极管的阴极共地,如图3.25(a),当某个发光二极管的阳极电压为高电平时,二极管发光;而共阳极LED数码管是发光二极管的阳极共接,如图3.25(b),当某个二极管的阴极电压为低电平时,二极管发光。,图3-24 LED数码管管脚配置图,(a)共阴极,(b)共阳极,图3-25 两类LED数码管,表3-2 7段LED段选码,返回本节,3.6.2 LED显示方式,在微机控制系统中,一般利用N块LED显示器件构成N位LED显示器。构成原理图如图3-26所示。,图3-26 N位LED显示器原理图,1.LED静态显示方式图3-27表示的是一个四位静态LED显示电路。,图3-27 四位静态LED显示电路,2.LED动态显示方式LED动态显示就是将所有显示位的段选线并联在一起,由一个8位I/O口控制,而位选线则由其他的I/O口控制。图3-28表示的是一个8位动态LED显示电路。,图3-28 8位动态LED显示电路,返回本节,3.6.3 LED显示程序设计,1.硬件译码显示程序设计MC14495是CMOS BCD七段十六进制锁存、译码驱动芯片。MC14495能完成BCD码至十六进制数的锁存和译码,并具有驱动能力。利用MC14495实现的8位静态LED显示接口电路如图3-29所示。,图3-29 利用MC14495实现的8位静态LED显示接口电路图,设要显示的BCD码放在以DATA为首址的RAM单元中。显示程序设计如下:,MOVR0,DATA;设置数据区首址MOVA,R0;读要显示的BCD码ADDA,#80H MOVP1,A;显示第一位INCR0MOVA,R0ADDA,#90HMOVP1,A;显示第二位INCR0.INCR0MOVA,R0ADDA,#F0HMOVP1,A;显示第八位,2.软件译码显示程序设计,(1)软件译码静态显示电路(2)软件译码动态显示电路,(1)软件译码静态显示电路,图3-30为一采用8位串行输入/串、并输出移位寄存器74LS595的两位软件译码静态显示电路。该电路采用串行输入控制方案实现字符的显示,大大减少了I/O口线的占用。如果需要显示更多的位数时,只需级连多片74LS595即可,且不必占用其他的I/O口线。,图3-30 通过74LS595实现的软件译码静态显示电路,显示程序流程框图如图3-31所示。,(a)显示主程序,(b)串行输出程序,显示程序清单:,DATBITP1.7TRANBITP1.6PULBITP1.5SHOW:CLRCMOVDPTR,#3000H;设定段选码的初始地址START:MOVA,DATA;读要显示的数据ANLA,#0F0H;屏蔽低4位SWAPA;高4位和低4位互换ACALLSET8WEI;串行输出子程序调用MOVA,DATA ANLA,#0FH;屏蔽高4位,ACALLSET8WEI;串行输出子程序调用NOPNOPSETBTRAN;锁存并显示输出数据NOPNOPCLRTRANNOPNOPRETSET8WEI:MOVCA,A+DPTR;读显示字符的段选码MOVR7,#08H;设置循环次数,SET81:RRCA;段选码的最低位移入进位标志位中JCSETH;CY=1,转至SETHCLRDAT;P1.7为低电平NOP CLRPUL;送移位脉冲NOP SETBPULNOP AJMPSET82 SETH:SETBDAT;P1.7为高电平,NOPCLRPUL NOPSETBPULNOPSET82:DJNZR7,SET81;段选码输出未完成,继续RETORG3000H;共阴极LED显示段选码DB3FH,06H,5BH,4FH,06H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,(2)软件译码动态显示电路,图3.32给出的是通过8155扩展实现的8位LED动态显示接口。图中利用PA口输出段选码,PB口输出位选码。利用8155扩展实现的动态显示程序流程如图3-32所示。,利用8155扩展实现的动态显示程序清单:,DISP:MOVA,#03H;8155初始化数据 MOVDPTR,#7F00H;8155命令/状态寄存器地址MOVXDPTR,A;设置显示数据首址 MOVR7,#7FH;设置位选字 MOVA,R7 DS1:MOVDPTR,#7F02H;指向PB口 MOVXDPTR,A;送位选字 DECDPTR;指向PA口 MOVA,R0;读显示数据 ADDA,#0DH;#0DH为从查表指令到段选码的首址,MOVCA,A+PC;查段选码 MOVXDPTR,A;送段选码至PA口 ACALLDELAY1;延时1毫秒 INCR0;指向下一显示数据 MOVA,R7 JNBACC.0,OVER;判断是否显示完8位数据RRA;未显示完,改变位选字 MOVR7,A AJMPDS1;继续显示下一位 OVER:RET DB3FH,06H,5BH,4FH,06H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,返回本节,3.7 定时程序设计,3.7.1 软件定时程序 3.7.2 硬件定时程序,返回本章首页,3.7.1 软件定时程序,双循环定时程序流程如图3-33所示。,如取N=166(0A6H),上述简单软件定时程序的定时时间就是1ms,如果需要250ms的定时时间,则所需的外循环的次数为250(0FAH)。程序如下:DELAY250:MOVR6,#0FAH;置外循环次数DELAY1:MOVR7,#0A6H;置内循环次数NOP;空操作指令 D1:NOP DJNZR7,D1;内循环未结束,继续DJNZR6,DELAY1;外循环未结束,继续RET,返回本节,3.7.2 硬件定时程序,51系列单片机内部有两个16位的可编程定时器T0和T1,分别由TH0、TL0和TH1、TL1两个8位计数器构成。T0和T1的定时功能是通过对单片机内部计数脉冲的计数实现的。因为每个机器周期产生一个计数脉冲,因此根据单片机的晶振频率就可以计算出定时器的计数频率。这样,如果确定了计数值,就能计算出定时时间,而知道了定时时间也可计算出计数器的预置值。定时器控制寄存器(TCON)和工作方式控制寄存器(TMOD)分别控制定时器的运行和工作方式。,1.定时器简介TMOD寄存器是控制定时器工作方式的8位专用寄存器。寄存器的高4位定义T1,低4位定T0。各位的具体定义如表3-3所示。,2.硬件定时程序设计例3-5设单片机的晶振频率为6 MHz,利用T0产生周期为500s的等宽正方波脉冲,通过P1.7端口输出。(1)选择工作方式(2)计算预置计数值(3)TMOD寄存器初始化(4)程序设计,程序设计,主程序:MOVTMOD,#02H;T0工作方式2MOVTH0,#83H;设置计数初始值MOVTL0,#83H;保存计数初始值SETBEA;开中断SETBET0;T0中断允许 SETBTR0;启动定时 WAIT:AJMPWAIT;等待中断中断服务程序:CPLP1.7;方波输出RETI;中断返回,例3-6设计一个能够自动记录秒、分和小时的计时时钟。程序设计分为初始化和中断服务程序两部分。初始化程序清单:ORG0000HAJMPMAINORG0003HAJMPINT0;设置外部中断0中断入口地址ORG000BH,AJMPTIME0;设置T0中断入口地址ORG001BHAJMPCOUN1;设置T1中断入口地址MAIN:MOVSEC,#00H;秒存储单元清0MOVMIN,#00H;分存储单元清0MOVHUR,#00H;小时存储单元清0MOVTMOD,#41H;T1为计数方式,定时器0工作方式1 MOVTH0,#17H;设置T0的计数初值MOVTL0,#0B6HMOVTH1,#0FFH;设置T1的计数初值MOVTL1,#0F7H,SETBEA;开中断SETBIT0;外中断0中断请求信号为脉冲方式SETBET1;T1中断允许SETBET0;T0中断允许SETBEX0;外中断0中断允许SETBTR0;启动定时器0SETBTR1;启动计数器1HERE:AJMPHERE;等待中断,中断服务程序分以下几部分。,定时器T0定时中断程序清单:TIME0:CLREA;关中断SETBP3.5;发计数脉冲NOPCLRP3.5NOP MOVTH0,#17H;加载T0计数值MOVTL0,#0B6HSETBEA;开中断RETI;中断返回,计数器T1计数中断程序清单:,COUN1:CLREA;关中断SETBP3.2;发送脉冲,通知1秒计时到NOPCLRP3.2NOPMOVTH1,#0FFH;加载T1计数值MOVTL1,#0F7HSETBEARETI,外部中断0中断程序流程如图3-34所示。,外部中断0中断程序清单:,INT0:CLREA;关中断 INCSEC;秒存储单元加1MOVA,SECCJNEA,#3CH,S_SHOW;判断是否到60秒INCMIN;60秒到,分存储单元加1MOVSEC,#00H;秒存储单元清0S_SHOW:ACALLHTOBCD;调用16进制数转化为BCD码子程序 ACALLDISP;调用显示子程序,显示秒 MOVA,MINCJNEA,#3CH,M_SHOW;判断是否到60分,INCHUR;60分到,小时存储单元加1MOVMIN,#00H;小时存储单元清0M_SHOW:ACALLHTOBCD;调用16进制数转化为BCD码子程序ACALLDISP;调用显示子程序,显示分MOVA,HURCJNEA,#18H,H_SHOW;判断是否到24小时MOVHUR,#00H;24小时到,小时存储单元清0H_SHOW:ACALLHTOBCD;调用16进制数转化为BCD码子程序ACALLDISP;调用显示子程序,显示小时SETBEA;开中断RETI;中断返回,返回本节,3.8 键盘控制程序设计,3.8.1 非编码键盘的扫描程序设计 3.8.2 编码键盘,返回本章首页,3.8.1 非编码键盘的扫描程序设计,下面以通过8155扩展I/O口组成的48非编码键盘为例介绍行列式键盘工作原理及扫描程序设计。通过8155扩展I/O口组成的48非编码键盘如图3-35所示。,图3-35 8155扩展I/O口组成的48非编码键盘,1.键盘工作原理 确定按下的键的键号:为了方便键处理程序的设计,一般采用依次排列键值的方法,以保证键值和键号一致。比如,根据行列式键盘工作原理,图3-35中的32个键的键值如下(X为任意值):FEXEFDXEFBXEF7XEEFXEDFXEBFXE7FXEFEXDFDXDFBXDF7XDEFXDDFXDBFXD7FXD FEXBFDXBFBXBF7XBEFXBDFXBBFXB7FXBFEX7FDX7FBX7F7X7EFX7DFX7BFX77FX7,2.键盘扫描程序设计,较常用的键盘扫描的工作方式有编程扫描方式和中断扫描方式两种。(1)编程扫描方式设在主程序中已将8155的PA口为基本输出口,PC口为基本输入口。键盘扫描程序流程框图如图3-36所示。,图3-36 键盘扫描程序流程框图,键盘扫描子程序清单:,KEY1:ACALLKS1;有无键按下子程序JNZLK1;有键按下,转去抖延时AJMPKEY1;无键按下,继续扫描LK1:ACALLDELA12;12ms延时程序调用ACALLKS1;判断键是否真正按下 JNZLK2;有键按下,转逐列扫描AJMPKEY1;无键按下,继续扫描LK2:MOVR2,#0FEH;设置首列扫描字MOVR4,#00H;保存首列号 LK4:MOVDPTR,#7F01H;列扫描字送至PA口,MOVA,R2 MOVXDPTR,A INCDPTR;指向PC口 INCDPTR MOVXA,DPTR;读入行状态 JBACC.0,LONE;第0行无键按下,转LONE MOVA,#00H;有键按下,设置行首键号 AJMPLKP;转求键号 LONE:JBACC.1,LTWO;第

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开