微机课程设计报告抢答器(共18页).doc

上传人:飞****2 文档编号:8845156 上传时间:2022-03-24 格式:DOC 页数:18 大小:247KB
返回 下载 相关 举报
微机课程设计报告抢答器(共18页).doc_第1页
第1页 / 共18页
微机课程设计报告抢答器(共18页).doc_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《微机课程设计报告抢答器(共18页).doc》由会员分享,可在线阅读,更多相关《微机课程设计报告抢答器(共18页).doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上目 录一 课程设计目的与要求1二方案论证与原理设计2三详细(机理)设计3四方案实现与测试(或调试)4五分析与总结5一. 课程设计目的与要求(含设计指标)1课程设计目的 (1)检验和提高在微机原理和接口综合应用方面分析问题和解决问题的能力; (2)锻炼系统级别汇编语言编程和硬件调试能力; (3)培养团队分工合作能力。 2设计要求和指标 设计要求: 设计一个用于智力竞赛的抢答器计时器,同时能测试人的反应时间。按启动键,测试开始,2个八段码倒计时开始(如从10秒或20秒倒计时),在随机时间内点亮抢答允许灯,参赛双方分别按各自的抢答按钮参与抢答。一旦其中一方按下按钮,相应的L

2、ED显示灯亮,此时若其他按钮按下均无效。若一直计数到零,均无人按下按钮,则抢答结束(以后再按抢答钮无效)。按测试钮,在PC机上显示反应时间XX.XX秒。 指标要求: (1)编制一个随机数产生子程序,又随机数决定从按启动钮到点亮抢答允许灯的时间(如在3秒15秒之间任意变动),使被测试者对LED亮的时间无法预见,以保证测试结果的可信性; (2)必须在见到LED点亮后按测试钮才有效,即一直按着按钮或提前按下按钮无效; (3)反应时间显示XX.XX秒,准确到百分之一。 3.分工 (1)核心代码编写: (2)代码编译、修改: (3)搭建、调试:(4) 后期代码优化、修改:二.方案论证与原理设计(或基本原

3、理)首先分析系统输入输出量,输入为一系列开关量和时钟,输出为数码管的7段码和LED显示以及计算机屏幕信息。所以使用8255并行输入输出功能实现这些数字量的输入输出,又由于要求倒计时和计算选手反应时间,所以采用8253的计时功能。在实现基本功能下, 本系统的核心硬件为8255和8253.硬件框图为:方案设计:8255设置为A口输入,BC口输出工作方式,A口检测按键状态。倒计时采用8253三个计数器级联方式,计数器0接实验箱上1MHz脉冲,从计数器2的OUT端口输出1Hz时钟,设其初值为20,则从20开始倒计时,从而用硬件实现倒计时功能。程序流程图:三.详细(机理)设计(1)随机数产生 为确保从每

4、次按启动键到LED点亮的时间是不同的(真正随机变化的),一开始可随机读取某100个RAM单元值求和作为初始值,这可以通过设置一个random变量,在程序初始化部分调用随机数产生子程序rand给其赋值实现:rand procpush cxpush simov cx , 100mov si , 34haddr: xor al,almov al , siadd random , alinc siloop addrand random 07hpop sipop cxretrand endp专心-专注-专业(2)8253倒计时 8253的计数器0接实验箱上1MHz脉冲,设初值为1000,工作方式为2,O

5、UT0产生频率1kHz低脉冲;OUT0接计数器1时钟端,初值设为1000,工作方式为2,OUT1产生频率为1Hz的第脉冲,所以计数器1表示倒计时ms;OUT1接计数器2时钟端,初值设为20,工作方式设为2,实现20秒倒计时功能。 8253初始化 mov dx , P8253M mov al , B ;8253 CNT0=10000 方式2 B out dx , almovax , 1000;赋初值 mov dx , P8253A out dx , al moval , ah outdx , al mov dx , P8253M mov al , B ;8253 CNT1=100 方式2 D o

6、ut dx , almoval , 1000 mov dx , P8253B out dx , al mov dx , P8253M mov al , B ;8253 CNT2=20 方式2 D out dx , almoval , 20h ;20 如赋初值20,则数码管显示初值为14 mov dx , P8253C out dx , al(3)计算选手反应时间 在点亮抢答允许灯前提取当前时间。 ;按下启动钮取当前时间movdx , P8253Cinal ,dxmovah , almovc_time , al and al , 0fh movledl , al movcl , 4rorah ,

