八位竞赛抢答器报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

八位竞赛抢答器设计报告专业:通信工程班级:通信1401团队:第四组指导老师:李毅队员:设计时间:2016年6月23日星期四目录一、项目概述和要求项目概述单片机作为计算机的一个重要分支,其应用范围很广,发展也很快,它已成为在现代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用范围十分广泛。对于计算机专业的学生来说,即使暂时没有从事单片机的应用与开发,学习单片机也有很重要的意义。学习它,不仅为将来可能从事该方面的开发打下基础,另一方面,由于单片机作为微型计算机的一个种类,麻雀虽小,五脏俱全,可以把它当作微型计算机的一个简化模型来看待,学习单片机可以加深对微型计算机工作原理的理解,更加清楚计算机的脉络。同时,提供了一个实际应用手段。21世纪,是一个信息技术飞速发展的时代,智力竞赛是一种形式比较活泼的教育方式,是人们休闲娱乐生活的一部分。这些竞赛一方面充实了人们的娱乐生活,另一方面也提高了人们努力汲取相关领域的知识的兴趣。智力竞赛,也就是几个参赛选手之间在规定的时间,规定的地点相互竞争的比赛。抢答是各种竞赛常用的一种形式。在抢答赛中,往往要有主持人宣布抢答的开始,还要确定是哪个选手抢到了答题权,具体答题的时间有时也要设定。这些如果仅凭主持人的主观判断,很容易出现误判的情况。因此,在竞赛中,抢答器就扮演了一个非常重要的角色。项目要求1、抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0~S7表示。2、设置一个系统清除、抢答开始控制开关、抢答时间控制按钮,该开关由主持人控制。3、在未开始前,4位数码管显示0000,并且抢答时间控制按钮按下一次每按键,时间加1(超过30时置0)。4、在未开始前,若有提前抢答现象,数码提示抢答按键的序列,以数码管显示FF的形式提示错误。5、抢答器具有定时抢答功能,且一次抢答的时间由主持人设定。并且抢答时间控制按钮按下一次每按键,时间加1(超过30时置0),当主持人启动开始键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间秒左右。6、参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。7、如果定时时间已到,无人抢答,四位数码管显示000。8、如果抢答,按开始按钮,则进入60秒倒计时,回答问题,倒计时结束后四位数码管显示000。二、系统设计框图设计本项目的系统设计框图如图2-1所示:图2-1由系统框图可看出,本设计由单片机AT89S51、四位数码管、控制键盘、蜂鸣器、最小系统5大模块构成。元件清单器件表所示:器件名称数量AT89S511AT89S51最小系统4位数码管显示8位按键控制开始按钮清除按钮抢答时间控制按钮蜂鸣器电容1nf2电阻1k1电阻10k5按键开关12SOUNDER174ls24514位数码管1瓷片电容1uf1石英晶振1表AT89S51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。74LS245还具有双向三态功能,既可以输出,也可以输入数据。当8051单片机的P0口总线负载达到或超过P0最大负载能力必须接入74LS245等总线驱动器。当片选端/CE低电平有效时,DIR=“0”,信号由B向A传输;(接收)DIR=“1”,信号由A向B传输;(发送)当CE为高电平时,A、B均为高阻态。由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与驱动器输入线对应相连。P0口与74LS245输入端相连,E端接地,保证数据线畅通。8051的/RD和/PSEN相与后接DIR,使得RD和PSEN有效时,74LS245输入(←D1),其它时间处于输出(→D1)。四位数码管:电路设计图1、最小系统2、控制按键3、数码管电路4、蜂鸣器电路5、整体电路三、软件设计系统主流程图显示抢答违规流程图显示抢答违规流程图,当未开始,出现抢答,响铃并显示。抢答成功流程图四、总结通过此次课程设计,我更深地理解了单片机这门课程。同时也将学到的课本知识应用到了实际中,从而更好地反映了理论与实践相结合。经过最近这段时间的在电脑前面的驻守,觉得只要自己肯付出和努力,发现其实很多的东西不是那么难懂的,以后还是要好好提升自己的动手能力和独立思考的能力。在此,还是非常感谢我们的指导老师,他是一位很负责和很细心的老师,谢谢他的辅导,这次的课程设计给了我一个很好的开始,我会好好努力地学习。纵然课程设计是学校所要求的科目,纵然每次都这么紧张和辛苦,但是我还是觉得有些东西做了,就一定会有一定的价值吧。8个按键是否按下开始键是否按下违规处理8个按键是否按下开始键是否按下时间控制键是否按下开始开始显示按键序列清除键是否按下显示按键序列和时间清除键是否按下五、参考文献[1]张毅刚.《单片机原理及接口技术》.人民邮电出版社2014年.[2]康华光.《电子技术基础(模拟部分)》.第四版高等教育出版社1999年.[3]喻宗泉.《单片机原理与应用技术》.西安电子科技大学出版社2005年.[4]万光毅.《单片机实验与实践教程》.北京航天航空大学出版社2003年.六、汇编程序代码ORG0000H;设置程序指针从0000h开始LJMPbegin;长转移到begin子程序ORG000BH;设置定时器t0入口地址LJMPITOP;长转移到itopto定时器子程序ORG001BH;设置定时器t0入口地址LJMPITOP1;长转移到itopt1定时器子程序ORG0100Hbegin:MOV45H,#10;抢答时间初值为10秒LJMPMAIN;长转移到main子程序WRONG1:SETBTR1;错误抢答按键一子程序启动t1计时发出高频蜂鸣声MOVR5,#1;将1赋值给r5LCALLSHOW4;进入错误抢答提示具体按键错误代码ffJNB,MAIN;清除键按下,返回main子程序LJMPWRONG1;返回wrong1,如果清除键没有按键,一直循环此子程序WRONG2:SETBTR1;错误抢答按键二子程序启动t1计时发出高频蜂鸣声MOVR5,#2;将2赋值给r5LCALLSHOW4;进入错误抢答提示具体按键错误代码ffJNB,MAIN;清除键按下,返回main子程序LJMPWRONG2;返回wrong2,如果清除键没有按键,一直循环此子程序WRONG3:SETBTR1MOVR5,#3LCALLSHOW4JNB,MAIN;同上LJMPWRONG3WRONG4:SETBTR1MOVR5,#4LCALLSHOW4JNB,MAIN;同上LJMPWRONG4MAIN:MOVDPTR,#TABLE;将0-9数字表tale首地址给数据指针寄存器MOVR2,#20;因为t0中断为50ms,循环20次,到1秒,为倒计时减一MOVR0,45H;将可控的抢答时间赋值给r0CLR;为蜂鸣器驱动口,main子程序初始提供低电压MOVP2,#0C0H;初始数码管全显示0.将0代码给p2口,MOVP0,#0FH;数码管位选全提供高电压,显示JNB,WRONG1;初始,在开始键没有按下前,错误抢答,进入相应子程序处理JNB,WRONG2;同上JNB,WRONG3;同上JNB,WRONG4;同上JNB,WRONG5;同上JNB,WRONG6;同上JNB,WRONG7;同上JNB,WRONG8;同上JNB,START;如果开始健按下,进入相应子程序startJNB,MAIN;如果清除键按下,返回到main子程序JNB,ADD1;若加一抢答时间按键按下,进入add1子程序MOVSP,#60H;为堆栈设置起始位置60hMOVTMOD,#11H;设计定时器工作方式,t0,t1工作方式1MOVTH0,#3CH;设置t0工作方式初始计数,每次50ms中断一次MOVTL0,#0B0HMOVTH1,#0F0H;设置蜂鸣器频率,由t1定时器中断控制MOVTL1,#0FFH;SETBEA;允许总中断控制SETBET0;允许t0中断SETBET1;允许t1中断CLRTR1;停止t1定时LJMPMAIN;目的其他操作循环main子程序ADD1:INC45H;抢答时间在45h目的加一MOVA,45H;将45h赋值到aCJNEA,#30,ADD2;判断是否等于30,不等于进入add2子程序MOV45H,#0;若等于30,抢答时间重新初值为0LJMPMAIN;并返回到mian,不做任何操作ADD2:MOVR2,#0FFHLCALLSHOW7;调用显示抢答时间显示子程序LJMPMAIN;并返回main子程序WRONG5:SETBTR1;错误抢答按键二子程序启动t1计时发出高频蜂鸣声MOVR5,#5;将5赋值给r5JNB,MAIN;进入错误抢答提示具体按键错误代码ffLCALLSHOW4;清除键按下,返回main子程序LJMPWRONG5;返回wrong5,如果清除键没有按键,一直循环此子程序WRONG6:SETBTR1MOVR5,#6LCALLSHOW4JNB,MAIN;同上LJMPWRONG6WRONG7:SETBTR1MOVR5,#7LCALLSHOW4;同上JNB,MAIN1LJMPWRONG7WRONG8:SETBTR1MOVR5,#8LCALLSHOW4;同上JNB,MAIN1;以为jnb可寻址范围小,无法直接转移到main,需要间接利用mian1跳转LJMPWRONG8MAIN1:LJMPMAIN;利用main1跳转到main子程序START:LCALLRING;调用ring响铃子程序当按下开始按钮,响铃一次,维持START1:SETBTR0;开始t0定时器,为倒计时减一JNB,ANSWER1;若按键一抢答,进入响应answer1子程序JNB,ANSWER2;JNB,ANSWER3;JNB,ANSWER4;JNB,ANSWER5;同上JNB,ANSWER6;JNB,ANSWER7;JNB,ANSWER8;同上CJNER0,#00,SHOW1;抢答时间倒数没有等于0,这进入显示show1子程序LJMPSTOP;若倒计时等于0,进入stop子程序STOP:CLRTR0;停止t0计数MOVP2,#0C0H;把数码管为0的代码给p2口MOVP0,#0DH;将4数码管位选置一,显示0JNB,MAIN1;清除键按下,利用main1返回main主程序LJMPSTOP;循环stop,显示0,直到清除键按下ANSWER1:CLREA;当按键一按下,停止所以中断,不再倒计时MOVR4,#1;把1赋值给r4LJMPSHOW2;并长转移到显示2中,显示按键序号,和具体抢答的时间ANSWER2:CLREAMOVR4,#2;同上LJMPSHOW2ANSWER3:CLREAMOVR4,#3;同上LJMPSHOW2ANSWER4:CLREAMOVR4,#4;同上LJMPSHOW2ANSWER5:CLREAMOVR4,#5;同上LJMPSHOW2ANSWER6:CLREAMOVR4,#6;同上LJMPSHOW2ANSWER7:CLREAMOVR4,#7;同上LJMPSHOW2ANSWER8:CLREAMOVR4,#8;同上LJMPSHOW2SHOW1:MOVA,R0;显示倒计时子程序,到当前r0的值赋值到aMOVB,#10;赋值b为10DIVAB;a除以b,a保留商,b保留余数MOV34H,A;商余数全部保存到中MOV35H,BMOVP0,#04H;打开数码管位选第三个显示MOVA,34H;34h中商赋值给aMOVCA,@A+DPTR;根据商具体数字,利用查表,找到数码管对应代码MOVP2,A;把显示数据的数码管代码给p2口LCALLTIME;调用等待时间MOVP0,#08H;打开数码管位选第四个显示MOVA,35H;35h中余数赋值给aMOVCA,@A+DPTR;根据余数具体数字,利用查表,找到数码管对应代码MOVP2,A;把显示数据的数

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功