基于AT89C51单片机多人抢答器设计-机械设计制造及其自动化课程设计.doc

上传人:沧海****B 文档编号:91492381 上传时间:2023-05-27 格式:DOC 页数:26 大小:1.24MB
返回 下载 相关 举报
基于AT89C51单片机多人抢答器设计-机械设计制造及其自动化课程设计.doc_第1页
第1页 / 共26页
基于AT89C51单片机多人抢答器设计-机械设计制造及其自动化课程设计.doc_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《基于AT89C51单片机多人抢答器设计-机械设计制造及其自动化课程设计.doc》由会员分享,可在线阅读,更多相关《基于AT89C51单片机多人抢答器设计-机械设计制造及其自动化课程设计.doc(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、编号6 单位代码 学号 分 类 号 密 级 课程设计基于AT89C51单片机的多人抢答器设计学 院 名 称: 工 学 院 专 业 名 称: 机械设计制造及其自动化 学 生 姓 名: 学 生 学 号: 指 导 老 师: 2014 年 10 月 30 日xx科技学院课程设计 第II 页摘 要多路数字抢答器在各种智力竞赛中经常用到。在各校举行的各种竞赛中我们也经常看到有抢答的环节,举办方多数采用让选手通过举答题板的方法判断选手的答题权,这在某种程度上会因为主持人的主观误断造成比赛的不公平性。为解决这个问题,我准备借本次课程设计的机会制作一个八路数显抢答器。一方面加深我们对所学习的知识的了解,巩固模拟

2、、数字电路知识,也提升我们解决日常生活中常见问题的能力,掌握一般设计方法与设计步骤。积累实际设计制作经验,为走向更复杂更实用的应用领域奠定基础。控制系统主要由单片机控制电路、存储器接口电路及显示电路组成。具体以AT89C51单片机为系统工作核心,负责控制各个部分协调工作。在其外围接上了复位电路、上拉电阻、数码管、按钮及扬声器,用到的元器件有晶振X1、电容C1、C2、C3、电阻RP1,P3.0、P3.1由主持人控制,分别为抢答停止和开始键。P1.0-1.7是8组输入口,P2.0-P2.3为数码管的段选口,位选口用的是P.0-P0.6口输出,外部中断0、1和P3.3和P3.4为抢答计时调整口,实现

3、对各队的计时,并且加减调整,外部中断0、1实现对答题时间的调整,P3.4和P3.5分别实现了对时间的加一和减一,P3.6为蜂鸣口的控制口,安装了led灯。其中用到了WAVE软件,集成调试环境,集成编辑器、编译器、调试器,支持软件模拟等。同时也用到了PROTEUS软件,通过仿真可完全实现对所设计系统的功能的模拟。关键词:多路数字抢答器;AT89C51; WAVE; PROTEUS; 目 录1 绪论.11.1 引言.21.2 抢答器原理.22 硬件设计.32.1 晶振复位及开始抢答电路.32.2 选手抢答键.32.3 显示与显示驱动电路.42.4 蜂鸣音频及LED灯输出电路.43 软件设计.53.

4、1 系统流程图.53.2 显示抢答违规流程图.73.3 抢答成功流程图.74 系统仿真.84.1 仿真步骤.85 课程设计总结与体会10参考文献.10附录.12附录A.12附录B.23xx科技学院课程设计 第23页1 绪论1.1 引言单片机作为计算机的一个重要分支,其应用范围很广,发展也很快,它已成为在现代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用范围十分广泛。对于计算机专业的学生来说,即使暂时没有从事单片机的应用与开发,学习单片机也有很重要的意义。学习它,不仅为将来可能从事该方面的开发打下基础,另一方面,由于单片机作为微型计算

5、机的一个种类,麻雀虽小,五脏俱全,可以把它当作微型计算机的一个简化模型来看待,学习单片机可以加深对微型计算机工作原理的理解,更加清楚计算机的脉络。同时,提供了一个实际应用手段。21世纪,是一个信息技术飞速发展的时代,智力竞赛是一种形式比较活泼的教育方式,是人们休闲娱乐生活的一部分。这些竞赛一方面充实了人们的娱乐生活,另一方面也提高了人们努力汲取相关领域的知识的兴趣。智力竞赛,也就是几个参赛选手之间在规定的时间,规定的地点相互竞争的比赛。 抢答是各种竞赛常用的一种形式。在抢答赛中,往往要有主持人宣布抢答的开始,还要确定是哪个选手抢到了答题权,具体答题的时间有时也要设定。这些如果仅凭主持人的主观判

6、断,很容易出现误判的情况。因此,在竞赛中,抢答器就扮演了一个非常重要的角色。 抢答器由计数器、寄存器、集成定时器和译码显示等组合、时序电路组成。可分为抢答电路,定时电路,报警电路等几个单元部分。每个单元电路分别可以处理一些抢答竞赛中的基本问题。 本次课程设计设计的是一个多路定时抢答器,是一个多于两位选手参赛的一个抢答器,具有锁存和显示功能。同时有主持人控制系统的清零和抢答的开始。抢答开始后,若有任何一名选手按动抢答按钮,抢答器就会显示该选手编号直至系统被主持人清零,并有扬声器发出提示,同时其他人再抢答就无效了。这次设计的抢答器还有自动定时功能,主持人可以设定选手答题的时间。当主持人启动“开始”

7、键后,定时器会自动减计时,这个会显示在显示器上。选手只有在抢答时间内抢答才有效,若在答题时间内没有选手答题,时间到时,报警电路就会发出警报亮灯并且禁止抢答。.。. T51.2 抢答器的原理抢答器的工作原理是采用单片机最小系统,用程序查询方式采用动态显示组号。主持人按下开始抢答键才可以抢答。主持人没有按下开始抢答按纽(P3.0),有人抢答则抢答违规,报警并显示组号,主持人按下开始抢答开关重新抢答。主持人按下开始抢答按纽(P3.0),蜂鸣响声提示,数码管30秒倒计时抢答,蜂鸣器响声提示并显示他的组号,30秒内有人抢答则开始60秒倒计时(60秒内必须回答完问题),最后五秒倒计时警报。单片机最小系统、

8、抢答按键模块(四位并行数码显示)、显示模块、显示驱动模块、抢答开关模块、蜂鸣器音频输出模块。1.3 单片机控制原理单片机(SCM)是单片微型计算机(Single Chip Microcomputer)的简称。它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口电路、定时/计数器以及输入输出适配器都集成在一块芯片上,构成一个完整的微型计算机。它的最大优点是体积小,可放在仪表内部。但存储量小,输入输出适配器简单,功能较低。目前,单片机在民用和工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。简单的说,用单片机系统来设计抢答器,实现两组的抢答时间即使是相差几微秒,也可分辨出

9、哪组优先答题。2 硬件设计2.1 晶振复位及开始抢答电路晶振的频率为12MHZ,提供89C51的时钟脉冲使89C51工作,复位电路是单片机初始化,使单片机重新开始执行程序。当复位开关按下RST由低电平变为高电平,则程序从头开始执行,在此次课程设计电路中当一个问题结束主持人后按下复位开关后进行下一题的准备。 图1复位及开始抢答电路2.2选手抢答键89C51的P1口做一个为选手抢答的输入按键引脚,P1.0至P1.7轮流输出低电位,给每一个选手编号1至8,当选手按下按钮时,P1口个端口的电平变化从P1口输入,经单片机处理后从P0输出由数码管显示抢答者编号。图2选手抢答电路2.3显示与显示驱动电路 此

10、电路包括显示和驱动,显示采用数码管,驱动用P2口, 违规者编号、抢答30秒倒计时、正常抢答者编号和回答问题时间60秒倒计时,数码管采用动态显示。驱动电路P2口,查询显示程序利用P0口做段选码口输出P2低3位做位选码输出,当为低电平则能驱动数码管使其显示数字。在+5V电压下接10k的电阻,保证正常压降。图3显示与显示驱动电路2.4蜂鸣器音频及LED灯输出电路 通过控制不同频率的矩形脉冲来控制蜂鸣器发声。此次课程设计中只需要一些简单的提示声音和稍微显眼的灯控,有抢答违规,开始抢答,抢答时间结束和回答时间到得提示声和亮灯提醒。图4输出电路3 软件设计3.1系统流程图开 始初 始 化读键盘是否有键按下

11、调用显示抢答违规并报警子程序Y中断条件是否满足N进入中断程序YN开 始开中断并响声提示设定定时器初值并启动定时器30秒抢答时间并显示调用读键子程序为延时程序是否有键按下调用抢答者获得的回答问题子程序NY60秒到中断返回图1系统流程图 3.2显示抢答违规流程图 3.3抢答成功流程图 开 始报警一直提示显示违规者编号开 始响声提示设置定时器初值并启动显示抢答者后30秒倒计时60秒答问题时间到并响声提示RET图2显示抢答违规流程图 图3抢答成功流程图4 系统仿真4.1仿真步骤1)程序设计后,用汇编软件(伟福6000)编译,生成.HEX文件。2)在proteus中加载.HEX文件。3)点击开始仿真软件