7、 clandah , 0fhmovledh , ah 四. 方案实现与测试(或调试)方案的实现,系统的硬件电路图如下:调试:(1) 按照电路图连接电路,8253主要是用于定时器的作用,给两位数码管输出20秒的倒计时,8255的PA口为输入,PA7和PA6是作为抢答器的输入端,抢答器的输入采取脉冲发生器产生的脉冲作为抢答信号。PA1是屏幕显示反应时间的按键输入,PA0是开始键的输入。PC7是PlayerA抢答灯按键输入,PC6是PlayerB抢答灯按键输入,PC4为抢答灯的输出,PC3 为开始灯输出,PC2连接8253的GATE0-GATE2,PC1为数码管S0,PC0为数码管S1。PB7-PB

8、0接a-h。(2) 在调试中,主要的调试还是代码的调试,通过TD和DEBUG两种调试方式,通过逐步调试,发现和找到错误之处,进行更改,最终得到正确的调试结果。五分析与总结通过此次的微机实验,通过编程了解到了汇编语言的编程,并且在编写程序的过程,进一步地熟悉了一个系统程序的编写和调试工作。编程中,最重要的是通过TD或者DEBUG两种调试手段来进行程序的调试,从而找到程序的运行中出错的地方,进行调试,最终能够运行出正确的代码。代码调试正确后,通过在实验板上连线,进行验证,最终得到正确的实验结果。在此次的微机实验过程中,由于时间的仓促,我们只完成了基础部分的功能,提高部分的功能基本没有来得及做。相信

9、在基础部分的前提下,在以后的时间里,可以进一步地提高,将功能再进一步的完善。参考书目:(五号,宋体加粗)1 东南大学微机系统与接口课程组,微机实验及课程设计教程(试用版3.0),2010年2 杨素行等,微型计算机原理与应用(第3版),北京,清华大学出版社,2009年源代码:;-抢答反应测试仪-DATA SEGMENTMESS1 db * made by administrator*,0dh,0ah,$;288接8255P8255A equ 0b808H;开关输入P8255B equ0b809HP8255Cequ 0b80AHP8255M equ0b80BH;c0-cs0;c1-cs1;c2-g

10、ate0,1,2;c3-L0主持人灯;c4-L2抢答提示灯;c5-;c6-L6playerA灯;c7-L7playerB灯;280H接8253P8253Aequ0b800HP8253B equ0b801HP8253C equ0b802HP8253M equ0b803Hled7equ0b809H ;接数码管七段输入LED DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;共阴七段码start_s db ?start_ms db ?end_sdb?end_msdb?react_s db 0react_ms db ?ledhdb?ledldb?randomdb0

11、 c_timedb?enableAdb?enableBdb?DATA ENDS;-STACKSSEGMENTDB100 DUP(?)STACKSENDS;-CODE SEGMENTASSUME CS:CODE , DS:DATASTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AH,09H MOV DX,OFFSET MESS1 ;显示提示信息 INT 21H MOV AX , DATA MOV DS , AXmovax , stacks movss , ax ;8255初始化 MOV DX , P8255M MOV AL , 90H ;初始化8255控制字

12、 A口输入,B、C输出 OUT DX , AL ;8253初始化 mov dx , P8253M mov al , B ;8253 CNT0=10000 方式2 B out dx , almovax , 10000;赋初值 mov dx , P8253A out dx , al moval , ah outdx , al mov dx , P8253M mov al , B ;8253 CNT1=100 方式2 D out dx , almoval , 100 mov dx , P8253B out dx , al mov dx , P8253M mov al , B ;8253 CNT2=2

13、0 方式2 D out dx , almoval , 20h ;20 如赋初值20,则数码管显示初值为14 mov dx , P8253C out dx , al call prorand ;产生初始随机数wait_for_start : ;游戏的初始化;8255B接led ;c3-L0关主持人灯moval , b movdx , P8255M outdx , al;c4-L2关抢答提示灯moval , b movdx , P8255M outdx , al;c5-;c6-L6关playerA灯moval , b movdx , P8255M outdx , al;c7-L5关playerB灯

14、 moval , b movdx , P8255M outdx , al moval , 0;7段led灭 movdx , led7 outdx , al ;c0接cs0 , c1接cs1 ;c2接gate0,1,2;关计数 moval , b movdx , P8255M outdx , al;关断7段moval , b; 数字低位movdx , P8255M outdx , almoval , b ;数字高位movdx , P8255M outdx , al mov dx , P8255A in al , dx test AL , 01H ;判断主持人开关是复位还是启动;K0是开始开关,高

15、电平开始 JZ wait_for_start ;按下启动钮 开始游戏 ;c3-L0主持人灯 ;开启主持人灯L0moval , b movdx , P8255M outdx , al;开始计数;c2-gate0,1,2moval , b movdx , P8255M outdx , alstart_game : mov dx , P8255A in al , dx test AL , 01H ;判断主持人开关是复位还是启动 JZ wait_for_start;按下启动钮取当前时间movdx , P8253Cinal ,dxmovah , almovc_time , al and al , 0fh

