基于某单片机的地抢答器设计Word格式文档下载.docx
《基于某单片机的地抢答器设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于某单片机的地抢答器设计Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
〔4〕比赛完毕时,能发出报警声。
2设计方案
—P1.6是6组抢答的输入口,按下对应按钮即为抢答。
P0口为数码管的段选口,位选口用的是P2口的低4位,外部中断0。
外部中断1,P3.3用于控制有组答题完成后完毕计时。
P3.4—P3.5分别实现了分数的加一和减一。
P3.6为蜂鸣器的控制口。
外部中断和内部中断并存,单片机有硬件复位端,只要输入持续4个机器周期的高电平即可实现复位。
外部还接有蜂鸣器用来发出报警音。
采用7SEG-MPX4-CC-BLUE显示,它是共阴极的由高电平点亮。
系统仿真用到了Proteus软件,通过仿真可以显示所设计系统的功能,对于程序的调试等有很大的帮助。
3硬件设计
3.1电路原理图
电路原理图如图3.1所示。
图3.1电路原理图
3.2总体设计电路图
整个系统分为:
外部振荡电路、复位电路、加减分电路与蜂鸣器报警电路、抢答电路与裁判控制开始停止电路、数码管显示电路几个局部。
本设计的核心是单片机AT89C51。
AT89C51提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器与时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口与中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
振荡电路使用外部振荡电路,由两个1nF的电容和一个晶体振荡、外部振荡电路。
硬件复位后的各状态可知存放器与存储器的值都恢复到了初始值。
因为本设计功能中有倒计时时间的记忆功能,所以不能对单片机进展硬件复位,只能用软复位。
软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序开始。
P3.3接口的开关按下意味着答题完毕,P3.4接口开关表示给抢答相应组加上一分,P3.5接口开关按下表示相应组减去一分。
裁判示意开始抢答、有组抢答成功、违规抢答、最后5s倒计时都会触发蜂鸣器发出警报。
P3.6为蜂鸣器控制口。
采用排阻RESPACK-8来做为上拉电阻,排阻一般应用在数字电路上,通常作为某个并行口的上拉或者下拉电阻用。
排阻具有方向性,与色环电阻相比具有整齐、少占空间的优点,比用假如干只固定电阻更方便。
数码管7SEG-MPX4-CC-BLUE,它是共阴极的数码管
数码管7SEG-MPX4-CC-BLUE
4仿真过程示意
4.1开始抢答
开始抢答时,数码管显示000。
图4.1开始抢答
4.2抢答倒计时
允许抢答后,开始倒计时从15s直到0s。
在最后5s蜂鸣器会发出警报。
图4.2抢答倒计时
4.3答题与答题倒计时
第四组抢答,答题时间有30s,在最后5s蜂鸣器会发出警报。
图4.3第四组答题与答题倒计时
4.4违规抢答
假如还没有允许抢答就有人按下抢答器,那么蜂鸣器会发出警报,并显示是哪一组违规抢答。
如图为第二组违规抢答。
图4.4第二组违规抢答
4.5答题正确加分
如图为第四组回答正确加一分
图4.5第四组答题正确加一分
4.6答题错误减分
如图为第四组回答错误减一分
图4.6第四组答题错误减一分
4.7抢答完毕
抢答完毕后电路复位,并记录各组抢答得分,待下次抢答得分累计。
5程序流程图
图5.1程序流程图
6课程设计总结
在这次课程设计中,我们运用到了以前所学的专业课知识,如:
汇编语言、模拟和数字电路知识等。
虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。
要做好一个课程设计,就必须做到:
在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;
要有一个清晰的思路和一个完整的的软件流程图;
在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改良是程序设计的必经之路;
要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;
在设计课程过程中遇到问题是很正某某,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计完毕了,但是从中学到的知识会让我受益终身。
发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。
设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。
在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够结实。
参考文献
[2]丁元杰.单片微机原理与应用[M].:
机械工业.
[3]靳达编.单片机应用系统开发实例导航[M].:
人民邮电.
[4]李光飞.单片机课程设计实例指导[M].:
航空航天大学.
[5]胡宴如.高频电子线路[M].:
高等教育.
[7]李广弟.单片机根底[M].:
航空航天大学.
附录:
源程序清单
OKEQU20H
RINGEQU22H
ORG0000H
AJMPMAIN
ORG000BH
AJMPT0INT
ORG0013H
AJMPINT1SUB
ORG001BH
AJMPT1INT
ORG0040H
MAIN:
MOVR1,#15;
设置抢答倒计时时间15s
MOVR2,#30;
设置答题倒计时时间30s
MOVTMOD,#11H;
设置未定时器/工作方式1〔16位计数器〕
MOVTH0,#0F0H;
MOVTL0,#0FFH;
越高发声频率越高,越尖(3.842ms)
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
P1.0,NEXT
ACALLDELAY
P1.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;
重置定时器中断次数
重置定时器(53ms)
RECOUNT:
MOVA,R6;
R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6
MOVB,#0AH
DIVAB;
除十分出个位/十位
MOV30H,A;
十位存于(30H)
MOV31H,B;
个位存于(31H)
MOVR5,30H;
取十位
MOVR4,31H;
取个位
MOVA,R6
SUBBA,#07H
JN