




已阅读5页,还剩131页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,主编:高玉泉,模块三单片机应用电路实例设计及制作,单元1彩灯控制器的设计及制作单元2加法运算器设计及制作单元3数显抢答器设计及制作单元4篮球比赛计分器设计及制作,单元1彩灯控制器的设计及制作,知识目标:1.掌握单片机控制的彩灯控制器硬件电路设计方法。2.掌握单片机控制的彩灯控制器软件设计方法。3.能够熟练应用CJNE指令。技能目标:1.掌握彩灯控制器软件设计方法。2.掌握单片机控制的彩灯控制器硬件电路安装和调试方法。,模块三,单元1任务多种彩灯的设计及制作,任务多种彩灯的设计及制作一、任务描述(见表3-1所示)表3-1任务描述,模块三,单元1任务多种彩灯的设计及制作,二、任务分析彩灯的应用十分广泛,由数字电路设计的彩灯控制器亮灯方式单调,花样单一,维修及改变灯光控制方式十分复杂;而由单片机设计的彩灯控制器,成本低,控制方式灵活,维修及改变控制方式方便,只需改变单片机的程序即可实现多种亮灯控制方式。任务内容:单片机控制的彩灯控制器设计:接于P2口的8路彩灯按如图3-1所示的方式亮灯,设计控制电路及程序。通过对比较转移指令学习、单片机控制的彩灯控制器硬件、软件设计及安装,掌握彩灯控制器的软件和硬件设计方法。,模块三,单元1任务多种彩灯的设计及制作,模块三,图3-1彩灯亮灯方式,单元1任务多种彩灯的设计及制作,模块三,三、相关知识1.比较转移指令CJNEA,#data,rel;若Adata,则转移;若A=data,顺序执行下一条指令;若Adata,C清“0”;若Adata,C置“1”CJNEA,direct,rel;若A(direct),则转移;若A=(direct),顺序执行下一条指令;若A(direct),C清“0”;若A(direct),C置“1”CJNERn,#data,rel;若Rndata,则转移;若Rn=data,顺序执行下一条指令;若Rndata,C清“0”;若Rndata,C置“1”CJNERi,#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任务多种彩灯的设计及制作,模块三,表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任务描述,模块三,单元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加法运算器设计及制作,模块三,2LED显示器接口在单片机应用系统中,LED显示器是最常用的显示器,价格低廉,结构简单。下面介绍LED显示器的结构及静态显示方式。(1)LED显示器的结构LED显示器是由发光二极管按照一定的排列规律组成的显示器,也称为数码管显示器。其结构如图3-6a所示,由8只发光二极管(以下简称字段)组成,给8只发光二极管加上不同的电平(高电平或低电平),使其对应的段亮灯或熄灭,可以组合显示09十个数字、AF六个字母及小数点“,”等。图中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加法运算器元器件明细表,模块三,单元2加法运算器设计及制作,模块三,五、任务实施1.电路分析和设计(1)电路原理分析PO口接8个拨动开关,、其中开关S1S4组成一位BCD码,开关S5S8组成另一位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加法运算器模拟仿真数据变化表,模块三,单元2加法运算器设计及制作,模块三,(4)如果采用共阴极极数码管,电路应该如何修改?程序中七段显示数码表中的数据又应如何修改,修改后仿真运行。(5)程序中如将十进制数调整指令DAA删除,仿真运行,观察是否能得到正确的结果数据。,单元2加法运算器设计及制作,模块三,图3-12伟福6000软件模拟仿真,单元2加法运算器设计及制作,模块三,4.加法运算器电路板制作(1)存盘后的JFJSQ.HEX十六进制文件下载到AT89S51单片机中。(2)按电路原理图在万能线路板上按工艺要求布线、布线时显示器件3和8脚接公共端,接线接线要尽量短,焊接要迅速,不然过多焊锡要短路。(3)调试运行时P0口是二进制输入端,并分为高四位和低四位;P0.0P0.3是一位数,P0.4P0.7是另一位数;看是否达到设计要求,总结成功经验和找出问题原因。,六、检查评议加法运算器安装调试考核表如3-10所示。,单元2加法运算器设计及制作,3-10加法运算器安装调试考核表,模块三,单元2加法运算器设计及制作,模块三,七、问题及防治显示器电路的调试与故障分析1.所有数字的显示均为乱码在电路的设计中,有可能是显示代码的位与显示数字段的对应关系有误,可以通过仿真器,向显示器的输出端口每次发送一段可显示的信号,观察显示器的哪一段点亮,找出代码的位与显示器段的关系,然后重新编码。2.LED显示器的亮度太弱亮度太弱,通常是驱动电流太小的原因,通常认为有10mA左右的电流就可满足要求,但在背景光线较强时就显得亮度不够,只要加大驱动电流即可解决此问题。另外,在动态扫描的显示电路中,由于显示器显示时,每一段的驱动电流可能会很大,在显示位数较多时尤其是这样,因而要检查电流驱动器件能否提供相应的电流。,单元2加法运算器设计及制作,模块三,八、考证要点1.选择题(1)MCS-51指令系统中,指令DAA是。A除法指令B加1指令C加法指令D十进制调整指令(2)MCS51指令系统中,指令DAA应跟在。A加法指令后BBCD码的加法指令后C减法指令后DBCD码的减法指令后(3)在单片机算术运算过程中,指令DAA常用于运算。A二进制B加法CBCD码加法D十六进制,单元2加法运算器设计及制作,模块三,(4)MCS51指令系统中,执行下列指令后,其结果为。MOVA,#68ADDA,#53DAAAA=21CY=1OV=0BA=21CY=1OV=1CA=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数显抢答器设计及制作,模块三,表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,发出开始抢答命令后,迅速按下各自抢答按钮(S1S8),数码管立即显示最先按下抢答按钮的参赛选手号码,表明该选手抢答成功,获得答题权。同时其他按钮立即被封锁,后按下抢答按钮选手无法抢答。,单元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数显抢答模拟仿真数据变化表,模块三,单元3数显抢答器设计及制作,模块三,(3)如果删除用于按键去抖动的12ms延时子程序调用指令,即删除LCALLDELAY指令,仿真运行,观察运行情况。(4)将延时程序的延时时间修改为1ms,仿真运行,观察运行情况。(5)删除每个按键功能程序中的动态停机指令SJMP$,仿真运行观察运行情况。(6)数显抢答器制作:1)存盘后SXQDQ.HEX十六进制文件下载到AT89S51单片机中。2)按硬件图在万能线路板上按工艺要求布线,因按键较多首先要对按键布线,焊接安装接线时要用排线。3)调试运行;如出现乱码可先复位,然后观察运行情况。,单元3数显抢答器设计及制作,六、检查评议数显抢答器安装调试考核表如表3-14所示。表3-14数显抢答器安装调试考核表。,模块三,单元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篮球比赛计分器设计及制作,模块三,表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),
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年资产评估师之资产评估基础模考模拟试题(含答案)
- 江西省九江市2024-2025学年八年级下学期期末语文试题(解析版)
- 摄影技巧基础知识培训班课件
- 网络信息安全技术试题及答案
- 2025医疗耗材采购合同范本
- 2025合同无效的示范文本
- 摄像助理基础知识培训
- 2025年齐齐哈尔市软件公司劳务派遣合同范本
- 搞笑课件文案
- 如何开展年度民主评议党员工作有效加强党员党性锻炼增强党的组织生活活力
- 老年髋部骨折围术期护理临床实践专家共识2024版解读课件
- 国家电网公司招聘高校毕业生应聘登记表
- 咨询公司市场洞察五看方法论手册
- 初中7年级下数学练习题
- 2024年全国寄生虫病防治技能竞赛备赛试题库-上(血吸虫病、疟疾)
- 气血疏通中级班教材
- 空调安装服务合同
- 2022年毕节市黔西市城区学校乡镇考调教师考试试卷及答案解析
- 组装工艺中SI全称
- (高清版)DZT 0400-2022 矿产资源储量规模划分标准
- 网络安全服务项目服务质量保障措施(实施方案)
评论
0/150
提交评论