16、 movledl , al movcl , 4rorah , clandah , 0fhmovledh , ah ;动态显示7段mov bl , ledhmov bh , 0lea si , LEDadd si , bxmov al , byte ptr si;-mov al,ledbl?mov dx , led7out dx , al;开启cs0moval , b movdx , P8255M outdx , alcalldelay;延时一点 ;关闭cs0moval , b movdx , P8255M outdx , al mov bl , ledlmov bh , 0lea si , L

17、EDadd si , bxmov al , byte ptr si;-mov al,ledbl?mov dx , led7out dx , al ;开启cs1moval , b movdx , P8255M outdx , alcalldelay;延时一点;关闭cs1moval , b movdx , P8255M outdx , al; movenableA , 0 ;屏蔽先抢答行为 movenableB , 0 movbl , c_time sub bl , 20neg bl ;求 20-bl movdl , random cmpbl , dl ;是否到了点亮抢答灯的时间 jglight1

18、 jmpstart_game light1: push cx ;DOS功能调用取点亮抢答灯时的精确时间 用于计算反应时间 push dx movah , 2ch int21h movstart_s , dh movstart_ms , dl popdx popcxlight:;c4-L2抢答提示灯;打开抢答提示灯moval , b movdx , P8255M outdx , almovdx , P8255A ;检测开关状态inal , dx ;A6接A player ,A5接B playertestal , b;如果灯亮的时候是没有按下就开启抢答使能jnznext1movenableA ,

19、1next1: testal , b jnznext2movenableB , 1next2:cmpenableA , 1;如果抢答使能而且按下了抢答键jnenextB;否则A抢答有效test al , bjznextBmoval , b ;点亮A抢答灯movdx , P8255M outdx , aljmpquitnextB:cmpenableB , 1jnenext;B抢到了,亮L7 test al , bjznextmoval , b ;点亮B抢答灯movdx , P8255M outdx , aljmpquitskip1: jmp wait_for_start;跳板next:;A、B都

20、抢答无效或A、B都没抢答 mov dx , P8255A in al , dx test AL , 01H ;判断主持人开关是复位还是启动 JZ skip1;取当前时间movdx , P8253Cinal ,dxmovah , almovc_time , al and al , 0fh movledl , al movcl , 4rorah , clandah , 0fhmovledh , ah ;7段灯扫描不能停止mov bl , ledhmov bh , 0lea si , LEDadd si , bxmov al , byte ptr si;-mov al,ledbl?mov dx ,

21、led7out dx , al;开启cs0moval , b movdx , P8255M outdx , alcalldelay;延时一点 ;关闭cs0moval , b movdx , P8255M outdx , al mov bl , ledlmov bh , 0lea si , LEDadd si , bxmov al , byte ptr si;-mov al,ledbl?mov dx , led7out dx , al ;开启cs1moval , b movdx , P8255M outdx , alcalldelay;延时一点;关闭cs1moval , b movdx , P8

22、255M outdx , aljmplight;继续检测按键,是否有人抢答quit:;收尾;取当前精确时间push cx pushdx movah , 2ch int21h movend_s , dhmovend_ms , dlpopdx popcxmov al,end_s ;计算反应时间mov react_s , almov al , start_ssub react_s , almov al,end_msmov react_ms , aladd react_ms , 100dec react_smov al , start_mssub react_ms , alcmp react_ms ,

23、 100JL Ndealsub react_ms , 100inc react_sNdeal:movdx , P8255Ainal , dx ;检测test键testal , b;有无按下检测键jzntest ;未按下;按下,显示反应时间keyt:movdl , react_smov random , aladd random , 3 ;用上次的反应时间做下次的随机数初值movcl , 4rordl , cl anddl , 0fhadddl , 30hmovah , 02hint21hmovdl , react_sanddl , 0fhadddl , 30hint21hmovdl , 2eh

24、int21hmovdl , react_msmovcl , 4rordl , cl anddl , 0fhadddl , 30hint21hmovdl , end_msanddl , 0fhadddl , 30hint21hntest:;停止计数;c2-gate0,1,2moval , b movdx , P8255M outdx , al;c3-L0主持人灯;关主持人灯moval , b ;movdx , P8255M outdx , al;c4-L2抢答提示灯;关抢答提示灯moval , b ;movdx , P8255M outdx , aljmp w_f_resetskip2: jmp

25、 start;*w_f_reset:movdx , P8255Ainal , dx ;检测test键testal , b;有无按下检测键jnzkeyt ;按下,显示反应时间mov dx , P8255A in al , dx test AL , 01H ;判断主持人开关是复位还是启动 JZ skip2jmp w_f_resetdelay procpushcx movcx ,100zzz:loopzzzpopcxretdelayendpprorand proc push cx push si mov cx , 100 mov si , 34haddr: xor al , al mov al , si add random , al inc si loop addr and random , 07h pop si pop cx ret prorand endp CODE ENDS END START

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 教育教学

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