视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
基于51单片机的8路抢答器系统设计论文010
2025-09-29 16:39:29 责编:小OO
文档


抢答器课程设计

原文一、设计要求及目的

(1)设计一个可供6人进行的抢答器。

(2)系统设置复位按钮,按动后,重新开始抢答。

(3)抢答器开始时数码管显示序号0,选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。抢答后显示优先抢答者序号,同时发出音响。,并且不出现其他抢答者的序号。

(4)抢答器具有定时抢答功能,且一次抢答的时间有主持人设定,本抢答器的时间设定为60秒,当主持人启动“开始”开关后,定时器开始减计时,同时音乐盒有短暂的声响。

(5)设定的抢答时间内,选手可以抢答,这时定时器停止工作,显示器上显示选手的号码和抢答时间。并保持到主持人按复位键。

(6)当设定的时间到,而无人抢答时,本次抢答无效,扬声器报警发出声音,并禁止抢答。定时器上显示00。

二、设计电路方框图:

......

三、电路组成

本抢答器的电路主要有四部分组成:数字抢答电路、时序控制电路、报警电路以及可预置时间的定时电路。其中数字抢答部分有一个CD4511译码器和LED数码管显示器组成,可以将六位抢答者的按钮通过CD4511译码驱动LED数码管显示器显示出他们最先抢答者的序号。而时序控制电路的功能是当参赛选手按动抢答器时,使扬声器发声,这时抢答电路和定时电路停止工作。而且设定的时间60秒到达后若无人抢答,则报警电路工作。报警电路工作的条件是当设定时间到达后或者有人抢答时,报警电路被输入一个高电平,这时此电路工作。可预置时间的定时电路是靠74LS121工作的。以下是抢答电路的组成以及各部分功能

(1)抢答电路

1.电路组成

电路如下图3.1所示,该电路完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。

......

 目录目录:

第一部分:设计的要求及目的

第二部分:系统方框图

第三部分:电路组成及各部分选定方案、功能及计算

(1) 抢答电路: 1、抢答电路功能

2、方案选定

(2) 报警电路

(3) 定时电路 1、电路功能介绍

2、电路选定方案分析及计算

(4) 时序控制电路 1、电路组成分析

2、电路功能

第四部分:器件说明

第五部分:参考文献

第六部分:设计总结

第六部分:总体电路图(用PROTEL99制作)

 参考资料康华光 《电子技术基础—数字部分》高等教育出版社

董子舟、段辉娟 《电子技术》 机械工业出版社

2002年,第7期 《电子报》 类别:电子制作

2002年,第50期 《 电子报》 类别:电子产品与器件

张惠敏、肖耀南 《数字电子技术》 化学工业出版社 

江国强 《现代数字逻辑电路》 电子工业出版社

 简单介绍本抢答器的电路主要有四部分组成:数字抢答电路、时序控制电路、报警电路以及可预置时间的定时电路。其中数字抢答部分有一个CD4511译码器和LED数码管显示器组成,可以将六位抢答者的按钮通过CD4511译码驱动LED数码管显示器显示出他们最先抢答者的序号。而时序控制电路的功能是当参赛选手按动抢答器时,使扬声器发声,这时抢答电路和定时电路停止工作。而且设定的时间60秒到达后若无人抢答,则报警电路工作。报警电路工作的条件是当设定时间到达后或者有人抢答时,报警电路被输入一个高电平,这时此电路工作。可预置时间的定时电路是通过74LS121实现的。 

八位数字抢答器(含电路图)

题 目 : (数字电路课程设计)八位数字抢答器尺 寸 : 课件目 录 : 绪论

原理分析与电路设计

一、设计内容与要求:

1)设计内容

2)学习要求

3) 设计要求

二、元器件的功能和作用

-------集成电路定时器555及其基本应用

三、设计原理与参考电路

1)数字抢答器总体方框图

2)电路及其电路图

四、整机电路设计

五、实验调试

六、电路的检测方法

参考文献

原 文 : 原理分析与电路设计

一、设计内容与要求

1)设计内容:

1,利用各种器件设计一个多路智力竞赛抢答器。

2,利用电路板对所设计的电路进行检验。 

3,总结检验电路设计结果 

2)学习要求: 

