《竞赛抢答器设计》word版.doc_第1页
《竞赛抢答器设计》word版.doc_第2页
《竞赛抢答器设计》word版.doc_第3页
《竞赛抢答器设计》word版.doc_第4页
《竞赛抢答器设计》word版.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

竞赛抢答器一题义分析及解决方案1题义与需求分析题目要求利用8086系统接口电路设计一个可供八人竞赛使用的抢答器,并显示竞答者编号(18)。根据题义可知:本设计是要设计一个能够提供给8个人使用的竞赛抢答装置,能够使得抢答者的编号,显示的装置。首先是主持人发出抢答允许信号,当抢答者收到信号后,便立刻进行抢答,然后通过装置,将最先抢答者的编号显示出来。根据以上分析,提出以下几个问题:主持人如何发出抢答的信息?竞赛者如何进行抢答?如何将分辨抢答的顺序,谁是最先抢答的?如何显示抢答者的编号?抢答的总体规则是什么?怎样控制?2解决问题的思路和方法(1)、解决思路:上述提出的问题发现第一、第二和第四个问题需要用硬件来实现,而第三和第五个问题需要软件编程来实现。组号器件名称特 点1小键盘键盘(Keyboard)是常用的输入设备,它是由一组开关矩阵组成,结构相对复杂逻辑开关结构简单,使用方便,价格便宜28255A芯片8255芯片是可编程的并行接口芯片,不需要附加外部电路便可和大多数并行传输数据的外部设备相连,数据的各位同时传送,使用十分方便8251A芯片8251芯片是可编程的串行接口芯片,数据一位一位地顺序传送,电路简单,传输距离远3L E DLED显示器与LCD显示器相比,LED在亮度、功耗、可视角度和刷新速率等方面,都更具优势。LED与LCD的功耗比大约为10:1,LED的最显著特点是使用寿命长,光电转换效能高,绿色环保 表一:所用芯片功能首先我们可用列表比较的方法来选择合理的器件,具体器件的名称和特点如表一所示。对硬件选择进行分析进行分析:通过对小键盘和微动开关比较,我们选择结构简单,使用方便微动开关作为抢答者的抢答器件。对8255和8251芯片进行比较,选择方便易使用的8255作为本设计的主要芯片。对显示设备的选择,选择LED更为经济实惠。通过以上分析,本次设计所选用的芯片为:8255A芯片、微动开关和LED发光二极管。(2)、解决问题的方法a硬件部分:首先选择可编程并行接口芯片8255A,实现八个竞赛抢答器的显示换码并输出。使8255A工作在方式0基本输入输出,将PA口做为输入口,PB口做为输出口,PC1 =0做位选码。选用LED七段数码显示控制电路板一块,使用其显示18位抢答者编号。b软件部分:通过编写程序来实现抢答的功能。首先应当实现抢答器的最基本功能,即当抢答允许信号发出后,抢答者做出了抢答,要在LED上显示最先抢答者的编号。这是基本功能,其次应该考虑同时有两个人抢答的情况,如过出现了,这个情况,就在显示设备上显示E,表示错误,需要重新抢答。另外,在抢答结束后,需要进行下一轮的抢答,因此如果 出现有抢答者的开关没有松开的情况,就无法进行下一轮的抢答。所以要对开关是否松开进行判断。二硬件设计1芯片8255A(1)8255A在本设计中的作用 PA口送入开关量进行锁存,通过控制程序进行判断和处理,最后从PB口输出。(2) 8255A的主要功能分析8255A是一种可控制编程的并行接口芯片,本设计中将PA做输入口,PB作输出口,工作于方式0,PC1作为输入口,C口其他位不用。8255A工作方式0又称为基本输入/输出(同步传送)方式,该方式下可将三个数据端口划分为四个独立的部分,A口和B口作为两个8位端口,C口高四位和低四位可用作两个4位端口。8255A在方式0下输出的数据被锁存,而输入的数据是不锁存的。8255A的端口录址及操作功能如图二所示: D7 D6 D5 D4 D3 D2 D1 D01A组工作方式A口I/OC7-c4 I/OB组工作方式B口I/OC3-c0 I/O | | | | | | | 特征位 00方式0 1输入 1输入 8255A的方式控制字: 0方式0 1输入 1输入 01方式1 0输出 0输出 1方式1 0输出 0输出 10方式2 D7 D6 D5 D4 D3 D2 D1 D00写入位编码写入内容 写入位 | 编码 | D0 000 0写入0 D1 001 1写入1 D2 010 D3 011 D4 100 D5 101 D6 110 D7 111表二:8255A的置位/复位控制字A1A0端口号及其功能00010端口A数据总线输入操作(读)01010端口B数据总线10010端口C数据总线00100数据总线端口A输出操作(写)01100数据总线端口B10100数据总线端口C11100数据总线控制字寄存器xxxx1未选中8255A,数据总线三态断开功能1 1010 非法状态xx110数据总线三态 表三:8255A的端口录址及操作功能表 2LED发光二极管(1)芯片在本设计中的作用 LED发光二极管用于显示竞赛者的编号(2)LED的功能分析 LED发光原理及特性:发光二极管是由-族化合物,如GaAs(砷化镓)、GaP(磷化 镓)、GaAsP(磷砷化镓)等半导体制成的,其核心是PN结,因此它具有一般P-N结的I-N特性,即正向导通,反向截止、击穿特性。此外,在一定条件下,它还具有发光特性。在正向电压下,电子由N区注入P区,空穴由P区注入N区。进入对方区域的少数载流子(少子)一部分与多数载流子(多子)复合而发光。假设发光是在P区中发生的,那么注入的电子与价带空穴直接复合而发光,或者先被发光中心捕获后,再与空穴复合发光。除了这种发光复合外,还有些电子被非发光中心(这个中心介于导带、介带中间附近)捕获,而后再与空穴复合,每次释放的能量不大,不能形成可见光。发光的复合量相对于非发光复合量的比例越大,光量子效率越高。由于复合是在少子扩散区内发光的,所以光仅在靠近PN结面数m以内产生。有段选码和位选码确定数字18的输出并在延时程序中保持复位。它是一种当外加电压超过额定电压字符而形成的。有段选码和位选码确定数字18的输出并在延时程序中保持复位。它是一种当外加电压超过额定电压时发生击穿,并因此而产生可见光的器件。这种数码管是有7段或8段笔画显示器组成一个字符而形成的。时发生击穿,并因此而产生可见光的器件。这种数码管是有7段或8段笔画显示器组成一个(3)LED的技术参数分析LED发光二极管的压降一般为1.5-2.0V,其工作电流一般取10-20Ma,发光二极管可应用于直流驱动电路、交流驱动电路和脉冲驱动电路。 由于8255A的最大驱动电流为4.0mA,而LED的工作电流一般为10-20mA,所以需要加一个驱动器74LS244。图一:数码管结构 数字dpgfedcba二进制编码0001111113Fh10000011006h2010110115Bh3010011114Fh40110011066h5011011016Dh6011111017Dh70000011107h8011111117FhE0111100179h表四:LED显示管段选码编码表3微动开关(1)微动开关在本设计中的作用 当竞赛者进行抢答时,可通过微动开关作为输入信号。2)软件部分对于设计中的抢答规则由软件来实现,考虑到8位选手的各自按下抢答装置与自己的编号间的对应关系,8个信号有可能在同一时间段内有两个或以上信号输入,各自之间在时间上不会牵制,即涉及并行的方式输入,后要对输入的开关量进行处理、输出,连接至LED显示,其中需有一主控装置,据此结合课程的所学的相关知识可知,使用可编程并行接口芯片825能够满足要求,实现相关功能。实现时,可设置8255的A口作为八个输入信号,用逻辑电平开关K0K7代表抢答装置的抢答开关18号。当某个逻辑开关置“1”时,显示有效,当有两个或以上选手同时按下抢答器时,信号无效,显示“E”。将B口输出信号与7段LED的ah连接,即可用LED显示器输出抢答结果。另外,用8255的C口中的PC7作为主控信号,高电平时表示允许抢答,低电平时禁止抢答。在实验中需设置C口位控制选用新实验箱的八个LED显示中的一个。5硬件总逻辑图及其说明(见下页)三控制程序设计1控制程序思路说明根据所设计的硬件逻辑图,所需要编写的控制程序主要有两个方面:其一在程序中判断最高优先级者。再利用8255A进行换码通过七段LED显示器用其中的一个LED显示抢答者编号。具体实现步骤如下:首先初始化8255A,使8255A工作在方式0,A口作输入口,B口作输出口,然后使按键复位并按复位键,通过8255A使LED显示器显示出0,示意抢答的开始,然后读断口A的状态,并通过程序查表找出与断口A状态相同的数据,并以十进制在LED上进行显示,以此来标志抢答器的按键号码,然后重新复位进行新一轮抢答,如果有两个或两个以上的竞答者同时按下开关,则仍显示零,作为抢答无效的标志。然后重新复位,为下一轮抢答作好准备。图二:硬件总逻辑图辑图 2程序流程图 3控制程序.MODELTINYPCIBAR3EQU1CH;8位I/O空间基地址(它就是实验仪的基地址, 也为DMA & 32 BIT RAM板卡上的8237提供基地址) Vendor_IDEQU 10EBH;厂商ID号Device_IDEQU8376;设备ID号.STACK100.DATAIO_Bit8_BaseAddressDW?msg0DBBIOS不支持访问PCI $msg1DB找不到Star PCI9052板卡 $msg2DB读8位I/O空间基地址时出错$COM_ADD DW00F3H;控制口偏移量PA_ADDDW00F0H;PA口偏移量PB_ADDDW00F1H;PB口偏移量PC_ADDDW00F2H;PC口偏移量.CODESTART:MOV AX,DATAMOV DS,AXNOP CALL InitPCI CALL ModifyAddress;根据PCI提供的基地址,将偏移地址转化为实地址 mov dx,COM_ADD ;控制口地址 mov ax,90h ;10010000 out dx,ax ;设置工作方式0,A口输入,B口输出,C口输出LED位选码控制ctrl0: mov ax,00h ;禁止显示LED全灭 mov dx,PB_ADD ;B口地址输出 out dx,axctrl3: mov dx,PB_ADD mov ax,3fh ;输出显示0表示允许抢答 out dx,ax mov dx,PC_ADD ;设置数码管位选码 mov al,7Fh ;只使用最左边一位 out dx,alctrl2: mov dx,PA_ADD ;通过A口地址读输入信号 in ax,dx ;读A口状态 not ax ;取反,因为微动开关按下为低电平有效 cmp al,00h ;检测是否有输入 jz ctrl2 ;没有则继续检测 mov dl,al mov bl,00h ;bl用于记录有几人同时按键 mov cx,8h ;循环次数cheshi1: ror dl,1 ;循环右移一位,末位进CF jnc cheshi2 ;若没有进位,即CF=0则跳转recheshi继续测试 inc bl ;有进位,bl自加记录同时抢答人数cheshi2: loop cheshi1;循环测试8次 cmp bl,1 ja error ;有一人以上同时抢答,则报错 mov bl,00h ;bl清零next: ror al,1 ;有抢答信号 jc print ;有则输出 inc bl ;bl用来记录是哪一位选手 jmp nexterror: mov bl,8print: mov al,bl lea bx,ssegment ;查表 xlat ;将BX的内容(代码表首地址)+AL的内容(表格偏移量)作为有效地;址,最终内容存入AL中 mov dx,PB_ADD out dx,al mov dx,PC_ADD ;设置数码管位选码一位显示 mov al,7Fh out dx,alctrl5: mov dx,PA_ADD in ax,dx cmp al,0ffh ;检测开关是否已松开 jnz ctrl5 ;没有松开继续检测 jmp ctrl0 ;松开开关,即结束则重新开始 retssegment:db 06hdb 5bhdb 4fhdb 66hdb 6dhdb 7dhdb 07hdb 7fhdb 79hDL4S PROC NEARpush axpush dxmov dx,4mov ah,0ffhint 21hpop dxpop axRETDL4S ENDPInitPCIPROCNEARMOVAH,00HMOVAL,03HINT10H ;清屏MOVAH,0B1HMOVAL,01HINT1AHCMPAH,0JZInitPCI2LEADX,msg0InitPCI1:MOVAH,09HINT21HJMPExitInitPCI2:MOVAH,0B1HMOVAL,02HMOVCX,Device_IDMOVDX,Vendor_IDMOVSI,0INT1AHJNCInitPCI3;是否存在Star PCI9052板卡LEADX,msg1JMPInitPCI1InitPCI3:MOVDI,PCIBAR3MOVAH,0B1HMOVAL,09HINT1AH ;读取该卡PCI9052基地址JNCInitPCI4LEADX,msg2JMPInitPCI1InitPCI4:ANDCX,0FFFCHMOVIO_Bit8_BaseAddress,CXRETInitPCIENDPModifyAddressPROCNEARADDCOM_ADD,CXADDPA_ADD,CXADDPB_ADD,CXADDPC_ADD,CXRETModifyAddressENDPExit:MOVAH,4CHINT21HENDSTART四、上机调试过程 1硬件调试:在接线连接好以后,运行程序,发现在七段LED上显示的结果少了一段,C段始终不显示,后来将A口与B口对换,即A口输出,B口输入,显示正确。2.软件调试:1) 打开主持人开关,数码管显示1后没有循环显示2,而是8,检查程序后发现,xlat命令是将BX的内容(代码首地址)与AL的内容(表格偏移量)相加作为有效地址,并从中取出此地址单元中的内容送到AL中,故AL中数据变换了,而程序要求循环显示18,Al应保持从0开始,始终加1,这就要保存AL的内容。2) 继续调试,之间的都是一些判断出错问题,一一单步调试解决,程序通过。3) 程序全速运行还有一些细节问题,当有两个抢答者分别先后按键,有时会显示E,按钮反应速度太慢,将延时程序的延时由1s改为0.5s。4) 当8号参赛者按下按钮时,数字8不能锁存,将8255A控制字改为98H,C口高8位输入,低8位输出。解决了以上的一些主要问题后,具有抢答功能的程序就完成了,联机调试一下就运行出来了。(1)、对硬件部分的调试,LED显示少了一段,最初怀疑是LED出现问题,但是经过验证,发现LED完好无损,而段选编码也是正确的。于是,便怀疑是8255A的PA口或者是PB口某个引脚出现了问题。因为本设计是一A口输入,B口输出,如果输入的A口某个引脚出现了问题或者B口某个引脚出现了问题,都有可能导致LED显示少某一段。因此,对设计进行了调整,以B口做为输入,A口作为输出,并对程序进行了修改,发现此时LED显示正确。因此可以断定并非是8255A的问题,因为如果是A口或者B口某个引脚出现了问题,将A口与B口的功能交换是不可能出现显示不少段的。因此对本问题的可能原因进行分析:可能是8255A的A口与B口的某个插针接触不良,而在实验中有疏忽大意了,导致这样的结果。(2)、对软件部分的调试,可以知道延时的需要于否是无关紧要的,因为这个延时是用来的等待抢答者信号的输入,而在程序中,对抢答者有没有输入信号已经做了判断,如果没有人抢答,就会返回重新判断,直到有抢答者输入信号为止,因此这个延时是不需要的。五、设计结果分析和问题讨论1、课程设计结果:当LED上显示了“0”后,抢答者便可以进行抢答,如果没有显示便不可以。由于在本次设计中只需要1位数码管,因而应将其余的数码管置为无效,所以在程序中应向C口写入控制字7FH;在抢答者抢答过后,在LED上就显示出最先抢答的者的编号。如果出现了两个人同时抢答的情况,显示的结果为E,表示抢答无效。而在一轮抢答结束后,如果有抢答者没有将开关松开,就无法进行下一轮抢答,必须将开关松开才可以。2、设计结果分析:本设计是以8255A的A口作为输入,B口作为输出的,抢答者是以A口输入信号,C口全部作为输出,通过程序来实现具体的功能,也就是将最先抢答者的编号输出显示,或者有两人同时抢答的时候输出显示“E”。在设置8255A的工作方式时,所以应为90h,否则结果出错3、问题讨论:(1)、输入信号有无的判断:在程序中,由于开关是低电平有效,所以首先对开关量取反,然后通过与00H比较,来判断是否有输入。如果没有输入,那么就等于0,跳回重新判断,如果有输入,就等于1,继续执行。(2)、同时抢答的判断:在程序中,是通过开关量来判断是否有同时抢答的情况。通过取反,将开关量存入DL中,将其循环右移,并添加清过零的BL寄存器,用来记录进位次数。如过,DL循环右移有进位BL就进行加1操作,最后判断BL是否大于1。如果大于1,就说明有2个或以上的人同时抢答。如果等于1,就表示,没有同时抢答情况。(3)、输出最先抢答者编号:通过对以上同时输入的判断后,如过没有同时输入就可以进行最先抢答者的判断。就是将已经存入开关量的AL进行循环右移,同样需要清过零的BL寄存器来记录进位。当有进位后,停止循环右移,将BL的内容容存入AL,然后通过查找段选表的首地址将BL的内容加上AL的内容,最终存入AL中,最后通过LED输出显示抢答者的编号。 (4)输入信号有无的判断的讨论:在程序中,由于开关是低电平有效,所以都要与0FFH比较,来判断是否有输入。如果没有输入,那么就等于1,跳回重新判断,如果有输入,就等于0,继续执行。 (5)对同时抢答判断的讨论:在程序中,通过开关量来判断是否有同时抢答的情况。将开关量存入DL中,将其循环右移,并添加清过零的BL寄存器,用来记录进位次数。如有,DL循环右移有进位BL就进行加1操作,最后判断BL是否大于1。如果大于1,就说明有2个或以上的人同时抢答。如果等于1,就表示,没有同时抢答情况。 (6)输出最先抢答者编号:通过对以上同时输入的判断后,如果没有同时输入就可以进行最先抢答者的判断。就是将已经存入开关量的AL进行循环右移,同样需要清过零的BL寄存器来记录进位。当有进位后,停止循环右移,将BL的内容容存入AL,然后通过查找段选表的首地址将BL的内容加上AL的内容,最终存入AL中,最后通过LED

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论