12、,进行仿真。仿真效果如下:5课程设计的总结与体会自接触单片机以来,一直觉得单片机非常难,这次的课程设计我开始是以老师布置题目为主要选择对象的,但是后面发现,像八路数字抢答器在我脑海中根本没得一点意象,上网搜了很多资料,也感觉不怎么很懂,于是问老师怎么弄,后面发现老师的意见和我的原本的程序和图只有几个地方不同,于是便将两者综合了一下,经调试和运行后,发现还行的通,于是便开始了忐忑的正文模版之路,以为快搞完了,后面发现其实程序和图还是要细细的弄懂才能写好报告,于是我又将程序和图细细的剖析了一遍,然后慢慢将流程图和proteus图画好和截取下来,经过最近这段时间的在电脑前面的驻守,觉得只要自己肯付出

13、和努力,发现其实很多的东西不是那么难懂的,以后还是要好好提升自己的动手能力和独立思考的能力。参考文献1 张迎新. 单片机初级教程.北京航天航空大学出版社 2000年.2 康华光. 电子技术基础(模拟部分).第四版 高等教育出版社 1999年.3 喻宗泉. 单片机原理与应用技术.西安电子科技大学出版社 2005年.4 万光毅. 单片机实验与实践教程. 北京航天航空大学出版社 2003年.5 张俊谟. 单片机初级教程.北京航天航空大学出版社 2000年.附录 A(源文件)OK EQU20H;抢答开始标志位 RINGEQU22H;铃声标志位 ORG 0000H AJMP MAIN ORG 00003

