八位竞赛抢答器报告课件_第1页
八位竞赛抢答器报告课件_第2页
八位竞赛抢答器报告课件_第3页
八位竞赛抢答器报告课件_第4页
八位竞赛抢答器报告课件_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机课程设计八位竞赛抢答器设计报告专 业: 通信工程 班 级: 通信1401 团 队: 第四组 指导老师: 李毅 队 员: 设计时间: 2016年6月23日 星期四 目 录一、项目概述和要求31.1 项目概述31.2 项目要求4二、系统设计52.1 框图设计52.2 元件清单62.3 电路设计图7三、软件设计113.1 系统主流程图113.2 显示抢答违规流程图123.3 抢答成功流程图12四、总结13五、参考文献13六、汇编程序代码14一、 项目概述和要求1.1 项目概述单片机作为计算机的一个重要分支,其应用范围很广,发展也很快,它已成为在现代电子技术、计算机应用、网络、通信、自动控制与计

2、量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用范围十分广泛。对于计算机专业的学生来说,即使暂时没有从事单片机的应用与开发,学习单片机也有很重要的意义。学习它,不仅为将来可能从事该方面的开发打下基础,另一方面,由于单片机作为微型计算机的一个种类,麻雀虽小,五脏俱全,可以把它当作微型计算机的一个简化模型来看待,学习单片机可以加深对微型计算机工作原理的理解,更加清楚计算机的脉络。同时,提供了一个实际应用手段。21世纪,是一个信息技术飞速发展的时代,智力竞赛是一种形式比较活泼的教育方式,是人们休闲娱乐生活的一部分。这些竞赛一方面充实了人们的娱乐生活,另一方面也提高了人们努力汲取相关领域

3、的知识的兴趣。智力竞赛,也就是几个参赛选手之间在规定的时间,规定的地点相互竞争的比赛。 抢答是各种竞赛常用的一种形式。在抢答赛中,往往要有主持人宣布抢答的开始,还要确定是哪个选手抢到了答题权,具体答题的时间有时也要设定。这些如果仅凭主持人的主观判断,很容易出现误判的情况。因此,在竞赛中,抢答器就扮演了一个非常重要的角色。1.2 项目要求l1、抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0 S7表示。l2、设置一个系统清除、抢答开始控制开关、抢答时间控制按钮,该开关由主持人控制。l3、在未开始前,4位数码管显示0000,并且抢答时间控制按钮按下一次每按键,时间加1(超过30时置0)。

4、4、在未开始前,若有提前抢答现象,数码提示抢答按键的序列,以数码管显示FF的形式提示错误。l5、抢答器具有定时抢答功能,且一次抢答的时间由主持人设定。并且抢答时间控制按钮按下一次每按键,时间加1(超过30时置0),当主持人启动"开始"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。l6、参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。l7、如果定时时间已到,无人抢答,四位数码管显示0 00。 8、如果抢答,按开始按钮,则进入60秒倒计时,回答问题,倒计时结束后四位数码管

5、显示0 00。二、系统设计2.1 框图设计本项目的系统设计框图如图2-1所示:4位数码管显示最小系统AT89S51开始按钮清除按钮抢答时间控制按钮8位按键控制蜂鸣器图2-1由系统框图可看出,本设计由单片机AT89S51、四位数码管、控制键盘、蜂鸣器、最小系统5大模块构成。2.2 元件清单器件表2.2所示: 器件名称数量AT89S511电容1nf2电阻1k1电阻10k5按键开关12SOUNDER174ls24514位数码管1瓷片电容1uf1石英晶振1 表2.2AT89S51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Re

6、ad Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。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

7、相与后接DIR,使得RD和PSEN有效时,74LS245输入(P0.1D1),其它时间处于输出(P0.1D1)。四位数码管: 2.3 电路设计图1、最小系统2、控制按键3、数码管电路 4、蜂鸣器电路5、整体电路三、软件设计8个按键是否按下显示按键序列和时间开始键是否按下60秒倒计时违规处理打开中断时间倒计时响应时间加一时间到30置08个按键是否按下开始键是否按下时间控制键是否按下开始3.1 系统主流程图3.2 显示抢答违规流程图开始显示按键序列 蜂鸣器响铃清除键是否按下返回主程序显示抢答违规流程图,当未开始,出现抢答,响铃并显示。开始显示按键序列和时间清除键是否按下返回主程序3.3 抢答成功流

