微机课程设计 八路抢答器_第1页
微机课程设计 八路抢答器_第2页
微机课程设计 八路抢答器_第3页
微机课程设计 八路抢答器_第4页
微机课程设计 八路抢答器_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、目录(1)课程设计题目; (2)课程设计任务与要求; (3)设计过程(包括方案论证、设计原理、创新点以及采用的新技术等); (4)硬件系统框图与说明; (5)软件主要模块流程图与说明; (6)工作总结(包括自己的收获与体会;遇到的问题和解决的方法;技术实现技巧和创新点;作品存在的问题和改进设想等); (7)附录 1、源程序及程序注释 2、原理图 3、参考文献八路抢答器一、课程设计任务与要求:1、利用8255A,8086,8259等的硬件下,利用程序实现一个抢答器的功能;2、设计具有倒计时功能的计数器;3、设计具有在外界控制下可加分,并显示的功能;4、设计具有可以用来抢答的功能;二、设计过程1、

2、倒计时子程序:选手在主持人按了开始键后抢答成功后,系统将调用子程序倒计时。倒计时时先显示20秒,然后利用十位的10的循环,和个位的90的循环,使之依次显示19,1801,00秒,便完成了抢答器的倒计时。具体流程图如下:结束十位循环2?个位循环10?将个位输出到state3,显示个位和十位1秒十位输出到state2显示1秒开始否是否2、显示分数子程序:程序先得到当前选手的编号,根据编号得到该选手的分数。用cx记录该分数100的个数,首先赋值为0,然后将该分数与100比较,如大于100,则将该分数减100,100的个数cx加一,如小于100,则得到该分数100的个数cx,并得到该cx的LED字母,

3、并输出到state1;然后用cx记录该分数10的个数,先赋值为0,然后将该分数与10比较,如大于10,则将该分数减10,10的个数cx加一,如小于10,则得到该分数10的个数cx,并得到其LED字母,输出到state2;此时分数已为个位数,根据该个位数得到该分数个位的LED字母,输出到state3。具体流程图:ax 100结束开始ax已为个位数的个数,将个位数的LED字母输出到state3将十位数的LED字母输出到state2分数减十,ax=ax-10;10的个数加一,cx=cx+1ax 10?将百位数的LED字母输出到state1,10的个数cx=0分数减一百,ax=ax-100;100个数

4、加一,cx=cx+1得到该选手分数,存入ax;100的个数cx=0 三、硬件系统框图与说明译码器82598086时钟电路定时器将8个抢答按钮信号通过一个8位并行输入口接至微机中。当主持人启动抢答过程后,微机通过该并行输入口循环对8路抢答信号进行采样。当采样到那一组的抢答信号已经发出,则立即停止采样,并记录下该组的组号 当8组均未按下抢答按钮时,送入到并行接口的8位抢答状态都是0,而当微机采样到这8位数据不为0时,则表示有一组获得了抢答机会,然后通过逐位查询个位状态,即可判断出哪一组抢答成功,最后利用并行输出接口将抢答成功的组号现实出来.在实验中,可以仅用一位7段数码管来显示抢答选手的组号.为了

5、对抢答后的回答时间进行计时控制,可以利用一个可编程定时计时器,先置计数初值,再计时,当计时时间到后,由并行接口输出一个响铃信号提示抢答选手的回答时间已到。四、软件主要模块流程图与说明1、倒计时源代码:COUNTDOWN PROC ;倒计时子程序,倒计时20秒 PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI MOV AL,5BH ;首先输出20 MOV BX,OFFSET STATE ADD BX,2 MOV BX,AL ;将2LED字母输出到state2 MOV AL,3FH INC BX MOV BX,AL ;将0的LED字母输出到state3 MOV CX,

6、0E0HB1: CALL DISPLAY1 ;显示20秒 LOOP B1 MOV BX,OFFSET TABLE2 MOV SI,OFFSET TABLE1 MOV CX,2 ;十位的循环显示(1,0)SHIWEI: PUSH CX MOV SI,OFFSET STATE ADD SI,2 MOV AL,BX ;得到十位的LED代码 MOV SI,AL ;将其输出到state2 MOV CX,10 ;个位的循环显示(9,8,1,0) MOV SI,OFFSET TABLE1 PUSH BX MOV BX,OFFSET STATE ADD BX,3GEWEI: MOV AL,SI ;得到个位的L

