单片机课程设计四路抢答器设计

更新时间:2023-07-24 07:18:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机课程设计四路抢答器设计

单片机

课程设计(论文)

题 目 名 称 基于单片机的四路抢答器设计 课 程 名 称 单片机原理及在电气工程学科中的应用 学 生 姓 名 XXX 学 号 系 、专 业 电气工程系 指 导 教 师 XXXX

2011年6月28日

单片机课程设计四路抢答器设计

邵阳学院课程设计(论文)任务书

注:1.此表由指导教师填写,经系、教研室审批,指导教师、学生签字后生效;

单片机课程设计四路抢答器设计

2.此表1式3份,学生、指导教师、教研室各1份。

指导教师(签字): 学生(签字):

单片机课程设计四路抢答器设计

XX

学生姓名 XXX 学 号 系 电气工程系 专业班级 题目名称 基于单片机的四路抢答器设计 课程名称 单片机原理及在电气测控学科中的应用 一、学生自我总结

学院课程设计(论文)评阅表

二、指导教师评定

注:1、本表是学生课程设计(论文)成绩评定的依据,装订在设计说明书(或论文)的“任务书”页后面;

2、表中的“评分项目”及“权重”根据各系的考核细则和评分标准确定。

单片机课程设计四路抢答器设计

摘 要

本设计是六路智力抢答器。使用51系列单片机,编写应用程序来实现智力抢答功能。

硬件设计使用的是51系列单片机中的89C51。硬件设计利用其中断控制程序进行抢答部分的处理,通过多输入与门的控制去申请单片机内部的中断,以达到显示抢答的目的。

软件设计利用中断系统的基本构成原理编写中断服务程序,其信号由按键电路提供,由CPU响应中断,并输出响应。用到了查询按键模块、定时器模块、显示时间模块、显示组号模块、报警模块等。

显示结果是主持人按键时,数码管显示30,即定时器从30秒开始计时,若30秒内有人抢答,则此时定时器停止计时,数码管显示此时的时间,同时蜂鸣器发出“嘀”声,且警报灯闪烁一下,与此同时显示抢答器的组数。反之数码管显示00,并停止计时。此时等待主持人按键进行下一轮抢答。

关键词:抢答电路; 定时电路; 报警电路;时序控制

单片机课程设计四路抢答器设计

目 录

第1章 绪论…………………………………………………………………………1 1.1 扩展功能…………………………………………………………………………1 1.2 系统主要功能……………………………………………………………………1 第2章 抢答器的硬件电路设计…………………………………………………3 2.1 电路原理图…………………………………………………………………………3 2.2 时钟频率电路的设计……………………………………………………………4 2.3 复位电路的设计…………………………………………………………………5 2.4 显示电路的设计…………………………………………………………………5 2.5 键盘扫描电路的设计……………………………………………………………5 2.6 发声…………………………………………………………………………………6 2.7 系统复位……………………………………………………………………………6 第3章 抢答器的软件设计…………………………………………………………8 3.1 主程序系统结构图………………………………………………………………8 3.2 程序流程图…………………………………………………………………………8 第4章 系统源程序…………………………………………………………………10 第5章 调试及性能分析…………………………………………………………21 第6章 课程设计小结………………………………………………………………22 参考文献………………………………………………………………………………23 致谢………………………………………………………………………………………24

单片机课程设计四路抢答器设计

第1章 绪 论

抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。早期的抢答器只由几个三极管、可控硅、发光管等组成,能通过发光管的指示辩认出选手号码。现在大多数抢答器均使用单片机(如

MCS-51型)和数字集成电路,并增加了许多新功能,如选手号码显示、抢按前或抢

按后的计时、选手得分显示等功能。本课题利用89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和选手号码。用开关做键盘输出,扬声器发生提示。系统达到要求:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可是在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,时间完后系统自动复位;按键锁定,在有效状态下,按键无效非法。

1.1扩展功能

1.抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当

主持人启动"开始"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。

2.参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上

显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

3.如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时

显示器上显示00.

1.2系统主要功能

抢答器原理:该抢答器供不多于四个的抢答比赛使用。每个选手的座位前安装一只抢答按钮开关和一只信号灯。主持人的座位前安装一只复原按钮开关、一只蜂鸣器和一只抢答器工作状态指示灯。每当主持人口头发出允许抢答的号令之后,哪个队先按下座位上的按钮开关,该座位的信号灯就先被点亮,同时封锁其他按钮开关的活动。并且熄灭主持人座位上的状态指示灯和发出 3 声类似于电话振铃的提示声,以“声明”此次抢答动作已经完成。在主持人确认后,按下复原按钮,状态指示灯重新点亮,