1,复习编码器、十进制加/减计数器的工作原理,设计可预置时间的定时电路分析与设计时序控制电路。画出定时抢答器的整机逻辑电路图,掌握智力抢答器的工作原理及其设计方法,并对各种元器件的功能和应用有所了解。并能对其在电路中的作用进行分析。例如:555定时器,优先编码器74ls148和rs锁存器74ls279以及十进制同步加/减计数器74ls192。另外对电路图要学会分析。

了解电路设计流程的原理图。每个电路的设计都要有完整的设计流程。这样才能在分析电路是有良好的思路,便于查找出错的原因。 

3)设计要求

1. 抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0 ~ S7表示。

2. 设置一个系统清除和抢答控制开关S,该开关由主持人控制。

3. 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。

4. 抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动"开始"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。

5. 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

6. 如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。

 

目录

第1章  六路抢答器设计功能要求………………………………………………1

第2章  抢答器方案论证…………………………………………………………3

第3章  系统硬件电路设计………………………………………………………4

3.1.1  系统原理图…………………………………………………… 4

       3.1.2  时钟频率电路的设计……………………………………………5

   3.1.3  复位电路的设计…………………………………………………6

   3.1.4  显示电路的设计…………………………………………………7

   3.1.5  键盘扫描电路的设计……………………………………………7

   3.1.6  发声………………………………………………………………8

   3.1.7  系统复位…………………………………………………………8

第4章  系统软件设计………………………………………………………………9

       4.2.1  主程序系统结构图………………………………………………9

       4.2.2  程序流程图………………………………………………………10

       4.2.3  系统程序…………………………………………………………11

第5章  调试及性能分析……………………………………………………………19

第6章  课程设计小结………………………………………………………………20

参考文献…………………………………………………………………………… 21

  

第1章  六路抢答器设计功能要求

单片机把我们带入了智能化的电子领域,许多繁琐的系统若由单片机进行设计,便能收到电路更简单、功能更齐全的良好效果。若把经典的电子系统当作一个僵死的电子系统,那么智能化的现代电子系统则是一个具有“生命”的电子系统。

而随着技术的进步,单片机与串口通信的结合更多地应用到各个电子系统中已成一种趋势。本设计就是基于单片机设计抢答系统,通过串口通信动态传输数据,使抢答系统有了更多更完善的功能。单片机系统的硬件结构给予了抢答系统“身躯”,而单片机的应用程序赋予了其新的“生命”,使其在传统的抢答器面前具有电路简单、成本低、运行可靠等特色。对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来回答问题。抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。选手们都站在同一个起跑线上,体现了公平公正的原则。

1.1  数字抢答器的概述

     对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来回答问题。抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。选手们都站在同一个起跑线上,体现了公平公正的原则。 本实验设计的数字抢答器由主体电路与扩展电路组成。优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。经过布线、焊接、调试等工作后数字抢答器成形。更具有实用性。

1.2  设计任务与要求

      任务:设计一款数字抢答器

1、基本要求

(1)抢答器同时供6名选手或6个代表队比赛,分别用6个按钮S0 ~ S5表示。

(2)设置一个系统清除和抢答控制开关S,该开关由主持人控制。

(3) 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

(4)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动"开始"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。

(5)参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

(6)如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00    

 优点:与普通抢答器相比,本作品有以下几方面优势:   1、具有清零装置和抢答控制,可由主持人操纵避免有人在主持人说“开始”前提前抢答违反规则。 2、具有定时功能,在30秒内无人抢答表示所有参赛选手获参赛队对本题弃权。 3、30秒时仍无人抢答其报警电路工作表示抢答时间耗尽并禁止抢答。

1.3  系统主要功能

抢答器原理:该抢答器供不多于四个的抢答比赛使用。每个选手的座位前安装一只抢答按钮开关和一只信号灯。主持人的座位前安装一只复原按钮开关、一只蜂鸣器和一只抢答器工作状态指示灯。每当主持人口头发出允许抢答的号令之后,哪个队先按下座位上的按钮开关,该座位的信号灯就先被点亮,同时封锁其他按钮开关的活动。并且熄灭主持人座位上的状态指示灯和发出 3 声类似于电话振铃的提示声,以“声明”此次抢答动作已经完成。在主持人确认后,按下复原按钮,状态指示灯重新点亮,并且同时发出“笛——笛——”声,为下一次的抢答作好准备。电路中的蜂鸣器 FM 是一只带有助音腔的压电陶瓷蜂鸣器,用于模拟发出报警声的功率放大器和喇叭。在 FM 发声的同时,灯 D6 也在发光。FM 可以看作是一个电容性负载,本身不能流过直流电流。发声的原理是,作用在两个电极极板的电位在发生变化时,陶瓷材料就发生弯曲,从而振动空气发出声音。FM和 4 只按钮开关 SWa~SWd 以及 4 只电阻 Ra~Rd 都是在演示板的基础上额外添加的。由于RB端口内部具有上拉电阻,只要用软件设置其有效,即可省略在4 只端口引脚上外接上拉电阻。按钮开关和指示灯与座位的对应关系如表3所示。

