单片机课程设计八路抢答器.docx

上传人:b****5 文档编号:7411318 上传时间:2023-01-23 格式:DOCX 页数:22 大小:65.45KB
下载 相关 举报
单片机课程设计八路抢答器.docx_第1页
第1页 / 共22页
单片机课程设计八路抢答器.docx_第2页
第2页 / 共22页
单片机课程设计八路抢答器.docx_第3页
第3页 / 共22页
单片机课程设计八路抢答器.docx_第4页
第4页 / 共22页
单片机课程设计八路抢答器.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

单片机课程设计八路抢答器.docx

《单片机课程设计八路抢答器.docx》由会员分享,可在线阅读,更多相关《单片机课程设计八路抢答器.docx(22页珍藏版)》请在冰豆网上搜索。

单片机课程设计八路抢答器.docx

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

电气学科大类

 

 

2012级

单片机原理及应用技术》课程

课程设计

姓名

专业班号

同组者1

专业班号

同组者2

专业班号

日期2015年1月

单片机课程设计

1基本内容介绍3...

2设计任务及要求3..

3方案分析4...

4主要元件介绍6...

5设计特色8...

6程序流程图9...

7源程序介绍1..0.

8心得体会1..6.

9源程序附录1...

单片机课程设计

基本内容介绍

抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。

它能迅速、客观地分辨出最先获得发言权的选手。

抢答器可用机械原理或者电子器件来完成制作,如果用机械原理做,虽然原理简单技术含量不高,但是精确度和耐用性都远远不如电子元件做成的抢答器好,制作成本也会有较大差距,所以现在大多数抢答器均使用单片机和数字集成电路,并增加了许多新的功能,

本设计是以七路抢答为基本理念。

考虑到依需设定限时回答的功能,利用8051单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。

用开关做键盘输出,蜂鸣器发生提示。

同时系统能够实现:

在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为犯规;抢答限定时间可设定;可以显示是哪位选手有效抢答和无效抢答,成功抢答后有声音提示;抢答时间倒记时显示,满时后系统计时自动复位及主控强制复位,重新开始。

二、设计任务与要求

1、抢答器同时供7选手或7代表队比赛,分别用7按钮S1~S7示。

2、设置一个系统清除和抢答控制开关S8开关由主持人控制。

3、抢答器具有锁存与显示功能。

即选手按动按钮,锁存相应的编号,并在LED和码管上显示,同时蜂鸣器发出声响提示。

选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

4、抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如10秒)。

当主持人启动"开始"键后,同时蜂鸣器发出短暂的声响,定时器进行减计时

单片机课程设计

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

6、如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,主持人将系统清零重新开始。

三、方案分析

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

设置一个系统清除和抢答控制按扭,该按扭由主持人控制。

抢答器具有锁存与显示功能。

即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时蜂鸣器发出报警声响提示。

选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

系统设计主要包括硬件和软件两大部分,依据控制系统的工作原理和技术性能,将硬件和软件分开设计。

硬件设计部分包括电路原理图、合理选择元器件,然后对硬件进行调试、测试,以达到设计要求。

软件设计部分,首先在总体设计中完成系统总框图和各模块的功能设计,拟定详细的工作计划;然后进行具体设计,包括各模块的流程图,选择合适的编程语言和工具,进行代码设计等;最后是对软件进行调试、测试,达到所需功能要求。

硬件电路实验箱上已经满足要求,P2.7即为S8,由裁判控制,是抢答开始键。

P2.0-P2.6(即为S1-S7)是7组抢答的输入口,P0口为数据总线和地址总线,通过两个574和一个ULN2003驱动元件分别输出数码管的段选信号和位选信号。

实验箱核心板上P3.2口为蜂鸣器的引脚控制口。

软件设计的方法与开发环境的选取有着直接的关系,本系统由于是采用51系

单片机课程设计

列单片机,因此使用Keil语言进行开发。

此编程工具相比汇编语言具有结构化、适用范围大、可移植性好等特点。

本系统软件设计采用模块化系统设计方法,先编写各个功能模块子程序,然后进行组合与调整,经过调试后,达到设计功能要求。

本系统涉及到的功能子程序包括:

查询程序、非法抢答处理程序、倒计时程序、正常抢答处理程序、犯规抢答程序、显示程序、发声程序、T0溢出中断(计时程序)。