8、程图四、总结通过此次课程设计,我更深地理解了单片机这门课程。同时也将学到的课本知识应用到了实际中,从而更好地反映了理论与实践相结合。经过最近这段时间的在电脑前面的驻守,觉得只要自己肯付出和努力,发现其实很多的东西不是那么难懂的,以后还是要好好提升自己的动手能力和独立思考的能力。在此,还是非常感谢我们的指导老师,他是一位很负责和很细心的老师,谢谢他的辅导,这次的课程设计给了我一个很好的开始,我会好好努力地学习。纵然课程设计是学校所要求的科目,纵然每次都这么紧张和辛苦,但是我还是觉得有些东西做了,就一定会有一定的价值吧。五、参考文献1 张毅刚. 单片机原理及接口技术.人民邮电出版社 2014年.2

9、 康华光. 电子技术基础(模拟部分).第四版 高等教育出版社 1999年.3 喻宗泉. 单片机原理与应用技术.西安电子科技大学出版社 2005年.4 万光毅. 单片机实验与实践教程. 北京航天航空大学出版社 2003年.六、汇编程序代码ORG 0000H ;设置程序指针从0000h开始LJMP begin ;长转移到begin子程序ORG 000BH ;设置定时器t0入口地址LJMP ITOP ;长转移到itop to定时器子程序ORG 001BH ; 设置定时器t0入口地址LJMP ITOP1 ;长转移到itop t1定时器子程序ORG 0100Hbegin: MOV 45H,#10 ;抢答

10、时间初值为10秒 LJMP MAIN ;长转移到main子程序 WRONG1: SETB TR1 ;错误抢答 按键 一 子程序 启动t1计时 发出高频蜂鸣声 MOV R5,#1 ;将1赋值给r5 LCALL SHOW4 ;进入错误抢答 提示具体按键 错误代码ff JNB P3.7,MAIN ;清除键按下,返回main子程序 LJMP WRONG1 ;返回wrong1,如果清除键没有按键,一直循环此子程序WRONG2: SETB TR1 ;错误抢答 按键 二 子程序 启动t1计时 发出高频蜂鸣声 MOV R5,#2 ;将2赋值给r5 LCALL SHOW4 ;进入错误抢答 提示具体按键 错误代码

11、ff JNB P3.7,MAIN ;清除键按下,返回main子程序 LJMP WRONG2 ;返回wrong2,如果清除键没有按键,一直循环此子程序WRONG3: SETB TR1 MOV R5,#3 LCALL SHOW4 JNB P3.7,MAIN ;同上 LJMP WRONG3 WRONG4: SETB TR1 MOV R5,#4 LCALL SHOW4 JNB P3.7,MAIN ;同上 LJMP WRONG4 MAIN: MOV DPTR,#TABLE ;将0-9数字表tale首地址给数据指针寄存器 MOV R2,#20 ;因为t0中断为50ms,循环20次,到1秒,为倒计时减一 M

12、OV R0,45H ;将可控的抢答时间赋值给r0 CLR P3.4 ;p3.4为蜂鸣器驱动口,main子程序初始提供低电压 MOV P2,#0C0H ;初始数码管全显示0. 将0代码给p2口, MOV P0,#0FH ;数码管位选全提供高电压,显示 JNB P1.0,WRONG1 ;初始,在开始键没有按下前,错误抢答,进入相应子程序处理 JNB P1.1,WRONG2 ;同上 JNB P1.2,WRONG3 ;同上 JNB P1.3,WRONG4 ;同上 JNB P1.4,WRONG5 ;同上 JNB P1.5,WRONG6 ;同上 JNB P1.6,WRONG7 ;同上 JNB P1.7,W

