版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模块三单片机应用电路
实例设计及制作
主编:高玉泉模块三单片机应用电路
实例设计及制作
单元1彩灯控制器的设计及制作 单元2加法运算器设计及制作 单元3数显抢答器设计及制作 单元4篮球比赛计分器设计及制作
单元1彩灯控制器的设计及制作知识目标:1.掌握单片机控制的彩灯控制器硬件电路设计方法。2.掌握单片机控制的彩灯控制器软件设计方法。3.能够熟练应用CJNE指令。技能目标:1.掌握彩灯控制器软件设计方法。2.掌握单片机控制的彩灯控制器硬件电路安装和调试方法。模块三单元1任务多种彩灯的设计及制作任务多种彩灯的设计及制作一、任务描述(见表3-1所示)表3-1任务描述
模块三工作任务要求彩灯控制器硬件电路设计掌握彩灯控制器硬件电路设计方法彩灯控制器软件电路设计掌握彩灯控制器软件设计方法彩灯控制器硬件电路安装和调试掌握彩灯控制器硬件电路安装和调试方法理解CJNE指令熟练应用CJNE指令编制程序单元1任务多种彩灯的设计及制作
二、任务分析彩灯的应用十分广泛,由数字电路设计的彩灯控制器亮灯方式单调,花样单一,维修及改变灯光控制方式十分复杂;而由单片机设计的彩灯控制器,成本低,控制方式灵活,维修及改变控制方式方便,只需改变单片机的程序即可实现多种亮灯控制方式。任务内容:单片机控制的彩灯控制器设计:接于P2口的8路彩灯按如图3-1所示的方式亮灯,设计控制电路及程序。通过对比较转移指令学习、单片机控制的彩灯控制器硬件、软件设计及安装,掌握彩灯控制器的软件和硬件设计方法。模块三单元1任务多种彩灯的设计及制作
模块三图3-1彩灯亮灯方式单元1任务多种彩灯的设计及制作
模块三三、相关知识1.比较转移指令CJNEA,#data,rel;若Adata,则转移;若A=data,顺序执行下一条指令;若A≥data,C清“0”;若A<data,C置“1”CJNEA,direct,rel;若A(direct),则转移;若A=(direct),顺序执行下一条指令;若A≥(direct),C清“0”;若A<(direct),C置“1”CJNERn,#data,rel;若Rndata,则转移;若Rn=data,顺序执行下一条指令;若Rn≥data,C清“0”;若Rn<data,C置“1”CJNE@Ri,#data,rel;若(Ri)data,则转移;若(Ri)=data,顺序执行下一条指令;若(Ri)≥data,C清“0”
;若(Ri)<data,C置“1”这4条指令的功能是比较两个操作数的大小,如果它们的值不相等,则转移到目标地址。如果第一个操作数小于第二个操作数,则进位标志CY置“1”,否则清“0”。指令执行不影响任何一个操作数。单元1任务多种彩灯的设计及制作模块三2..指令应用举例例:分析执行CJNEA,#20H,K1指令后,程序转移的目的地址,并指出执行下列程序后R1的值及CY的值。单元1任务多种彩灯的设计及制作模块三四、任务准备1.电工常用工具每人一套。2.电工操作台两人一台。3.安装有伟福6000软件电脑及下载设备两人一套。4.材料元器件明细如表3-2所示。单元1任务多种彩灯的设计及制作模块三序号元件名称元件型号元件数量备注1单片机芯片AT89S511片DIP封装2发光二极管Φ58只普通型3晶振6MHz1只普通型4电容30pF2只瓷片电容10uF1只电解电容5电阻470Ω9只碳膜电阻10kΩ1只碳膜电阻6电阻1K2只碳膜电阻7按键1只无自锁840脚IC座1片安装AT89S51芯片9细导线、焊锡若干10万能电路板4×15cm21片表3-2彩灯控制器元器件明细表单元1任务多种彩灯的设计及制作模块三五、任务实施1.电路分析和设计单片机工作条件设计:40脚接+5V电源正极,20脚接电源负极;18脚、19脚外接6MHz晶振及两个30pF瓷片电容,9脚接按键复位电路(以后电路中单片机工作条件与此相同将省略)。P2口分别通过8个电阻接8只发光二极管,发光二极管采用共阳极连接形式,根据P2口的结构,在此电路中具有足够的驱动能力,不需再加驱动电路;若接成共阴极形式,驱动能力不够,发光二极管亮度低。单元1任务多种彩灯的设计及制作模块三【注意】:在实际应用时,若节日彩灯或广告霓虹灯,需外加隔离电路(光电耦合器)和驱动电路(如晶闸管或继电器等)。设计完成的电路原理图如图3-2所示。图3-2彩灯控制器电路原理图单元1任务多种彩灯的设计及制作模块三2.程序分析和设计延时采用调用延时子程序的方式来实现,延时子程序为多重循环结构。(1)程序分析本系统为实现复杂的亮灯控制方式,采用查表方法,将用户的亮灯数据存放在一张数据表中(读者可参考文中的亮灯方式图与亮灯数据的对应关系,低电平灯亮,高电平灯灭,编写出自己喜爱的亮灯方式的控制数据),通过修改数据索引值(数据在表中的序号),不断取出亮灯数据来实现复杂而又有规律的亮灯控制方式。单元1任务多种彩灯的设计及制作模块三为实现循环亮灯,把亮灯数据表中的最后一个数据设置为结束码,每次所取的亮灯数据与结束码比较,若判断是结束码,则一次循环亮灯结束,将索引值清“0”,转下一次循环亮灯;若不是结束码,则将所取数据输出显示,同时表示本次循环亮灯还没结束,亮灯数据索引值加1,转取下一个亮灯数据。每两个亮灯数据之间应有相应的延时时间,以便看清每次的亮灯情况,本程序中设置为1s延时时间,调节该延时时间可调节亮灯速度。单元1任务多种彩灯的设计及制作模块三1)初始化本程序应用查表指令MOVCA,@A+DPTR取得亮灯数据,在使用查表指令时先要获得两个数据,即数据表首地址和索引值。所以,程序首先进行初始化,将数据表首地址赋给数据指针寄存器DPTR,将索引值寄存器Rl清“0”(在查表指令中A在查表前存放索引值,在查表后存放查表所取得的数据,所以A不能直接作为索引值寄存器,只能用其他的存储单元Rl作索引值存储单元,在进行查表时将数据索引值先传送给A再查表),查表指针(DPTR的值加上A的值,即数据表首址加上数据索引值)指向数据表中的第一个数据。单元1任务多种彩灯的设计及制作模块三2)查表初始化后,应用查表指令取得亮灯数据。在使用查表指令时,数据表的首地址送给数据指针DPTR,索引值送给A,DPTR的内容加上A的内容(即数据表首址加上数据在表中的偏移量)即为所要取的数据在表中的地址。然后通过索引值加1,依次取得表中数据,查表取得的数据存放在A中。单元1任务多种彩灯的设计及制作模块三
3)循环结束判断
每次取数据后应判断是否为一次循环结束,通过在数据表中放入一个结束码(结束码为在亮灯数据中不会出现的数据,本程序中取结束码为3DH)来实现一次循环结束的判断,结束码放在数据表的最后。若取得的数据为结束码,则表示一次循环结束,将索引值寄存器清“0”,转入下一次循环操作。若取得的数据不为结束码,则将数据送至P2口输出,驱动LED点亮;然后将数据索引值加1,准备取下一个数据。单元1任务多种彩灯的设计及制作模块三4)亮灯延时
每次输出亮灯数据后应延时,以便LED点亮一段时间,否则无法看清;通过调节延时时间来调节LED的闪烁速度,在本程序中通过调用延时子程序来实现延时。按以上任务分析得到如图3-3所示的程序设计流程图。单元1任务多种彩灯的设计及制作模块三图3-3彩灯控制器程序流程图单元1任务多种彩灯的设计及制作模块三(2)程序设计1)初始化程序设计时一般在程序开始部分均有初始化过程,给一些内存单元赋初值,初始化通常用数据传送指令来实现。在本程序中用数据传送指令MOVRL,#00H将索引值寄存器R1清“0”,用指令MOVDPTR,#TAB将数据首地址#TAB赋给DPTR。单元1任务多种彩灯的设计及制作模块三2)查表初始化后,进行查表取得亮灯数据,在查表时首先要用数据传送指令MOVA,Rl将存放在Rl中的索引值送给A,然后用查表指令MOVCA,@A+DPTR取出亮灯数据,DPTR的值加上A的值即为所取数据的地址,将该地址中的数据送给A。单元1任务多种彩灯的设计及制作模块三
(3)循环结束判断对查表取出的数据进行判断是否为结束码,应用控制转移类指令中的比较转移指令CJNEA,3DH,DISP,判断A中的数据是否等于结束码3DH,若相等则顺序执行下一条指令,即本次循环结束,用MOVRl,#OOH将索引值寄存器清“0”,程序转移至标号为START的指令处执行,重新取数据表中的第一个数据,进行下一次循环亮灯操作;若A中的数据不等于结束码则程序转移至标号为DISP的指令处执行,即用MOVP2,A指令将A中的数据送P2口输出,然后用加1指令INCRl将索引值加1,为取下一个数据作准备。单元1任务多种彩灯的设计及制作模块三
(4)亮灯延时亮灯数据经P2口输出后,应使灯亮延时一段时间,然后再取下一个数据输出,否则将无法看清当前数据的亮灯情况。应用子程序调用指令LCALLDELLAY调用延时子程序实现延时,其中DELLAY为延时子程序第一条指令的标号(相当于其他计算机语言中的子程序名)。单元1任务多种彩灯的设计及制作模块三(5)数据表
亮灯数据表用伪指令中的字节定义指令DB定义,标号TAB表示数据表的首地址,数据表可以分行写,但每行均必须以DB指令开始。每个数据之间必须用逗号分隔,如是字母开头的数据,则要在前面加0。以第一个亮灯状态为例,说明亮灯情况与P2口输出值的对应关系。单元1任务多种彩灯的设计及制作模块三按照上述对应关系,得到如图3-4所示的P2口输出亮灯数据表。单元1任务多种彩灯的设计及制作模块三图3-4P2口输出亮灯数据表单元1任务多种彩灯的设计及制作模块三根据以上任务分析和任务实施过程编写的源程序如下:ORGOOOOHMOVRl,#OOH;将数据表索引值寄存器清“0”MOVDPTR,#TAB;将数据表首地址赋给基址寄存器;DPTRSTART:MOVA,Rl;索引值送AMOVCA,@A+DPTR;利用查表指令取出亮灯数据CJNEA,3DH,DISP;判断是否为亮灯结束码,若是则;将索引值清“0”,进行下一次亮灯;循环;若不是则输出单元1任务多种彩灯的设计及制作模块三MOVRl,#OOHSJMPSTARTDISP:MOVP2,A;将亮灯数据通过P2口输出INCRl;索引值加1LCALLDELAY;调用1s延时程序SJMPSTART;转取下一个亮灯数据DELAY:MOVR5,#02;1s延时子程序Kl:MOVR6,#250K2:MOVR7,#250K3:NOPNOPDJNZR7,K3DJNZR6,K2DJNZR5,KlRETTAB:DBOE7H,OC3H981H,OOH90FFH;亮灯数据表DB7FH,3FH,1FH,OFH,07H,03H,OIH,OOH,OFFHDB55H,OAAH,55H,OAAH,OFFH,OOH,OFFH,OOHDBOFFH,3DH单元1任务多种彩灯的设计及制作模块三
3.程序仿真与调试(1)运行WAVE6000软件,将本任务中的汇编源程序以文件名CD.ASM保存,添加到工程文件。(2)利用WAVE6000软件进行模拟仿真;如图3-5所示。端口P2显示亮灯输出变化情况,观察亮灯状况,是否和设计相符?理解指令CJNEA,#OD3H,DISP,MOVCA,@A+DPTR的含义;将有关数据填入表3-3。单元1任务多种彩灯的设计及制作模块三(3)如果发光二极管采用阴极连接方式,即8只发光二极管阴极相连后接地,阳极分别通过一个电阻接到P2口的8位,仍按图3-1要求的方式亮灯,则亮灯数据表应该如何修改,修改后仿真运行,观察电路运行情况。表3-3彩灯控制器模拟仿真数据变化表单元1任务多种彩灯的设计及制作模块三图3-5彩灯控制器模拟仿真图单元1任务多种彩灯的设计及制作模块三4.彩灯控制器制作(1)存盘后CD.HEX十六进制文件下载到AT89S51单片机中。(2)按电路原理图在万能线路板上按工艺要求,布线、连线、焊接、安装。(3)将下载好程序的AT89S51单片机安装到单片机插座上,调试运行,首先按动复位键,看是否达到设计要求,总结成功经验和分析出现问题原因。单元1任务多种彩灯的设计及制作模块三六、检查评议彩灯控制器安装调试考核表如表3-4所示。单元1任务多种彩灯的设计及制作模块三1.技能训练(1)用protel软件绘制出本设计任务的电路原理图,并设计印制电路板图及制作印制电路板。(2)连接仿真器,将本设计任务的程序输入计算机,并进行仿真调试及运行。(3)连接编程器,将仿真通过的程序代码下载到单片机中,脱机运行并观察电路运行情况。(4)自行设计一亮灯数据表,修改程序后仿真运行,观察电路运行情况。(5)要求每个亮灯状态延时时间为2s,程序应如何修改,程序修改后仿真运行,观察电路运行情况。七、考证要点单元2加法运算器设计及制作模块三知识目标:1.理解DAA指令。2.熟练掌握LED数码管显示器原理。技能目标:1.掌握加法运算器硬件电路设计方法。2.掌握加法运算器软件设计方法。3.掌握加法运算器硬件电路安装和调试方法。单元2加法运算器设计及制作任务个位数加法运算器的制作一、任务描述(见表3-5所示)表3-5任务描述模块三
工作任务要求加法运算器硬件电路设计掌握加法运算器硬件电路设计方法加法运算器软件电路设计掌握加法运算器软件设计方法加法运算器硬件电路安装和调试掌握加法运算器硬件电路安装和调试方法理解DAA指令的含义和LED显示器原理熟练掌握DAA指令的含义和LED显示器原理单元2加法运算器设计及制作模块三
二、任务分析通过对DAA指令和LED显示器原理的学习,掌握BCD码加法程序设计和电路安装技能及数码管显示的有关知识,并能模拟仿真加法运算器。任务内容:接于PO口的8个拨动开关向单片机输入两个一位BCD码,经单片机运算和处理后由Pl口和P3口输出,驱动两个数码管显示相加结果。本设计任务是两个一位BCD码数相加,由数码管显示出运算结果。单元2加法运算器设计及制作模块三三、相关知识1.十进制调整指令DAA这条指令是在进行BCD码加法运算时,对所得结果进行十进制调整,使累加器A中的内容调整为压缩BCD码数。【注意】:该指令只能跟在加法指令之后使用,不能对减法运算的结果进行调整。单元2加法运算器设计及制作模块三执行该指令时,若A(BCD码加法运算结果)中的低4位大于9或AC=1,则低4位进行加6调整操作;同样,A中的高4位大于9或CY=1则高4位进行加6调整操作。以上调整操作由DAA指令自动完成,用户无需关心。表3-6中以两个十进制数为例,给出了十进制数、BCD码及BCD码的十六进制书写格式之间的关系。从表3-6中可以看出,十进制数对应的BCD码的十六进制书写格式为在该十进制数的后面加一个H。单元2加法运算器设计及制作模块三表3-6十进制数、BCD码及BCD码的十六进制书写格式之间的关系单元2加法运算器设计及制作模块三例:已知有两个BCD码:A=28H、立即数35H,执行加法指令ADDA,#35H及十进制调整指令DAA,说明指令的执行过程。在单片机内部将两个BCD码按二进制数加ADD(因在单片机内部只能进行二进制数加法运算,不能进行十进制数运算),所以执行ADDA,#35H指令的情况如下显然,上面结果不是BCD码,结果是错误的,原因是单片机将十进制数按二进制规则运算造成的。单元2加法运算器设计及制作模块三所以要将上面结果进行十进制调整,运行DAA指令的情况如下:进行十进制调整后结果为63,是正确的。所以,凡是进行BCD码加法运算时,在加法运算指令后一定要跟一条十进制调整指令DAA,将加法运算结果调整为BCD码。在以后任务中不再讲解指令的有关知识,如在程序设计中用到前面任务中未讲解过的指令,请读者参阅附录中单片机指令系统内容。单元2加法运算器设计及制作模块三
2.LED显示器接口在单片机应用系统中,LED显示器是最常用的显示器,价格低廉,结构简单。下面介绍LED显示器的结构及静态显示方式。
(1)LED显示器的结构LED显示器是由发光二极管按照一定的排列规律组成的显示器,也称为数码管显示器。其结构如图3-6a所示,由8只发光二极管(以下简称字段)组成,给8只发光二极管加上不同的电平(高电平或低电平),使其对应的段亮灯或熄灭,可以组合显示0~9十个数字、A~F六个字母及小数点“,”等。图中dp表示小数点,com表示8只发光二极管的公共端。单元2加法运算器设计及制作模块三数码管显示器两种形式
图3-6数码管显示器结构单元2加法运算器设计及制作模块三共阴极数码管的公共端com(阴极)接地,当某一发光二极管的阳极接高电平(+5V)时,此二极管点亮;共阳极数码管的公共端com(阳极)接高电平(+5V),当某一发光二极管的阴极接低电平(地)时,此二极管点亮。数码管显示器通常有共阴极极和共阳极极两种形式,如图3-6b、c所示。共阴极数码管的公共端com(阴极)接地,当某一发光二极管的阳极接高电平(+5V)时,此二极管点亮;单元2加法运算器设计及制作模块三共阳极数码管的公共端com(阳极)接高电平(+5V),当某一发光二极管的阴极接低电平(地)时,此二极管点亮。要显示某字形时,应使该字形的相应段点亮,实际就是通过单片机的I/O端口给数码管送一个字形码(代表不同电平组合的显示数据,其中1代表高电平,0代表低电平)。如要显示字形“5”,则a、c、d、f、g段亮,b、e段灭,其对应共阴极和共阳极数码管单片机I/O口输出显示数据如图3-7和3-8所示。单元2加法运算器设计及制作模块三图3-7共阴极数码管显示字形“5”的数据单元2加法运算器设计及制作模块三图3-8共阳极数码管显示字形“5”的数据单元2加法运算器设计及制作模块三按照上面的对应关系,可得其他字符的七段显示数据见表3-7。
单元2加法运算器设计及制作模块三单元2加法运算器设计及制作4.材料元器件明细表如表3-8所示。表3-8加法运算器元器件明细表模块三序号元件名称元件型号元件数量备注1单片机芯片AT89S511片DIP封装2数码管LG5011BSR2只普通型3晶振12MHz1只普通型4电容30pF2只瓷片电容10uF1只电解电容5电阻470Ω15只碳膜电阻10kΩ9只碳膜电阻6万能电路板4×15cm21片万能电路板7按键9只无自锁840脚IC座1片安装AT89S51芯片9细导线、焊锡若干单元2加法运算器设计及制作模块三五、任务实施1.电路分析和设计(1)电路原理分析PO口接8个拨动开关,、其中开关S1~S4组成一位BCD码,开关S5~S8组成另一位BCD码。Pl口和P3口分别接一个数码管,其中P1所接数码管显示结果高位(十位),P3口所接数码管显示结果低位(个位),数码管采用共阳极连接,即公共端接电源,每段接一470Ω限流电阻。8个拨动开关的公共端接地,另一端各通过一个10kΩ上拉电阻接电源,所以在输入时,开关断开则相应位为“1”(高电平),开关闭合则相应位为“O”(低电平)。单元2加法运算器设计及制作模块三如输入2和8两个BCD码,则S2断开,S4、S3和Sl闭合;S8断开,S7、S6、S5闭合。经内部程序相加,再经七段译码后,由Pl口输出高位(十位)BCD码的七段码,P3口输出低位(个位)BCD码的七段码,并通过SMG1(显示十位)和SMG2(显示个位)两个数码管显示出相加结果。如输入2和8两个BCD码,则相加结果为10,SMG1显示1,SMG2显示0。单元2加法运算器设计及制作模块三(2)电路设计PO口接8个拨动开关,8个开关的一端相连接地,另一端分别接PO口的8位,并分别通过10kΩ的电阻接至电源。Pl口和P3口分别经470Ω的限流电阻接到一个数码管的七段,Pl.7和P3.7未用到。设计完成的电路原理图如图3-9所示。单元2加法运算器设计及制作模块三图3-9加法运算器原理图单元2加法运算器设计及制作模块三2.程序分析和设计(1)程序分析由PO口输入的两个一位BCD码(8个二进制位),高4位为一个BCD码,低4位为另一个BCD码。首先要将PO高4位和低4位分开,形成两个BCD码,然后将两个BCD码相加。在单片机内两个BCD码(二一十进制数)是按二进制相加的,所以相加后要得到正确的结果必须进行十进制调整。十进制调整后的结果.(两位BCD码数)存于A中,其中十位存于A的高4位,个位存于A的低4位。结果要通过两个数码管显示出来,所以还要将BCD码进行七段译码。单元2加法运算器设计及制作模块三为使程序结构清晰,七段译码及输出显示是通过调用子程序的方式实现的。在子程序中首先将A中的两个BCD码拆开,然后分别将两个BCD码通过查表方式译成LED七段码(在模块二中已详细讲解过),再通过Pl口和P3口输出驱动两个数码管显示出运算结果。其中,Pl口显示结果的十位,P3口显示结果的个位。在查表程序中BCD码对应的七段码值存放在数据表中。按以上任务分析过程绘制的程序设计流程如图3-10和图3-11所示。单元2加法运算器设计及制作模块三图3-10加法运算器主程序流程图单元2加法运算器设计及制作模块三图3-11七段译码及显示子程序流程图单元2加法运算器设计及制作模块三(2)程序设计1)数据读入用MOVA,PO指令将PO口输入的两个BCD码读入,存放于A中。2)数据拆分在拆分前应先用MOVRl,A指令将输入的两个BCD码数据暂存于Rl中,然后用逻辑与指令ANLA,#OFH,取出A中的低4位(其中的一个BCD码),暂存于R2中。再将暂存于Rl中的输入数据送给A,用逻辑与指令ANLA,#OFOH,取出A中的高4位(另一个BCD码),存于A中;该位BCD码现位于十位,必须再运用数据交换指令SWAPA将其变换为个位。单元2加法运算器设计及制作模块三3)BCD码相加
将拆分后分别存放于R2和A中的两个BCD码输入数据用不带进位位的加法指令ADDA,R2进行相加,结果存于A中。然后用十进制调整指令DAA,将相加后的结果进行十进制调整,以得到正确的十进制结果。4)七段译码输出将七段译码输出编写为子程序,以使程序结构更清晰。同样在译码前要将结果中的两位BCD码拆开为两个单独的BCD码,以便分别译码输出。单元2加法运算器设计及制作模块三用MOVR3,A指令将结果暂存于R3中,用ANLA,#OFOH指令取出结果中的十位BCD码,用SWAPA指令将其变换到个位;然后进行查表将BCD码转换为七段码。先将七段码表的首地址用MOVDPTR.#TAB指令送给数据指针DPTR;此时A中已存放要查数据,并且要查数据的值与要取得数据在数据表中的位置(即索引值)相等;接着用查表指令MOVCA,@A+DPTR取得十位BCD码对应的七段码存放于A中。用MOVPl,A指令将结果十位数的七段码输出到Pl口,驱动SMG1数码管显示。单元2加法运算器设计及制作模块三将暂存于R3的结果数据用MOVA,R3送给A,用ANLA,#OFH将结果的个位BCD码取出,再用查表指令MOVCA,@A+DPTR取得个位BCD码对应的七段码存放于A中,用MOVP3,A指令将结果个位数的七段码输出到P3口,驱动SMG2数码管显示。按以上任务分析及任务实施过程编写的源程序如下:单元2加法运算器设计及制作模块三
ORGOOOOHSTART:MOVA,PO;将PO口数据(两个一位BCD码)读;入A中MOVRl,A;将A中的数据暂存于Rl中ANLA,#0FH;取出A中的低4位(其中一个BCD码)MOVR2,;将A的值送入R2中MOVA,Rl;将暂存于R1的数据送人A中ANLA,#0F0H;取出A中的高4位(另一个BCD码)SWAPA;交换至低4位ADDA,R2;A与R2相加(两个BCD码相加)DAA;十进制调整(将结果调整为十进制数)单元2加法运算器设计及制作模块三LCALLLEDDISP;调用七段译码及显示子程序SJMPSTART;跳转至START(循环执行)LEDDISP:MOVR3,;将A中的数据(结果数据)暂存于R3中ANLA,#0F0H;取出A的高4位(结果的十位BCD码)SWAPA;交换至低4位(便于查表)MOVDPTR:;#TAB;将BCD码对应的七段码数据表首地址;送DPTRMOVCA,@A+DPTR;查表得十位BCD码对应的七段码MOVPl,A;将A中的数据(十位BCD码对应的七;段码)送Pl口输出MOVA,R3;将暂存于R3中的数据(结果数据)送;入A中单元2加法运算器设计及制作模块三ANLA,#OFH;取出A的低4位(结果的个位BCD码)MOVCA,@A+DPTR;查表得个位BCD码对应的七;段码MOVP3,A;将A中的数据(个位BCD码对应的七;段码)送P3口输出RET;子程序返回TAB:DBOCOH,OF9H,OA4H,OBOH,99H;BCD码对应的七段码数据表DB92H,82H,OF8H,80H,90HEND单元2加法运算器设计及制作模块三3.程序仿真与调试(1)运行伟福6000软件,将(P0)=#28H代入汇编源程序中,并以文件名JFJSQ.ASM保存,添加到工程文件。(2)将已经保存文件进行编译,若编译中检测到错误的符号,会将错误信息用红色条反显,用鼠标双击错误提示,即可以在对应位置进行修改。(3)利用WAVE6000软件进行可模拟仿真。如图3-12所示。观察P1和P3输出端口数值,是否和设计相符?单元2加法运算器设计及制作理解指令DAA的含义和LED显示器原理;将有关数据填入3-9表。表3-9加法运算器模拟仿真数据变化表模块三数值P0口输入数据P1口输出P3口输出28单元2加法运算器设计及制作模块三(4)如果采用共阴极极数码管,电路应该如何修改?程序中七段显示数码表中的数据又应如何修改,修改后仿真运行。(5)程序中如将十进制数调整指令DAA删除,仿真运行,观察是否能得到正确的结果数据。单元2加法运算器设计及制作模块三图3-12伟福6000软件模拟仿真单元2加法运算器设计及制作模块三4.加法运算器电路板制作(1)存盘后的JFJSQ.HEX十六进制文件下载到AT89S51单片机中。(2)按电路原理图在万能线路板上按工艺要求布线、布线时显示器件3和8脚接公共端,接线接线要尽量短,焊接要迅速,不然过多焊锡要短路。(3)调试运行时P0口是二进制输入端,并分为高四位和低四位;P0.0~P0.3是一位数,P0.4~P0.7是另一位数;看是否达到设计要求,总结成功经验和找出问题原因。六、检查评议加法运算器安装调试考核表如3-10所示。单元2加法运算器设计及制作3-10加法运算器安装调试考核表模块三评价项目评价内容配分/分评价标准得分硬件电路电路基础知识20认识电路中各元器件功能及型号10分掌握电路工作原理10分焊接工艺元器件整形、插装5按照原理图及元器件焊接尺寸正确整形、安装5分焊接5符合焊接工艺标准5分程序编制、调试、运行指令学习10正确理解程序中所有指令的意义10分程序分析、设计20能正确分析程序的功能10分能根据要求设计功能相似的程序10分程序调试与运行20程序输入正确5分程序编译仿真正确5分能修改程序并分析10分安全文明生产使用设备和工具10正确使用设备及工具团结协作集体意识10各成员分工协作,积极参与单元2加法运算器设计及制作模块三七、问题及防治显示器电路的调试与故障分析1.所有数字的显示均为乱码在电路的设计中,有可能是显示代码的位与显示数字段的对应关系有误,可以通过仿真器,向显示器的输出端口每次发送一段可显示的信号,观察显示器的哪一段点亮,找出代码的"位"与显示器"段"的关系,然后重新编码。2.LED显示器的亮度太弱亮度太弱,通常是驱动电流太小的原因,通常认为有10mA左右的电流就可满足要求,但在背景光线较强时就显得亮度不够,只要加大驱动电流即可解决此问题。另外,在动态扫描的显示电路中,由于显示器显示时,每一段的驱动电流可能会很大,在显示位数较多时尤其是这样,因而要检查电流驱动器件能否提供相应的电流。单元2加法运算器设计及制作模块三八、考证要点1.选择题(1)MCS-51指令系统中,指令DAA是
。A.除法指令B.加1指令C.加法指令D.十进制调整指令(2)MCS—51指令系统中,指令DAA应跟在
。A.加法指令后B.BCD码的加法指令后C.减法指令后D.BCD码的减法指令后(3)在单片机算术运算过程中,指令DAA常用于
运算。A.二进制B.加法C.BCD码加法D.十六进制单元2加法运算器设计及制作模块三(4)MCS—51指令系统中,执行下列指令后,其结果为
。MOVA,#68ADDA,#53DAAA.A=21CY=1OV=0B.A=21CY=1OV=1C.A=21CY=0OV=0D.以上都不对单元2加法运算器设计及制作模块三2.技能训练(1)用protel软件绘制出本设计任务的电路原理图,并设计印制电路版图及制作印制电路板。(2)连接仿真器,将本设计任务的程序输入计算机,并进行仿真调试及运行。(3)连接编程器,将仿真通过的程序代码下载到单片机中,脱机运行并观察电路运行情况。单元3数显抢答器设计及制作模块三知识目标:1.熟练掌握键盘接口和独立式键盘工作原理。技能目标:1.掌握数显抢答器硬件电路设计方法。2.掌握数显抢答器软件设计方法。3.掌握数显抢答器硬件电路安装和调试方法。单元3数显抢答器设计及制作任务独立式键盘抢答器的设计及制作模块三一、任务描述(见表3-11所示)表3-11任务描述
工作任务要求学习键盘接口和独立式键盘原理熟练掌握键盘接口和独立式键盘原理数显抢答器硬件电路设计掌握数显抢答器硬件电路设计方法数显抢答器软件电路设计掌握数显抢答器软件设计方法数显抢答器硬件电路安装和调试掌握数显抢答器硬件电路安装和调试方法单元3数显抢答器设计及制作模块三二、任务分析在各种竞答活动中,抢答器是十分重要设备,用单片机控制的抢答器不仅电路简单,而且成本低,具有显示抢答者号码和防作弊功能。在抢答器程序设计中,关键是对键盘扫描、按键判别及按键功能的编程。这样我们首先要掌握:1.键盘接口;2.独立式键盘;单元3数显抢答器设计及制作模块三任务内容:当主持人按下抢答开始按钮(可用单片机复位按键作抢答开始按钮)发布抢答命令后,8位参赛选手通过按下各自的抢答按钮(键)进行抢答。哪位选手最先按下抢答按钮,数码管就显示其对应的号码,表示该名选手抢答成功,并且锁定,其他参赛选手本轮无法再进行抢答。通过本设计任务的学习,掌握数显抢答器的软、硬件设计及设计制作数显抢答器的方法和技能。单元3数显抢答器设计及制作模块三三、相关知识1.键盘接口单片机应用系统通常都具有人机对话功能,用户通过按键向单片机系统发出控制指令,单片机接收到键盘指令后完成相应的控制功能。在单片机应用系统中,常用的是独立式键盘和矩阵式键盘,此类键盘只简单提供通、断两种状态,其他工作如键盘扫描、按键去抖动及按键识别等都是依靠软件来完成。单元3数显抢答器设计及制作模块三键盘控制程序需完成的任务有:(1)检测是否有键按下当无键按下时,则等待按键按下或继续执行原来程序;当有键按下时则进行按键去抖动处理。(2)按键去抖动处理按键去抖动有硬件或软件去抖动两种方法。(3)多个按键同时按下处理当有多个按键同时按下时,则按键盘扫描顺序只执行一个按键功能。(4)按键一次仅执行一次操作不管一次按键持续多长时间,仅执行一次按键功能程序。单元3数显抢答器设计及制作模块三2.独立式键盘在本任务中用到的是独立式键盘,有关矩阵式键盘将在项目五中详细讲解。独立式键盘是指直接用I/O口线构成的单个按键电路,每个按键单独占有一根I/O口线,各I/O口线的工作状态不会互相影响。独立式键盘接口电路如图3-13所示。独立式键盘接口电路的硬件电路和软件编程都比较简单,但每个按键必须占一根I/O口线,在按键个数较多时,I/O口线资源浪费较大,故只在按键数量不多时采用这种键盘电路。图3-13独立式键盘接口电路单元3数显抢答器设计及制作模块三四、任务准备1.电工常用工具每人一套。2.电工操作台两人一台。3.装配有MedWinV3.0软件或伟福6000软件电脑及下载设备两人一套。4.材料元器件明细如表3-12所示。单元3数显抢答器设计及制作模块三序号元件名称元件型号元件数量备注1单片机芯片AT89S511片DIP封装2数码管LG5011BSR1只普通型3晶振12MHz1只普通型4电容30pF2只瓷片电容10uF1只电解电容5电阻470Ω8只碳膜电阻10kΩ9只碳膜电阻6万能电路板4×15cm21片万能电路板7按键9只无自锁840脚IC座1片安装AT89S51芯片9细导线、焊锡若干表3-12数显抢答器器元器件明细表单元3数显抢答器设计及制作模块三五、任务实施1.电路分析和设计(1)根据任务P0口接8个抢答开关,供8位参赛选手进行抢答。P0口接8个独立按键,按键输入低电平有效,所以按键一端接地,另一端接P0口的一条口线。由于P0口内部无上拉电阻,为保证按键断开时I/O口线有确定的高电平,所以在P0口外部要接上拉电阻,电阻值为10KΩ。单元3数显抢答器设计及制作模块三(2)P1口接一个数码管显示器,用于显示抢答成功者的号码。P1口分别通过470Ω的电阻接到数码管的七段,数码管采用共阳极数码管,com端接+5V电源。8位参赛选手在主持人按下抢答开始按钮(复位按钮)S,发出开始抢答命令后,迅速按下各自抢答按钮(S1~S8),数码管立即显示最先按下抢答按钮的参赛选手号码,表明该选手抢答成功,获得答题权。同时其他按钮立即被封锁,后按下抢答按钮选手无法抢答。单元3数显抢答器设计及制作模块三在主持人发布完下一道题,再次发出抢答命令前,要先按下抢答开始按钮S,以清除上次抢答号码,同时开放各按钮,以备参赛选手进行下一道题的抢答。设计完成的电路原理图如图3-14所示。图3-14设计完成的电路原理图单元3数显抢答器设计及制作模块三2.程序设计P0口外接8个抢答按键,若某按键按下,则该按键对应的P0口相应位为0,否则为1。通过读入8个抢答按键的状态,判断是否有人按下按键;这样就要首先读取按键状态。(1)读取按键状态首先读取P0口的值,即读取8个输入按键状态。应用MOVA,P0指令将口外接8个按键的状态读入到A中。单元3数显抢答器设计及制作模块三(2)判断是否有键按下某个按键被按下时,按键对应的口相应位为0,否则为1,运用比较转移指令CJNEA,#0FFH,PL0将存于A中的按键状态值与数值FFH比较。若不相等则说明有人按键,程序转移至标号为PL0处执行。若按键值等于FFH,则说明无人按键,程序顺序执行下一条指令SJMPSTART,跳转至START处,重新读取,并判断按键状态。单元3数显抢答器设计及制作模块三(3)按键去抖动当判断有键按下时,程序跳转至PL0处执行子程序调用指令LCALLDELAY,调用12ms延时子程序以消除按键抖动。(4)判断是否真正有人按键判断真正有按键被按下后,接着进行按键扫描,判读是谁最先按下按键的。运用MOVA,P0再次输入P0的值,执行CJNEA,#0FFH,PL1指令,再次判断是否有人按下按键;若真正有人按下按键,则程序转移至PL1处执行,继续判断哪个键被按下;若判断无键按下,说明是由于干扰引起的误读操作,程序顺序执行下一条指令SJMPSTART,转START处重新读取按键状态。单元3数显抢答器设计及制作模块三(5)判断被按键号当判断真正有键被按下时,程序转移至PL1处执行,进行按键扫描。执行JNBACC.0,K1指令,判断A的第0位是否为0。若为0(即对应键按下)则程序跳转至K1处执行;经判断如是1号选手按下的,则P1口输出1的七段码,驱动数码管显示“1”若为1(即对应按键没按下),则程序顺序执行下一条指令。若第一个键没被按下,继续执行指令JNBACC.1,K2,判断第二个键是否被按下,若第二个键被按下,则程序转移K2处执行;单元3数显抢答器设计及制作模块三如2号选手按下的,则P1口输出2的七段码,驱动数码管显“2”依次类推若第二个键没被按下,则程序继续判断第三个键。依次类推,直至执行JNBACC.7,K8,判断第八个键是否被按下,若按下则程序跳转至K8处执行;若没有键按下,则说明是强干扰引起的误读键,程序顺序执行下一条指令LJMPSTART,跳转至START处重新读取按键状态。按以上任务分析绘制的程序流程图如图3-15所示。单元3数显抢答器设计及制作模块三3-15图按以上任务分析绘制的程序流程图单元3数显抢答器设计及制作模块三按以上任务分析及任务实施过程编写的源程序如下:ORG0000HSTART:MOVA,P0;读取P0的值至A中CJNEA,#0FFH,PL0;A与立即数FFH比较(即判断有无按键按下),;不相等(有键按下)则程序跳转PL0处SJMPSTART;无键按下时转START处,重新读取键盘(等待按键按下)PL0:LCALLDELAY;当有键按下时,调用延时程序消除按键抖动MOVA,P0;再次读取键盘状态单元3数显抢答器设计及制作模块三CJNEA,#0FFH,PL1;确认是否真有按键按下,如真有键按下则程序转PL1处SJMPSTART;如第二次判断无键按下,则表明是干扰引起的;误读键操程序转至START处PL1:JNBACC.0,K1;进行键盘扫描,以判断按下的是哪个键,如是;S1键按下,则程序转K1处JNBACC.1,K2;如是S2键按下,则程序转K2处JNBACC.2,K3;如是S3键按下,则程序转K3处JNBACC.3,K4;如是S4键按下,则程序转K4处JNBACC.4,K5;如是S5键按下,则程序转K5处单元3数显抢答器设计及制作模块三JNBACC.5,K6;如是S6键按下,则程序转K6处JNBACC.6,K7;如是S7键按下,则程序转K7处JNBACC.7,K8;如是S8键按下,则程序转K8处LJMPSTART;如无键按下,则程序转START出,重新读取键值K1:MOVP1,#0F9H;S1按下时,则经P1口输出字符“1”的七段码SJMP$;程序动态暂停,以封锁键盘K2MOVP1,#0A4HK2:MOVP1,#0A4H;S2按下时,则经P1口输出字符2”的七段码SJMP$;程序动态暂停,以封锁键盘单元3数显抢答器设计及制作模块三K3:MOVP1,#0B0H;S3按下时,则经P1口输出字符“3”的七段码SJMP$;程序动态暂停,以封锁键盘K4:MOVP1,#99H;S4按下时,则经P1口输出字符“4”的七段码SJMP$;程序动态暂停,以封锁键盘K5:MOVP1,#92H;S5按下时,则经P1口输出字符“5”的七段码SJMP$;程序动态暂停,以封锁键盘K6:MOVP1,#82H;S6按下时,则经P1口输出字符“6”的七段码SJMP$;程序动态暂停,以封锁键盘K7:MOVP1,#0F8H;S7按下时,则经P1口输出字符“7”的七段码单元3数显抢答器设计及制作模块三SJMP$;程序动态暂停,以封锁键盘K8:MOVP1,#80H;S8按下时,则经P1口输出字符“8”的七段码SJMP$;程序动态暂停,以封锁键盘DELAY:MOVR6,#15;12ms延时子程序DEL2:MOVR7,#200DEL1:DJNZR7,DEL1DJNZR6,DEL2RET单元3数显抢答器设计及制作模块三3.程序仿真与调试(1)运行WAVE6000软件,新建以SXQDQ为名称的项目文件并保存,新建以SXQDQ.ASM为名称文档,并将将SXQDQ.ASM文档添加到SXQDQ为名称的项目文件中。汇编源程序,并生成以SXQDQ.HEX十六进制文件。(2)利用伟福6000软件进行模拟仿真。设S6键按下,则端口P0的五口为0电位,如图3-16所示。图3-16数显抢答器模拟仿真单元3数显抢答器设计及制作P0口为11011111,程序执行完后P3口为10000010,即对应的82H,显示数字6,符合控制要求;将有关数据填入表3-13。表3-13数显抢答模拟仿真数据变化表模块三数值执行程序P0口S键值P1口前1后7单元3数显抢答器设计及制作模块三(3)如果删除用于按键去抖动的12ms延时子程序调用指令,即删除LCALLDELAY指令,仿真运行,观察运行情况。(4)将延时程序的延时时间修改为1ms,仿真运行,观察运行情况。(5)删除每个按键功能程序中的动态停机指令SJMP$,仿真运行观察运行情况。(6)数显抢答器制作:1)存盘后SXQDQ.HEX十六进制文件下载到AT89S51单片机中。2)按硬件图在万能线路板上按工艺要求布线,因按键较多首先要对按键布线,焊接安装接线时要用排线。3)调试运行;如出现乱码可先复位,然后观察运行情况。单元3数显抢答器设计及制作六、检查评议数显抢答器安装调试考核表如表3-14所示。表3-14数显抢答器安装调试考核表。模块三评价项目评价内容配分/分评价标准得分硬件电路电路基础知识20认识电路中各元器件功能及型号10分掌握电路工作原理10分焊接工艺元器件整形、插装5按照原理图及元器件焊接尺寸正确整形、安装5分焊接5符合焊接工艺标准5分程序编制、调试运行指令学习10正确理解程序中所有指令的意义1分程序分析、设计20能正确分析程序的功能10分能根据要求设计功能相似的程序10分程序调试与运行20程序输入正确5分程序编译仿真正确5分能修改程序并分析10分安全文明生产使用设备和工具10正确使用设备及工具团结协作集体意识10各成员分工协作,积极参与单元3数显抢答器设计及制作模块三七、考证要点技能训练1.用Protel软件绘制出本设计任务的电路原理图,并设计印制电路板图及制作印制电路板。2.连接仿真器,将本设计任务的程序输入计算机,并进行仿真调试及运行。3.连接编程器,将仿真通过的程序代码下载到单片机中,脱机运行并观察电路运行情况。单元4篮球比赛计分器设计及制作模块三知识目标:1.熟练掌握键盘接口和独立式键盘原理。技能目标:1.掌握篮球比赛计分器硬件电路设计方法。2.掌握篮球比赛计分器软件设计方法。3.掌握篮球比赛计分器硬件电路安装和调试方法。单元4篮球比赛计分器设计及制作一、任务描述(见表3-15所示)表3-15任务描述模块三工作任务要求学习键盘接口和独立式键盘原理熟练掌握键盘接口和独立式键盘原理篮球比赛计分器硬件电路设计掌握篮球比赛计分器硬件电路设计方法篮球比赛计分器软件电路设计掌握篮球比赛计分器软件设计方法篮球比赛计分器硬件电路安装和调试掌握篮球比赛计分器硬件电路安装和调试方法任务两位数篮球比赛计分器设计及制作单元4篮球比赛计分器设计及制作模块三二、任务分析本任务学习用于篮球比赛中的计分器的设计,在此计分器的基础上稍加修改可设计成其他比赛用的计分器。本设计任务程序主要部分是按键扫描、按键处理、按键功能编程及BCD码转换为七段码编程。任务内容:在篮球比赛过程中,根据比赛得分情况(得1分、2分、3分),分别通过3个计分按键进行加分(加1分、2分、3分),当前总分值通过两个数码管显示出来。如计分错误(多加分数)可通过第4个按键进行减分,每按一次按键减1分。单元4篮球比赛计分器设计及制作模块三三、任务准备1.电工常用工具每人一套。2.电工操作台两人一台。3.安装有伟福6000软件电脑及下载设备两人一套。5.材料元器件明细如表3-16所示。单元4篮球比赛计分器设计及制作模块三序号元件名称元件型号元件数量备注1单片机芯片AT89S511片DIP封装2数码管LG5011BSR2只普通型3晶振12MHz1只普通型4电容30pF2只瓷片电容10uF1只电解电容5电阻470Ω15只碳膜电阻10kΩ5只碳膜电阻6万能线路板4×15cm21片万能线路板7按键5只无自锁840脚IC座1片安装AT89S51芯片9细导线、焊锡若干表3-16篮球比赛计分器元器件明细表单元4篮球比赛计分器设计及制作模块三四、任务实施1.电路设计PO口低4位接4个独立式按键,分别是总分加1分、加2分、加3分和减1分按键。Pl口和P3口分别接一个数码管,其中Pl口所接数码管显示总分的十位数,P3口所接数码管显示总分的个位数。当比赛队得1分时,按下Sl键加1分,得2分时按下S2键加2分,得3分时按下S3键加3分;如分数计错需减分时,每按一次S4键减1分。设计完成的电路原理图如图3-17所示。单元4篮球比赛计分器设计及制作模块三图3-17篮球比赛计分器电路图单元4篮球比赛计分器设计及制作模块三2.程序设计程序设计时,首先读取按键状态,判断是否有键被按下,当确认有键按下后,再进行键盘扫描,判断按下的是哪个键。执行相应的按键功能。然后等待按键释放,以确保每按一次按键只进行一次键处理,将总分转换为十进制数,再通过查表方法转换为七段码,经Pl口和P3口输出,驱动数码管显示。(1)程序流程图1)初始化将用于存放总分的寄存器RO清O,将七段码表首地址送数据指针DPTR。单元4篮球比赛计分器设计及制作模块三2)判断是否有键按下将PO口的值读入,即读取按键状态。因本电路中只用到了接于P0口低4位的4个按键,所以要将读入的PO口值的高4位屏蔽,只取出其低4位。然后判断是否有键按下,如没有,则继续读取PO口值,等待按键;如有键按下,则调用延时程序以消除按键抖动。3)判断是否真正有键按下消除按键抖动后,再次读取按键状态,判断是否真正有按键被按下,如第二次判断为没有按键被按下,则该次按键为干扰引起的误读操作,重新读取按键状态;如第二次判断为有键被按下,则可确认是一次真正的按键操作。单元4篮球比赛计分器设计及制作模块三4)判断被按键号判断确有键被按下时,进行键盘扫描,判断是哪个键被按下。5)按键功能执行按键情况执行相应的按键功能,即前面分析的加、减分方式。6)等待按键释放功能执行完毕,等待按键释放,以确保按键一次,执行一次按键功能操作。7)数制转换将总分二进制码转换为BCD码(十进制数),并通过LED数码管显示出来,因此,还要进一步将BCD码转换为七段码。单元4篮球比赛计分器设计及制作模块三8)输出显示将转换为七段码形式的总分值经Pl口和P3口输出显示,其中用Pl口输出显示总分的十位数,用P3口输出显示总分的个位数。根据以上分析绘制出的程序设计流程图如图3-18所示。图3-18篮球比赛计分器程序流程图单元4篮球比赛计分器设计及制作模块三(2)程序设计1)初始化用MOVRO,#0指令将总分寄存器RO清“0”,用MOVDPTR,#TAB指令将七段码表首地址送DPTR。2)判断是否有键按下用MOVA,PO指令将接于PO口的4个按键状态读入,因只用到PO口的低4位,所以应用ANLA,#OFH指令屏蔽PO口高4位,取出其低4位。根据原理图中4个按键的接线方式可知当某按键按下时其对应位为0,没有按下时对应位为1,所以用CJNEA.#OFH,KEY1指令判断读人的按键值是否等于OFH(即4个按键均没按下,对应位均为1),如相等,说明没有按键按下,程序顺序执行下一条指令SJMPSTART,转到START处继续读取按键状态;如不相等,则程序转到KEY1处执行,调用12ms延时子程序,以消除按键抖动。单元4篮球比赛计分器设计及制作模块三(3)判断是否真正有键按下再次用MOVA,PO指令读取按键状态,运用ANLA,#OFH指令取出PO口低4位,运用CJNEA,#OFH,KEY2指令再次判断是否有键按下,如A等于OFH,则表明该次是由于干扰引起的误读键操作,程序顺序执行下一条指令.SJMPSTART,转到START处继续读取按键状态;如不相等,则表明是一次真正的按键操作,程序转到KEY2处执行。单元4篮球比赛计分器设计及制作模块三(4)判断被按下的是哪个键当真有键被按下时,程序进行按键扫描,运用“JNBACC.O,K1”“JNBACC.1,K2”“JNBACC.2,K3”“JNBACC.3,K4”指令判断是哪个键被按下,并使程序转到相应的按键功能程序段处执行。(5)按键功能执行当S1键按下时,得1分,运用MOVR1,#1给存放得分的寄存器R1送入1,然后执行LJMPADDOPR指令,程序转到ADDOPR处;当S2键按下时,得2分,运用MOVR1,#2给R1送入2,然后执行LJMPADDOPR指令,程序转到ADDOPR处;当S3键按下时,得3分,运用MOVR1,#3给R1送入3,然后执行LJMPADDOPR指令,程序转到ADDOPR处。单元4篮球比赛计分器设计及制作模块三当程序转到ADDOPR处时,运用MOVA,RO指令,ADDA,R1指令将所得的分数加到总分上,然后运用MOVRO,A将总分送人存放总分的寄存器R0中。当按下S4键时,用DECRO指令将总分减1分,然后执行LJMPWAIT程序,转到WAIT处。(6)等待按键释放运用WAIT:MOVA,PO指令,ANLA,#OFH指令,CJNEA,#OFH,WAIT指令等待按键释放,以确保每按一次按键,进行一次按键功能操作。单元4篮球比赛计分器设计及制作模块三(7)二进制数转换为BCD码存放总分的寄存器RO中的数为二进制数,应将其转换为人们习惯的十进制数(BCD码)。用MOVA,RO指令将RO的值(总分)送到A中,再用MOVB,#10指令给寄存器B送入10,最后用DIVAB指令将A(总分)的值除以10,则结果的十位存放在A中,结果的个位存放在B中。(8)BCD码转换为七段码并输出显示因为总分要通过数码管显示出来,必须将BCD码再转换为七段码,运用查表法进行转换。单元4篮球比赛计分器设计及制作模块三执行MOVCA,@A+DPTR指令,查得总分十位对应的七段码,执行MOVPl,A将总分十位的七段码输出至Pl口,驱动SMG1数码管显示;执行MOVA,B指令将总分个位送到A中,再执行MOVCA,@A+DPTR指令,查得总分个位对应的七段码,最后执行MOVP3,A指令,将总分个位的七段码经P3口输出,驱动SMG2数码管显示。根据以上任务分析和任务实施过程编写的源程序如下:单元4篮球比赛计分器设计及制作模块三ORGOOOOHMOVRO,#0;将RO(存放总分的寄存器)清“0”MOVDPTR,#TAB;将七段码数据表首地址送DPTRSTART:MOVA,PO;读取PO口(键盘状态)值ANLA,#OFH;取出PO口低4位(因只有低4位接按键)CJNEA,#OFH,KEY1;A与OFH比较(即判断是否有键按下),;不相等(有键按下)则转移至KEY1处单元4篮球比赛计分器设计及制作模块三SJMPSTART;无按键按下,则转移至START处,重新读取;键盘状态KEYl:LCALLDELAY;有键按下则调用延时程序以消除按键抖动MOVA,PO;再次读取PO口(键盘状态)值ANLA,#OFH;取出PO口低4位CJNEA,#OFH,KEY2;再次判断是否有键按下,有键按下则程序转移至KEY2处单元4篮球比赛计分器设计及制作模块三SJMPSTART;第二次判断为无键按下,则表明是由于干扰;引起的误读键KEY2:JNBACC.O,Kl;进行键盘扫描,以判断按下的是哪个键,如按下的是Sl键,则程序转Kl处JNBACC.1,K2;如按下的是S2键,则程序转K2处JNBACC.2,K3;如按下的是S3键,则程序转K3处JNBACC.3,K4;如按下的是S4键,则程序转K4处单元4篮球比赛计分器设计及制作模块三LJMPSTART;如无按键按下,则程序转START处,重新读;取键盘K1:MOVR1,#1;S1键按下时,给R1送人1LJMPADDOPR;程序跳转至ADDOPR处K2:MOVR1,#2;S2键按
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《江南》听评课记录内容
- 三亚市西沙群岛2024年一级造价工程师《土建计量》深度自测卷含解析
- 《文丘里别墅》课件
- 三八妇女节主题模板74
- 化工装置报废拆除施工方案
- 高速公路环水保监理工作计划
- 关于工业发展“倍增计划”实施情况的汇报
- 高一老师年度教学计划范文
- 公务员2024年工作总结及2024年工作计划开头
- 2024-2024学年新学期计算机教研组工作计划
- 幼儿园 中班心理健康《我会倾诉》
- 信息系统售后服务方案
- 五四运动 说课课件 2024-2025学年统编版八年级历史上册
- 医学微生物学(山东联盟)智慧树知到答案2024年济宁医学院
- 2024年人教版三年级语文(上册)期末考卷及答案(各版本)
- 2024抖音直播知识考试题库200题(含答案)
- 2024年医疗机构医疗废物管理规范考试试题及答案
- 部编人教版六年级上册道德与法治全册知识点考点+典型考题【每课】
- 动态葡萄糖图谱报告临床应用专家共识(2023版)
- 《经济思想史》全套教学课件
- 2.2大气受热过程-以新疆番茄为例课件高中地理人教版(2019)必修一
评论
0/150
提交评论