数字抢答器单片机课程方案设计书Word格式.docx
- 文档编号:1456708
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:27
- 大小:637.05KB
数字抢答器单片机课程方案设计书Word格式.docx
《数字抢答器单片机课程方案设计书Word格式.docx》由会员分享,可在线阅读,更多相关《数字抢答器单片机课程方案设计书Word格式.docx(27页珍藏版)》请在冰点文库上搜索。
如果有选手在规定的时间以前完成问题,主持人通过按键开始按钮来复位,开始新的问题作答,因为程序不是很大不需要扩展存储空间,选手按键跳入相应的子程序,回答倒记时。
3.系统软件设计
3.1部分软件设计
3.1.1主程序系统结构图
软件系统结构图见图3-1:
图3-1软件系统结构图
回答时间调整程序;
倒计时程序;
正常抢答处理程序;
犯规处理程序;
显示及发声程序。
3.1.2初始化程序
MAIN:
MOVR1,#10;
初设抢答时间为10s
MOVR2,#10;
初设答题时间为10s
MOVTMOD,#11H;
设置未定时器/模式1
MOVTH0,#0F0H
MOVTL0,#0FFH;
越高发声频率越高,越尖
MOVTH1,#3CH
MOVTL1,#0B0H。
50ms为一次溢出中断
SETBEA
SETBET0
SETBET1
SETBEX0
SETBEX1。
允许四个中断,T0/T1/INT0/INT1
CLROK
CLRRING
SETBTR1
SETBTR0。
3.1.3键盘扫描程序流程图
本系统的键盘采用独立式按键键盘程序流图见图3-2:
图3-2键盘扫描程序流程图
3.1.4抢答数码显示软件程序设计
LED数码管采用静态显示,显示器由9个共阳极数码管组成。
输入只有两个信号,它们是串行数据线DIN和移位信号CLK。
9个串/并移位寄存器芯片74LS164首尾相连了九位共阳极七段数码管,共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起,通常,公共阳极接高电平(一般接电源),其他管脚接段驱动电路输出端。
数码管显示程序流程图见图3-3:
图3-3数码显示程序流程
3.1.5音乐音频输出程系流程图
音乐音频输出由P3.7输出,见图3-4:
图3-4音乐音频输出程系流程图
3.2软件调试
3.2.1编译、连接工程,形成目标文件
把程序文件添加到工程文件中,并且程序文件已经建立好存盘后,就可以进行编译、连接,形成目标文件。
编译、连接用Project菜单下的BuiltTarget命令(或快捷键F7),见图3-5和图3-6所示:
图3-5程序编译
图3-6连接创建目标文件
编译、连接时,如果程序有错,则编译不成功,并在下面的信息窗口给出相应的出错提示信息,以便用户进行修改,修改后再编译、连接,这个过程可能会重复多次。
如果没有错误,则编译、连接成功,并且信息窗口给出提示信息。
3.2.2运行调试观察结果
当工程编译、连接成功后,就可以运行它来观察结果。
运行调试过程:
先用Debug菜单下的Start/StopDebugSession命令,启动调试过程。
用Debug菜单下的GO连续运行。
用Debug菜单下的StopRunning命令停止运行。
用View菜单调出各种输出窗口观察结果。
系统软件运行结果见图3-7:
图3-7系统软件运行结果
4.系统仿真测试
系统硬件及系统软件设计完成,经硬件和软件调试成功后,可以将系统软件和硬件结合起来调试,这里采用Proteus单片机仿真软件进行仿真。
完成电路原理图设计后,将Keil软件调试产生的HEX文件添加到Proteus软件中,运行后,其仿真结果如下图4-1:
图4-1系统仿真图
5.小结
这次的课程设计收获颇多。
由于是自由选择课题,在最初选择课题的时候就遇到一点问题,参考了一些资料,最终确立了智能抢答器这个课题。
课题选定之后,就注重搜集相关的资料,网上也下载了不少资料,对自己所要设计的智能抢答器有了初步的了解。
我主要是负责软件方面的设计,编程方面,自己的基础不是很好,遇到了不少困难,借鉴了一些资料的相关程序,同时也回顾了单片机教科书上的内容,巩固了以前学习的知识,这一点也是这次比较大的收获。
程序编完后,就开始了调试的过程,期间同样不可避免的遇到了一些问题,很多低级的错误都不应该,这点我尤其有体会,以后的编程中我会更加注意这个问题。
最后就是用Proteus单片机仿真软件进行仿真,这部分由于前面的调试和检查,硬件和软件部分都接近预想的效果,这就导致软硬件综合仿真很顺利的完成。
这次的课程设计过程困难多,但可以找到了最适合的方法解决问题,虽然最后实物没有达到预期的效果,不过还是学到很多东西。
同学合作更让我懂得了协作精神,对我以后的工作有很大作用。
6.致谢
经过将近两周的设计学习以及庄志红老师的热心帮助和全力支持,这次的课程设计可以比较圆满地完成。
庄志红老师严谨的治学态度和热忱的工作作风令我十分钦佩,他的指导使我受益非浅。
7.参考文献
《单片机原理及应用技术》范力旻电子工业出版社
《8051单片机彻底研究实习篇》林申茂编著人民邮电出版社
《单片机原理及接口技术实践教程》胡建编著机械工业出版社
8.附录
元器件清单
序号
名称
代号
型号
数量
1
排阻
R1-R7
A103J
2
电阻
R8
1KΩ
3
电解电容
C1
10uF
4
电容
C2,C3
33PF
5
R9,R10,R11,R12,R13
5.1KΩ
6
开关
11
7
USB接口
8
共阴数码管4位
ARKSR420361K1011
9
晶振
11.0592
10
89C52芯片
STC89C52RC
蜂鸣器
BUZ1
12
三极管
S8550
部分功能仿真图
1、主持人按下开始抢答键后,进入抢答10S倒计时,显示仿真电路见图6-1:
图5-1
2、主持人按下抢答开始键,若有选手进行抢答,显示其号码,并进入10秒倒计时的仿真电路图见图6-2:
图5-2
程序代码
OKEQU20H。
抢答开始标志位
RINGEQU22H。
响铃标志位
ORG0000H
AJMPMAIN
ORG0003H
AJMPINT0SUB
ORG000BH
AJMPT0INT
ORG0013H
AJMPINT1SUB
ORG001BH
AJMPT1INT
ORG0040H
SETBEA
一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了
。
=====查询程序=====
START:
MOVR5,#0BH
MOVR4,#0BH
MOVR3,#0BH
ACALLDISPLAY。
未开始抢答时候显示FFF
JBP3.0,NEXT。
ddddddd
ACALLDELAY
JBP3.0,NEXT。
去抖动,如果"
开始键"
按下就向下执行,否者跳到非法抢答查询
ACALLBARK。
按键发声
MOVA,R1
MOVR6,A。
送R1->
R6,因为R1中保存了抢答时间
SETBOK。
抢答标志位,用于COUNT只程序中判断是否查询抢答
MOVR7,#01H。
读抢答键数据信号标志,这里表示只读一次有用信号
MOVR3,#0AH。
抢答只显示计时,灭号数
AJMPCOUNT。
进入倒计时程序,"
查询有效抢答的程序"
在COUNT里面
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
=====非法抢答处理程序=====
FALSE1:
MOVR3,#01H
AJMPERROR
FALSE2:
MOVR3,#02H
FALSE3:
MOVR3,#03H
FALSE4:
MOVR3,#04H
FALSE5:
MOVR3,#05H
FALSE6:
MOVR3,#06H
FALSE7:
MOVR3,#07H
FALSE8:
MOVR3,#08H
=====INT0(抢答时间R1调整程序)=====
INT0SUB:
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#0AH
ACALLDISPLAY。
先在两个时间LED上显示R1
JNBP3.4,INC0。
P3.4为+1s键,如按下跳到INCO
JNBP3.5,DEC0。
P3.5为-1s键,如按下跳到DECO
JNBP3.1,BACK0。
P3.1为确定键,如按下跳到BACKO
AJMPINT0SUB
INC0:
MOVA,R1
CJNEA,#63H,ADD0。
如果不是99,R2加1,如果加到99,R1就置0,重新加起。
MOVR1,#00H
ACALLDELAY1
ADD0:
INCR1
DEC0:
JZSETR1。
如果R1为0,R1就置99,
DECR1
ACALLDELAY1
SETR1:
MOVR1,#63H
ACALLDELAY1
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
ADD1:
INCR2
DEC1:
JZSETR2
DECR2
ACALLDELAY1
SETR2:
MOVR2,#63H
BACK1:
=====倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=====
REPEAT:
MOVA,R2。
使用锦囊时重新计时
MOVR6,A
CLRRING
COUNT:
MOVR0,#00H。
重置定时器中断次数
重置定时器
RECOUNT:
MOVA,R6。
R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6
MOVB,#0AH
DIVAB。
除十分出个位/十位
MOV30H,A。
十位存于(30H)
MOV31H,B。
个位存于(31H)
MOVR5,30H。
取十位
MOVR4,31H。
取个位
MOVA,R6
SUBBA,#07H
JNCLARGER。
大于5s跳到LARGER,小于等于5s会提醒
MOVA,R0
CJNEA,#0AH,FULL。
1s中0.5s向下运行
CLRRING
AJMPCHECK
FULL:
CJNEA,#14H,CHECK。
下面是1s的情况,响并显示号数并清R0,重新计
SETBRING
JZQUIT。
计时完毕
MOVR0,#00H
DECR6。
一秒标志减1
LARGER:
MOVA,R0
如果1s向下运行,否者跳到查"
停/显示"
DECR6。
计时一秒R6自动减1
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
TZ1:
JMPTRUE7
TZ2:
JMPTRUE8
QUIT:
CLROK。
如果按下了"
停止键"
执行的程序
=====正常抢答处理程序=====
TRUE1:
ACALLBARK
MOVA,R2
抢答时间R2送R6
MOVR3,#01H
CLROK。
因为答题的计时不再查询抢答,所以就锁了抢答
AJMPCOUNT
TRUE2:
ACALLBARK
MOVA,R2
MOVR3,#02H
TRUE3:
MOVR6,A
TRUE4:
ACALLBARK
MOVR3,#04H
TRUE5:
ACALLBARK
MOVR3,#05H
TRUE6:
ACALLBARK
MOVR6,A
MOVR3,#06H
TRUE7:
MOVR3,#07H
TRUE8:
MOVR3,#08H
=====犯规抢答程序=====
ERROR:
MOVR0,#00H
MOVTH1,#3CH
MOVTL1,#0B0H
MOV34H,R3。
犯规号数暂存与(34H)
HERE:
CJNEA,#06H,FLASH。
0.3s向下运行->
灭并停响
MOVR4,#0AH
MOVR5,#0AH。
三灯全灭
AJMPCHECK1
FLASH:
CJNEA,#0CH,CHECK1。
下面是0.8s的情况,响并显示号数并清R0,重新计
MOVR3,34H。
取回号数
MOVR5,#0BH
MOVR4,#0BH。
显示FF和号数
AJMPCHECK1
CHECK1:
JNBP3.1,QUIT1
AJMPHERE
QUIT1:
CLRRING
=====显示程序=====
DISPLAY:
MOVDPTR,#DAT1。
查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出,
MOVA,R3
MOVCA,@A+DPTR
MOVP2,#0feH
MOVP0,A
ACALLDELAY2
MOVDPTR,#DAT2
MOVA,R5
MOVCA,@A+DPTR
MOVP2,#0fdH
ACALLDELAY2
MOVA,R4
MOVP2,#0fbH
MOVP0,A
RET
DAT1:
DB00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
"
灭"
"
1"
2"
3"
4"
5"
6"
7"
8"
9"
F"
DAT2:
DB3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
第一个为零,其他与上相同,因为十位如果为零显示熄灭
====加减时间延时(起到不会按下就加N个数)======
DELAY1:
MOV35H,#08H
LOOP0:
DJNZ35H,LOOP0
=====延时4236个机器周期(去抖动用到)=====
DELAY:
MOV32H,#12H
LOOP:
MOV33H,#0AFH
LOOP1:
DJNZ33H,LOOP1
DJNZ32H,LOOP
=====延时4236个机器周期(显示用到)=====
DELAY2:
MOV32H,#43H
LOOP3:
MOV33H,#1EH
MOVA,R7。
每隔60~70个机器周期读一次P1口,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 抢答 单片机 课程 方案设计