标题: 单片机8位竞赛抢答器的设计报告下载 [打印本页]

作者: 347642831Q    时间: 2018-6-25 16:56
标题: 单片机8位竞赛抢答器的设计报告下载
一、简述
通过键盘改变抢答的时间,原理与闹钟时间的设定相同,将定时时间的变量置为全局变量后,通过键盘扫描程序使每按下一次按键,时间加1(超过30时置0)。同时单片机不断进行按键扫描,当参赛选手的按键按下时,用于产生时钟信号的定时计数器停止计数,同时将选手编号(按键号)和抢答时间分别显示在LED上。
二、设计任务和要求
    以单片机为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,分别用8个按钮S0~S7表示。
    设置一个系统清除和抢答控制开关S,开关由主持人控制。
     抢答器具有锁存与显示功能。即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。
    抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。
     当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0.5s左右。
     参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
     如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
三、设计方案提示
1、电路设计( Proteus仿真通过)   
8位竞赛抢答器的设计电路原理图,如下页图所示:

完整的Word格式文档51黑下载地址:
八位竞赛抢答器.doc (951 KB, 下载次数: 81)



作者: lzy7071780    时间: 2018-7-13 17:24
您好,请问有程序码
作者: 天武拾荒    时间: 2018-7-14 12:58
lzy7071780 发表于 2018-7-13 17:24
您好,请问有程序码

没有,我也想要
作者: 亲爱的h    时间: 2018-7-14 16:47
lzy7071780 发表于 2018-7-13 17:24
您好,请问有程序码



楼主电路的程序hex 见附件

1.rar (131 Bytes, 下载次数: 22)




作者: 米老鼠alan    时间: 2018-12-19 16:48
基于c语言的还是汇编语言?
作者: ttzx131wp@    时间: 2020-6-12 15:34
(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


作者: Maya    时间: 2020-6-23 16:24
ttzx131wp@ 发表于 2020-6-12 15:34
(2)程序代码
1主程序
OKEQU20H

这个是啥呀/捂脸看不懂
作者: wuyazuofeiji    时间: 2020-6-27 21:06
ttzx131wp@ 发表于 2020-6-12 15:34
(2)程序代码
1主程序
OKEQU20H

太感谢了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1