7、ED字母 MOV BX,AL ;将其输出到state3 PUSH CX MOV CX,0E0HB2: CALL DISPLAY1 ;显示该数字一秒钟 LOOP B2 INC SI POP CX LOOP GEWEI POP CX LOOPSHIWEI POP SI POP DX POP CX POP BX POP AX RETCOUNTDOWN ENDP2、显示分数源代码:SCORE PROC ;显示当前选手分数子程序 PUSH AX PUSH BX PUSH CX PUSH DX MOV AL,CURRNUM ;得到该选手编号 ADD AL,AL AND AX,00FFH MOV BX,OF

8、FSET SCORE ADD BX,AX MOV AX,BX ;得到该选手分数 MOV CL,0 ;用于记录100的个数NUM1: CMP AX,100 ;判断该分数是否小于100 JL OUT1 SUB AX,100 ;该分数大于100,则减100 INC CL ;将100的个数加1 JMP NUM1OUT1: PUSH AX ;将100个数输出 MOV BX,OFFSET TAB AND CX,00FFH ADD BX,CX MOV AL,BX ;得到其LED字母 MOV BX,OFFSET STATE ADD BX,1 MOV BX,AL ;将之输出到state1 MOV CL,0 ;记

9、录10的个数 POP AXNUM2: CMP AX,10 ;判断是否小于10 JL OUT2 SUB AX,10 ;大于10,则将之减10 INC CL ;10的个数加1 JMP NUM2OUT2: PUSH AX ;输出10的个数 AND CX,00FFH MOV BX,OFFSET TAB ADD BX,CX MOV AL,BX ;得到其LED字母 MOV BX,OFFSET STATE ADD BX,2 MOV BX,AL ;将其输出到state2 POP AXOUT3: MOV BX,OFFSET TAB ;输出个位 ADD BX,AX MOV AL,BX ;得到其LED字母 MOV

10、BX,OFFSET STATE ADD BX,3 MOV BX,AL ;将其输出到state3 POP SI POP DX POP CX POP BX POP AX RETSCORE ENDP五、总结1、了解自己的模块功能后,首先要想出怎样实现它,并写出流程图,这样才会顺利地写出子程序代码,才不会进入进退两难的境地。编写程序时,还要和别的成员多多交流,这样才能使程序合并起来后能顺利地运行。编写自己的程序时,能比较容易地实现出来,但合并起来后,出现的问题很多。但经过慢慢地调试、修改,终于使我们的程序运行了出来。2、我加深了对课本知识的理解,同时熟练掌握了汇编语言的编辑、调试工具。在以后的学习生活

11、中还要继续保持严谨认真的科学态度,保持不断尝试和探索的耐心,保持勇于解决问题的决心。3、在设计中,把死板的课本知识变得生动有趣,激发了学习的积极性。把学过的计算机编译原理的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。六、附录1、源程序及程序注释DATA SEGMENTTAB DB 3FH,06H,5BH,66H,6DH,7DH,07H,7FH,6FH TABLE1 DB 6FH,7FH,07H,7DH,6DH,66H,4FH,5BH,06H,3FHTABLE2 DB 06H,3FHBZ DB 00HCURRNUM DB 0SCORE DW 0,100,10

12、0,100,100STATE DB 0,0,0,0 DATA ENDSCODE SEGMENTAUUSME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AL,B ;初始化8255 OUT 63H,ALBEGIN: CALL DISPLAY ;调用显示程序,让其显示state中内容 IN AL,60H ;扫描端口A的开关键内容 TEST AL,0FFH ;检测是否有键按下 JZ BEGIN ;如无键按下,则循环扫描 CALL ONESECOND2 ;有键按下时,调用延时程序段消抖动KAISHIT: TEST AL,B ;有键按下时,测试是否是开

13、始键 JNZ KAISHIKEY JMP FUWEITKAISHIKEY: CALL KAISH ;调用开始键程序 JMP BEGINFUWEIT: TEST AL,B ;测试是否是复位键 JNZ FUWEIKEY JMP UPFUWEIKEY: CALL FUWEI JMP BEGINUP: TEST AL,B ;测试是否是加分键 JNZ UPKEY JMP DOWNUPKEY: CALL UPSCORE JMP BEGINDOWN: TEST AL,B ;测试是否是减分键 JNZ DOWNKEY JMP GETNUMDOWNKEY: CALL DOWNSCORE JMP BEGINGETN