程序具体设计采用T0的溢出中断来实现倒计时定时,用一个两位数码管来显示倒计时,另外用一个一位数码管和一排LED灯来显示选手号。

其中,核心板上的倒计时显示为共阴极接法;并且通过动态显示法(即位选控制)来实现四个LED的同时显示。

下图1-1所示为电路框图。

其工作原理为:

接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置“开始”状态,宣布“开始”抢答器工作。

定时器倒计时,蜂鸣器给出声响提示。

选手在定时时间内抢答时,抢答器完成:

优先判断、编号锁存、编号显示、蜂鸣器提示。

当一轮抢答之后,定时器停止、其他按键无效,禁止二次抢答,如果再次抢答必须由主持人再次操作"开始、停止"状态开关。

单片机课程设计

图1-1抢答器的原理框图

四、主要元件介绍

1.8051单片机简介

8051系列单片机是国际上流行多年的代表机型,是国内高校教学和初学者入门首选的主流机型,也是在各种技术期刊和专业书籍中出现频率最高的经典机型。

本文以标准80C51为模型,并适当兼顾8051系列的共性和常用型号的特性。

内容主要包括:

硬件架构、ROM、RAM、指令系统、汇编程序基础和汇编语言工具链、并行端口、定时器、中断逻辑、复位逻辑、时钟电路、电源电路等功能电路的结构和工作原理,以及片内程序存储器编程原理。

80C51内含8位CPU;广泛的布尔处理能力:

32根双向且分别可寻址的I/O线;128字节RAM;2个16位定时器/计数器;全双工异步串行口(UART);2个中断优先级;5个中断源;片内有时钟震荡器;4K字节片内ROM程序储存器;可寻址的64K字节外部程序储存空间;可寻址得64K字节外部数据储存空间。

MCS-51单片机特点如下:

<1>.可靠性好:

单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。

<2>单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统。

<3>控制功能强:

单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。

<4>单片机具有优越的高集成电路性,使其工作速度更快、效率高。

另外80C51单片机采用12MHz的晶振,提高了信号的测量精度,并且使该系统可以通过软件改进来扩张功能。

单片机课程设计

(1)80C51的时序图时序图如图1-2所示:

图1-280C51的时序图

时序控制电路:

1主持人将控制开关拨到“开始”位置时,蜂鸣器发声,抢答电路和定时电路进入正常抢答工作状态。

2当参赛选手按动抢答键时,蜂鸣器发声,抢答电路和定时电路停止工作。

3当设定的抢答时间到,无人抢答时,蜂鸣器发声,同时抢答电路和定时电路停止工作。

(2)8051引角及其功能

电源端Vcc

接地端GND

时钟信号输入端XTAL2

时钟电路引脚XTAL1复位信号输入端RST地址锁存允许信号端ALE

40脚

20脚

18脚

19脚

9脚,高电平有效

30脚

0C51的引

6分频振荡周期,PSEN29脚

程序存储器允许输出信号端

用于读取外部的程序存储器,每个机器周期中两次

有效。

EA31脚外部程序存储器地址允许输入,接高电平时,执行片内程序存储器

的内容,当PC超过0fffH时,自动变0。

接低电平时,访问外部程序存储器

单片机课程设计

P039~32脚8位准双向I/O,在做输入时,要先向口地址80H写1,此时由内部上拉提成高阻态。

P11~8脚8位准双向I/O

2.数码管

数码管有8个输入接口和一个共阴极端,8个输入端分别接A,B,C,D,E,F,G七个显示管和一个小数点端DP,数码管引脚图如图2-1。

数码管代替二极管,也就是用一位数字的显示来代替两位的二极管,共同完成同样的故障显示功能。

图2-1数码管引脚图

五、设计特色

抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。

早期的抢答器只由几个三极管、可控硅、发光管等组成,能通过发光管的指示辩认出选手号码。

现在大多数抢答器均使用单片机(如MCS-51型)和数字集成电路,并增加了许多新功能,如选手号码显示、抢按前或抢按后的计时、选手得分显示等功能。

本系统涉及到的功能子程序包括:

查询程序、非法抢答处理程序、倒计时程序、正常抢答处理程序、犯规抢答程序、显示程序、发声程序、T0溢出中断(计时程序)。

