8位竞赛抢答器的设计--实用.docx

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计专业电气工程及其自动化

指导教师

学生颜良堂

学号B16

题目8 位竞赛抢答器的设计

2013 年 12 月 25 日

目录

一、设计任务与要求. (3)

二、方案设计与论证 (3)

方案一: (3)

方案二: (4)

三、单元电路的设计 (4)

芯片的选择及工作原理 (4)

系统的硬件构成及功能 (4)

四、软件的设计 (5)

主程序流程图 (6)

主程序 (6)

子程序 (7)

1、开始、复位程序 (7)

2、中断程序 . (8)

3、选手键盘扫描程序. (9)

4、数码管显示程序.12

5、抢答时间设计程序.13

6、延时子程序.13

五、仿真与调试. (14)

抢答器调试结果. (14)

六、结论与心得 (16)

附件 1:电路图 (16)

附件 2:源程序 (17)

附、参考文献? (24)

一、设计任务与要求

以单片机为核心,设计一个8 位竞赛抢答器:同时供8 名选手或8 个代表队比赛,分别用8 个按钮S0~ S7 表示。

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

抢答器具有锁存与显示功能。即选手按按钮,锁存相应的编号,并在优先抢答选手

的编号一直保持到主持人将系统清除为止。

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

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

响持续的时间为左右。

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

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

上显示00。

通过键盘改变抢答的时间,原理与闹钟时间的设定相同,将定时时间的变量置为全局

变量后,通过键盘扫描程序使每按下一次按键,时间加1(超过30 时置 0 )。同时单片机不断进行按键扫描,当参赛选手的按键按下时,用于产生时钟信号的定时计数器停

止计数,同时将选手编号(按键号)和抢答时间分别显示在LED 上。

二、方案设计与论证

方案一:

使用 C 语言编程实现基于单片机的八位抢答器的课程设计,用到的元器件有AT89C51 、 MAX7219、按键、数码管、上拉电阻、蜂鸣器等。

方案二:

使用汇编语言编程实现八位抢答器的课程设计,用到的元器件有

AT89C51、74LS373 、按键、数码管、上拉电阻、蜂鸣器等。

选择方案二的理由:首先汇编语言是一种功能很强的程序设计语言

硬件特性并能直接控制硬件的语言,具有很高的精确控制;其次选用

, 也是利用计算机所有74LS373 芯片作为数码

管的控制芯片是因为它容易控制选用 3 个 74ls373分别控制倒计时的两个数码管及一个显示

抢答结果的数码管,所以我选择了方案二。

三、单元电路的设计

芯片的选择及工作原理

本设计使用到的元器件包括AT89C51芯片、数码管。

工作原理 :

仿真开始显示FFF;按下“复位”键显示倒计时初值,起初设的是30 秒;再按下“设时”键,按一下计数初值加1,到 30 自动清零;按下“开始”键开始倒计时,每减一,有秒的

声响;当有选手按下,则倒计时停止,显示当前倒计时数值和选手编号;若在倒计时计数到

0,无人抢答则有1秒声响的报警。

系统的硬件构成及功能

1、单片机晶振及复位部分电路电路

2、选手抢答部分电路:由八个按键 S0~S7以及 8 个阻值为 1k 的上拉电阻组成

3、开始、复位、时间设置及扬声器部分电路:由3个按键、1个电阻、NPN和1个BUZZER组成,用于主持人操作及扬声器提示报警

4、显示部分电路:由3个 74LS373芯片及 3个数码管构成,用于显示倒计时时间和抢答结果

四、软件的设计

主程序流程图

开始

显示 FFF

时间设置Y

倒计时加 1

N

N 复位键

N

Y

开始按钮

Y

开始倒计时

N

30s抢答

Y

显示抢答结果

主程序

MAIN: MOV TMOD,#01H;主程序MOV TH0,#3CH

MOV TL0,#0B0H

SETB EA

SETB ET0

SETB EX0

SETB IT0

MOV R4,#30; 30 秒倒计时

MOV R3,#0AH MOV R7,#0AH ; 抢答结果; 倒计时

MOV R6,#0AH

MOV R0,#30;R0存放倒计时的显示值,初值设为30

LCALL XIANSH2

子程序

1、开始、复位程序

;********复位程序********

FW:JNB ,FW1;预判复位键按下否

JMP FW

FW1: LCALL DELAY;去抖动,判断是否真按下

JNB ,FW2

JMP FW

FW2:MOV R3,#0BH;复位按下,则存放选手编号的R3,放入 " 灭 "的代码

MOV A,R4;倒计时初值R4放入显示倒计时寄存器R0中

MOV R0,A

LCALL XIANSH1

;开始程序

SAM: JNB ,PK

JMP SAM

PK:JNB ,PK1;扫描开始键是否按下

JMP SAM

PK1:MOV R3,#0BH;按下则 R3存 " 灭" 代码,

SETB TR0;/启动定时器

MOV R2,#0AH;中断次数设为 10次,刚好 1秒HERE: CJNE R1,#01H,YY;若 R1中存放的选手按键标志位为1,则

相关文档
最新文档