按钮开关和指示灯与座位的对应关系

座位主持人席座位1

座位2

座位3

座位4

座位5

座位6

按钮开关

SW1 SWaSWbSWcSWdSWeSWf
指示灯D7 D0D1D2D3D4D5
蜂鸣器    有

第2章  方案论证

( 1 )抢答器同时供6名选手或6个代表队比赛,分别用6个按钮S0 ~ S5表示。

( 2 )设置一个系统清除和抢答控制开关S,该开关由主持人控制。

( 3 )抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

( 4 )抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动"开始"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。

( 5 )参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00

(6)6路抢答器可以利用硬件电子元器件实现,但电路结构复杂,调试困难,涉及到的外围元件多,不便于安装,实验给实际操作带来很大的麻烦。

(7)我们利用单片机可以用很少元件实现相同功能,而且单片机性能稳定,可操作性强。可以只用P0口连接上拉电阻,完成驱动LED的功能,串接按键可以由选手自己控制抢答机会,利用P3口的RXD接74LS1的A,B端,TXD接移位脉冲做时钟信号。利用单片机程序判断选手按键是否有效,但选手违规抢答,利用简单程序显示选手序号,启动蜂鸣器并不间断,告诉主持人有人违规操作,抢答无效。给出相应的延时,选手按正常的操作抢答,软件倒记时,利用74LS1移位寄存8段数码管,实现倒记时显示时间,到5秒相应时间提醒选手时间快到了,要及时作答,并启动蜂鸣器。

如果有选手在规定的时间以前完成问题,主持人通过按键P2.4复位,开始新的问题作答,因为程序不是很大不需要扩展存储空间,选手按键跳入相应的子程序,回答倒记时,通过单片机实现功能可以更人性化,只需单电源供电更方便,

容易实现。电路结构简单,外围扩展的电路不是很多,锻炼我们所学的知识应用到现实生活当中。为我们提供实践的机会。单片机是电子专业发展的方向,更好的使用单片机可以是我们的产品小型化,使用更方便,性能更稳定,功能更齐全,所以我们选用单片机加一定的外围设备实现本次课程设计的要求。

第3章系统硬件设计

为使硬件电路设计尽可能合理,应注意以下几方面:

(1) 尽可能采用功能强的芯片,以简化电路,功能强的芯片可以代替若干普通芯片,随着生产工艺的提高,新型芯片的的价格不断下降,并不一定比若干普通芯片价格的总和高。

(2) 留有设计余地。在设计硬件电路时,要考虑到将来修改扩展的方便。因为很少有一锤定音的电路设计,如果现在不留余地,将来可能要为一点小小的修改或扩展而被迫进行全面返工。

(3) 程序空间,选用片内程序空间足够大的单片机,本设计采用ATC51单片机。

(4)  I/O端口,在样机研制出来后进行现场试用时,往往会发现一些被忽视的问题,而这些问题不是靠单纯的软件措施来解决的。如有些新的信号需要采集,就必须增加输入检测端;有些物理量需要控制,就必须增加输出端。如果在硬件电路设计就预留出一些I/O端口,虽然当时空着没用,那么用的时候就派上用场了。

3.1总体原理图

如图2-1,P1.0为开始抢答,P1.7为停止,P1.1-P1.6为六路抢答输入,数码管段选P0口,位选P2口低3位,蜂鸣器输出为P3.6口。P3.2为时间加1调整,P3.3为时间减1调整。

图2-1 系统原理图

3.1.2时钟频率电路的设计

单片机必须在时钟的驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。

图2-2 外部振荡源电路

一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容 C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值为30PF。

单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数,常用fosc表示。如时钟频率为12MHz,即fosc=12MHz,则时钟周期为1/12µs。

3.1.3  复位电路的设计

单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图4所示:

图2-3 复位电路