用开关做键盘输出,蜂鸣器发生提示。

系统达到要求:

在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为犯规;抢答限定时间显示10秒倒计时;可以显示是哪位选手有效抢答和无效抢答,正确按键后有发声提示;抢答时间倒记时显示时间完后系统复位;有选手抢答成功后按键锁定,此状态下其他按键无效。

单片机课程设计

 

六、程序流程图

 

9

单片机课程设计

七、源程序介绍

根据流程图中的介绍,本设计的源程序除主程序外,还包括查询程序、非法抢答处理程序、无人抢答程序、倒计时程序、正常抢答处理程序、犯规抢答程序、显示程序、发声程序、T0溢出中断程序。

下面将对下面将对其一一介绍。

完整的源程序参见附录

a)主程序开始之前:

对数据存储单元定义,中断入口,主程序入口

D_DAT0EQU

6AH

D_DAT1EQU

6BH

D_DAT2EQU

6CH

D_DAT3EQU

6DH

D_DAT4EQU

6EH

D_DAT5EQU

6FH

D_DAT6EQU

70H;定义显示数据单元

ORG

0000H

AJMP

START

ORG

000BH;定时器T0入口

AJMP

INTT0

b)主程序:

初始化数码管,等待主持人宣布抢答开始

START:

MOV

SP,#30H

MOV

D_DAT0,#10

MOV

D_DAT1,#10

MOV

D_DAT2,#10

10

单片机课程设计

MOVD_DAT3,#10;熄灭前四个灯

MOVD_DAT4,#1

MOVD_DAT5,#0;初始化显示数据10

MOVR3,#10;倒计时10秒的数暂存于R3

MOVP0,#0

CLRP1.1;初始化有关I/O口

CLRP1.2

MOVR0,#D_DAT0;初始化显示指针寄存器

;R0指向第一位显示数字

MOVR1,#01H;初始化需点亮数码管位置代码

NOP

JNBP2.7,$

c)非法抢答处理程序:

READY:

LCALLDISP

JNBP2.0,ERROR1

JNBP2.1,ERROR2

JNBP2.2,ERROR3

JNBP2.3,ERROR4

JNBP2.4,ERROR5

JNBP2.5,ERROR6

JNBP2.6,ERROR7;判断抢答犯规者,显示号码并响铃

JBP2.7,READY

11

单片机课程设计

LCALLSOUND

;主持人控制抢答是否开始,P2.7先置于1,开始抢答则置于0

AJMPNOERROR

随着查询程序,一开始主持人控制抢答,P2.7为1,抢答未开始,若在查询程序中发现有选手提前抢答,则程序转到非法抢答处理程序开始执行。

比如,检测到选手1犯规,则执行以下语句:

JNBP2.0,ERROR1;

同时,

ERROR1:

MOVD_DAT1,#1

LCALLSOUND

MOVR5,#1

JNBP2.7,ERROR1

AJMPSTART;P2.7置1,重新开始

;转犯规抢答程序

1号若抢答犯规,则会发出警报,同时数码管显示抢答选手的编号,主持人控制重新开始。

d)INT0处理程序(抢答时间程序)

NOERROR:

MOV

TMOD,#11H

MOVTH0,#3CH

MOVTL0,#0B0H;50ms

MOVR2,#20;循环20次

SETBEA

SETBET0

SETBTR0;定时器T0初始化

中断程序:

INTT0:

MOVTH0,#3CH

12

单片机课程设计

MOVTL0,#0B0H

DJNZR2,INTTO_1

MOVR2,#20;20次循环重赋初值

DECR3

MOVD_DAT5,R3

MOVD_DAT4,#0

INTTO_1:

RETI

定时器T0采用方式一,系统主频focs=12MHz,计数初值f12

X216focst2161250000155363CB0H。

中断程序一次循环50ms,进行1212

20次循环,刚好1秒。

e)正常抢答处理程序:

当确定没有选手犯规抢答时,则进入正常抢答环节,判断选手抢答成功与否

MAIN:

LCALLDISP;调用数码管循环点亮子程序

JNBP2.0,SOUND1

JNBP2.1,SOUND2

JNBP2.2,SOUND3

JNBP2.3,SOUND4