13、RONG8 ;同上 JNB P3.5,START ;如果开始健按下,进入相应子程序start JNB P3.7,MAIN ;如果清除键按下,返回到main子程序 JNB P3.0,ADD1 ;若加一抢答时间按键按下,进入add1子程序 MOV SP,#60H ;为堆栈设置起始位置 60h MOV TMOD,#11H ;设计定时器工作方式,t0,t1工作方式1 MOV TH0,#3CH ;设置t0工作方式初始计数,每次50ms中断一次 MOV TL0,#0B0H MOV TH1,#0F0H ;设置蜂鸣器频率,由t1定时器中断控制 MOV TL1,#0FFH ; SETB EA ;允许总中断控制

14、SETB ET0 ;允许 t0中断 SETB ET1 ;允许t1中断 CLR TR1 ;停止t1定时 LJMP MAIN ;目的其他操作循环main子程序ADD1:INC 45H ;抢答时间在45h 目的加一 MOV A,45H ;将45h赋值到a CJNE A,#30,ADD2 ;判断是否等于30,不等于进入add2子程序 MOV 45H,#0 ;若等于30,抢答时间重新初值为0 LJMP MAIN ;并返回到mian,不做任何操作ADD2: MOV R2,#0FFH LCALL SHOW7 ;调用显示抢答时间显示子程序 LJMP MAIN ;并返回main子程序 WRONG5: SETB

15、TR1 ;错误抢答 按键 二 子程序 启动t1计时 发出高频蜂鸣声 MOV R5,#5 ;将5赋值给r5 JNB P3.7,MAIN ;进入错误抢答 提示具体按键 错误代码ff LCALL SHOW4 ;清除键按下,返回main子程序 LJMP WRONG5 ;返回wrong5,如果清除键没有按键,一直循环此子程序WRONG6: SETB TR1 MOV R5,#6 LCALL SHOW4 JNB P3.7,MAIN ;同上 LJMP WRONG6WRONG7: SETB TR1 MOV R5,#7 LCALL SHOW4 ;同上 JNB P3.7,MAIN1 LJMP WRONG7WRONG

16、8: SETB TR1 MOV R5,#8 LCALL SHOW4 ;同上 JNB P3.7,MAIN1 ;以为jnb可寻址范围小,无法直接转移到main,需要间接利用mian1跳转 LJMP WRONG8MAIN1: LJMP MAIN ;利用main1跳转到 main子程序START: LCALL RING ;调用ring响铃子程序 当按下开始按钮,响铃一次,维持0.5sSTART1: SETB TR0 ;开始t0定时器,为倒计时减一 JNB P1.0,ANSWER1 ;若按键一抢答,进入响应answer1子程序 JNB P1.1,ANSWER2 ; JNB P1.2,ANSWER3 ;

17、JNB P1.3,ANSWER4 ; JNB P1.4,ANSWER5 ;同上 JNB P1.5,ANSWER6 ; JNB P1.6,ANSWER7 ; JNB P1.7,ANSWER8 ;同上 CJNE R0,#00,SHOW1 ;抢答时间倒数没有等于0,这进入显示show1子程序 LJMP STOP ;若倒计时等于0,进入stop子程序STOP: CLR TR0 ;停止t0计数 MOV P2,#0C0H ;把数码管为0的代码给p2口 MOV P0,#0DH ;将1.3 4数码管位选置一,显示0 JNB P3.7,MAIN1 ;清除键按下,利用main1返回main主程序 LJMP STO

18、P ;循环stop,显示0,直到清除键按下ANSWER1:CLR EA ;当按键一按下,停止所以中断,不再倒计时 MOV R4,#1 ;把1赋值给r4LJMP SHOW2 ;并长转移到显示2中,显示按键序号,和具体抢答的时间ANSWER2:CLR EA MOV R4,#2 ;同上LJMP SHOW2ANSWER3:CLR EA MOV R4,#3 ;同上LJMP SHOW2ANSWER4:CLR EA MOV R4,#4 ;同上LJMP SHOW2ANSWER5:CLR EA MOV R4,#5 ;同上LJMP SHOW2ANSWER6:CLR EA MOV R4,#6 ;同上LJMP SHO

