8位竞赛抢答器的设计--实用.docx
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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,则