课程设计实验报告_第1页
课程设计实验报告_第2页
课程设计实验报告_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计实验报告 竞赛抢答器计科 0201 班第五小组 张国成 7 号竞赛抢答器一、需求分析本实验要求大家了解微机化竞赛抢答器的基本原理,进一步学 习使用并行接口 8255芯片,以及8253定时计数器的六种工作方 式,中断的基本概念,中断服务子程序的编写。二、功能描述基本功能:在主持人按下抢答开关后,各位选手即可开始抢 答,并在数码管上显示最先抢答选手的号码。扩展功能:在主持人按下抢答开关后,计数器开始 9秒倒计 时,若倒计时结束后没有人抢答,则本轮抢答无效,进入下一轮。三、概要设计由于本次实验要用到数码显示、中断控制、倒计时等功能,故 初步分析需要8255、8259、8253等芯片。下图为竞

2、赛抢答器(模 拟)的原理图,逻辑开关 K0K7代表竞赛抢答器按钮07号,当某 个逻辑电平开关置“ 1”时,相当某组抢答按钮按下,在七段数码 管上将其组号(07)显示出来。1A21S噩眾1 2 3 <- 1 2 3 4 TTTTITTT 11112222-G1-G21 141 1iI日缸0 <1审日 d h05 S J !5 e5 £右IM B255csF F E r F F F2 rr c ft n n n"|7n夕t1 c511 4II1b11卜 «2881T28J1I * * 电* ET KB K5 K4 E3 12 KI E019四、方案论证在计

3、数器每次计数结束后,对于全局变量 counter 的减一操作 有两种方式,一个是通过不断扫描计数器是否计数结束,另一种是 通过 8253 芯片计数结束产生中断。方案一: 通过对 8253 计数器的控制端口写控制字进行锁存,然后 用一个读命令读出计数器中的数放寄存器 ax 中,通过比 较 ax 中的数是否为零来判断这次计数是否结束。若为 零,就使 counter 减一。方案二: 将 8253 的输出接到 8259 的中断输入端,通过 8253 计数 结束产生中断来控制,在中断服务子程序中对 counter 减一操作。方案比较: 方案一采用扫描,没有用到 8259,程序编制简单,但是 cpu 耗费

4、了更多的时间在扫描,效率相对来说较低。方 案二采用中断,程序结构化更为清晰,且 cpu 少了循 环扫描的时间,效率较高。但是多用了一个 8259 中断 控制芯片,程序编制上涉及到中断服务子程序的编 写,稍显复杂。可见两种方案各有优劣。方案选择: 经过小组讨论,先采用方案二,完成基本和扩展功能。 若有时间,再采用方案一完成实验。五、模块划分 由于本次课程设计采用团队合作的形式,故要将本次实验进行 模块划分,小组成员要了解全部程序流程,但是主要是完成自己负 责的功能模块。组长负责协调监督指导小组成员,并完成最后的程 序的连调工作。具体划分如下:尚海涛、王祁远:负责 8253 计数张国成、吴小龙:负

5、责 8259 中断 杨德娜、唐益文:负责 8255 并行接口 每天的文档工作由各自详细记录自己今天的工作进度以及程序 调试的过程和心得体会,并附上自己开发模块的文档说明,最后交 由组长整合在一起,构成当天的开发文档。六、详细设计1) 8255 芯片简介 8255,是一个典型的可编程并行接口芯片。 8255 具有三个相互应独立的 8 位并行输入输出端口,即端口 A ,端口 B 和端口 C, 其中端口 C 分为两个 4 位来配合端口 A 和端口 B 工作,它为INTEL 系列 CPU 与外设之间提供 TTL 电平兼容的接口。8255A 可以工作在方式 0,方式 1,方式 2 三种方式,其中端 口

6、A 可以工作在这 3 种不同的方式下,而端口 B 只能工作在方式 0 和方式1,端口 C配合A 口和B 口工作。8255A 没有设置专门的联络信号线,但是可以使用端口中的某 些端口中的某些位来的担任。端口 A 、B 和 C 可以配合使用,来构 成所需的单线,双线或三线联络信号的并行接口。8255 的内部结构与CPU接口部分8255与 CPU 的接口部分通过数据总线缓冲器和读 /写控制逻辑。 数据总线缓冲器;这是一个 8 位双向三态缓冲器, 8255A 通过它与 CPU 的系统数 据总线连接。 CPU 所有的输入 /输出数据, CPU 通过输出指令发给 8255A 的控制字和用输入指令读入的外设

