资源描述
学号:
- 第2学期
《单片机应用技术》
课 程 设 计 报 告
题 目: 八 位 竞 赛 抢 答 器
专 业:
班 级:
姓 名:
指导老师:
成 绩:
电气工程学院
月 日
课 程 设 计 任 务 书
学生班级: 学生姓名: 学号:
设计名称: 八位竞赛抢答器
起止日期: 指导老师:
设计要求:
以单片机为关键,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,分别用8个按钮S0~S7表示。
1.设置一个系统清除和抢答控制开关S,开关由主持人控制。
2.抢答器含有锁存和显示功效。即选手按按钮,锁存对应编号,并在优先抢答选手编号一直保持到主持人将系统清除为止。
3.抢答器含有定时抢答功效,且一次抢答时间由主持人设定(如30秒)。
当主持人开启“开始”键后,定时器进行减计时,同时扬声器发出短暂声响,声响连续时间为0.5s左右。
4.参赛选手在设定时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手编号和抢答时间,并保持到主持人将系统清除为止。
5.假如定时时间已到,无人抢答,此次抢答无效,系统报警并严禁抢答,定时显示器上显示00。
八位竞赛抢答器
摘 要
本设计是以八路抢答为基础理念。考虑到需设定限时回复功效,利用AT89C51单片机及外围接口实现抢答系统,利用单片机定时器/计数器定时和记数原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输出,扬声器发生提醒。优异行系统硬件设计,该电路由显示电路,抢答电路,晶振电路等部分组成,然后进行系统软件设计,进行软件仿真,这次课程设计不仅能锻炼我们动手能力,而且能够培养我们对问题思索能力和对知识深入了解。
关键词:AT89C51;抢答器;计时;报警
目 录
第1章 系统总体设计 5
1.1 八位竞赛抢答器工作原理 5
1.2 八位竞赛抢答器总体框图 5
第2章 系统硬件设计 6
2.1 工作原理 6
2.2 晶振电路 6
2.3 抢答电路 7
2.4 显示电路 8
2.5 控制电路设计 9
第3章 系统软件设计 10
第4章 系统软件仿真 13
4.1 KeiluVision2软件 13
4.2 Proteus软件仿真 14
4.3 仿真结果分析 15
总 结 16
参 考 文 献 17
附 录 18
第1章 系统总体设计
1.1 八位竞赛抢答器工作原理
抢答器工作原理是采取单片机最小系统,用程序查询方法使动态显示倒计时时间而且同时使LED灯亮。主持人按下开始抢答键才能够抢答。主持人没有按下开始抢答按(P3.0),有些人抢答则抢答违规,报警并该组LED灯亮,主持人按下开始抢答开关重新抢答。主持人按下开始抢答按纽(P3.0),扬声器响声提醒,数码管30秒倒计时抢答,扬声器响声提醒并该组LED灯亮,30秒内有些人抢答则开始60秒倒计时(60秒内必需回复完问题),最终五秒倒计时警报。从而完成一次抢答或一次知识竞赛任务。
1.2 竞赛抢答器总体框图
AT89C51
晶振电路
抢答电路
复位电路
显示电路
图1 总体设计框图
第2章 系统硬件设计
2.1 工作原理
经过键盘改变抢答时间,原理和闹钟时间设定相同,将定时时间变量置为全局变量后,经过键盘扫描程序使每按下一次按键,时间加1(超出30时置0)。同时单片机不停进行按键扫描,当参赛选手按键按下时,用于产生时钟信号定时计数器停止计数,同时将选手编号(按键号)和抢答时间分别显示在LED上。
2.2 晶振电路
该晶振电路使用是内部时钟电路,晶振频率为12MHZ,提供89C51时钟脉冲使89C51工作。复位电路使用是按键和上电复位,复位电路是单片机初始化,使单片机重新开始实施程序。当复位开关按下RST由低电平变为高电平,则程序从头开始实施,在此次课程设计电路中当一个问题结束主持人后按下复位开关后进行下一题准备。
晶振电路电路图以下页图2所表示:
图2 晶振电路电路图
2.3 抢答电路
AT89C51P1口做一个为选手抢答输入按键引脚,P1.0至P1.7轮番输出低电位,给每一个选手编号1至8,当选手按下按钮时,P1口个端口电平改变从P1口输入,经单片机处理后从P0输出由LED灯显示出来此组。
抢答电路电路图图3:
图3 抢答电路电路图
2.4 显示电路
此电路包含显示和驱动,显示采取数码管和LED灯,驱动用P2和P0口,违规者编号和正常抢答者编号将经过和P0口相连LED灯显示出来,抢答30秒倒计时和回复问题时间60秒倒计时由P3口上数码管采取动态显示。为了确保LED灯和数码管有适宜压降在连接电路为它们对应地串连上了电阻。显示电路电路图图4:
图4 显示电路电路图
2.5 控制电路设计
当赛事进行时,提醒开始作答和复位时还需要主持人对抢答器进行控制,其提醒是经过扬声器发出声音来实现。这就需要我们进行控制电路设计。其电路图图5:
图5 控制电路
第3章 系统软件设计
智力竞赛抢答器要求有计时记忆功效,一次时间设置完,复位后不需重新进行时间设定,经过键盘扫描输出按键信息,当在扫描到有些人按下了答题键,立即关调用显示程序、封锁键盘。再经过单片机将它转换成能在七段数码管上显示字型码。
非 法 抢 答 模 块
正 确 抢 答 模 块
调 整 抢 答 时 间
调 整 回 答 时 间
数据显示模块
系 统 初 始 化 模 块
按 键 模 块
图6 软件设计
当抢答完成时,会在数码管上显示抢答者数字号码提醒以表示抢答成功.在显示时使用是七段数码管显示,在本设计中依据实际情况采取是动态显示方法.并经过查表法将其在数码管上显示出来,其中P1口为字型码输入端,P2口低6位为字选段输入端.经过查表将字型码送给7段数码管显示数字。软件去抖动,假如"开始键"按下就向下实施,否者跳到开始。采取倒计时程序,使其含有倒计时功效。回复倒计时30秒。抢答时间5秒。采取发声警报(因为没有驱动器,所以就用绿灯换了),起到报警作用。其程序步骤图以下页图7
初始化
显示FFF
开始键按下?
加一键按下?
减一键按下?
去抖动
回复时间
非法抢答处理
调整抢答时间
显示犯规
正常
显示抢答号并倒计时
Y
Y
Y
图7 程序步骤
1、假如想调整抢答时间或答题时间,按"抢答时间调整"键或"答题时间调整"键进入调整状态,此时会显示现在设定抢答时间或回复时间值,如想加一秒按一下"加1s"键,假如想减一秒按一下"-1s"键,时间LED上会显示改变后时间,调整范围为0s~99s,0s时再减1s会跳到99,99s时再加1s会变到0s。
2、主持人按抢答“开始"键,会有提醒音,并立即进入抢答倒计时(预设30s抢答时间),如有选手抢答,会有提醒音,并会显示其号数并立即进入回复倒计时(预设60s抢答时间),不进行抢答查询,所以只有第一个按抢答选手有效。倒数时间到小于5s会每秒响一下提醒音。
3、如倒计时期间,主持人想停止倒计时能够随时按"停止"按键,系统会自动进入准备状态,等候主持人按"抢答开始"进入下次抢答计时。
4、假如主持人未按抢答“开始”键,而有些人按了抢答按键,犯规抢答,LED上不停闪烁FFF和犯规号数并响个不停,直到按下"停止"键为止。
第4章 系统软件仿真
4.1 KeiluVision2软件
本课题用到了伟福软件,集成调试环境,集成了编辑器、编译器、调试器,支持软件模拟,支持项目管理功效强大观察窗口,支持全部数据类型。树状结构显示,一目了然,支持ASM(汇编)、C语言,多语言多模块源程序混合调试,在线直接修改、编译、调试源程序,错误指令定位。功效很强大。用于对程序调试、编译和生成HEX文件。其界面图4.1:
图8 KeiluVision2软件界面
4.2 Proteus软件仿真
系统仿真还用到了Proteus软件,可经过仿真能够完全显示出所设计系统功效,对于程序调试等有很大帮助。系统仿真时首先要在使用伟福编译器,把所写程序进行编译,同时在仿真器里设置生成hex文件,编译无错误时进行Proteus仿真,加载目标代码文件打开元器件单片机属性窗口,在“ProgramFile”栏中添加上面编译好目标代码文件“hh.hex”;在“ClockFrequency”栏中输入晶振频率为12MHz。仿真:单击按钮,开启仿真,结果以下页图所表示:
图9 仿真结果图
4.3 仿真结果分析
经过电路仿真,能够看出基于AT89C51单片机控制抢答器在PROTEUS软件上很好实现抢答报警、抢答成功显示、抢答倒计时等一系列功效。
当仿真运行开始时,各个模块处于初始阶段。此时无状态显示,但此时抢答键和蜂鸣器全部处于开启状态,若此时有选手按下抢答键,则蜂鸣器会发出报警声音,而且在数码管上显示规范选手编号。主持人重新按下开始键,此时表示抢答正式开始,而且数码管显示倒计时,同时蜂鸣器发出声音提醒选手抢答正式开始了。选手抢答成功,同时也进入倒计时答题时间。从仿真测试结果来看,此设计还是能比很好实现预期目标。
总 结
经过这一周课程设计,我学到了不少知识。把以前没有学好模拟电路知识进行了补充和加强。这使我受益很大。加深了我对于单片机和数字电路认识,相信在以后学习和工作中碰到这些基础元器件我会愈加得心应手。经过查阅大量资料,我取得了以前在课堂上学不到东西,我想这对于以后毕业设计,或工作也好,全部是很有帮助。我很认真地对待这个过程中每一个细节,期望自己能做得愈加好。期望以后还有这么机会,能够让我学到更多知识。在此次数字钟设计过程中,更深入地熟悉了芯片结构及掌握了各芯片工作原理和其具体使用方法。
在设计电路中,往往是先仿真后连接实物图,但有时候仿真和电路连接并不是完全一致,所以在实际电路连接中往往轻易遗漏。在设计电路连接图中犯错关键原因全部是接线和芯片接触不良和接线错误所引发,在以后设计过程中进行了修改、更正。
参 考 文 献
[1]张伟,《单片机原理及应用》,机械工业出版社,
[2]张鑫,《单片机原理及应用》,电子工业出版社,
[3]曹国清,《数学电路和逻辑设计》中国矿业大学出版社,
[4]任致程,《经典集成电路400例》机械工业出版社,
[5]薛栋梁,《单片机原理及应用》,中国水利水电出版社,
[6]吴金戎,沈庆阳等,《8051单片机实践和应用》,清华大学出版社,
附 录
(1)总电路图
图10 总电路图
(2)程序代码
1主程序
OKEQU20H
RINGEQU22H
ORG0000H
AJMPMAIN
ORG0003H
AJMPINT0SUB
ORG000BH
AJMPT0INT
ORG0013H
AJMPINT1SUB
ORG001BH
AJMPT1INT
ORG0040H
MAIN:MOVR1,#30
MOVR2,#60
MOVTMOD,#11H
MOVTH0,#0F0H
MOVTL0,#0FFH
MOVTH1,#3CH
MOVTL1,#0B0H
SETBEA
SETBET0
SETBET1
SETBEX0
SETBEX1
CLROK
CLRRING
SETBTR1
SETBTR0
2查询程序
START:MOVR5,#0BH
MOVR4,#0BH
MOVR3,#0BH
ACALLDISPLAY
JBP3.0,NEXT
ACALLDELAY
JBP3.0,NEXT
ACALLBARK
MOVA,R1
MOVR6,A
SETBOK
MOVR7,#01H
MOVR3,#0AH
AJMPCOUNT
NEXT:JNBP1.0,FALSE1
JNBP1.1,FALSE2
JNBP1.2,FALSE3
JNBP1.3,FALSE4
JNBP1.4,FALSE5
JNBP1.5,FALSE6
JNBP1.6,FALSE7
JNBP1.7,FALSE8
AJMPSTART
3非法抢答处理程序
FALSE1:MOVR3,#01H
AJMPERROR
FALSE2:MOVR3,#02H
AJMPERROR
FALSE3:MOVR3,#03H
AJMPERROR
FALSE4:MOVR3,#04H
AJMPERROR
FALSE5:MOVR3,#05H
AJMPERROR
FALSE6:MOVR3,#06H
AJMPERROR
FALSE7:MOVR3,#07H
AJMPERROR
FALSE8:MOVR3,#08H
4抢答、回复时间调整程序
=====INT0(抢答时间R1调整程序)=====
INT0SUB:MOVA,R1
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#0AH
ACALLDISPLAY
JNBP3.4,INC0
JNBP3.5,DEC0
JNBP3.1,BACK0
AJMPINT0SUB
INC0:MOVA,R1
CJNEA,#63H,ADD0
MOVR1,#00H
ACALLDELAY1
AJMPINT0SUB
ADD0:INCR1
ACALLDELAY1
AJMPINT0SUB
DEC0:MOVA,R1
JZSETR1
DECR1
ACALLDELAY1
AJMPINT0SUB
SETR1:MOVR1,#63H
ACALLDELAY1
AJMPINT0SUB
BACK0:RETI
;=====INT1(回复时间R2调整程序)=====
INT1SUB:MOVA,R2
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#0AH
ACALLDISPLAY
JNBP3.4,INC1
JNBP3.5,DEC1
JNBP3.1,BACK1
AJMPINT1SUB
INC1:MOVA,R2
CJNEA,#63H,ADD1
MOVR2,#00H
ACALLDELAY1
AJMPINT1SUB
ADD1:INCR2
ACALLDELAY1
AJMPINT1SUB
DEC1:MOVA,R2
JZSETR2
DECR2
ACALLDELAY1
AJMPINT1SUB
SETR2:MOVR2,#63H
ACALLDELAY1
AJMPINT1SUB
BACK1:RETI
5倒计时程序
REPEAT:MOVA,R2
MOVR6,A
CLRRING
COUNT:MOVR0,#00H
MOVTH1,#3CH
MOVTL1,#0B0H
RECOUNT:MOVA,R6
MOVB,#0AH
DIVAB
MOV30H,A
MOV31H,B
MOVR5,30H
MOVR4,31H
MOVA,R6
SUBBA,#07H
JNCLARGER
MOVA,R0
CJNEA,#0AH,FULL
CLRRING
AJMPCHECK
FULL:CJNEA,#14H,CHECK
SETBRING
MOVA,R6
JZQUIT
MOVR0,#00H
DECR6
AJMPCHECK
LARGER:MOVA,R0
CJNEA,#14H,CHECK
DECR6
MOVR0,#00H
CHECK:JNBP3.1,QUIT
JNBOK,CHECKK
AJMPNEXTT
CHECKK:JNBP3.0,REPEAT
NEXTT:ACALLDISPLAY
JBOK,ACCOUT
AJMPRECOUNT
ACCOUT:
MOVA,36H
JNBACC.0,TRUE1
JNBACC.1,TRUE2
JNBACC.2,TRUE3
JNBACC.3,TRUE4
JNBACC.4,TRUE5
JNBACC.5,TRUE6
JNBACC.6,TZ1
JNBACC.7,TZ2
AJMPRECOUNT
TZ1:JMPTRUE7
TZ2:JMPTRUE8
QUIT:CLROK
CLRRING
AJMPSTART
6正常抢答处理程序
TRUE1:ACALLBARK
MOVA,R2
MOVR6,A
MOVR3,#01H
CLROK
AJMPCOUNT
TRUE2:ACALLBARK
MOVA,R2
MOVR6,A
MOVR3,#02H
CLROK
AJMPCOUNT
TRUE3:ACALLBARK
MOVA,R2
MOVR6,A
MOVR3,#03H
CLROK
AJMPCOUNT
TRUE4:ACALLBARK
MOVA,R2
MOVR6,A
MOVR3,#04H
CLROK
AJMPCOUNT
TRUE5:ACALLBARK
MOVA,R2
MOVR6,A
MOVR3,#05H
CLROK
AJMPCOUNT
TRUE6:ACALLBARK
MOVA,R2
MOVR6,A
MOVR3,#06H
CLROK
AJMPCOUNT
TRUE7:ACALLBARK
MOVA,R2
MOVR6,A
MOVR3,#07H
CLROK
AJMPCOUNT
TRUE8:ACALLBARK
MOVA,R2
MOVR6,A
MOVR3,#08H
CLROK
AJMPCOUNT
7犯规抢答程序
ERROR:MOVR0,#00H
MOVTH1,#3CH
MOVTL1,#0B0H
MOV34H,R3
HERE:MOVA,R0
CJNEA,#06H,FLASH;0.3s
CLRRING
MOVR3,#0AH
MOVR4,#0AH
MOVR5,#0AH
AJMPCHECK1
FLASH:CJNEA,#0CH,CHECK1
SETBRING
MOVR0,#00H
MOVR3,34H
MOVR5,#0BH
MOVR4,#0BH
AJMPCHECK1
CHECK1:JNBP3.1,QUIT1
ACALLDISPLAY
AJMPHERE
QUIT1:CLRRING
CLROK
AJMPSTART
8其它功效程序
=====显示程序=====
DISPLAY:MOVDPTR,#DAT1
MOVA,R3
MOVCA,@A+DPTR
MOVP2,#0feH
MOVP0,A
ACALLDELAY2
MOVDPTR,#DAT2
MOVA,R5
MOVCA,@A+DPTR
MOVP2,#0fdH
MOVP0,A
ACALLDELAY2
MOVA,R4
MOVCA,@A+DPTR
MOVP2,#0fbH
MOVP0,A
ACALLDELAY2
RET
DAT1:DB00h,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,00H,71H
DAT2:DB3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,00H,71H
=====发声程序=====
BARK:SETBRING
ACALLDELAY1
ACALLDELAY1
CLRRING
RET
=====TO溢出中止(响铃程序)=====
T0INT:MOVTH0,#0ECH
MOVTL0,#0FFH
JNBRING,OUT;
CPLP3.6
OUT:RETI
;=====T1溢出中止(计时程序)=====
T1INT:MOVTH1,#3CH
MOVTL1,#0B0H
END
(3)评语表
指导老师评语
课程设计成绩
指导老师签字
月 日
展开阅读全文