19、W2ANSWER7:CLR EA MOV R4,#7 ;同上LJMP SHOW2ANSWER8:CLR EA MOV R4,#8 ;同上LJMP SHOW2SHOW1:MOV A,R0 ;显示倒计时子程序,到当前r0的值赋值到a MOV B,#10 ;赋值b为10 DIV AB ;a除以b,a保留商,b保留余数 MOV 34H,A ;商 余数全部保存到34.35h中 MOV 35H,B MOV P0,#04H ;打开数码管位选第三个显示 MOV A,34H ;34h中商赋值给a MOVC A,A+DPTR ;根据商具体数字,利用查表,找到数码管对应代码 MOV P2,A ;把显示数据的数码管代

20、码给p2口 LCALL TIME ;调用等待时间 MOV P0,#08H ;打开数码管位选第四个显示 MOV A,35H ;35h中余数赋值给a MOVC A,A+DPTR ;根据余数具体数字,利用查表,找到数码管对应代码 MOV P2,A ;把显示数据的数码管代码给p2口 LCALL TIME ;调用等待时间 JNB P3.7,MAIN2 ;清除按钮按下利用main2返回main子程序 LJMP START1 ;返回start1SHOW2: LCALL RING ;当按键按下,调用响铃,持续0.5s MOV A,45H ;把设定的抢答时间给a SUBB A,R0 ;抢答时间减去当前倒计时剩余

21、时间,为按钮在抢答后按下的具体时间 MOV R0,A ;并把抢答的具体时间给r0 LJMP SHOW3 ;调用显示show3子程序SHOW3:MOV A,R4 ;进入显示按键几抢答序号,和距离抢答后的时间,将按键序号r4的值给a MOV P0,#01H ;打开数码管位选第一个显示 MOVC A,A+DPTR ;根据序号具体数字,利用查表,找到数码管对应代码 MOV P2,A ;把显示数据的数码管代码给p2口 LCALL TIME ;调用等待时间 MOV A,R0 ;显示具体方方法,上文已叙述,差别不大 MOV B,#10 DIV AB MOV 40H,A MOV 41H,B MOV P0,#0

22、4H MOV A,40H MOVC A,A+DPTR MOV P2,A LCALL TIME MOV P0,#08H MOV A,41H MOVC A,A+DPTR MOV P2,A LCALL TIME JNB P3.5,REPLY ;再次按下开始健,进入60秒倒计时,回答 JNB P3.7,MAIN2 ;按下清除键,利用main2返回main子程序 LJMP SHOW3 ;没有其他操作,循环持续显示MAIN2:LJMP MAIN ;以为jnb寻址范围短,利用main2返回main子程序REPLY :SETB EA ;60秒倒计时,打开所有中断 MOV R0,#60 ;将60秒给r0 LJM

23、P SHOW5 ;跳转到show5SHOW5: SETB TR0 ;启动t0中断 CJNE R0,#00,SHOW6 ;60秒倒计时不等于0,转移到show6显示 LJMP STOP ;倒计时等于0,长转移到stop子程序SHOW6: MOV A,R4 MOV P0,#01H MOVC A,A+DPTR MOV P2,A LCALL TIME MOV A,R0 ;显示程序方法与上面类似 ,上面已做介绍,此处省略 MOV B,#10 DIV AB MOV 34H,A MOV 35H,B MOV P0,#04H MOV A,34H MOVC A,A+DPTR MOV P2,A LCALL TIME MOV P0,#08H MOV A,35H MOVC A,A+DPTR MOV P2,A LCALL TIME JNB P3.7,MAIN2 LJMP SHOW5SHOW4: MOV A,R5 ;当开始健没有按下,造成错误抢答,显示按键几错误抢答,以ff提示错误 MOV P0,#01H MOVC A,A+DPTR MOV P2,A ;显示方法类似,不做介绍 LCALL TIME MOV P0,#0CH MOV P2,#8EH LCALL TIME RETSHOW7:MOV A,45H ;每次抢答时间加一后,持续显示0.5s的时间 提示用户 M

温馨提示

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

评论

0/150

提交评论