14、H AJMP INT0SUB ORG 000BHAJMPTOINTORG0013HAJMPINT1SUBORG001BHAJMPT1INTORG0040H MAIN: MOVR1,#3O;初设抢答时间30SMOVR2,#60;初设答题时间60S MOVTMOD,#11H;设置未定时器/模式1MOVTH0,#0F0HMOVTL0,#0FFH;越高发生频率越高、越尖MOVTH1,#3CHMOVTL1,#0B0H;5Oms为一次溢出中断SETBEASETBET0SETBET1SETBEX0SETBEX1;允许四个中断TO、T1、INT0、INT1CLROKCLRRINGSETBTR1SETBTR0;

15、开始就运行定时器,以开始显示FFF,如果想要重新计数,重置TH1/TL1就可以了;=查询程序= START: MOVR5,#0BHMOVR4,#0BHMOVR3,#0BHACALLDISPLAY;未开始抢答时显示FFFJBP3.0,NEXT;ACALLDELAYJBP3.0,NEXT;去抖动,如果“开始键”按下就向下执行,否则跳到非法抢答查询ACALLBARK;按键发声MOVA,R1MOVR6,A;送R1到R6,因为R1中保存了抢答时间SETBOK;抢答标志位,用于COUNT子程序中判断是否查询抢答MOVR7,#01H;读抢答键数据信号标志,这里表示只读一次有用信号MOVR3,#0AH;抢答只

16、显示计时,灭号数AJMPCOUNT;进入倒计时程序,“查询有效抢答的程序”在COUNT里面 NEXT: JNBP1.0,FALSE1JNBP1.1,FALSE2JNBP1.2,FALSE3JNBP1.3,FALSE4JNBP1.4,FALSE5JNBP1.5,FALSE6JNBP1.6,FALSE7JNBP1.7,FALSE8AJMPSTART ;=非法抢答处理程序=FALSE1:MOVR3,#01HAJMPERRORFALSE2:MOVR3,#02HAJMPERROR FALSE3:MOVR3,#03HAJMPERROR FALSE4:MOVR3,#04HAJMPERRORFALSE5:MO