7、的当前状态信息,都是通 过这个数据缓冲器传送的。 读/写控制逻辑电路读 /写控制逻辑电路通过 6 根控制线与 CPU 连接,它负责对 8255A 的数据传送过程进行控制。它接收到来自 CPU 控制总线的 RESET、WRA、RDA和来自地址总线的 Ai, A。后,将这些信号进 行组合,得到对 A 组控制部件和 B 组控制部件的相应控制命令, 再用这些控制命令去控制这两个部件按初始化编程的要求,去完成 对数据的输入 /输出,对状态信息的读取和控制命令的传送。、与外设接口部分8255A 与外设的接口是通过 3 个输入/输出数据端口来实现的。 每个端口都是8位的数据端口,即端口 A、端口 B和端口

8、C,它们 都可以用软件编程来来设置成输入口或输出口,这 3 个端口在功能 上有各自的特点。 端口 A端口 A 有一个 8 位的数据输入锁存器和一个 8位的数据输 入/输出锁存器 /缓冲器,因此,端口 A 在进行输入或输出时,其数 据都受到锁存。 端口 B端口 B 有一个 8 位的数据输入缓冲器和 1 个 8位的数据输 出锁存器 /缓冲器。因此,端口 B 只有在进行输出时,才能对数据 进行锁存。 端口 C端口 C有一个8位数据输入缓冲器和一个8位的数据输出 锁存器 / 缓冲器。端口 C 也只能在作输出口时,才能对数据进行锁存。、内部控制逻辑8255A 的内部控制逻辑由 A 组控制电路和 B 组控

9、制电路组成。 这两组控制电路根据 CPU写如的控制命令字和读/写命令分别去控 制两组端口的工作方式和读/写操作。其中A组控制电路控制端口 A 和端口 C的高4位,B组控制电路控制端口 B和端口 C低4位。2)8253 芯片8253的工作方式: . 方式 0这种方式又称计数结束中断方式。当 CPU写入控制字后,使其 OUT 端变低,在 GATE信号保持高电平时,则写入计数初值后,下一个 CLK脉冲下降沿开始计数。在计数过程中OUT端一直保持低电平,直到计数值减到0时(即计数结束)OUT端输出变为高,完成一次 计数过程。 . 方式 1方式1又称为可编程单脉冲形成器。当写入控制字以后,OUT输出端将

10、保持高电平。在 CPU写入计数初值后,计数器并不开始计数, 只有在门控信号GATE由低变高的上升沿之后的一个 CLK脉冲的上 升沿才开始计数,并且输出端 OUT变低。在计数过程中OUT端一直 保持低电平,直到计数结束才变高,这样,在 OUT输出端得到一个 单脉冲,该脉冲信号的宽度为 OUT端的低电平。 . 方式 2这个方式又可称为频率发生器。当 CPU写入控制字后,输出端 OUT 将变高,在写入计数初值以后的下一个 CLI 脉冲的下降沿开始计 数。计数过程中OUT端始终保持高电平,当计数值减至 1时OUT端 变为低电平,而计数值减至 0时OUT端又变为高电平,同时会自动 将计数值送到执行部件继

11、续进行减法计数,形成连续工作,重复计 数,从而输出固定频率的脉冲。 . 方式 3方式 3 又称为方波发生器,它的工作方式与方式 2 很相似,都是输 出周期性的波形,门控信号的控制作用和自动重复计数的功能与方 式2 一样,只是OUT端输出的波形不同。这种方式中写入控制字以后, OUT端将为高,写完计数初值后便可 自动开始计数。在计数过程中不断输出一系列方波,其方波的占空 比随计数初值的不同而不同,即占空比可以相等也可以不相等。 . 方式 4方式4又称为软件脉冲触发。这种方式中, CPU写入控制字和计数 值后,OUT端变为高电平,一旦写入计数值后,下一个 CLK脉冲的 下降沿立即开始计数(相当于软

12、件触发),当计数结束后 OUT端由 高变低,并维持一个 CLK的低电平后再变高,计数器停止计数后, 只有重新写入新的计数值,才能重新进行新的计数过程,因此这种 计数方式也是一次性的。写入计数初值后,计数器不会开始计数, 而是要等GATE端出现一个上升沿来触发启动,并在下一个时钟沿 才开始减法计数。计数至 0时,OUT端会变低,并维持一个 CLK周 期的低电平后再变高。因此,在 N+ 1个CLK脉冲后,在OUT端输 出一个CLK周期的负脉冲。 .方式5方式5又称为硬件脉冲触发。在这种方式中,CPU写入控制字和计数值以后,OUT端变为高电平。写入计数初值后,计数器不会开始 计数,而是要等 GATE

