单片机课程设计8位智能抢答器.docx
- 文档编号:30686441
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:26
- 大小:170.83KB
单片机课程设计8位智能抢答器.docx
《单片机课程设计8位智能抢答器.docx》由会员分享,可在线阅读,更多相关《单片机课程设计8位智能抢答器.docx(26页珍藏版)》请在冰豆网上搜索。
单片机课程设计8位智能抢答器
第一章课程设计任务书…………………………………………2
一、概述……………………………………………………………2
二、课程设计任务书………………………………………………2
第二章硬件电路设计及描述……………………………………4
一、单片机芯片型号的选择………………………………………5
二、电源方案的选择………………………………………………5
三、抢答器键盘的选择……………………………………………5
四、时钟电路的设计………………………………………………6
五、复位电路………………………………………………………7
六、显示电路………………………………………………………7
七、主持人控制电路和蜂鸣器电路………………………………8
第三章软件设计流程及描述……………………………………9
一、软件设计流程…………………………………………………9
二、程序设计描述…………………………………………………10
第四章源程序代码…………………………………………………11
第五章电路原理图…………………………………………………20
第六章课程设计心得体会………………………………………21
第一章课程设计任务书
一、概述:
1974年,美国仙童公司研制出世界上第一台单片微型计算机F8,该机由两块集成电路芯片组成,结构呢奇特,具有与众不同的指令系统,深受民用电器和仪器仪表领域的欢迎和重视。
从此,单片机开始迅速发展,应用范围也在不断扩大,现在成为微型计算机的重要分支。
随着电子科技的发展,单片机的作用和地位越来越高,功能也越来越完善,在电子电路中起到控制管理的核心作用。
《单片机原理及应用技术》也是理工生的一门必修课,是一门技术性、应用性、实践性较强的科目。
其核心在于编程,通过相应的程序来达到控制管理的作用。
相应的程序可以由高级语言来编写,当然也能由汇编语言来编写。
本次的《单片机原理与应用课程设计》主要是利用MCS-51系列单片机为核心,设计一个可容纳八组参赛队的数字式抢答器,要求由主机、按键盒和显示、报警器等组成完整系统。
通过汇编语言编写程序来控制电路的过程。
这次课程设计的目的和意义就是希望通过小组在一起分析研究,来达到自主学习、分析和解决问题的一个思维和能力,提高理工生的实践能力。
二、课程设计任务书
1.内容与要求
利用MCS-51系列单片机为核心,设计一个可容纳八组参赛队的数字式抢答器,要求由主机、按键盒和显示、报警器等组成完整系统。
2.基本工作原理及组成简介
系统主机由MCS-51单片机作为控制核心,按键盒设置一个按键和一个指示灯通过导线连接到主机接口,显示器包括抢答组别号显示和计时显示。
抢答开始:
先由主持人将系统复位并发出抢答指令后,参赛者才按抢答按键,首先抢答组指示灯亮并通过组别显示电路显示出抢答者的组别,同时扬声器发出“嘀-嘟”的双音音响持续2S~3S钟。
同时电路自锁,使别组的抢答按键不起作用。
若抢答犯规,对提前抢答和超时抢答的组别鸣喇叭示警,显示器上显示出犯规组别。
3.技术指标与性能特点
参赛组数:
8组。
4.基本步骤
(1)分析题意,确定设计方案
(2)选择单片机型号
(3)设计单元电路、选择元器件、计算参数、并进行实验验证
(4)用Protel画出完整电路原理图
(5)编写程序
(6)软、硬件调试
5.关键技术提示
(1)LED显示器电路设计,考虑重点是驱动能力核算。
(2)抢答按键消抖与互锁时间配合及编程。
(3)裁判规则算法。
6.设计报告要求
(1)封面
(2)内容提要
(3)目录
(4)正文
①概述所设计题目的意义、本人所做的工作及系统的主要功能;
②硬件电路设计及描述
③软件设计流程及描述
④软、硬件调试过程及方法描述
⑤源程序代码(要详细注解)
⑥电路原理图。
(5)课程设计体会
(6)主要参考文献、资料
第二章硬件电路设计及描述
硬件设计主要包括一些电子器件的选择。
当然,这些电子器件的选择与我们的软件设计密不可分。
因此,我们应该先把握好整个设计的思路,根据设计思路来确定自己需要哪些硬件来完成我们的目的。
本次课程设计是一个可容纳8组参赛队的数字抢答器。
具体思路是:
系统主机由MCS-51单片机作为控制核心,按键盒设置一个按键和一个指示灯通过导线连接到主机接口,显示器包括抢答组别号显示和计时显示。
抢答开始:
先由主持人将系统复位并发出抢答指令后,参赛者才按抢答按键,首先抢答组指示灯亮并通过组别显示电路显示出抢答者的组别,同时扬声器发出“嘀-嘟”的双音音响持续2S~3S钟。
同时电路自锁,使别组的抢答按键不起作用。
若抢答犯规,对提前抢答和超时抢答的组别鸣喇叭示警,显示器上显示出犯规组别。
具体构思如下图所示:
一、单片机芯片型号的选择:
在之前的单片机课程和实验中,我们学习和使用过AT89C51的单片机,用AT89C51单片机来控制电路,简单、方便。
最重要的就是写程序,如何通过程序来达到抢答器的作用,利用51单片机来说补充了集成电路中所缺的遗漏,更是在集成电路上更加精准,对选手更加的公平,让选手都站在同一的战线上。
AT89C51的引脚图:
二、电源方案的选择:
系统需要多个电源,AT89C51使用5V稳压电源。
采用三端稳压集成78L05得到5V的稳定电压。
利用该方法方便简单,工作稳定可靠。
三、抢答器键盘的选择:
键盘接口中使用多少根I/O口,键盘中就有几个按键,键盘接口使用了8根I/O口线,该键盘就有8个按键,这种类型的键盘,其按键比较少,且键盘中各按键的工作互不干扰。
因此可以根据实际需要对键盘中的按键灵活的编码。
四、时钟电路的设计:
本设计所采用的时钟信号为C51中的内部形式,内部方式实现单片机的时钟电路,利用单片机芯片上提供的反相放大器电路,在XTAL1和XTAL2引脚之间外接振荡器构成一个自激振荡器,自激振荡器与单片机内部的始终发生器构成单片机的时钟电路。
如图中,由OSC和电容C1和C2构成了并联谐振回路作为定时元件,振荡源OSC可选用晶体振荡器或陶瓷振荡器,频率为1.2—12MHz,电容C1、C2为5—30pF,起频率微调作用。
五、复位电路:
在单片机工作过程中,由于某种原因使单片机陷入“死机”状态,或根据需要采用强制手段使程序重新开始执行等等,需要采用按钮开关复位方式。
当按钮开关S按下时,+5V电源通过S接入电阻构成的电路网络,设计时使电阻上的分压达到高电平的阀值,就可以使单片机复位。
因为我们按动按钮开关使其闭合的时间远远大于单片机复位所用的时间。
通常把上电自动复位电路和按钮开关复位电路综合在一起,这样既可以在每一次电源接通时系统复位,也可以满足强制复位的要求。
六、显示电路:
本设计采用LED数码管显示,利用软件设计其倒计时功能,当主持人未按键开始抢答时,时间显示数码管显示为00,当开始抢答后,显示为30并开始倒计时,如果在此期间有人按键抢答,则在第三个数码管上显示响应的号数,当然如果出现违规的选手则不能参与本次回答,因为违规的时候会出来二极管LED显示红灯,同时扬声器发出声响,时间大约为0.5秒,如果有人正常按键抢答,则出现绿灯,扬声器也发出声响时间也为0.5秒左右。
七、主持人控制电路和蜂鸣器电路:
当有信号源从P2.7口输入时,扬声器发出声响,可根据定时器设计发声时间的长短,此信号源可以为抢答开始、抢答时间到、选手正常抢答、选手非法抢答、答题时间到都会同过此扬声器发出一定时间的声响,并且设计了一个LED显示来提示是否为报警信号,当正常信号源来的时候,此灯为绿灯,发出声响,但是如果为报警信号来时,此灯为红灯,并发出声响。
同时主持人通过S按键输入信号,提示答题时间开始、清除,扬声器同时发出声响,发出声响的时候优先判断是哪位抢答到答题的机会,并在LED上显示出来,同时显示开始后的时间,此电路设计答题时间为30秒,扬声器响的时间为0.5秒。
当主持人清除系统信号的时候,显示器上显示时间为00,选手号数也为0。
第三章软件设计流程及描述
一、软件设计流程:
智力竞赛抢答器要求有计时记忆功能,一次时间设置完,复位后不需重新进行时间设定,通过键盘扫描输出按键信息,再通过单片机将它转换成能在七段数码管上显示字型码.当抢答完毕时,会在数码管上显示抢答者数字号码提示以表示抢答成功.同时显示其分数,分数的加减可由裁判手动进行.采用独立式键盘,可实现8路抢答.在显示时使用的是七段数码管显示在本设计中根据实际情况采用的是动态显示方法.并通过查表法将其在数码管上显示出来,其中P1口为字型码输入端,P2口低6位为字选段输入端.通过查表将字型码送给7段数码管显示的数字。
软件去抖动,如果"开始键"按下就向下执行,否者跳到开始。
采用倒计时程序,使其具有倒计时功能。
回答倒计时30秒。
抢答时间5秒。
采用发声警报(由于发生器不响,所以,用绿灯换了),起到报警作用。
1、如果想调节抢答时间或答题时间,按"抢答时间调节"键或"答题时间调节"键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,如想加一秒按一下"加1s"键,如果想减一秒按一下"-1s"键,时间LED上会显示改变后的时间,调整范围为0s~99s,0s时再减1s会跳到99,99s时再加1s会变到0s。
2、主持人按"抢答开始"键,会有提示音,并立刻进入抢答倒计时(预设30s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设60s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。
倒数时间到小于5s会每秒响一下提示音。
3、如倒计时期间,主持人想停止倒计时可以随时按"停止"按键,系统会自动进入准备状态,等待主持人按"抢答开始"进入下次抢答计时。
4、如果主持人未按"抢答开始"键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下"停止"键为止。
5、P3.0为开始抢答,P3.1为停止,p1.0-p1.7为八路抢答输入数码管段选P0口,位选P2口低3位,蜂鸣器输出为P3.6口。
P3.2抢答时间调整结,P3.3回答时间调整,P3.4为时间加1调整,P3.5为时间减1调整。
二、程序设计描述
本文以AT89C51单片机为核心设计的八路抢答器方案是:
●抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0~S7表示。
●设置一个系统清除和抢答控制开关S,该开关由主持人控制。
●抢答器具有锁存与显示功能。
即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。
●抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。
当主持人启动"开始"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。
●参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
第四章源程序代码
主程序:
OKEQU20H;抢答开始标志位
RINGEQU22H;响铃标志位
ORG0000H
AJMPMAIN
ORG0003H
AJMPINT0SUB
ORG000BH
AJMPTOINT
ORG0013H
AJMPINT1SUB
ORG001BH
AJMPT1INT
ORG0040H
MAIN:
MOVR1,#0FH;初始抢答时间为15S
MOVR2,#0AH;初始答题时间为10S
MOVTMOD,#11H;设置为定时器/模式1
MOVTH0,#0F0H
MOVTL0,#0FFH;越高发声频率越高,越尖
MOVTH1,#3CH
MOVTL1,#0B0H;50ms为一次溢出中断
SETBEA
SETBET0
SETBET1
SETBEX0
SETBEX1;允许四个中断,T0/T1/INT0/INT1
CLROK
CLRRING
SETBTR1
SETBTR0;一开始就运行定时器,一开始显示FFF
查询程序
START:
MOVR5,#0BH
MOVR4,#0BH
MOVR3,#0BH
ACALLDISPLAY;未开始抢答时候显示FFF
JBP3.1,NEXT
ACALLDELAY
JBP3.1,NEXT;
ACALLBARK;按键发声
MOVA,R1
MOVR6,A;送R1到R6,因为R1中保存了抢答时间
SETBOK;抢答标志位,
MOVR3,0AH;抢答只显示时,灭号数
ALMPCOUNT;进入倒计时程序,
NEXT:
JNBP1.0,FALSE1
JNBP1.1,FALSE2
JNBP1.2,FALSE3
JNBP1.3,FALSE4
JNBP1.4,FALSE5
JNBP1.5,FALSE6
JNBP1.6,FALSE7
JNBP1.7,FALSE8
非法抢答处理程序:
FALSE1:
ACALLBARK;按键发声
MOVR3,#01H
ALMPERROR
FALSE2:
ACALLBARK
MOVR3,#02H
ALMPERROR
FALSE3:
ACALLBARK
MOVR3,#03H
ALMPERROR
FALSE4:
ACALLBARK
MOVR3,#04H
ALMPERROR
FALSE5:
ACALLBARK
MOVR3,#05H
ALMPERROR
FALSE6:
ACALLBARK
MOVR3,#06H
ALMPERROR
FALSE7:
ACALLBARK
MOVR3,#07H
ALMPERROR
FALSE8:
ACALLBARK
MOVR3,#08H
ALMPERROR
INT0(抢答时间R1调整程序):
INT0SUB:
MOVA,R1
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#0AH
ACALLDISPLAY;先在两个时间LED上显示R1
JNBP3.2,INC0;P3.2为+1s键,如按下跳到INC0
JNBP3.3,DEC0;P3.3为-1s键,如按下跳到DEC0
JNBP3.0,BACK0;P3.0为+1s键,如按下跳到BACK0
AJMPINT0SUB
INC0:
MOVA,R1
CJNEA,#63H,ADD0;如果不是99,R2加1,
MOVR1,#00H
ACALLDELAY1
AJMPINT0SYB
ADD0:
INCR1
ACALLDELAY1
AJMPINT0SUB
DEC0:
MOVA,R1
JZSETR1;如果R1为0,R1就置99
DECR1
ACALLDELAY1
AJMPINT0SUB
SETR1:
MOVR1,#63H
ACALLDELAY1
AJMPINT0SUB
BACK0:
RETI
INT1(回答时间R2调整程序):
INT0SUB:
MOVA,R2
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#0AH
ACALLDISPLAY;先在两个时间LED上显示R1
JNBP3.2,INC1;P3.2为+1s键,如按下跳到INC0
JNBP3.3,DEC1;P3.3为-1s键,如按下跳到DEC0
JNBP3.0,BACK1;P3.0为+1s键,如按下跳到BACK0
AJMPINT1SUB
INC1:
MOVA,R2
CJNEA,#63H,ADD1;
MOVR2,#00H
ACALLDELAY1
AJMPINT1SYB
ADD1:
INCR2
ACALLDELAY1
AJMPINT1SUB
DEC1:
MOVA,R2
JZSETR2;如果R2为0,R2就置99
DECR2
ACALLDELAY1
AJMPINT1SUB
SETR2:
MOVR2,#63H
ACALLDELAY1
AJMPINT1SUB
BACK1:
RETI
倒计时程序(抢答倒计时和回答倒计时都跳到该程序):
COUNT:
MOVR0,#00H;重置定时器中断次数
MOVTH1,#3CH
MOVTL1,#0B0H;重置定时器
RECOUNT:
MOVA,R6;R6保存了倒计时的时间,
MOV,B,#0AH
DIVAB;除十分出个位/十位
MOV30H,A;十位存于(30H)
MOV31H,B;个位存于(31H)
MOVR5,30H;取十位
MOVR4,31H;取个位
MOVA,R6
SUBBA,#07H
JNCLARGER;大于5s跳到LARGER,小于等于5s会提醒
MOVA,R0
CJNEA,#0AH,FULL;1s中0.5s向下运行
CLRRING
AJMPCHECK
FULL:
CJNEA,#14H,CHECK;下面系1s的情况,响并显示号数清R0,重新计时
SETBRING
MOVA,R6
JZQUIT;计时完毕
MOVR0,#00H
DECR6;一秒标志减1
AJMPCHECK
LARGER:
MOVA,R0
CJNEA,#14H,CHECK;
DECR6;计时一秒R6自动减1
MOVR0,#00H
CHECK:
JNBP3.0,QUIT;如按下停止键退出
ACALLDISPLAY
JBOK,ACCOUT;
AJMPRECOUNT
ACCOUT:
JNBP1.0,TRUE1
JNBP1.1,TRUE2
JNBP1.2,TRUE3
JNBP1.3,TRUE4
JNBP1.4,TRUE5
JNBP1.5,TRUE6
JNBP1.6,TRUE7
JNBP1.7,TRUE8
AJMPRECOUNT
QUIT:
CLROK;如果按下了“停止键”执行的程序
CLRRING
AJMPSTART
正常抢答处理程序:
TRUE1:
ACALLBARK;按键发声
MOVA,R2
MOVR6,A;抢答时间R2送R6
MOVR3,#01H
CLROK;因为答题的计时不再查询抢答,所以就锁了抢答
AJMPCOUNT
TURE2:
ACALLBARK;按键发声
MOVA,R2
MOVR6,A;抢答时间R2送R6
MOVR3,#02H
CLROK;因为答题的计时不再查询抢答,所以就锁了抢答
AJMPCOUNT
TURE3:
ACALLBARK;按键发声
MOVA,R2
MOVR6,A;抢答时间R2送R6
MOVR3,#03H
CLROK;因为答题的计时不再查询抢答,所以就锁了抢答
AJMPCOUNT
TURE4:
ACALLBARK;按键发声
MOVA,R2
MOVR6,A;抢答时间R2送R6
MOVR3,#04H
CLROK;因为答题的计时不再查询抢答,所以就锁了抢答
AJMPCOUNT
TURE5:
ACALLBARK;按键发声
MOVA,R2
MOVR6,A;抢答时间R2送R6
MOVR3,#05H
CLROK;因为答题的计时不再查询抢答,所以就锁了抢答
AJMPCOUNT
TURE6:
ACALLBARK;按键发声
MOVA,R2
MOVR6,A;抢答时间R2送R6
MOVR3,#06H
CLROK;因为答题的计时不再查询抢答,所以就锁了抢答
AJMPCOUNT
TURE7:
ACALLBARK;按键发声
MOVA,R2
MOVR7,A;抢答时间R2送R6
MOVR3,#02H
CLROK;因为答题的计时不再查询抢答,所以就锁了抢答
AJMPCOUNT
TURE8:
ACALLBARK;按键发声
MOVA,R2
MOVR6,A;抢答时间R2送R6
MOVR3,#08H
CLROK;因为答题的计时不再查询抢答,所以就锁了抢答
AJMPCOUNT
MOVA,R2
MOVR6,A
MOVR3,#03#
CLROK
AJMPCOUNT
TRUE4:
ACALLBARK;
MOVA,R2
MOVR6,A
MOVR3,#04H
CLROK
AJMPCOUNT
TRUE5:
ACALLBANK;
MOVA,R2
MOVR6,A
MOVR3,#05H
CLROK
AJMPCOUNT
TRUE6:
ACALLBANK;
MOVA,R2
MOVR6,A
MOVR3,#06H
CLROK
AJMPCOUNT
TRUE7:
ACALLBANK;
MOVA,R2
MOVR6,A
MOVR3,#07H
CLROK
AJMPCOUNT
TRUE8:
ACALLBANK;
MOVA,R2
MOVR6,A
MOVR3,#08H
CLROK
AJMPCOUNT
;;;;;;;;犯规抢答程序;;;;;;;
ERROR:
MOVR0,#00H
MOVTH1,#3CH
MOVTL1,#0B0H
MOV34H,R3;犯规号数暂存与(34H)
HERE:
MOVA,R0
CJNEA,#0AH,FLASH;0.5s向下运行->灭并停响
CLRRING
MOVR3,#0AH
MOVR4,#0AH
MOVR5,#0AH;三灯全灭
AJMPCHECK1
FLASH:
CJNEA,#14H,CHECK1;下面系1s的情况,响并显示号数并清R0,重新计
SETBRING
MOVR0,#00H
MOVR3,34H;取回号数
MOVR5,#0BH
MOVR4,#0BH;显示FF和号数
AJMPCHECK1
CHECK1:
JNBP3.0.QUIT1
ACALLDISPLAY
AJMPHERE
QUIT1:
CLRRING
CLROK
AJMPSTART
显示程序:
DISPLAY:
MOVDPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出
MOVA,R5
MOVCA,@A+DPTR
MOVP2,#01H
MOVP0,A
ACALLDELAY
MOVDPTR,#DAT2
MOVA,R4
MOVCA,@A+DPTR
MOVP2,#02H
MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 智能 抢答