17、VR3,#05HAJMPERRORFALSE6:MOVR3,#06HAJMPERRORFALSE7:MOVR3,#07HAJMPERROR FALSE8:MOVR3,#08HAJMPERROR ;=INTO(抢答时间R1调整程序)=INT0SUB:MOVA,R1MOVB,#0AHDIVABMOVR5,AMOVR4,BMOVR3,#0AHACALLDISPLAY ;先在两个时间LED上显示R1JNBP3.4,INC0 ;P3.4为加1s键,如果按下跳到INC0JNBP3.5,DEC0 ;P3.5为减1s键,如果按下跳到DEC0JNBP3.1,BACK0 ;P3.1为确定键,如果按下跳到BACK0

18、AJMPINT0SUB INC0:MOVA,R1CJNEA,#63H,ADD0;如果不是99,R2加到99,R1就置0 重新加起MOVR1,#00HACALLDELAY1AJMPINT0SUB ADD0:INCR1ACALLDELAY1AJMPINT0SUBDEC0:MOVA,R1JZSETR;如果R1为0,R1就置99DECR1ACALLDELAY1AJMPINT0SUB SETR:MOVR1,#63HACALLDELAY1AJMPINT0SUBBACK0:RETI ;=INT1(回答时间R2调整程序)=INT1SUB:MOVA,R2MOVB,#0AHDIVABMOVR5,AMOVR4,BM

19、OVR3,#0AHACALLDISPLAYJNBP3.4,INC1JNBP3.5,DEC1JNBP3.1,BACK1AJMPINT1SUBINC1:MOVA,R2CJNEA,#63H,ADD1MOVR2,#00HACALLDELAY1AJMPINT1SUBADD1:INCR2ACALLDELAY1AJMPINT1SUBDEC1:MOVA,R2JZSETRDECR2ACALLDELAY1AJMPINT1SUBBACK1:RETI ;=倒计时程序(抢答倒计时和回答倒计时都跳到该程序)= REPEAT:MOVA,R2;使用锦囊是重新计时MOVR6,ACLRRINGCOUNT:MOVR0,#00H;重

20、新定时器中断次数MOVTH1,#3CHMOVTL1,#0B0H;重置定时器RECONT:MOVA,R6;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6MOVB,#0AHDIVAB;除十分出个位/十位MOV30H,A;十位存于(30H)MOV31H,B;个位存于(31H)MOVR5,30H;取十位MOVR4,31H;取个位MOVA,R6SUBBA,#07HJNCLARGER;大于5s跳到LARGER,小于等于5s会提醒MOVA,R0CJNEA,#0AH,FULL;1s中0.5s向下运行CLRRINGAJMPCHECK FULL:CJNEA,#14H,CHECK;下面是1s的情况,响并显

21、示号数并清R0重新计SETBRINGMOVA,R6JZQUIT;计时完毕 MOVR0,#00HDECR6;一秒标志减1AJMPCHECK LARGER:MOVA,R0CJNEA,#14H,CHECK;如果1s向下运行,否则跳到查询“停/显示”DECR6;计时一秒R6自动减1MOVR0,#00H CHECK:JNBP3.1,QUIT;如按下停止键退出JNBOK,CHECKK;只在回答倒计时才有效AJMPNEXTT CHECKK:JNBP3.0,REPEAT;判断是否使用锦囊NEXTT:ACALLDISPLAY JBOK,ACCOUNT;如果是抢答倒计时,如果是查询抢答,否则跳过查询继续倒计数(这

22、里起到锁抢答作用)AJMPRECONTACCOUNT:MOVA,36HJNBACC.0,TRUE1JNBACC.1,TRUE2JNBACC.2,TRUE3JNBACC.3,TRUE4JNBACC.4,TRUE5JNBACC.5,TRUE6JNBACC.6,TZ1JNBACC.7,TZ2AJMPRECONTTZ1:JMPTRUE7TZ2:JMPTRUE8 QUIT:CLROK;如果按下了“停止键”执行的程序CLRRINGAJMPSTART ;=正常抢答处理程序= TRUE1:ACALLBARK MOVA,R2MOVR6,A;抢答时间R2送R6MOVR3,#01HCLROK;因为答题计时不再查询抢

23、答,所以就锁了抢答AJMPCOUNT TRUE2:ACALLBARKMOVA,R2MOVR6,A;抢答时间R2送R6MOVR3,#02HCLROK;因为答题计时不再查询抢答,所以就锁了抢答AJMPCOUNTTRUE3:ACALLBARKMOVA,R2MOVR6,A;抢答时间R2送R6MOVR3,#03HCLROK;因为答题计时不再查询抢答,所以就锁了抢答AJMPCOUNTTRUE4:ACALLBARKMOVA,R2MOVR6,A;抢答时间R2送R6MOVR3,#04HCLROK;因为答题计时不再查询抢答,所以就锁了抢答AJMPCOUNTTRUE5:ACALLBARKMOVA,R2MOVR6,A

