AT89C51单片机课程设计抢答器设计Word格式文档下载.docx
- 文档编号:16659240
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:13
- 大小:21.25KB
AT89C51单片机课程设计抢答器设计Word格式文档下载.docx
《AT89C51单片机课程设计抢答器设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《AT89C51单片机课程设计抢答器设计Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
图3.2.2复位电路
P3.3接口的开关按下意味着答题结束,P3.4接口开关表示给抢答相应组加上一分,P3.5接口开关按下表示相应组减去一分。
裁判示意开始抢答、有组抢答成功、违规抢答、最后5s倒计时都会触发蜂鸣器发出警报。
P3.6为蜂鸣器控制口。
图3.2.3加减分电路及蜂鸣器报警电路
P1.1-P1.6是6组抢答的输入口,按下按钮抢答。
图3.2.4抢答电路及裁判控制开始停止电路
采用排阻RESPACK-8来做为上拉电阻,排阻一般应用在数字电路上,通常作为某个并行口的上拉或者下拉电阻用。
排阻具有方向性,与色环电阻相比具有整齐、少占空间的优点,比用若干只固定电阻更方便。
图3.2.5排阻RESPACK-8
数码管7SEG-MPX4-CC-BLUE,它是共阴极的数码管
图3.2.6抢答开始
允许抢答后,开始倒计时从15s直到0s。
在最后5s蜂鸣器会发出警报。
图3.2.7抢答倒计时
第四组抢答,答题时间有30s,在最后5s蜂鸣器会发出警报。
图3.2.8第四组答题及答题倒计时
若还没有允许抢答就有人按下抢答器,那么蜂鸣器会发出警报,并显示是哪一组违规抢答。
如图为第二组违规抢答
图3.2.9第二组违规抢答
如图为第四组回答正确加一分
图第四组答题正确加一分
如图为第四组回答错误减一分
图第四组答题错误减一分
四.程序框图
图4.1程序流程图
6.课程设计总结
在这次课程设计中,我们运用到了以前所学的专业课知识,如:
汇编语言、模拟和数字电路知识等。
虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。
后,要做好一个课程设计,就必须做到:
在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;
要有一个清晰的思路和一个完整的的软件流程图;
在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;
要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;
在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。
发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。
设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。
在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
参考文献
[1]周立功.夏宇闻.单片机与CPLD综合应用技术[M].北京:
北京航空航天大学出版
[2]丁元杰.单片微机原理及应用[M].北京:
机械工业出版社.
[3]靳达编.单片机应用系统开发实例导航[M].北京:
人民邮电出版社.
[4]李光飞.单片机课程设计实例指导[M].北京:
北京航空航天大学出版社.
[5]胡宴如.高频电子线路[M].北京:
高等教育出版社.
[6]白驹珩.雷晓平.单片计算机及其应用[M].成都:
电子科技大学出版社.
[7]李广弟.单片机基础[M].北京:
北京航空航天大学出版社.
[8]沈美明.温冬婵.IBM汇编语言程序设计[M].北京:
清华大学出版社.
[9]彭传正.林春景.凌阳单片机原理与实践[M].北京:
[10]李荣正.陈学军.PIC单片机实践教程[M].北京:
北京航空航天大学出版社。
致谢
此次竞赛抢答器课程设计我学到了很多知识,使我对单片机的认识以及Proteus软件的操作更加深刻!
在此次课程设计中,我在老师的精心指导和严格要求下,巩固了所学理论知识,极大地提高了实践动手能力,同时了解了许多单片机的一些基本知识,为我今后进一步学习计算机方面的知识打下了坚实的基础。
在此,我衷心感谢申老师指导和支持。
由于本次课程设计花了比较多的时间去找资料和同学们交流,就是通过问老师和同学才把课程设计做出来的。
所以这次课程设计能够顺利的完成,当然有我个人的努力,但同时也离不开指导老师的答疑解惑,同时也让我明白了,别人帮助的重要性。
有了大家的帮忙,才能事半功倍。
而且在别人的身上可以学习到很多知识。
在此我向老师表示感谢,谢谢老师的认真耐心的指导,让我对单片机这门课程上,有了很多的收获,把以前没弄懂的部分,也弄懂了很多,谢谢老师!
附录
源程序清单
OKEQU20H
RINGEQU22H
ORG0000H
AJMPMAIN
ORG000BH
AJMPT0INT
ORG0013H
AJMPINT1SUB
ORG001BH
AJMPT1INT
ORG0040H
MAIN:
MOVR1,#0FH
MOVR2,#01EH
MOVTMOD,#11H;
设置未定时器/模式1
MOVTH0,#0F0H
MOVTL0,#0FFH;
越高发声频率越高,越尖
MOVTH1,#3CH
MOVTL1,#0B0H;
50ms为一次溢出中断
SETBEA
SETBET0
SETBET1
SETBEX1;
允许3个中断,T0/T1/INT0/INT1
CLROK
CLRRING
SETBTR1
SETBTR0;
开始就运行定时器,初始显示888如果想重新计数,重置TH1/TL1
;
=====查询程序=====
START:
MOVR5,#00H
MOVR4,#00H
MOVR3,#00H
ACALLDISPLAY;
未开始抢答时候显示888
JBP1.0,NEXT
ACALLDELAY
JBP1.0,NEXT;
去抖动,如果"
开始键"
按下就向下执行,否者跳到非法抢答查询
ACALLBARK;
按键发声
MOVA,R1
MOVR6,A;
送R1->
R6,因为R1中保存了抢答时间
SETBOK;
抢答标志位,用于COUNT只程序中判断是否查询抢答
MOVR3,0AH;
抢答只显示计时,灭号数
AJMPCOUNT;
进入倒计时程序,"
查询有效抢答的程序"
在COUNT里面
NEXT:
JNBP1.1,FALSE1
JNBP1.2,FALSE2
JNBP1.3,FALSE3
JNBP1.4,FALSE4
JNBP1.5,FALSE5
JNBP1.6,FALSE6
AJMPSTART
;
=====非法抢答处理程序=====
FALSE1:
MOVR3,#01H
AJMPERROR
FALSE2:
ACALLBARK
MOVR3,#02H
FALSE3:
MOVR3,#03H
FALSE4:
MOVR3,#04H
FALSE5:
MOVR3,#05H
FALSE6:
MOVR3,#06H
=====INT1(答题对错加减分数程序)=====
INT1SUB:
MOVR4,#0AH
MOVR5,#0AH
JNBP3.4,INC1
JNBP3.5,DEC1
JNBP1.7,BACK1
ACALLDISPLAY
MOVA,R3
SUBBA,#01H
JZXXY1
SUBBA,#02H
JZXXY2
SUBBA,#03H
JZXXY3
SUBBA,#04H
JZXXY4
SUBBA,#05H
JZXXY5
SUBBA,#06H
JZXXY6
XXY1:
MOVR7,41H
XXY2:
MOVR7,42H
XXY3:
MOVR7,43H
XXY4:
MOVR7,44H
XXY5:
MOVR7,45H
XXY6:
MOVR7,46H
INC1:
INCR7
CJNER3,#01H,L1
MOV51H,R7
L1:
CJNER3,#02H,L2
MOV52H,R7
L2:
CJNER3,#03H,L3
MOV53H,R7
L3:
CJNER3,#04H,L4
MOV54H,R7
L4:
CJNER3,#05H,L5
MOV55H,R7
L5:
CJNER3,#06H,LL
MOV56H,R7
LL:
ACALLDELAY1
DEC1:
DECR7
ACALLDELAY1
BACK1:
RETI
=====倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=====
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向下运行
AJMPCHECK
FULL:
CJNEA,#14H,CHECK;
下面时1s的情况,报警,显示号数并清R0,重新计数
SETBRING
JZQUIT;
计时完毕
MOVR0,#00H
DECR6;
一秒标志减1
LARGER:
CJNEA,#14H,CHECK;
如果1s向下运行,否者跳到查"
停/显示"
计时一秒R6自动减1
CHECK:
JNBP1.7,QUIT;
如按下停止键退出
JBOK,ACCOUT;
如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)
AJMPRECOUNT
ACCOUT:
JNBP1.1,TRUE1
JNBP1.2,TRUE2
JNBP1.3,TRUE3
JNBP1.4,TRUE4
JNBP1.5,TRUE5
JNBP1.6,TRUE6
QUIT:
CLROK;
如果按下了"
停止键"
执行的程序
=====正常抢答处理程序=====
TRUE1:
MOVA,R2
抢答时间R2送R6
MOVR7,41H
CLROK;
因为答题的计时不再查询抢答,所以就锁了抢答
AJMPCOUNT
TRUE2:
ACALLBARK;
MOVR6,A
MOVR7,42H
TRUE3:
MOVR7,43H
TRUE4:
MOVR7,44H
TRUE5:
MOVR7,45H
TRUE6:
MOVR7,46H
=====犯规抢答程序=====
ERROR:
MOVR0,#00H
MOVTL1,#0B0H
MOV34H,R3;
犯规号数暂存与(34H)
HERE:
CJNEA,#0AH,FLASH;
0.5s向下运行->
灭并停响
MOVR3,#0AH
MOVR4,#0AH
MOVR5,#0AH;
三灯全灭
AJMPCHECK1
FLASH:
CJNEA,#14H,CHECK1;
下面系1s的情况,响并显示号数并清R0,重新计
MOVR3,34H;
取回号数
MOVR5,#0BH
MOVR4,#0BH;
显示FF和号数
CHECK1:
JNBP1.7,QUIT1
AJMPHERE
QUIT1:
=====显示程序=====
DISPLAY:
MOV41H,51H
MOV42H,52H
MOV43H,53H
MOV44H,54H
MOV45H,55H
MOV46H,56H
MOVDPTR,#DAT1;
查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出,
MOVA,r5
MOVCA,@A+DPTR
MOVP2,#01H
MOVP0,A
MOVDPTR,#DAT2
MOVA,r4
MOVP2,#02H
MOVA,r3
MOVP2,#04H
MOVA,R7
MOVP2,#08H
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
=====延时(显示和去抖动用到)=====
DELAY:
MOV32H,#12H
LOOP:
MOV33H,#0AFH
LOOP1:
DJNZ33H,LOOP1
DJNZ32H,LOOP
=====发声程序=====
BARK:
CLRRING;
=====TO溢出中断(响铃程序)=====
T0INT:
MOVTH0,#0ECH
MOVTL0,#0FFH
JNBRING,OUT;
CPLP3.6;
RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音
OUT:
RETI
=====T1溢出中断(计时程序)=====
T1INT:
INCR0
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AT89C51 单片机 课程设计 抢答 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)