14、UM: MOV BL,CURRNUM ;测试是否是抢答键 CMP BL,0 JNZ BEGIN MOV CX,4 ;用于循环及测试抢答键编号 MOV BL,BTEST1: TEST AL,BL JNZ GETCKEY ROL BL,1 LOOP BEGINGETCKEY: CALL GETKNUM JMP BEGINKAISHI PROC ;开始键子程序 MOV BZ,0FFH ;将bz置0ffh,测试开始键是否按下 RETKAISHI ENDPFUWEI PROC ;复位键子程序 ,用于将清空除score之外所有内容 MOV AX,0 MOV CURRNUM,AL ;将当前选手编号内容清为零

15、 MOV BZ,AL ;将开始键状态设为未按下 MOV AL,3FH MOV BIAOZHI,AL ;将扬声器不叫,红绿灯状态为不亮 MOV CX,4 MOV AL,0 MOV BX,OFFSET STATE LOP1: MOV BX,AL ;使4个LED无显示内容 INC BX LOOP LOP1 RETFUWEI ENDPDISPLAY PROC ;在4个LED中显示state中的内容 PUSH AX PUSH BX PUSH CX PUSH DX MOV AL,BIAOZHI ;显示扬声器,红绿灯状态 OUT 62H,AL MOV BX,OFFSET STATE MOV AL,B OUT

16、 62H,AL MOV AL,BX OUT 61H,AL ;显示state0中内容 CALL DELAY ;延时 INC BX MOV AL,B OUT 62H,AL MOV AL,BX OUT 61H,AL ;显示state1中内容 CALL DELAY INC BX MOV AL,B OUT 62H,AL MOV AL,BX OUT 61H,AL ;显示state2中内容 CALL DELAY INC BX MOV AL,B OUT 62H,AL MOV AL,BX OUT 61H,AL ;显示state3中内容 CALL DELAY POP DX POP CX POP BX POP AX

17、 RETDISPLAY ENDPDISPLAY1 PROC ;显示state内容,检测开关、复位、加分、减分键是否按下,倒计时用 PUSH AX PUSH BX PUSH CX PUSH DX MOV AL,BIAOZHI ;显示扬声器,红绿灯状态 OUT 62H,AL MOV BX,OFFSET STATE MOV AL,B OUT 62H,AL MOV AL,BX OUT 61H,AL ;显示state0中内容 CALL DELAY INC BX MOV AL,B OUT 62H,AL MOV AL,BX OUT 61H,AL ;显示state1中内容 CALL DELAY INC BX

18、MOV AL,B OUT 62H,AL MOV AL,BX OUT 61H,AL ;显示state2中内容 CALL DELAY INC BX MOV AL,B OUT 62H,AL MOV AL,BX OUT 61H,AL ;显示state3中内容 CALL DELAY IN AL,60H ;得到端口A内容 TEST AL,B ;检测是否有开关、复位、加分、减分键按下 JNZ B7 JMP B8B7: JMP BEGIN ;跳回begin检测该键B8: POP DS POP CX POP BX POP AX RETDISPLAY1 ENDPDELAY PROC ;延时,用于LED显示延时用

19、PUSH AX PUSH BX PUSH CX PUSH DX MOV CX,OFFHIOP2: LOOP LOP2 POP DX POP CX POP BX POP AX RETDELAY ENDPGETKNUM PROC ;检测到抢答键后,得到该键编号,并存入currnum中 PUSH AX PUSH BX PUSH DX MOV AX,CX ;由cx得到抢答者编号 MOV CURRNUM,AL ;将该抢答者编号存入currnum MOV BX,OFFSET TAB ADD BX,AX MOV AL,BX ;得到该编号的LED代码 MOV BX,OFFSET STATE ;将该LED代码存入state0 MOV BX,ALTESTBZ: MOV AL,BZ ;得到该选手编号后,测试开始键是否按下 CMP AL,0FFH JNZ A CALL GETPASS ;开始键已按下时,绿灯通A: CALL WARN ;开始键未按下,警告 POP DX POP BX POP AXGETKNUM ENDWARN PROC ;警告子程序,使扬声器响,红灯亮 PUSH AX PUSH BX PUSH CX PUSH DX MOV AL,B MOV BIAOZHI,AL POP DX POP CX POP BX POP AX RETWARN END

温馨提示

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

评论

0/150

提交评论