您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 竞赛抢答器微机原理课程设计
课程设计课程设计名称:微机原理应用课程设计专业班级:学生姓名:学号:指导教师:课程设计时间:2014.12.22---2015.1.2计算机科学与技术专业课程设计任务书学生姓名专业班级学号题目竞赛抢答器课题性质A课题来源自拟课题指导教师同组姓名主要内容逻辑开关K0~K7代表竞赛抢答按钮0~7号或者是A,b,C,d,E,F,-,P,当某个逻辑电平开关置“1”时,相当某组抢答按钮按下。在七段数码管上将其组号(0~7)或者(A,b,C,d,E,F,-,P,)显示出来,并使微机扬声器响一下。任务要求设置8255为C口输入、A口输出,读取C口数据,若为0表示无人抢答,若不为0则有人抢答。根据读取数据可判断其组号。从键盘上按空格键开始下一轮抢答,按其它键程序退出。参考文献[1]李顺增,《微机原理及接口技术》,机械工业出版社,2006年第一版[2]冯博琴,《微机计算机原理及接口技术》,清华大学出版社[3]王远,《模拟电子技术》,机械工业出版社[4]周国祥,《微机原理与接口技术》,中国科学技术大学出版社[5]康华光,《电子技术基础数字部分》,高等教育出版社[6]潘峰,《微机原理与汇编语言》,电子工业出版社审查意见指导教师签字:教研室主任签字:年月日信息科学与工程学院课程设计成绩评价表课程名称:微机原理课程设计设计题目:竞赛抢答器专业:计算机科学与工程学院班级:姓名:学号:2序号评审项目分数满分标准说明1内容思路清晰;语言表达准确,概念清楚,论点正确;实验方法科学,分析归纳合理;结论严谨,设计有应用价值。任务饱满,做了大量的工作。(20分)2创新内容新颖,题目能反映新技术,对前人工作有改进或突破,或有独特见解。(10分)3完整性、实用性整体构思合理,理论依据充分,设计完整,实用性强(10分)4数据准确、可靠数据准确,公式推导正确(10分)5规范性设计格式、绘图、图纸、实验数据、标准的运用等符合有关标准和规定(10分)6纪律性能很好的遵守各项纪律,设计过程认真(20分)7答辩准备工作充分,回答问题有理论依据,基本概念清楚。主要问题回答简明准确。在规定的时间内作完报告。(20分)总分综合意见指导教师年月日竞赛抢答器摘要随着我国经济和文化事业的发展,当今的社会竞争日益激烈,在很多竞争场合要求有快速公正的竞争裁决,例如证券,股票交易,选拔人才,评选优胜及各种智力竞赛等。抢答器在我们的生活中应用的非常广泛,特别是在一些智力抢答比赛中,抢答器的应用显得尤为重要。本次的课程设计我们将深入探讨抢答器的工作原理及软件和硬件的实现方法。关键字:抢答器数码管硬件图软件编程1设计目的1)了解微机化竞赛抢答器的基本原理。2)进一步学习使用并行接口2设计要求逻辑开关K0~K7代表竞赛抢答按钮0~7号,当某个逻辑电平开关置“1”时,相当某组抢答按钮按下。在七段数码管上将其组号显示出来,并使微机扬声器响一下。设置8255为C口输入、A口输出,读取C口数据,若为0表示无人抢答,若不为0则有人抢答。根据读取数据可判断其组号。从键盘上按空格键开始下一轮抢答,按其它键程序退出。3主要器件1)8255A接口芯片:用来实现数据的输入及输出显示2)74LS244锁存器:用来锁存数据3)七段数码管:用来显示抢答小组的的组号4)逻辑开关:用于各个小组进行抢答48255的基本介绍和控制方式的选择Intel8086/8088系列的可编程外设接口电路(ProgrammablePeripheralInterface)简称PPI,型号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口与外围设备的联络信号,雨下的线只有基本的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组的低四位。D7D6D5D4D3D2D1D01A口A口C口高四位B口B口C口低四位00方式001方式10x方式20输出1输入0输出1输入0方式01方式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=89H574LS24474LS244为3态8位缓冲器,一般用作总线驱动器。74LS244没有锁存的功能。地址锁存器就是一个暂存器,它根据控制信号的状态,将总线上地址代码暂存起来。8086/8088数据和地址总线采用分时复用操作方法,即用同一总线既传输数据又传输地址。它主要用于三态输出,作为地址驱动器、时钟驱动器、总线驱动器和定向发送器等。74Ls244真值表示:L表示低电平,H表示高电平,X表示不定状态,Z表示高阻态6数码管显示LED的管脚h,g,f,e,d,c,b,a对应的字形对应存放在内存单元的字形码1111100110100100101100001001100110010010111000101111100010000000123456780f9H0a4H0b0H99H92H82H0f8H80HLED的管脚h,g,f,e,d,c,b,a对应的字形对应存放在内存单元的字形码0111011100111100001110010101111001111001011100010100000001110011ABCDEF-P77H3cH39H5eH79H71H40H73H数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳极数码管是指将所有发光二极管的阳极接到一起,形成公共阳极(COM)的数码管。共阳极数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高点平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起,形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到底线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。7硬件连接电路图8流程图9程序datasegmentio8255aequ288h;写端口Aio8255cequ28ah;写端口Cio8255ctequ28bh;写方式控制字leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h;数码表1对应0~7;leddb77h,7ch,39h,5eh,79h,71h,40h,73h;数码表2对应A,b,C,d,E,F,-,Pdataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,ax;初始化8255芯片movdx,io8255ct;设8255为A口输出,C口输入movax,89h;方式控制字为10001001B,方式0outdx,al;将al输出到io8255b,即地址28bh;从8255的端口C读取信息movbx,offsetled;使BX指向段码管首址sss:movdx,io8255c;地址28ahinal,dx;从8255的C口io8255c输入数据oral,al;判断al是否为0jesss;若al为0,则表明无键按下,转sss;若有键按下,即有人抢答movdl,06h;输出ACK字符,作为计数movah,02int21h;判断是哪位按键按下movcl,0ffh;cl作计数器,初值为-1,-1补码为11111111Brr:shral,1;al逻辑右移一位,最高位补0,最低位进入CFinccl;cl+1jncrr;若无进位,即CF=0,此次移位前最低位为0,此最低位对应的键未按下;若检测到按下的位moval,cl;alcl对应的ASCII码xlat;alds:[bx+al],将bx缓冲区中,al偏移地址下对应的一个段码管代码,换给almovdx,io8255a;A口地址288houtdx,al;将al输出到A口,数码管显示数字0~7;输出响铃字符,提示停止本轮抢答movdl,7;响铃对应的ASCII码为07hmovah,2int21h;从键盘输入一个字符,控制是否允许抢答wai:movah,1;从键盘输入一个字符int21h;显示输入的字符cmpal,20h;判断输入字符是否为空格,ASCII码为20hjneeee;不是空格,转eee,停止抢答(即不允许开始下一轮抢答);若从键盘输入的字符是空格moval,0;是空格,灭灯,空操作ASCII码为00hmovdx,io8255a;地址288houtdx,al;将灭灯信号输出到A口,数码管不显示内容jmpsss;开始下一轮抢答eee:movah,4ch;执行结束,返回DOSint21hcodeendsendstart;汇编结束10运行结果Enter6次Esc8次该开始时,未按执行程序前K7置1K3置1K2置1K0置1所有逻辑开关复位后并按空格键K5置1K7置111总结转眼间两周的微机原理应用课程设计就要结束了,通过这次课程设计,我学会了很多课本上学不到的东西,同时也加强了我的动手,思考和解决问题的能力,受益匪浅。在课程设计过程中,我和另外一位同学分工也非常的明确。我觉得对课本知识的巩固和加强,由于课本上的知识太多,同时平时课间又没有很好的理解芯片的功能,并且考试的内容有限,所以在课程设计的过程中,我们了解了很多元件的功能,对其在电路中的使用有更多的认识。通过课程设计后我了解到有些知识只要深入的了解,探究,你会发现很多有意思的东西,会让你非常有成就感,即使在解决问题的时候同时伴随着许多你所不能解决的问题。在不断发现问题和解决问题中前进。从前的学习过程过于肤浅,只是流于表面的理解,而现在要做课程设计,就不得不要求我们对所用到的知识有更深层次的的理解。因为课程设计的内容比及书本中的理论知识而言,更接近于现实生活,而理论到实践的转化往往是一个艰难的过程。12遗留问题在答辩的时候老师留给了我们组一个问题就是对每一组的抢答次数做一下统计。我和同组的另一位同学对这个问题想了好久.首先我们想到要想统计每位的抢答次数只有在逻辑右移时利用CL的数值来确定,但是统计的次数又怎样来存储呢,还有就是不是简简单单只统计一位的抢答次数,是八位中的每一位的抢答次数都要统计,变量怎样设又该怎样存储以及又该通过怎样的方式同时显示他们的抢答次数。由于目前我的编程能力有限对这些问题不能很好的解决,只对比赛进行的次数进行了统计,每比赛一次就输出一个小树苗,本次实验分别是比赛六次按出车键结束和比赛八次按ESC键结束,
本文标题:竞赛抢答器微机原理课程设计
链接地址:https://www.777doc.com/doc-4402014 .html