1、竞赛抢答器微机原理课程设计课 程 设 计课程设计名称:微机原理应用课程设计专 业 班 级 : 学 生 姓 名 : 学 号 : 指 导 教 师 : 课程设计时间: 2014.12.22-2015.1.2 计算机科学与技术 专业课程设计任务书学生姓名专业班级学号题 目竞赛抢答器课题性质A课题来源自拟课题指导教师同组姓名主要内容逻辑开关K0K7代表竞赛抢答按钮07号或者是A,b,C,d,E,F,-,P,当某个逻辑电平开关置“”时,相当某组抢答按钮按下。在七段数码管上将其组号(07)或者(A,b,C,d,E,F,-,P,)显示出来,并使微机扬声器响一下。任务要求设置8255为口输入、口输出,读取口数据
2、,若为0表示无人抢答,若不为0则有人抢答。根据读取数据可判断其组号。从键盘上按空格键开始下一轮抢答,按其它键程序退出。参考文献1李顺增,微机原理及接口技术,机械工业出版社,2006年第一版2冯博琴,微机计算机原理及接口技术,清华大学出版社3王远,模拟电子技术,机械工业出版社4周国祥,微机原理与接口技术,中国科学技术大学出版社 5康华光,电子技术基础 数字部分,高等教育出版社6潘峰, 微机原理与汇编语言,电子工业出版社审查意见指导教师签字:教研室主任签字: 年 月 日 信息科学与工程 学院课程设计成绩评价表课程名称: 微机原理课程设计设计题目: 竞赛抢答器专业:计算机科学与工程学院 班级:姓名:
3、 学号:2序号评审项目分 数满分标准说明1内 容思路清晰;语言表达准确,概念清楚,论点正确;实验方法科学,分析归纳合理;结论严谨,设计有应用价值。任务饱满,做了大量的工作。(20分)2创 新内容新颖,题目能反映新技术,对前人工作有改进或突破,或有独特见解。(10分)3完整性、实用性整体构思合理,理论依据充分,设计完整,实用性强(10分)4数据准确、可靠数据准确,公式推导正确(10分)5规 范 性设计格式、绘图、图纸、实验数据、标准的运用等符合有关标准和规定(10分)6纪 律 性能很好的遵守各项纪律,设计过程认真(20分)7答 辩准备工作充分,回答问题有理论依据,基本概念清楚。主要问题回答简明准
4、确。在规定的时间内作完报告。(20分)总 分综合意见指导教师 年 月 日 竞赛抢答器 摘 要 随着我国经济和文化事业的发展,当今的社会竞争日益激烈,在很多竞争场合要求有快速公正的竞争裁决,例如证券,股票交易,选拔人才,评选优胜及各种智力竞赛等。抢答器在我们的生活中应用的非常广泛,特别是在一些智力抢答比赛中,抢答器的应用显得尤为重要。本次的课程设计我们将深入探讨抢答器的工作原理及软件和硬件的实现方法。 关键字:抢答器 数码管 硬件图 软件编程1 设计目的 1)了解微机化竞赛抢答器的基本原理。 2)进一步学习使用并行接口2 设计要求逻辑开关K0K7代表竞赛抢答按钮07号,当某个逻辑电平开关置“”时
5、,相当某组抢答按钮按下。在七段数码管上将其组号显示出来,并使微机扬声器响一下。设置8255为C口输入、A口输出,读取C口数据,若为0表示无人抢答,若不为0则有人抢答。根据读取数据可判断其组号。从键盘上按空格键开始下一轮抢答,按其它键程序退出。3 主要器件 1)8255A接口芯片:用来实现数据的输入及输出显示 2)74LS244锁存器:用来锁存数据 3)七段数码管:用来显示抢答小组的的组号 4)逻辑开关:用于各个小组进行抢答4 8255的基本介绍和控制方式的选择Intel 8086/8088系列的可编程外设接口电路(Programmable Peripheral Interface)简称PPI,
6、型号8255(改进型为8255A及8255A-5),具有24条输入/输出引脚,可编程的通用并行输入/输出接口电路。它是一片使用单个+5V电源的40脚双列直插式大规模集成电路。8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。8255A在使用前要写入一个方式控制字,选择A,B,C三个端口各自的工作方式,共三种:方式0:基本的输入输出方式,及无需联络就可以直接进行的I/0方式。其中A, B,C口的高四位或低四位可分别设置成输入或输出。方式1:选通I/O,此时接口与外围设备需联络信号进行协调,只有A口和B口 可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备 的联络信号,雨
7、下的线只有基本的I/O功能,即只工作在方式0.方式2:双向I/O方式,只有A口可以工作在这种方式,该I/O线既可输入又可输出,此时C口有五条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起作为方式0的I/O线。8255A是一个并行输入,输出器件,具有24个可编程设置的I/O口,包括3组8位的I/O为PA口,PB口,PC口,又可分为2组12位的I/O口:A组包括A口和C口高四位,B组包括B口及C组的低四位。D7D6 D5D4D3D2D1D01A口A口C口高四位B口B口C口低四位00 方式001 方式10x 方式20输出1 输入0输出1输入0方式01
8、方式10输出1输入0输出1输入 D7:标志位D6-D5:端口A方式选择(0-2)D4:端口A输入输出方式D3:端口C高四位输入输出选择D2:端口B方式选择(0-1)D1:端口B输入输出选择D0:端口C低四位输入输出选择使用8255A前必须根据CPU类型进行数据线连接如果使用8088CPU则需将8位数据线与8255A数据线连接,如果是8086CPU则需将8255A数据线与CPU数据线的低八位连接,进行操作时必须使用偶地址。因为本课题不需要中断,只是单独PC口的输入和PS口的输出,故选择PA口的方式0并定义为输出,PC口定义为输入模式。PB端口未使用设为默认输出端口。所以控制字为10001001B
9、=89H5 74LS244 74LS244为3态8位缓冲器,一般用作总线驱动器。74LS244没有锁存的功能。地址锁存器就是一个暂存器,它根据控制信号的状态,将总线上地址代码暂存起来。8086/8088数据和地址总线采用分时复用操作方法,即用同一总线既传输数据又传输地址。它主要用于三态输出,作为地址驱动器、时钟驱动器、总线驱动器和定向发送器等。74Ls244真值表示:L表示低电平 ,H表示高电平,X表示不定状态,Z表示高阻态6 数码管显示LED的管脚h, g, f, e, d, c, b, a 对应的字形对应存放在内存单元的字形码1 1 1 1 1 0 0 11 0 1 0 0 1 0 01
10、0 1 1 0 0 0 01 0 0 1 1 0 0 11 0 0 1 0 0 1 01 1 1 0 0 0 1 01 1 1 1 1 0 0 01 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 0f9H 0a4H 0b0H 99H 92H 82H 0f8H 80HLED的管脚h, g, f, e, d, c , b, a对应的字形对应存放在内存单元的字形码0 1 1 1 0 1 1 10 0 1 1 1 1 0 00 0 1 1 1 0 0 10 1 0 1 1 1 1 00 1 1 1 1 0 0 1 0 1 1 1 0 0 0 10 1 0 0 0 0 0 00 1 1 1
11、 0 0 1 1 A B C D E F - P 77H 3cH 39H 5eH 79H 71H 40H 73H数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳极数码管是指将所有发光二极管的阳极接到一起,形成公共阳极(COM)的数码管。共阳极数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高点平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起,形成公共阴极(COM)的数码管。共阴数码管在应用时应将公
12、共极COM接到底线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。7 硬件连接电路图8 流程图9 程序data segmentio8255a equ 288h ;写端口Aio8255c equ 28ah ;写端口Cio8255ct equ 28bh ;写方式控制字led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h ;数码表1 对应 0 7;led db 77h,7ch,39h,5eh,79h,71h,40h,73h ;数码表2 对应A, b, C, d, E, F, -, Pdata endscode seg
13、mentassume cs : code, ds : datastart: mov ax, datamov ds, ax;初始化8255芯片mov dx, io8255ct ;设8255为A口输出,C口输入mov ax, 89h ;方式控制字为10001001B,方式0out dx, al ;将al输出到io8255b,即地址28bh;从8255的端口C读取信息mov bx, offset led ;使BX指向段码管首址sss: mov dx, io8255c ;地址28ahin al, dx ;从8255的C口io8255c输入数据or al, al ;判断al是否为0je sss ;若al
14、为0,则表明无键按下,转sss;若有键按下,即有人抢答mov dl,06h ;输出ACK字符,作为计数mov ah,02int 21h ;判断是哪位按键按下 mov cl, 0ffh ;cl作计数器,初值为-1,-1补码为11111111Brr: shr al, 1 ;al逻辑右移一位,最高位补0,最低位进入CFinc cl ;cl+1jnc rr ;若无进位,即CF = 0,此次移位前最低位为0,此最低位对应的键未按下;若检测到按下的位mov al, cl ;al cl对应的ASCII码 xlat ;alds:bx + al,将bx缓冲区中,al偏移地址下对应的一个段码管代码,换给almov
15、 dx, io8255a ;A口地址288hout dx, al ;将al输出到A口,数码管显示数字0 7;输出响铃字符, 提示停止本轮抢答mov dl, 7 ;响铃对应的ASCII码为07h mov ah, 2 int 21h;从键盘输入一个字符,控制是否允许抢答wai: mov ah, 1 ;从键盘输入一个字符int 21h ;显示输入的字符cmp al, 20h ;判断输入字符是否为空格,ASCII码为20hjne eee ;不是空格,转eee,停止抢答(即不允许开始下一轮抢答);若从键盘输入的字符是空格mov al, 0 ;是空格,灭灯,空操作ASCII码为00hmov dx, io8
16、255a ;地址288hout dx, al ;将灭灯信号输出到A口,数码管不显示内容jmp sss ;开始下一轮抢答eee: mov ah, 4ch ;执行结束,返回DOSint 21hcode endsend start ;汇编结束10 运行结果Enter 6次Esc 8次该开始时,未按执行程序前 K7置1 K3置1K2置1K0置1所有逻辑开关复位后并按空格键K5置1K7置111 总结 转眼间两周的微机原理应用课程设计就要结束了,通过这次课程设计,我学会了很多课本上学不到的东西,同时也加强了我的动手,思考和解决问题的能力,受益匪浅。在课程设计过程中,我和另外一位同学分工也非常的明确。我觉得
17、对课本知识的巩固和加强,由于课本上的知识太多,同时平时课间又没有很好的理解芯片的功能,并且考试的内容有限,所以在课程设计的过程中,我们了解了很多元件的功能,对其在电路中的使用有更多的认识。 通过课程设计后我了解到有些知识只要深入的了解,探究,你会发现很多有意思的东西,会让你非常有成就感,即使在解决问题的时候同时伴随着许多你所不能解决的问题。在不断发现问题和解决问题中前进。 从前的学习过程过于肤浅,只是流于表面的理解,而现在要做课程设计,就不得不要求我们对所用到的知识有更深层次的的理解。因为课程设计的内容比及书本中的理论知识而言,更接近于现实生活,而理论到实践的转化往往是一个艰难的过程。12 遗
18、留问题在答辩的时候老师留给了我们组一个问题就是对每一组的抢答次数做一下统计。我和同组的另一位同学对这个问题想了好久.首先我们想到要想统计每位的抢答次数只有在逻辑右移时利用CL的数值来确定,但是统计的次数又怎样来存储呢,还有就是不是简简单单只统计一位的抢答次数,是八位中的每一位的抢答次数都要统计,变量怎样设又该怎样存储以及又该通过怎样的方式同时显示他们的抢答次数。由于目前我的编程能力有限对这些问题不能很好的解决,只对比赛进行的次数进行了统计,每比赛一次就输出一个小树苗,本次实验分别是比赛六次按出车键结束和比赛八次按ESC键结束,并抓了相应的结果显示图13 参考文献 1李顺增,微机原理及接口技术,机械工业出版社,2006年第一版 2冯博琴,微机计算机原理及接口技术,清华大学出版社 3王远,模拟电子技术,机械工业出版社 4周国祥,微机原理与接口技术,中国科学技术大学出版社 5康华光,电子技术基础 数字部分,高等教育出版社 6潘峰, 微机原理与汇编语言,电子工业出版社