值得注意的是,在设计当中使用到了硬件复位和软件复位两种功能,由上面的硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值,而前面的功能介绍中提到了倒计时时间的记忆功能,该功能的实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。

3.1.4  显示电路的设计

显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。

3.1.5  键盘扫描电路的设计

键盘是人与微机系统打交道的主要设备。关于键盘硬件电路的设计方法也可以在文献和书籍中找到,配合各种不同的硬件电路,这些书籍中一般也提供了相应的键盘扫描程序。站在系统监控软件设计的立场上来看,仅仅完成键盘扫描,读取当前时刻的键盘状态是不够的,还有不少问题需要妥善解决,否则,人们在操作键盘就容易引起误操作和操作失控现象。在单片机应用中键盘用得最多的形式是键盘及矩阵键盘。

图2-4 键盘

它们各有自己的特点,其中键盘硬件电路简单,而且在程序设计上也不复杂,一般用在对硬件电路要求不高的简单电路中;矩阵键盘与键盘有很大区别,首先在硬件电路上它要比键盘复杂得多,而且在程序算法上比它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路。其次就是消除在按键过程中产生的“毛刺” 

现象。这里采用最常用的方法,即延时重复扫描法,延时法的原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而我们按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里我们取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。

3.1.6  发声

我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。

3.1.7  系统复位

使CPU进入初始状态,从0000H地址开始执行程序的过程叫系统复位。从实现系统复位的方法来看,系统复位可分为硬件复位和软件复位。硬件复位必须通过CPU外部的硬件电路给CPU的RESET端加上足够时间的高电位才能实现。上电复位,人工按钮复位和硬件看门狗复位均为硬件复位。硬件复位后,各专用寄存器的状态均被初始化,且对片内通用寄存器的内容没有影响。但是,硬件复位还能自动清除中断激活标志,使中断系统能够正常工作,这样一个事实却容易为不少编码人员所忽视。软件复位就是用一系列指令来模拟硬件复位功能,最后通过转移指令使程序从0000H地址开始执行。对各专用寄存器的复位操作是容易的,也没有必要完全模拟,可根据实际需要去主程序初始化过程中完成。而对中断激活标志的清除工作常被遗忘,因为它没有明确的位地址可供编程。有的编程人员用020000(LJMP   0000H)作为软件陷阱,认为直接转向0000H地址就完成了软件复位,就是这类错误的典型代表。软件复位是使用软件陷阱和软件看门狗后必须进行的工作,这时程序出错完全有可能发生在中断子程序中,中断激活标志已置位,它将阻止同级中断响应。由于软件看门是高级中断,它将阻止说要中断响应,由此可见清除中断激活标志的重要性。

在所有的指令中,只有RETI指令能够清除中断激活标志。前文各处提案到的出错处理程序ERR主要完成这一功能,其他的善后工作交由复位后的系统去完成。这部分程序如下:

POWER    DATA      67H    ;上电标志存放单元     

ERR:       CLR       EA     ;关中断

           MOV   DPTR,#ERR1 ;准备返回地址

PUSH   DPL

PUSH   DPH

RETI             ;清除高级中断激活标志

ERR1:      MOV   POWER,#0AAH;重建上电标志

           CLR     A      ;准备复位地址

           PUSH    ACC    ;压入复位地址0000H

PUSH    ACC

RETI         ;清除低级中断激活标志,从程序0000H开始执行。

这段程序先关中断,以便后续处理能顺利进行,然后用两个RETI指令代替两个LJMP指令,从而清除了两级中断激活标志。有相应软件陷阱捕捉来的程序可能没有全部激活两个标志,这也无妨。

第4章系统软件设计

软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计基本定型后,也就基本上决定下来了。

4.1 主程序系统结构图

图2-5 软件系统结构图

4.2  程序流程图

在本设计中包括了以下八个主要的程序:主程序;非法抢答序;抢答时间调整程序;回答时间调整程序;倒计时程序;正常抢答处理程序;犯规处理程序;显示及发声程序。主流程图如2-6所示:

图2-6 程序设计流程图

4.3系统程序

P1.0为开始抢答,P1.7为停止,p1.1-p1.6为六路抢答输入 数码管段选P0口,位选P2口,蜂鸣器输出为P3.6口。

OK EQU 20H;抢答开始标志位

     RING EQU 22H;响铃标志位

        ORG 0000H

        AJMP MAIN

        ORG 0003H

        AJMP INT0SUB

        ORG 000BH

        AJMP T0INT

        ORG 0013H

        AJMP INT1SUB

 ORG 001BH

    AJMP T1INT

    ORG 0040H