JNBP2.4,SOUND5

JNBP2.5,SOUND6

JNBP2.6,SOUND7;判断抢答成功者,停止计时并响铃

MOVR4,D_DAT4

CJNER4,#0,LOOP1

MOVR4,D_DAT5

CJNER4,#0,LOOP1

AJMPNOBODY;无人抢答,停止计时并响铃

13

单片机课程设计

LOOP1:

AJMPMAIN;循环执行主程序

由于程序运行速度很快,误差很小,故可以采用依次查询的方法,对结果几乎

没有影响。

若选手3抢答成功,则进入以下程序

SOUND3:

CLRTR0

MOVD_DAT1,#3

LCALLSOUND

SOUND3_1:

LCALLDISP

JNBP2.7,SOUND3_1

AJMPSTART;P2.7置1,重新开始

抢答成功后,停止计时,数码管显示选手号码。

需要进行下一次抢答时,则只

需要将P2.7置1,此操作将由主持人完成。

同理,可以得到其他选手的处理程序。

详细程序请参见附录源程序中正常抢答处理程序部分。

f)所有选手放弃抢答程序:

NOBODY:

CLRTR0

MOVD_DAT5,#0

LCALLSOUND

NOBODY1:

LCALLDISP

JNBP2.7,NOBODY1

AJMPSTART

放弃抢答的标志是D_DAT4=0,D_DAT5=0,查询到这种情况既跳转到无人抢答处理。

g)显示子程序:

DISP:

MOVA,R1;取位代码

MOVP0,A;位代码送P0口

14

单片机课程设计

SETB

P1.2

NOP

CLR

P1.2

;产生一个锁存脉冲,锁存位代码

MOV

A,@R0;取需显示的数字

MOV

DPTR,#DISPD;装载笔画编码表首地址

MOVC

A,@A+DPTR;取需显示数字笔画代码

MOV

P0,A

;笔画代码送到P0口

SETB

P1.1

NOP

CLR

P1.1

;产生一个锁存脉冲,锁存笔画代码

INC

R0

;R0增1指向下一个需显示数字

MOV

A,R1

CLR

C

RLC

A

MOV

R1,A

;R1中的值左移1位,指向下一位数码管

CJNE

R0,#70H,DISP1;R0中不为70H则继续

MOV

R0,#D_DAT0;R0中为70H,循环完一轮

;重新赋初值

MOV

R1,#1

;位置代码初值

DISP1:

NOP

RET

;数字笔画代码表

;0123456789熄

DISPD:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,0

这里的显示包括对时间和选手号的显示,显示器即为核心板上的数码管,显示

15

单片机课程设计

子程序也就是例子程序,不需要做多大的改动。

h)发声程序

一旦开始键或抢答键按下,或因非法抢答,都需要调用到发声子程序

SOUND:

MOV

R7,#228

MOV

R6,#0FFH

DELAY:

CPL

P3.2

DE1:

DJNZ

R7,DE1

DJNZ

R6,DELAY

利用核心板上的蜂鸣器,可以发出声音,P3.2控制蜂鸣器的发声。

P3.2连续高低电平变化时,可以发出不同频率的声音,由于这里对发声的频率没有什么要求,故随意设置了一个发声频率,发声时间也很短暂。

至此,所有子程序的编写已介绍完毕。

心得

这次课程设计老师给我们安排了两个星期的时间,可以说是比较充裕的。

虽然如此,我还是很用心的做设计,利用了周六周日两天的时间在宿舍思考本次的课程设计,拿到题目,感觉太繁杂了,不知怎么下手,虽然这些知识以前都有接触过,但也只是分部分来接触,而这次的设计是要对前面几次实验的一个综合,真的很难。

也翻阅了一些资料,并自己事先编写好了程序,到了周一去到实验室时候,把自己写的程序烧进去芯片里面,发现不行,那些数字闪动得非常厉害,自己检查了好久好久,但还是发现不了问题,之后问了同学,才知是我把段码搞错了,我用的是共阴位选,但数据表的段码我却用了共阳的段码,所以不能在数码管上正常显示。

16

单片机课程设计

过运用单片机设计七路抢答器程设计,发现自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。

在这个过程中,我也曾经因为实践经验的缺乏失落过,也曾经仿真成功而热情高涨。

