《课程设计实验报告(共10页).doc》由会员分享,可在线阅读,更多相关《课程设计实验报告(共10页).doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上课程设计实验报告 竞赛抢答器计科0201班第五小组 张国成 7号竞赛抢答器一、需求分析本实验要求大家了解微机化竞赛抢答器的基本原理,进一步学习使用并行接口8255芯片,以及8253定时计数器的六种工作方式,中断的基本概念,中断服务子程序的编写。二、功能描述基本功能:在主持人按下抢答开关后,各位选手即可开始抢答,并在数码管上显示最先抢答选手的号码。扩展功能:在主持人按下抢答开关后,计数器开始9秒倒计时,若倒计时结束后没有人抢答,则本轮抢答无效,进入下一轮。三、概要设计 由于本次实验要用到数码显示、中断控制、倒计时等功能,故初步分析需要8255、8259、8253等芯片。
2、下图为竞赛抢答器(模拟)的原理图,逻辑开关K0K7代表竞赛抢答器按钮07号,当某个逻辑电平开关置“1”时,相当某组抢答按钮按下,在七段数码管上将其组号(07)显示出来。四、方案论证在计数器每次计数结束后,对于全局变量counter的减一操作有两种方式,一个是通过不断扫描计数器是否计数结束,另一种是通过8253芯片计数结束产生中断。 方案一:通过对8253计数器的控制端口写控制字进行锁存,然后用一个读命令读出计数器中的数放寄存器ax中,通过比较ax中的数是否为零来判断这次计数是否结束。若为零,就使counter减一。方案二:将8253的输出接到8259的中断输入端,通过8253计数结束产生中断来
3、控制,在中断服务子程序中对counter减一操作。方案比较:方案一采用扫描,没有用到8259,程序编制简单,但是cpu耗费了更多的时间在扫描,效率相对来说较低。方案二采用中断,程序结构化更为清晰,且cpu少了循环扫描的时间,效率较高。但是多用了一个8259中断控制芯片,程序编制上涉及到中断服务子程序的编写,稍显复杂。可见两种方案各有优劣。方案选择:经过小组讨论,先采用方案二,完成基本和扩展功能。若有时间,再采用方案一完成实验。五、模块划分由于本次课程设计采用团队合作的形式,故要将本次实验进行模块划分,小组成员要了解全部程序流程,但是主要是完成自己负责的功能模块。组长负责协调监督指导小组成员,并
4、完成最后的程序的连调工作。具体划分如下:尚海涛、王祁远:负责8253计数张国成、吴小龙:负责8259中断杨德娜、唐益文:负责8255并行接口每天的文档工作由各自详细记录自己今天的工作进度以及程序调试的过程和心得体会,并附上自己开发模块的文档说明,最后交由组长整合在一起,构成当天的开发文档。六、详细设计 1)8255芯片简介8255,是一个典型的可编程并行接口芯片。8255具有三个相互应独立的8位并行输入输出端口,即端口A,端口B和端口C,其中端口C分为两个4位来配合端口A和端口B工作,它为INTEL系列CPU与外设之间提供TTL电平兼容的接口。8255A可以工作在方式0,方式1,方式2三种方式
5、,其中端口A可以工作在这3种不同的方式下,而端口B只能工作在方式0和方式1,端口C配合A口和B口工作。8255A没有设置专门的联络信号线,但是可以使用端口中的某些端口中的某些位来的担任。端口A、B和C可以配合使用,来构成所需的单线,双线或三线联络信号的并行接口。8255的内部结构与CPU接口部分 8255与CPU的接口部分通过数据总线缓冲器和读/写控制逻辑。 数据总线缓冲器; 这是一个8位双向三态缓冲器,8255A通过它与CPU的系统数据总线连接。CPU所有的输入/输出数据,CPU通过输出指令发给8255A的控制字和用输入指令读入的外设的当前状态信息,都是通过这个数据缓冲器传送的。 读/写控制
6、逻辑电路 读/写控制逻辑电路通过6根控制线与CPU连接,它负责对8255A的数据传送过程进行控制。它接收到来自CPU控制总线的RESET、WR、RD和来自地址总线的A1,A0后,将这些信号进行组合,得到对A组控制部件和B组控制部件的相应控制命令,再用这些控制命令去控制这两个部件按初始化编程的要求,去完成对数据的输入/输出,对状态信息的读取和控制命令的传送。、与外设接口部分 8255A与外设的接口是通过3个输入/输出数据端口来实现的。每个端口都是8位的数据端口,即端口A、端口B和端口C,它们都可以用软件编程来来设置成输入口或输出口,这3个端口在功能上有各自的特点。 端口A 端口A有一个8位的数据
7、输入锁存器和一个8位的数据输入/输出锁存器/缓冲器,因此,端口A在进行输入或输出时,其数据都受到锁存。 端口B 端口B有一个8位的数据输入缓冲器和1个8位的数据输出锁存器/缓冲器。因此,端口B只有在进行输出时,才能对数据进行锁存。端口C 端口C有一个8位数据输入缓冲器和一个8位的数据输出锁存器/缓冲器。端口C也只能在作输出口时,才能对数据进行锁存。、内部控制逻辑 8255A的内部控制逻辑由A组控制电路和B组控制电路组成。这两组控制电路根据CPU写如的控制命令字和读/写命令分别去控制两组端口的工作方式和读/写操作。其中A组控制电路控制端口A和端口C的高4位,B组控制电路控制端口B和端口C低4位。
8、2)8253芯片8253的工作方式:.方式0这种方式又称计数结束中断方式。当CPU写入控制字后,使其OUT端变低,在GATE信号保持高电平时,则写入计数初值后,下一个CLK脉冲下降沿开始计数。在计数过程中OUT端一直保持低电平,直到计数值减到0时(即计数结束)OUT端输出变为高,完成一次计数过程。.方式1方式1又称为可编程单脉冲形成器。当写入控制字以后,OUT输出端将保持高电平。在CPU写入计数初值后,计数器并不开始计数,只有在门控信号GATE由低变高的上升沿之后的一个CLK脉冲的上升沿才开始计数,并且输出端OUT变低。在计数过程中OUT端一直保持低电平,直到计数结束才变高,这样,在OUT输出
9、端得到一个单脉冲,该脉冲信号的宽度为OUT端的低电平。.方式2这个方式又可称为频率发生器。当CPU写入控制字后,输出端OUT将变高,在写入计数初值以后的下一个CLI脉冲的下降沿开始计数。计数过程中OUT端始终保持高电平,当计数值减至1时OUT端变为低电平,而计数值减至0时OUT端又变为高电平,同时会自动将计数值送到执行部件继续进行减法计数,形成连续工作,重复计数,从而输出固定频率的脉冲。.方式3方式3又称为方波发生器,它的工作方式与方式2很相似,都是输出周期性的波形,门控信号的控制作用和自动重复计数的功能与方式2一样,只是OUT端输出的波形不同。这种方式中写入控制字以后,OUT端将为高,写完计
10、数初值后便可自动开始计数。在计数过程中不断输出一系列方波,其方波的占空比随计数初值的不同而不同,即占空比可以相等也可以不相等。.方式4方式4又称为软件脉冲触发。这种方式中,CPU写入控制字和计数值后,OUT端变为高电平,一旦写入计数值后,下一个CLK脉冲的下降沿立即开始计数(相当于软件触发),当计数结束后OUT端由高变低,并维持一个CLK的低电平后再变高,计数器停止计数后,只有重新写入新的计数值,才能重新进行新的计数过程,因此这种计数方式也是一次性的。写入计数初值后,计数器不会开始计数,而是要等GATE端出现一个上升沿来触发启动,并在下一个时钟沿才开始减法计数。计数至0时,OUT端会变低,并维
11、持一个CLK周期的低电平后再变高。因此,在N1个CLK脉冲后,在OUT端输出一个CLK周期的负脉冲。.方式5方式5又称为硬件脉冲触发。在这种方式中,CPU写入控制字和计数值以后,OUT端变为高电平。写入计数初值后,计数器不会开始计数,而是要等GATE端出现一个上升沿来触发启动,并在下一个时钟沿才开始减法计数。计数至0时,OUT端会变低,并维持一个CLK周期的低电平后再变高。因此,在N1个CLK脉冲后,在OUT端输出一个CLK周期的负脉冲。3)8259芯片8259是一个可编程的中断控制器。PC机中断控制器8259的地址为20H、21H,编程时要根据中断类型号设置中断矢量,8259中断屏蔽寄存器I
12、MR对应位要清零(允许中断),中断服务结束返回前要使用中断结束命令: MOV AL, 20H OUT 20H, AL中断结束返回DOS时应将IMR对应位置1,以关闭中断。中断服务子程序的设计:中断服务程序的一般结构如下图所示:关中断保护现场开中断恢复现场中断返回中断服务用户在设计中断服务子程序时要预先确定一个中断类型号,不论是采用软件中断还是硬件中断,都只能在系统预留给用户的类型号中选择。以下是DOS系统功能调用法将中断服务程序入口地址置入中断向量表:功能号:(AH) = 25h入口参数:(AL) = 中断类型号 (DS) = 中断服务程序入口地址的段地址 (DX) = 中断服务程序入口地址的
13、偏移地址4)七段数码管.实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。.七段数码管的字型代码表如下表:显示字形gfedcba段码 001111113fh 1000011006h 210110115bh 310011114fh 4110011066h 511011016dh 611111017dh 7000011107h 811111117fh 911011116fh a f b g e cd5)了解了基本芯片后, 经过小组成员详细讨论,各个芯片的工作方式设置如下:8255设置为C口输入,连接到8个抢答开关,A口输出接到七
14、段数码管.由于系统要求产生1s钟的时间间隔,基于实验箱上提供的是1M的时钟脉冲,所以计数初值为1M 才能满足要求,由于1M216,故我们采用两个计数器的级连,每个计数器的初值为1000.8253中的计数器0的OUT0接到CLK1上,CLK0接1MHZ时钟.OUT1接中断输入IRQ,GATE0和GATE1都接5V高电平.两个计数器都工作在方式2(频率发生器)下.8259保持系统默认的工作方式,系统已设定中断请求信号为边沿触发,普通结束方式.实验箱上默认将IRQ7引到实验台上的IRQ插座上.6)本程序流程图如下:七、调试分析8255并行接口模块:本模块可以完成本课程设计的基本功能即抢答功能.模块编
15、好后进行运行,发现能抢答,发现数码管上显示的是乱码,经过多方测试,问题没有解决,没有办法,从程序头开始,对准书上的例子,一句一句的检查,结果发现没有将数据段的段地址放到DX寄存器中,改后,本模块单独调试完成.8253 倒计时模块:由于本模块没有涉及到8259中断控制器,所以在计数结束后只能通过查询,首先我们采用的方式是两个计数器都工作在方式0,后来发现就是不计数,后来发现,方式0是计数结束中断,只计数一次,再改为方式3方波发生器方式,发现计数比预想的要快的多,难道还是8253的工作方式设置的不对,看来还要仔细阅读一下,8253的六种工作方式,结果发现工作方式二频率发生器适合本题的要求,改后发现
16、问题真的解决了.8255中断控制器模块:由于上个学期做过中断的实验,所以本模块进行的比较顺利.八、心得体会在这一周的微机原理课程设计里,我们小组完成了抢答器控制实验。第一天小组集体讨论方案的可行性问题,通过这次讨论,增加了大家的团队合作意识和完成整个课程设计的信心,并把整个程序的模块划分到每个小组成员。第二天小组成员完成各自负责的模块设计,进展比较顺利。第三天主要完成整个程序的初步连调工作并在下午向全体同学汇报了我们组的进展情况,由于时间仓促,初步连调工作出现的问题并没有得到有效的解决。第四天,在整个小组成员的共同努力下,整个程序连调过程中出现的问题一个个都得到了解决,程序的所有功能按预期目标
17、得到实现。最后一天,各个小组成员交付自己的开发文档,并进行总结、归纳成最终文档报告。通过这短短一周的实践,我感觉到自己在课本上学到的理论知识和实践仍有一定的差距。有的知识,自己感觉已经掌握得差不多了,但是实际操作起来就有问题出现了。就拿8253定时计数器来说吧,由于没有弄明白其各个工作方式的具体工作情况,在倒计时时走了不少弯路。原以为自己的程序流程有问题,没有想到是小小的初始化出现了问题。类似这样的问题,我们还遇到了不少,花费了很多的时间。这让我们重新反思我们的学习,觉得这与自己当时不注意实验课是分不开的。 这次的课程设计,在刘军老师的带领下,让我学到了很多书本上学不到的东西,我们首次采用了团队合作的方式,并且由我担任小组组长,所以这次我有过以前课程设计从未有过的压力,因为这不是个人,若我没有做好,会影响整个团队。这是绝对不容许的。令人欣慰的是这次课程设计如期按质按量完成了。经管我们的实验很简单,但是我们至少基本按照了目前社会企业中怎样解决一个大项目的基本流程走下来的。所以,我想,本次课程设计对我们每个人都是影响很大的,尤其对我们这些即将走向工作岗位的同学来说。最后,我要忠心的感谢刘老师给我这次锻炼的机会,感谢我们小组的每一位成员,因为成功是离不开他们的。专心-专注-专业