MAIN:  MOV R1,#0FH; 初设抢答时间为15s

        MOV R2,#0AH; 初设答题时间为10s

        MOV TMOD,#11H; 设置未定时器/模式1

        MOV TH0,#0F0H

        MOV TL0,#0FFH; 越高发声频率越高,越尖

        MOV TH1,#3CH

        MOV TL1,#0B0H; 50ms为一次溢出中断

        SETB EA

        SETB ET0

        SETB ET1

        SETB EX0

        SETB EX1; 允许四个中断,T0/T1/INT0/INT1

        CLR OK

        CLR RING

        SETB TR1

        SETB TR0; 一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了

查询程序:

START:   MOV R5,#0BH

         MOV R4,#0BH

         MOV R3,#0BH

         ACALL  DISPLAY; 未开始抢答时候显示FFF

         JB P1.0,NEXT

        

         ACALL DELAY

         JB P1.0,NEXT;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询

         ACALL BARK;按键发声

         MOV A,R1

         MOV R6,A; 送R1->R6,因为R1中保存了抢答时间

         SETB OK; 抢答标志位,用于COUNT只程序中判断是否查询抢答

         MOV R3,0AH; 抢答只显示计时,灭号数

         AJMP COUNT;进入倒计时程序,"查询有效抢答的程序"在COUNT里面

NEXT:   JNB P1.1,FALSE1

         JNB P1.2,FALSE2

         JNB P1.3,FALSE3

         JNB P1.4,FALSE4

         JNB P1.5,FALSE5

         JNB P1.6,FALSE6

         AJMP START

非法抢答处理程序:

FALSE1: ACALL BARK; 按键发声

        MOV R3,#01H

        AJMP ERROR

FALSE2: ACALL BARK

        MOV R3,#02H

        AJMP ERROR

FALSE3: ACALL BARK

        MOV R3,#03H

        AJMP ERROR

FALSE4: ACALL BARK

        MOV R3,#04H

        AJMP ERROR

FALSE5: ACALL BARK

        MOV R3,#05H

        AJMP ERROR

FALSE6: ACALL BARK

        MOV R3,#06H

        AJMP ERROR

INT0(抢答时间R1调整程序):

 INT0SUB:MOV A,R1

        MOV B,#0AH

        DIV AB

        MOV R5,A

        MOV R4,B

        MOV R3,#0AH

        ACALL DISPLAY;先在两个时间LED上显示R1

        JNB P3.2,INC0; P3.2为+1s键,如按下跳到INCO

        JNB P3.3,DEC0; P3.3为-1s键,如按下跳到DECO

        JNB P1.7,BACK0; P1.7为确定键,如按下跳到BACKO

        AJMP INT0SUB

INC0:   MOV A,R1

       CJNE A,#63H,ADD0; 如果不是99,R2加1,如果加到99了,R1就置0,重新加起

        MOV R1,#00H

        ACALL DELAY1

        AJMP INT0SUB

ADD0:   INC R1

        ACALL DELAY1

        AJMP INT0SUB

DEC0:   MOV A,R1

        JZ SETR1;如果R1为0, R1就置99,

        DEC R1

        ACALL DELAY1

        AJMP INT0SUB

SETR1:  MOV R1,#63H

        ACALL DELAY1

        AJMP INT0SUB

BACK0:  RETI

INT1(回答时间R2调整程序):

INT1SUB:MOV A,R2

        MOV B,#0AH

        DIV AB

        MOV R5,A

        MOV R4,B

        MOV R3,#0AH

        ACALL DISPLAY

        JNB P3.2,INC1

        JNB P3.3,DEC1

        JNB P1.7,BACK1

        AJMP INT1SUB

INC1:   MOV A,R2

        CJNE A,#63H,ADD1

        MOV R2,#00H

        ACALL DELAY1

        AJMP INT1SUB

ADD1:   INC R2

        ACALL DELAY1

        AJMP INT1SUB

DEC1:   MOV A,R2

        JZ SETR2

        DEC R2

        ACALL DELAY1

        AJMP INT1SUB

SETR2:  MOV R2,#63H

        ACALL DELAY1

        AJMP INT1SUB

BACK1:  RETI