13、端出现一个上升沿来触发启动,并在下一个 时钟沿才开始减法计数。计数至 0时,OUT端会变低,并维持一个 CLK周期的低电平后再变高。因此,在N+ 1个CLK脉冲后,在OUT端输出一个CLK周期的负脉冲。3)8259芯片8259是一个可编程的中断控制器。PC机中断控制器8259的地址为 20H、21H,编程时要根据中断类型号设置中断矢量,8259中断屏蔽寄存器IMR对应位要清零(允许中断),中断服务结束返回前 要使用中断结束命令:MOV AL, 20H OUT 20H, AL中断结束返回DOS时应将IMR对应位置1,以关闭中断。中断服务子程序的设计:中断服务程序的一般结构如下图所示:用户在设计中

14、断服务子程序时要预先确定一个中断类型号,不论是 采用软件中断还是硬件中断,都只能在系统预留给用户的类型号中选择。以下是 中断向量表:DOS系统功能调用法将中断服务程序入口地址置入功能号:(AH) = 25h入口参数:(AL)=中断类型号(DS)=中断服务程序入口地址的段地址(DX)=中断服务程序入口地址的偏移地址,输入端4) 七段数码管实验台上的七段数码管为共阴型,段码采用同相驱动加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高显示字形gfedcba段码001111113fh1000011006h210110115bh310011114fh4110011066h511011016dh6

15、11111017dh7000011107h811111117fh911011116fh电平选中。.七段数码管的字型代码表如下表:af bgecd七、调试分析8255并行接口模块:本模块可以完成本课程设计的基本功能即 抢答功能.模块编好后进行运行,发现能抢答,发现数码管上显示的 是乱码,经过多方测试,问题没有解决,没有办法,从程序头开始,对 准书上的例子,一句一句的检查,结果发现没有将数据段的段地址放 到DX寄存器中,改后,本模块单独调试完成.8253倒计时模块:由于本模块没有涉及到 8259中断控制器,所 以在计数结束后只能通过查询,首先我们采用的方式是两个计数器 都工作在方式0,后来发现就是

16、不计数,后来发现,方式0是计数结束 中断,只计数一次,再改为方式3方波发生器方式,发现计数比预想 的要快的多,难道还是8253的工作方式设置的不对,看来还要仔细 阅读一下,8253的六种工作方式,结果发现工作方式二频率发生器适合本题的要求 , 改后发现问题真的解决了 .8255 中断控制器模块 : 由于上个学期做过中断的实验 ,所以本模 块进行的比较顺利 .八、心得体会 在这一周的微机原理课程设计里,我们小组完成了抢答器控制 实验。第一天小组集体讨论方案的可行性问题,通过这次讨论,增 加了大家的团队合作意识和完成整个课程设计的信心,并把整个程 序的模块划分到每个小组成员。第二天小组成员完成各自

17、负责的模 块设计,进展比较顺利。第三天主要完成整个程序的初步连调工作 并在下午向全体同学汇报了我们组的进展情况,由于时间仓促,初 步连调工作出现的问题并没有得到有效的解决。第四天,在整个小 组成员的共同努力下,整个程序连调过程中出现的问题一个个都得 到了解决,程序的所有功能按预期目标得到实现。最后一天,各个 小组成员交付自己的开发文档,并进行总结、归纳成最终文档报 告。通过这短短一周的实践,我感觉到自己在课本上学到的理论知 识和实践仍有一定的差距。有的知识,自己感觉已经掌握得差不多 了,但是实际操作起来就有问题出现了。就拿 8253 定时计数器来 说吧,由于没有弄明白其各个工作方式的具体工作情

18、况,在倒计时 时走了不少弯路。原以为自己的程序流程有问题,没有想到是小小 的初始化出现了问题。类似这样的问题,我们还遇到了不少,花费 了很多的时间。这让我们重新反思我们的学习,觉得这与自己当时 不注意实验课是分不开的。这次的课程设计,在刘军老师的带领下,让我学到了很多书 本上学不到的东西,我们首次采用了团队合作的方式,并且由我担 任小组组长,所以这次我有过以前课程设计从未有过的压力,因为 这不是个人,若我没有做好,会影响整个团队。这是绝对不容许 的。令人欣慰的是这次课程设计如期按质按量完成了。经管我们的 实验很简单,但是我们至少基本按照了目前社会企业中怎样解决一 个大项目的基本流程走下来的。所以,我想,本次课程设计对我们 每个人都是影响很大的,尤其对我们这些即将走向工作岗位的同学 来说。最后,我要忠心的感谢刘老师给我这次锻炼的机会,感谢我们 小组的每一位成员,因为成功是离不开他们的。5)了解了基本芯片后,经过小组成员详细讨论,各个芯片的工作方 式设置如下:8255设置为C 口输入

温馨提示

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

评论

0/150

提交评论