版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、合肥学院计算机科学与技术系微机原理与接口技术课程设计报告20082009学年第2学期课程微机原理与接口技术课程设计名称竞赛抢答器学生姓名储醒之学号0604032028专业班级计算机科学与技术专业(06网工2)指导教师肖连军2009 年 2月一、题义分析及解决方案1.题义需求分析题目要求利用8086系统接口电路设计一个可供八人竞赛使用的抢答器,并显示竞答者编号(18)。根据题义可知:本设计是要设计一个能够提供给8个人使用的竞赛抢答装置,能够使得抢答者的编号,显示的装置。首先是主持人发出抢答允许信号,当抢答者收到信号后,便立刻进行抢答,然后通过装置,将最先抢答者的编号显示出来。根据以上分析,提出以
2、下几个问题:主持人如何发出抢答的信息?竞赛者如何进行抢答?如何将分辨抢答的顺序,谁是最先抢答的?如何显示抢答者的编号?抢答的总体规则是什么?怎样控制?2.解决问题的思路及其方法1)硬件部分(1)主控装置,由主持人控制决定抢答有效与无效,共两个量,因而考虑到逻辑开关、微动开关和小键盘,主控完成的是保持有效与无效两种状态,而微动开关是输入一个脉冲,故不符合要求,小键盘虽然可以实现,但相对复杂,不便于实现。逻辑开关能很好地符合要求,优点是简单、易操作。本实验使用新实验箱,芯片8255的A、B、C口均被使用,故不能实现该主控功能,但设计思想中应包含此方面,以便设计完备。(2)抢答装置,由竞赛选手抢答使
3、用,每一个选手在抢答时均有两种选择情况,抢答或不抢答,同主控装置道理一样,“1”表示抢答动作发生,“0”表示不抢答,可见,逻辑开关可方便实现,微动开关同样满足要求。然而现实生活中,更合理的应采用微动开关按键式完成抢答动作,以符合现实要求。(3)显示装置,可选择LCD或LED,由于这里的输出结果是选手编号,比较简单,用LED即可实现,用LCD也可以实现,但相对复杂,且LCD价格高,故选LED。实现时可采用一人一个发光二极管,但这样在抢答时不便于观察与先后比较,所以选用七段LED数码显示最后竟比较先后处理过的数字编号。(4)规则设定,对于规则要用到可编程芯片,因为抢答结果的多种情况需要作不同的处理
4、,要有硬件实现。由于是八位选手在同一个时间段均可抢答,输入抢答信号,所以应并行而不是串行。可编程芯片有8253、8251A以及8255等,8253主要用于定势和计时器用,它的6种工作方式多以触发方式,故不适用。8251A用于通信借口,并且是串行的,也不可用。而8255恰很好的满足需求,是并行接口芯片,所以选用8255。(5)接口实现,8086CPU与8255之间的数据总线经数据总线收发器相连,地址线经地址锁存器相连,八个逻辑开关K0K7分别连接到8255的输入口PA0PA7,输出口PB0PB7连接到七段LED显示器。在8255与LED连接时,要留心参数是否匹配,能否成功驱动LED显示,LED的
5、标准编码及显示数字如下表所示:表1-1 LED的标准编码数字DPgfEdcba二进制编码(字形)0001111113FH10000001106H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011107H8011111117FHE0111100179H通过上表,我们需要用到的编码是0、1、2、3、4、5、6、7、8、E, LED完全符合要求,每一位选手的编号,显示装置采用七段LED二极管显示八位选手的编号,即为抢答结果。2)软件部分对于设计中的抢答规则由软件来实现,考虑到8位选手的各自按下抢答装置与自己的编号间
6、的对应关系,8个信号有可能在同一时间段内有两个或以上信号输入,各自之间在时间上不会牵制,即涉及并行的方式输入,后要对输入的开关量进行处理、输出,连接至LED显示,其中需有一主控装置,据此结合课程的所学的相关知识可知,使用可编程并行接口芯片8255能够满足要求,实现相关功能。实现时,可设置8255的A口作为八个输入信号,用逻辑电平开关K0K7代表抢答装置的抢答开关18号。当某个微动开关置“0”时,显示有效,当有两个或以上选手同时按下抢答器时,信号无效,显示“E”。将B口输出信号与7段LED的adp连接,即可用LED显示器输出抢答结果。在实验中需设置C口位控制选用新实验箱的八个LED显示中的一个。
7、二、硬件设计1) 8255芯片(1) 8255引脚图8255是可编程并行接口,内部有3个相互独立的8位数据端口,即A口口和口。三个端口都可以作为输入端口或输出端口。口有三种工作方式:即方式、方式和方式,而口只能工作在方式或方式下,而口通常作为联络信号使用。8255的工作只有当片选CS有效时才能进行。而控制逻辑端口实现对其他端口的控制。(2) CPU接口1.数据总线缓冲器这是一个8位双向三态缓冲器,三态是由读/写控制逻辑控制的。这个缓冲器是8255A与CPU数据总线的接口。2.读/写控制逻辑它与CPU的6根控制线相连,控制8255A内部的各种操作。控制线RESET用来使8255A复位。和地址线A
8、1及A0用于芯片选择和通道寻址。控制线用来决定8位内部和外部数据总线上信息传送的方向,即控制把CPU的控制命令或输出的数据送到相应的通道,或把状态信息或输入数据送到CPU。8255A的读/写控制逻辑的作用,是从CPU的地址和控制总线上接受输入的信号,转变成各种命令送到A组或B组控制电路进行相应的操作。 (3) 8255A的引脚信号1.与外设相连的PA7PA0:A口数据信号线。PB7PB0:B口数据信号线。PC7PC0:C口数据信号线。2.与CPU相连的RESET:复位信号。当此信号来时,所有寄存器都被清除。同时三个数据端口被自动置为输入端口。D7D0:它们是8255A的数据线和系统总线相连。C
9、S:片选信号。在系统中,一般根据全部接口芯片来分配若于低位地址组成各种芯片选择码,当这几位地址组成某一个低电平,于8255A被选中。只有当有效时,读信号写才对8255进行读写。 RD:读信号。当此信号有效时,CPU可从8255A中读取数据。WR:写信号。当此信号有效时,CPU可向8255A中写入数据。A1、A0:端口选择信号。8255A内部有3个数据端口和1个控制端口,共4个端口。规定当A1、A0:为00时,选中A端口;为01时,选中B端口;为10时,选中C端口;为11时,选中控制口。表2-1 8255A的技术参数标识符最小最大测试条件输入低电平(VIL)-0.5V0.8V输入高电平(VIH)
10、2.0V5V输出低电平(VOL)DB0.45VIOL=2.5mA输出低电平(VOL)PER045VIOL=1.7mA输出高电平(VOH)DB24VIOH=-400A输出高电平(VOH)PER24VIOH=-200A驱动电流-1.0mA-4.0mAREXT=750,VEXT=1.5V供应电流120 mAIIL(INPUT LOAD CURRENT±10AVIN=0V5VIOFL(Output float leakage±10AVOUT=0.455V输入最低电压:min -0.5V,max 0.8 V,输入最高电压:2.0 V。输出最低电压:0.45 V,输出最高电压:2.4
11、V。(3)8255A的方式控制字D7 D6 D5 D4 D3 D2 D1 D0100100001:工作方式 A口方式0输入 B口方式0输出 C口高4位输出 C口低4位输出图2-1 8255A的方式控制字方式0的工作特点是通常不用联络信号,不使用中断,三个通道中的每一个都有可以由程序选定为输入或输出。其功能为:两个8位通道:通道A、B。两个四位通道:通道C高四位和低四位;任何一个通道可以作输入/输出;输出是锁存的;输入是不锁存的;在方式0时各个通道的输入/输出可有16种不同的组合。2)显示器件LED(1) LED在本设计中的作用LED功能分析如下:1.物理构造:LED发光二级管,采用砷化镓、镓铝
12、砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。2.工作原理:当在发光二极管PN结上加正向电压时,PN结势垒降低,载流子的扩散运动大于漂移运动,致使P区的空穴注入到N区,N区的电子注入到P区,这样相互注入的空穴与电子相遇后会产生复合,复合时产生的能量大部分以光的形式出现。3.数字成像:将七个发光管进行组合,排列成数字图形8,再根据需要控制七个管的亮与灭,即可显示出定义数字。LED技术参数如下:1.发光二极管的压降一般为1.52.0 V,其工作电流一般取1020 mA为宜。2.发光二极管的发光颜色有:红色光、黄色光、绿色光、红外光等。3.发光二极管应用电路有四种,即直流驱动电路、
13、交流驱动电路、脉冲驱动电路、变色发光驱动电路。表2-2 LED显示管段选码编码表数字DPgfedcba二进制编码(字形)0001111113FH10000001106H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011107H8011111117FHE0111100179H图2-2 LED数码管及其框图上面两图分别为外形图和原理图,当七段数码管点亮其中几段可显示数字和简单的字符,将七段数码管负极连接到一起称为公共端,而发光二极管的正极则分别由引脚引出,便于控制哪个发光二极管点亮。由于将8个发光二极管负极全部连
14、接在一起,称为共阴极数码管,还有将8个发光二极管的正极连接在一起,故称之为共阳极数码管。本次实验用的数码管需动态扫描显示,其接口电路将所有数码管的笔画控制段与ah同名端连在一起,接到一个并行端口,每个公共极COM端由独立的I/O线控制,CPU向字模输出口送出字形码时,所有数码管接收到相同的字形码,究竟哪个数码管显示,取决于每个LED的COM端,所谓动态扫描,就是显示一位信息时,其他位不能显示,必须采用分时方法,轮流控制COM端。3) 微动开关(1)微动开关及其编码16 / 16文档可自由编辑打印开关高电平:+5V、低电平:0V表2-4微动开关及其编码编码数字编码数字00000100080001
15、110019001021010A001131011B010041100C010151101D011061110E011171111F4) 硬件总逻辑图及其说明图2-3 硬件电路图说明:8086的数据线接8255A的数据线,8086的地址线形成地址通过译码器与8255A的片选信号相连。8086的分别接8255A的A0,A1。PA0PA7接微动开关K0K7。PB0PB7接显示管的adp,PC0PC7接LED显示装置,用于位选择。3、控制程序说明3.1控制程序设计思路说明1) 定义十六进制数字符的七段代码表。2) 初始化8255A的工作方式。3) 置LED灯全灭。4) 输出显示零表示等待抢答。5)
16、读A口状态,若有两个或两个以上的抢答信号,显示输出E。若只有一个抢答信号,则查询输出其编号。6) 继续观察LED是否输出显示零,若为0,进行下一次抢答。3.2程序流程图开始初始化8255A置LED全灭LED显示0?YNA口一个信号?LED显示E找到输入信号查表输出选手号码LED显示0?YN图3-1 程序流程图3.3控制程序.MODELTINYPCIBAR3EQU1CH;8位I/O空间基地址(它就是实验仪的基地址, 也为DMA & 32 BIT RAM板卡上的8237提供基地址) Vendor_IDEQU 10EBH;厂商ID号Device_IDEQU8376;设备ID号.STACK10
17、0.DATAIO_Bit8_BaseAddressDW?msg0DB'BIOS不支持访问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,AXNOPCALL InitPCICALL ModifyAddress;根据PCI提供的基地址,将偏移地址转化为实地址mov dx
18、,COM_ADD ;控制口地址mov ax,90h ;10010000out dx,ax step0:mov ax,00h ;禁止显示LED全灭mov dx,PB_ADD ;B口地址输出out dx,axstep3:mov dx,PB_ADDmov ax,3fh ;输出显示0表示允许抢答out dx,ax mov dx,PC_ADD ;设置数码管位选码mov al,7Fh ;只使用最左边一位out dx,alstep2:mov dx,PA_ADD ;通过A口地址读输入信号in ax,dx ;读A口状态not ax ;取反,因为微动开关按下为低电平有效cmp al,00h ;检测是否有输入jz
19、step2 ;没有则继续检测mov dl,almov bl,00h ;bl用于记录有几人同时按键mov cx,8h ;循环次数test1:ror dl,1 ;循环右移一位,末位进CFjnc test2 ;若没有进位,即CF=0则跳转retest继续测试inc bl ;有进位,bl自加记录同时抢答人数test2:loop test1;循环测试8次cmp bl,1ja error ;有一人以上同时抢答,则报错mov bl,00h ;bl清零next:ror al,1 ;有抢答信号jc print ;有则输出inc bl ;bl用来记录是哪一位选手jmp nexterror:mov bl,8prin
20、t:mov al,bllea bx,ssegment ;查表xlat ;将BX的内容(代码表首地址)+AL的内容(表格偏移量)作为有效地;址,最终内容存入AL中mov dx,PB_ADDout dx,almov dx,PC_ADD ;设置数码管位选码一位显示mov al,7Fh ;只使用最左边一位out dx,alstep5:mov dx,PA_ADD in ax,dx cmp al,0ffh ;检测开关是否已松开jnz step5 ;没有松开继续检测jmp step6step6:mov al,clmov dx,PB_ADDout dx,almov dx,PC_ADD ;设置数码管位选码一位显
21、示mov al,0FEh ;只使用最右边一位out dx,alcall DL500ms ;调用延迟程序jmp step0 ssegment:db 06hdb 5bhdb 4fhdb 66hdb 6dhdb 7dhdb 07hdb 7fhdb 79hDL500ms PROC NEARpush axpush dxmov dx,500mov ah,0ffhint 21hpop dxpop axRETDL500ms ENDPInitPCIPROCNEARMOVAH,00HMOVAL,03HINT10H ;清屏MOVAH,0B1HMOVAL,01HINT1AHCMPAH,0JZInitPCI2LEADX
22、,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,CXR
23、ETInitPCIENDPModifyAddressPROCNEARADDCOM_ADD,CXADDPA_ADD,CXADDPB_ADD,CXADDPC_ADD,CXRETModifyAddressENDPExit:MOVAH,4CHINT21HENDSTART4、上机调试过程4.1硬件调试 按照硬件连接图接好线后,运行程序,发现LED显示的不是0,经检查发现二进制编码是11000000而并不是0的编码00000011。后在老师提示下,原因是PB口的连接的并不是a-dp,而是dp-a。后采用将数据线反过来接,结果正确显示0。4.2软件调试 刚开始调试程序时,总是出现错误,后经老师提示,原因是新
24、实验箱没有8086CPU,它采用的运行方式是上位机的CPU模拟实现下位机的8086CPU实现功能,所以加入了老师给的地址转换程序,得以实现。继而相应的删去了一些重复不必要的初始化程序。4.3联机调试在联机调试时出现了两个问题:(1)起初一直坚守“1”有效,运行错误,后仔细阅读了实验箱使用说明,认识微动开关按下时的状态为“0”,松开为“1”,于是在程序中读信号的代码段中入NOT AX,将读取的微动开关按位取反,以使得开关按下“0”时有效,弹开“1”时无效,结果成功实现。(2)程序反复调试并运行了多次,几经测试,起初都正确,可是后来同样正确的程序运行LED显示却出现故障,下位机重置仍然不行,后经老
25、师指导,将上位机重启,问题被解决。4.4调试结果及问题的提出(1)数码管显示数字的笔画不对,尽管数码管编码正确无误,经检查原因是控制编码段的定位变化未能有效设置好,随着程序的运行,值变化混乱,后经单步调试,仔细分析并改正优化,成功解决。(2)在联机调试结果正确后,全速运行情况下,LED显示始终会全部显示,后在老师的提示下,程序中显示代码段的位置出加入mov ax,00h ,mov dx,PB_ADD 以禁止显示,LED全灭,同时应考虑到人眼视网膜的分辨率,设置显示延迟时间,以便于观察。(3) 在老师的要求下,应该能够观察到选手的编号。而微动开关按下是瞬间的且选手不能一直按着开关不放,对于观察结
26、果不方便,故老师要求在最右边的一位LED上显示出选手编号。设计时在测试微动开关是否松开后,再加一个B口输出在LED上显示。开始的很多次,在单步调试中可以观察到在最右边的LED上显示了选手编号,而在全速运行中却看不到。经老师检查后,发现在显示程序后立刻执行了LED全灭,在人眼的能力内是看不到的,在老师的建议下,加入一个延迟程序即可解决问题。5、设计结果分析及问题讨论5.1 课程设计结果在允许抢答信号发出后,七段LED显示器上会显示首先按下开关的选手编号。由于响应速度非常快,若有两人或两人以上同时拨下开关是,七段LED显示器上始终会灵敏的显示第一个按下开关的抢答者,当起初有两个或以上选手抢答,则显
27、示“E”表示出错,抢答无效。5.2设计结果分析由于芯片8255的三个端口A、B、C全部都被使用,起初的主控思想便无法实现,从 8255A的A口读入输入信号,即为选手编号。然后从B口输出抢答结果到七段LED显示器上,C口控制LED数码管的位控制,采用最左边的一位LED显示,并设置延迟在最右边的一位LED上显示最终的抢答者号码,便于观察和比较。5.3问题讨论在考虑如何确定有几人同时拨下开关的问题中,用BL记下在A口的输入信号,将BL循环右移八次,看八位选手中有哪几位发出了抢答动作,即所在的位有效,有几个一被移出,就有多少个人同时按下开关。将BL与1比较,如果大于1,说明有多人同时抢答,七段LED显示器上显示E,表示抢答无效。否则,满足一位选手动作,LED显示器即
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司现场安全专员系列培训考核试卷
- 2024至2030年中国语音布线系统数据监测研究报告
- 《基于关键事件的特殊教育骨干教师专业发展研究》
- 《流致振动压电能量收集器的理论与仿真研究》
- 2024-2030年中国柬埔寨农业开发行业竞争态势及项目投资可行性分析报告
- 教育创新策略SWOT分析与应用探索
- 2024至2030年中国水冷式罗茨真空泵数据监测研究报告
- 聊天室java课程设计
- 2024-2030年中国无线网桥行业发展现状及投资运作模式分析报告
- 2024-2030年中国方钻杆滚子补心行业供需状况发展战略规划分析报告
- 小讲课-中心静脉压的测量及临床意义
- 工业以太网交换机招标技术规范书
- 公司博士后工作站年度工作总结
- 技工院校电子商务专业人才培养方案
- 询比采购文件模板
- 铜梁区自然灾害类风险评估等级表
- 斯瓦希里语轻松入门
- 精装修工程试验检测计划
- 基础体温表格基础体温表
- 新教材人教版高中数学必修第一册 4.1.1 n次方根与分数指数幂 教学课件
- 酒店住宿水单模板
评论
0/150
提交评论