倒计时程序(抢答倒计时和回答倒计时都跳到该程序):

 COUNT:  MOV R0,#00H; 重置定时器中断次数

         MOV TH1,#3CH

         MOV TL1,#0B0H; 重置定时器

RECOUNT: MOV A,R6;  R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6

          MOV B,#0AH

          DIV AB;      除十分出个位/十位

          MOV 30H,A;   十位存于(30H)

          MOV 31H,B;   个位存于(31H)

          MOV R5,30H;  取十位

          MOV R4,31H;  取个位

          MOV A,R6

          SUBB A,#07H

          JNC LARGER;大于5s跳到LARGER,小于等于5s会提醒

          MOV A,R0

          CJNE A,#0AH,FULL;1s中0.5s向下运行

          CLR RING

          AJMP CHECK

FULL:    CJNE A,#14H,CHECK; 下面系1s的情况,响并显示号数并清R0,重新计时

          SETB RING

          MOV A,R6

          JZ QUIT;   计时完毕

          MOV R0,#00H

          DEC R6;    一秒标志减1

          AJMP CHECK

LARGER:  MOV A,R0

          CJNE A,#14H,CHECK;    如果1s向下运行,否者跳到查"停/显示"

          DEC R6;       计时一秒R6自动减1

          MOV R0,#00H

CHECK:   JNB P1.7,QUIT;  如按下停止键退出

         ACALL DISPLAY

         JB OK,ACCOUT;  如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)

          AJMP RECOUNT

ACCOUT:   JNB P1.1,TRUE1

          JNB P1.2,TRUE2

          JNB P1.3,TRUE3

          JNB P1.4,TRUE4

          JNB P1.5,TRUE5

          JNB P1.6,TRUE6

          AJMP RECOUNT

QUIT:  CLR OK;  如果按下了"停止键"执行的程序

       CLR RING

       AJMP START

正常抢答处理程序:

TRUE1: ACALL BARK; 按键发声

       MOV A,R2

       MOV R6,A;  抢答时间R2送R6

       MOV R3,#01H

       CLR OK;  因为答题的计时不再查询抢答,所以就锁了抢答

       AJMP COUNT

TRUE2:ACALL BARK;

       MOV A,R2

       MOV R6,A

       MOV R3,#02H

       CLR OK

       AJMP COUNT

TRUE3:ACALL BARK;

       MOV A,R2

       MOV R6,A

       MOV R3,#03H

       CLR OK

       AJMP COUNT

TRUE4:ACALL BARK;

       MOV A,R2

       MOV R6,A

       MOV R3,#04H

       CLR OK

       AJMP COUNT

TRUE5:  ACALL BARK;

        MOV A,R2

        MOV R6,A

        MOV R3,#05H

        CLR OK

        AJMP COUNT

TRUE6:  ACALL BARK;

        MOV A,R2

        MOV R6,A

        MOV R3,#06H

        CLR OK

        AJMP COUNT

犯规抢答程序:

ERROR: MOV R0,#00H

        MOV TH1,#3CH

        MOV TL1,#0B0H

        MOV 34H,R3;  犯规号数暂存与(34H)

HERE:   MOV A,R0

        CJNE A,#0AH,FLASH;  0.5s向下运行->灭并停响

        CLR RING

        MOV R3,#0AH

        MOV R4,#0AH

        MOV R5,#0AH;  三灯全灭

        AJMP CHECK1

FLASH:  CJNE A,#14H,CHECK1;   下面系1s的情况,响并显示号数并清R0,重新计

        SETB RING

        MOV R0,#00H

        MOV R3,34H;   取回号数

        MOV R5,#0BH

        MOV R4,#0BH;  显示FF和号数

        AJMP CHECK1

CHECK1: JNB P1.7,QUIT1

        ACALL DISPLAY

        AJMP HERE

QUIT1:  CLR RING

        CLR OK

        AJMP START

显示程序:

入口参数:R5,R4,R3存入的分别为第一,二,三为数码所显示的位码

出口参数:无

DISPLAY:MOV DPTR,#DAT1;  查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出

  MOV A,R5

  MOVC A,@A+DPTR

  MOV P2,#01H

  MOV P0,A

  ACALL DELAY

  MOV DPTR,#DAT2

  MOV A,R4

  MOVC A,@A+DPTR

  MOV P2,#02H

  MOV P0,A

  ACALL DELAY

  MOV A,R3

  MOVC A,@A+DPTR

  MOV P2,#04H

  MOV P0,A

  ACALL DELAY

  RET