24、;抢答时间R2送R6MOVR3,#05HCLROK;因为答题计时不再查询抢答,所以就锁了抢答AJMPCOUNT TRUE6:ACALLBARKMOVA,R2MOVR6,A;抢答时间R2送R6MOVR3,#06HCLROK;因为答题计时不再查询抢答,所以就锁了抢答AJMPCOUNTTRUE7:ACALLBARKMOVA,R2MOVR6,A;抢答时间R2送R6MOVR3,#07HCLROK;因为答题计时不再查询抢答,所以就锁了抢答AJMPCOUNTTRUE8:ACALLBARKMOVA,R2MOVR6,A;抢答时间R2送R6MOVR3,#08HCLROK;因为答题计时不再查询抢答,所以就锁了抢答A

25、JMPCOUNT ;=犯规抢答程序= ERROR:MOVR0,#00HMOVTH1,#3CH MOVTL1,#0B0HMOV34H,R3;犯规号数暂存到(34H)HERE:MOVA,R0 CJNEA,#06H,FLASH;0.3s向下运行灭并停响CLRRINGMOVR3,#0AHMOVR4,#0AHMOVR5,#0AH;三灯全灭AJMPCHECK1 FLASH:CJNEA,#0CH,CHECK1;下面是0.8s的情况,响并显示号数并清R0,重新计SETBRINGMOVR0,#00HMOVR3,34H;取回号数MOVR5,#0BHMOVR4,#0BH;显示FF和号数AJMPCHECK1CHECK

26、1:JNBP3.1,QUIT1LCALLDISPLAYAJMPHERE QUIT1:CLRRINGCLROKLJMPSTART ;=显示程序=DISPLAY:MOVDPTR,#DAT1;查询显示程序利用P0口做段选码口输出P2低3位做位选码输出MOVA,R3MOVCA,A+DPTRMOVP2,#0FEHMOVP0,AACALLDELAY2MOVDPTR,#DAT2MOVA,R5MOVCA,A+DPTRMOVP2,#0FDHMOVP0,AACALLDELAY2MOVA,R4MOVCA,A+DPTRMOVP2,#0FDHMOVP0,AACALLDELAY2RET DAT1: DB 00H,06H,

27、5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,71H ;灭、0、1、2、3、4、5、6、7、8、9、灭、F DAT2: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,71H;第一个为0,其他与上相同,因为十位如果为0,显示灭 ;?=加减时间延时(起到不会按下就加N个数)=DELAY1:MOV 35H,#08H LOOP0:ACALLDISPLAYDJNZ35H,LOOP0RET ;=延时4236个机器周期(去抖动用到)= DELAY:MOV32H,#12H LOOP:MOV33H,#0AFH LOOP1:DJNZ33H,

28、LOOP1DJNZ32H,LOOPRET ;=延时4236个机器周期(显示用到)= DELAY2:MOV32H,#43H LOOP3:MOV33H,#1EHMOVA,R7;每隔60到70个机器周期读一次P1口全为1时为无效数据,继续读一个不为1时转到正常抢答处理JNZAAAA1;没读到有效数据时继续转到AAAA1 LOOP2:DJNZ33H,LOOP2DJNZ32H,LOOP3RET ;=读抢答按键数据口程序= AAAA1:MOVA,P1CJNEA,#0FFH,AA1;当不全为1时的数据为有效数据 AA0:MOV36H,A;将有效数据送到36H暂存 AJMPLOOP2 AA1:DECR7AJMPAA0 ;=发声程序= BARK:SETBRINGACALLDELAY1ACALLDELAY1CLRRING;按键发声RET ;=T0溢出中断= TOINT:MOVTH0,#0ECHMOVTL0,#0FFHJNBRING,OUTCPLP3.6;RING标志位为1时P3.6口不短路取反使喇叭发出一定频率的声音 OUT:RETI ;=T1溢出中断(计时程序)= T1INT:MOVTH1,#3CHMOVTL1,#0B0HINCR0RETIEND附录 B (电路总设计图)4.1 原理及电路总框图图1抢答器总原理图

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

当前位置:首页 > 教育专区 > 教案示例

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

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