单片机课程设计四路抢答器设计

并且同时发出“笛——笛——”声,为下一次的抢答作好准备。电路中的蜂鸣器 FM 是一只带有助音腔的压电陶瓷蜂鸣器,用于模拟发出报警声的功率放大器和喇叭。在

FM 发声的同时,灯 D6 也在发光。FM 可以看作是一个电容性负载,本身不能流

过直流电流。发声的原理是,作用在两个电极极板的电位在发生变化时,陶瓷材料就发生弯曲,从而振动空气发出声音。FM和 4 只按钮开关 SWa~SWd 以及 4 只电阻 Ra~Rd 都是在演示板的基础上额外添加的。由于RB端口内部具有上拉电阻,只要用软件设置其有效,即可省略在4 只端口引脚上外接上拉电阻。按钮开关和指示灯与座位的对应关系如表1-1所示。

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

单片机课程设计四路抢答器设计

第2章 抢答器的硬件电路设计

2.1电路原理图

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

单片机课程设计四路抢答器设计

图2-1 系统原理图

工作过程:

该6路竞赛抢答器,每组受控于一个抢答器健开关,高电平表示抢答有效。 设置主持人控制FW用于控制整个系统清0和抢答器有效开始控制的启动。每按下一次复位键FW时,使锁存器的控制端为高电平,若组没按键开关1-6中任何一个都没按下,即对应锁存器的输入端均为低电平,则此时6个输出端均为低电平,对应的发光二极管均不点,表示抢答者正在准备状态。

按下复位键FW时,锁存器的控制端为高电平,若组别按开关1-6中存在一个或几个处于按下状态,即与之对应的锁存器的输入端为高电平,此时与之对应的锁存器的输出端立即为高电平,对应的发光二极管被点亮,表示抢答者违规了。 只有每按下一次复位键FW,并在复位键FW抬起后,抢答才是有效地。系统具有第一抢答信号鉴别和锁存的功能。在主持人将系统复位并使抢答有效开始后,第一抢答者按下抢答按钮,对应的输入引脚接高电平1。或门电路使三极管VT1基极得到高电平,将锁存器的输入信号锁存在了输入端,输入端的信号变化不再影响输出端。对应点亮的发光二极管指示出第一抢答者的组别。

在显示有效的组别的同时,也可同时采用蜂鸣器警示。

2.2 时钟频率电路的设计

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

单片机课程设计四路抢答器设计

图2-2 外部振荡源电路

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

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

2.3 复位电路的设计

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

单片机课程设计四路抢答器设计

图2-3 复位电路

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

2.4 显示电路的设计

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

2.5 键盘扫描电路的设计

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

单片机课程设计四路抢答器设计

起误操作和操作失控现象。在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘。

图2-5 独立键盘

它们各有自己的特点,其中独立键盘硬件电路简单,而且在程序设计上也不复杂,一般用在对硬件电路要求不高的简单电路中;矩阵键盘与独立键盘有很大区别,首先在硬件电路上它要比独立键盘复杂得多,而且在程序算法上比它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路。其次就是消除在按键过程中产生的“毛刺”现象。这里采用最常用的方法,即延时重复扫描法,延时法的原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而我们按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里我们取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。

2.6 发声

我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就

单片机课程设计四路抢答器设计

能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。

2.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指令,从而清除了两级中断激活标志。有相应软件陷阱捕捉来的程序可能没有全部激活两个标志,这也无妨。

第3章 抢答器的软件设计

3.1 主程序系统结构图

如图3-1所示为总体原理框图。其工作原理为:接通电源后,主持人将开光FW拨到“清零”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开光置“开始”状态,宣布“开始”抢答器工作。定时器开始倒计时。选手在规定的30s定时时间内抢答时,抢答器完成:优先判断、编号显示、扬声器提示,倒计时显示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作“清除”和“开始”状态开关。

图3-1 总体原理框图

单片机课程设计四路抢答器设计

3.2 程序流程图

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

图3-2 主流程图

单片机课程设计四路抢答器设计

第4章 系统源程序

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

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

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,#10H; 设置未定时器/模式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 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 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

单片机课程设计四路抢答器设计

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; 取个位

本文来源:https://www.bwwdw.com/article/08km.html

Top