DAT1:DB 00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H

;"灭灭

DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H

;第一个为零,其他与上相同,因为十位如果为零显示熄灭

加减时间延时(起到不会按下就加N个数):

DELAY1: MOV 35H,#08H

LOOP0:  ACALL DISPLAY

        DJNZ 35H,LOOP0

        RET

延时(显示和去抖动用到):

DELAY:  MOV 32H,#12H

LOOP:   MOV 33H,#0AFH

LOOP1:  DJNZ 33H,LOOP1

        DJNZ 32H,LOOP

        RET

发声程序:

BARK:   SETB RING

        ACALL DELAY1

        ACALL DELAY1

        CLR RING;   按键发声

        RET

TO溢出中断(响铃程序):

T0INT:MOV TH0,#0ECH

      MOV TL0,#0FFH

      JNB RING,OUT

      CPL P3.6 ;   RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音

OUT:RETI

T1溢出中断(计时程序):

T1INT:  MOV TH1,#3CH

        MOV TL1,#0B0H

        INC R0

        RETI

 END

第4章  调试及性能分析

                                                                  

1、具有清零装置和抢答控制,可由主持人操纵避免有人在主持人说“开始”前提前抢答违反规则。

2、具有定时功能,在30秒内无人抢答表示所有参赛选手获参赛队对本题弃权。

3、30秒时仍无人抢答其报警电路工作表示抢答时间耗尽并禁止抢答。

4、如果想调节抢答时间或答题时间,按"抢答时间调节"键或"答题时间调节" 键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,如想加一秒按一下"加1s"键,如果想减一秒按一下"-1s"键,时间LED上会显示改变后的时间,调整范围为0s~99s, 0s时再减1s会跳到99,99s时再加1s会变到0s。                                                                         

5、主持人按"抢答开始"键,会有提示音,并立刻进入抢答倒计时(预设15s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设10s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。倒数时间到小于5s会每秒响一下提示音。                                                                                              

6、如倒计时期间,主持人想停止倒计时可以随时按"停止"按键,系统会自动进入准备状态,等待主持人按"抢答开始"进入下次抢答计时。                                                                                                        

7、如果主持人未按"抢答开始"键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下"停止" 键为止。

第5章课程设计小结

基于单片机应用系统设计比较的难,从未接触过任何的应用系统的设计,对老师要求我们做的应用系统的设计根本无从下手,于是从图书馆借了几本有关单片机的应用系统的实例书籍,并且在网上参考了较多本实例的应用知识,了解了系统设计报告的写法和结构。参考了网上较多的实例,实在话,让我自己亲手动手去做实在不能完成,只有通过图书馆借的书和通过网络才可完成。这一定程度上也提高了网上搜索信息的能力。在借鉴了网上的信息,同时添加了自己借的书中的一些内容,整合成了这篇设计。共花了我三天时间,一直是呆在寝室做这个系统设计,除了吃饭出去一下,这三天时间有两天是花在在网上搜索本系统设计有关的知识。在网上发现很多优秀的产品多是基于单片机来制作成。感知单片机的应用范围实在太广了,小到一个小小的抢答器,就是我们短学期做的作品,大到航天卫星,与我们日常生活是栩栩相关。今天总算完成了设计,心中还是蛮开心的,这并不是说我想偷懒或者是想偷工减料,草草完事;而是依靠自己完成了这个设计文档,在还未做之前,一直在想这个设计文档该如何完成….心里真的没底,就连上睡觉的时候也在想着这问题,而今天我完成了。有点感触就是:任何事情只要去做,多多去尝试,努力的要以自己去做为前提的心态,那么任何事情即使做的不好,也会受益很多,不是有句话叫做:心态决定的成败的话吗,实在是有理。不知想写些什么,今天晚上去吃饭的时候,碰到考研教室的同学说:好几天没看到你了啊,我笑着说:马上就要过去了。在路上心想:前面的路还很长,还得要一步步走过。就像有所歌唱的那样不经历风雨,怎么见彩虹。

参考文献

[1] 单片机课程设计实例指导,李光飞,北京航天航空大学出版社,2004

[2]单片机原理及接口技术(第3版),李朝青,北京航空航天大学出版社,2002

[3]单片机C程序设计及应用实例,胡伟,人民邮电出版社,2003

[4] 单片机系统设计与实例指导,冯育长,西安电子科技大学出版社,2007下载本文

显示全文
专题