特别是Proteus仿真软件的使用,不知是由于电脑的问题还是怎么,这个软件的安装就花了我很长的时间,好不容易安装好了,又对软件的使用一点都不熟悉,要从头开始学起,对着我们的芯片原理进行仿真画图,刚刚开始时候真的很难下手,因为是英文版的软件,很多东西都看不太明白,都是通过自己一个个来慢慢琢磨,才把仿真图画了出来,然后把写好的程序导入芯片,进行仿真,当看到程序正常运行的那一刻,心中真是有几分的喜悦。

生活就是这样,汗水预示着结果也见证着收获。

劳动是人类生存生活永恒不变的话题。

虽然这只是一次的较简单的课程制作(七路抢答器),可是平心而论,也耗费了我不少的心血。

通过这次课程设计,我想说:

为完成这次课程设计我们确实很辛苦,但苦中仍有乐,和同学们相互帮助,我感觉我和同学们之间的距离更加近了。

LED亮了起来,蜂鸣器响起的是我一生以来最好听的声音,我们的心中就不免兴奋,不免激动。

以前种种艰辛这时就变成了最甜美的回忆!

这次学习给我留下了深刻的印象,使我受益匪浅。

而且对于论文的总体构思也有了很多经验,相信自己经过这一次的训练与学习,对于今后会更加努力,做得最好。

对我而言,知识上的收获重要,精神上的丰收更加可喜。

让我知道了学无止境的道理。

我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。

挫折是一份财富,经历是一份拥有。

这次课程设计必将成为我人生旅途上一个非常美好的回忆!

17

单片机课程设计

附录

 

 

总程序清单

D_

DAT0EQU

6AH

D_

DAT1EQU

6BH

D_

DAT2EQU

6CH

D_

DAT3EQU

6DH

D_

DAT4EQU

6EH

D_

DAT5EQU

6FH

D_

DAT6EQU

70H

;定义显示数据单元

 

ORG0000H

AJMPSTART

ORG000BH;定时器T0入口

AJMPINTT0

ORG

0030H

START:

MOV

SP,#30H

MOV

D_DAT0,#10

MOV

D_DAT1,#10

MOV

D_DAT2,#10

MOV

D_DAT3,#10;熄灭前四个灯

MOV

D_DAT4,#1

MOV

D_DAT5,#0;初始化显示数据10

MOV

R3,#10;倒计时10秒的数暂存于R3

MOVP0,#0

CLRP1.1;初始化有关I/O口

CLRP1.2

MOVR0,#D_DAT0;初始化显示指针寄存器

18

单片机课程设计

;R0指向第一位显示数字

MOV

R1,#01H;初始化需点亮数码管位置代码

NOP

 

JNB

P2.7,$

READY:

LCALLDISP

 

JNB

P2.0,ERROR1

JNB

P2.1,ERROR2

JNB

P2.2,ERROR3

JNB

P2.3,ERROR4

JNB

P2.4,ERROR5

JNB

P2.5,ERROR6

JNB

P2.6,ERROR7;判断抢答犯规者,显示号码并响铃

JB

P2.7,READY

LCALL

开始抢答则置于0

SOUND;主持人控制抢答是否开始,P2.7先置于1,

AJMP

NOERROR

ERROR1:

MOVD_DAT1,#1LCALLSOUNDMOVR5,#1

JNBP2.7,ERROR1

AJMPSTART;P2.7置1,重新开始

ERROR2:

MOVD_DAT1,#2

LCALLSOUND

MOVR5,#2

19

单片机课程设计

JNBP2.7,ERROR2

AJMPSTART;P2.7置1,重新开始

ERROR3:

MOVD_DAT1,#3

LCALLSOUND

MOVR5,#3

JNBP2.7,ERROR3

AJMPSTART;P2.7置1,重新开始

ERROR4:

MOVD_DAT1,#4

LCALLSOUND

MOVR5,#4

JNBP2.7,ERROR4

AJMPSTART;P2.7置1,重新开始

ERROR5:

MOVD_DAT1,#5

LCALLSOUND

MOVR5,#5

JNBP2.7,ERROR5

AJMPSTART;P2.7置1,重新开始

ERROR6:

MOVD_DAT1,#6

LCALLSOUND

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1