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