1一.需求分析1.设计目的现如今电视节目日益丰富其中的竞赛环节也越来越多,其中智力抢答器是不可或缺的器材。在本学期学习了单片机这门课之后,我们小组成员觉得可以试着自己来实现抢答器的功能,令它能准确、公正、直观地判断出第一抢答者,并通过抢答器的数码管显示和蜂鸣器报警指出抢答组别。我们最终做出一种数字式抢答器的设计方案,通过Proteus设计完成,利用WAVE6000软件编辑程序,仿真验证,适用于多种竞赛场合。2.设计要求设计一个用于智力竞赛的抢答器,其功能的实现是由单片机控制的,满足(1)能容许2-6组进行抢答。(2)能显示抢答组号。(3)各组记分,并能记分显示。(4)比赛结束时,能发出报警声。二.设计方案在设计中采用的单片机是AT89C51,它主要负责控制各个部分协调工作。P1.0和P1.7由裁判控制,分别是抢答开始和停止键。P1.1—P1.6是6组抢答的输入口,按下对应按钮即为抢答。P0口为数码管的段选口,位选口用的是P2口的低4位,外部中断0。外部中断1,P3.3用于控制有组答题完成后结束计时。P3.4—P3.5分别实现了分数的加一和减一。P3.6为蜂鸣器的控制口。外部中断和内部中断并存,单片机有硬件复位端,只要输入持续4个机器周期的高电平即可实现复位。外部还接有蜂鸣器用来发出报警音。采用7SEG-MPX4-CC-BLUE显示,它是共阴极的由高电平点亮。系统仿真用到了WAVE6000和Proteus软件,通过仿真可以显示所设计系统的功能,对于程序的调试等有很大的帮助。2三.硬件设计1.电路原理图XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51PROGRAM=ssss.HEXX1CRYSTALC11nFC21nF+5vC31nFR11k234567891RP1RESPACK-8+5v+5vLS1SPEAKER图3.1电路原理图2.总体设计电路图整个系统分为:外部振荡电路、复位电路、加减分电路及蜂鸣器报警电路、抢答电路及裁判控制开始停止电路、数码管显示电路几个部分本设计的核心是单片机AT89C51。AT89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。振荡电路使用外部振荡电路,由两个1nF的电容和一个晶体振荡、外部振荡电路。3图3.2.1晶振振荡电路外部中断和内部中断并存,单片机有硬件复位端,只要输入持续4个机器周期的高电平即可实现复位。硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值。因为本设计功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能用软复位。软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序开始。图3.2.2复位电路P3.3接口的开关按下意味着答题结束,P3.4接口开关表示给抢答相应组加上一分,P3.5接口开关按下表示相应组减去一分。裁判示意开始抢答、有组抢答成功、违规抢答、最后5s倒计时都会触发蜂鸣器发出警报。P3.6为蜂鸣器控制口。4图3.2.3加减分电路及蜂鸣器报警电路P1.0和P1.7由裁判控制,分别是抢答开始和停止键。P1.1-P1.6是6组抢答的输入口,按下按钮抢答。图3.2.4抢答电路及裁判控制开始停止电路采用排阻RESPACK-8来做为上拉电阻,排阻一般应用在数字电路上,通常作为某个并行口的上拉或者下拉电阻用。排阻具有方向性,与色环电阻相比具有整齐、少占空间的优点,比用若干只固定电阻更方便。5图3.2.5排阻RESPACK-8数码管7SEG-MPX4-CC-BLUE,它是共阴极的数码管图3.2.6抢答开始允许抢答后,开始倒计时从15s直到0s。在最后5s蜂鸣器会发出警报。图3.2.7抢答倒计时第四组抢答,答题时间有30s,在最后5s蜂鸣器会发出警报。6图3.2.8第四组答题及答题倒计时若还没有允许抢答就有人按下抢答器,那么蜂鸣器会发出警报,并显示是哪一组违规抢答。如图为第二组违规抢答图3.2.9第二组违规抢答如图为第四组回答正确加一分图3.2.10第四组答题正确加一分如图为第四组回答错误减一分图3.2.11第四组答题错误减一分7四.程序框图图4.1程序流程图8六.课程设计总结在这次课程设计中,我们运用到了以前所学的专业课知识,如:汇编语言、模拟和数字电路知识等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。9参考文献[1]周立功.夏宇闻.单片机与CPLD综合应用技术[M].北京:北京航空航天大学出版[2]丁元杰.单片微机原理及应用[M].北京:机械工业出版社.[3]靳达编.单片机应用系统开发实例导航[M].北京:人民邮电出版社.[4]李光飞.单片机课程设计实例指导[M].北京:北京航空航天大学出版社.[5]胡宴如.高频电子线路[M].北京:高等教育出版社.[6]白驹珩.雷晓平.单片计算机及其应用[M].成都:电子科技大学出版社.[7]李广弟.单片机基础[M].北京:北京航空航天大学出版社.[8]沈美明.温冬婵.IBM汇编语言程序设计[M].北京:清华大学出版社.[9]彭传正.林春景.凌阳单片机原理与实践[M].北京:北京航空航天大学出版社.[10]李荣正.陈学军.PIC单片机实践教程[M].北京:北京航空航天大学出版社。10致谢此次竞赛抢答器课程设计我学到了很多知识,使我对单片机的认识以及Proteus软件的操作更加深刻!在此次课程设计中,我在老师的精心指导和严格要求下,巩固了所学理论知识,极大地提高了实践动手能力,同时了解了许多单片机的一些基本知识,为我今后进一步学习计算机方面的知识打下了坚实的基础。在此,我衷心感谢申老师指导和支持。由于本次课程设计花了比较多的时间去找资料和同学们交流,就是通过问老师和同学才把课程设计做出来的。所以这次课程设计能够顺利的完成,当然有我个人的努力,但同时也离不开指导老师的答疑解惑,同时也让我明白了,别人帮助的重要性。有了大家的帮忙,才能事半功倍。而且在别人的身上可以学习到很多知识。在此我向老师表示感谢,谢谢老师的认真耐心的指导,让我对单片机这门课程上,有了很多的收获,把以前没弄懂的部分,也弄懂了很多,谢谢老师!11附录源程序清单OKEQU20HRINGEQU22HORG0000HAJMPMAINORG000BHAJMPT0INTORG0013HAJMPINT1SUBORG001BHAJMPT1INTORG0040HMAIN:MOVR1,#0FHMOVR2,#01EHMOVTMOD,#11H;设置未定时器/模式1MOVTH0,#0F0HMOVTL0,#0FFH;越高发声频率越高,越尖MOVTH1,#3CHMOVTL1,#0B0H;50ms为一次溢出中断SETBEASETBET0SETBET1SETBEX1;允许3个中断,T0/T1/INT0/INT1CLROKCLRRINGSETBTR1SETBTR0;开始就运行定时器,初始显示888如果想重新计数,重置TH1/TL1;=====查询程序=====12START:MOVR5,#00HMOVR4,#00HMOVR3,#00HACALLDISPLAY;未开始抢答时候显示888JBP1.0,NEXTACALLDELAYJBP1.0,NEXT;去抖动,如果开始键按下就向下执行,否者跳到非法抢答查询ACALLBARK;按键发声MOVA,R1MOVR6,A;送R1-R6,因为R1中保存了抢答时间SETBOK;抢答标志位,用于COUNT只程序中判断是否查询抢答MOVR3,0AH;抢答只显示计时,灭号数AJMPCOUNT;进入倒计时程序,查询有效抢答的程序在COUNT里面NEXT:JNBP1.1,FALSE1JNBP1.2,FALSE2JNBP1.3,FALSE3JNBP1.4,FALSE4JNBP1.5,FALSE5JNBP1.6,FALSE6AJMPSTART;=====非法抢答处理程序=====FALSE1:ACALLBARK;按键发声MOVR3,#01HAJMPERRORFALSE2:ACALLBARKMOVR3,#02HAJMPERRORFALSE3:ACALLBARKMOVR3,#03H13AJMPERRORFALSE4:ACALLBARKMOVR3,#04HAJMPERRORFALSE5:ACALLBARKMOVR3,#05HAJMPERRORFALSE6:ACALLBARKMOVR3,#06HAJMPERROR;=====INT1(答题对错加减分数程序)=====INT1SUB:MOVR4,#0AHMOVR5,#0AHJNBP3.4,INC1JNBP3.5,DEC1JNBP1.7,BACK1ACALLDISPLAYAJMPINT1SUBMOVA,R3SUBBA,#01HJZXXY1SUBBA,#02HJZXXY2SUBBA,#03HJZXXY3SUBBA,#04HJZXXY4SUBBA,#05HJZXXY5SUBBA,#06HJZXXY614XXY1:MOVR7,41HXXY2:MOVR7,42HXXY3:MOVR7,43HXXY4:MOVR7,44HXXY5:MOVR7,45HXXY6:MOVR7,46HINC1:INCR7CJNER3,#01H,L1MOV51H,R7L1:CJNER3,#02H,L2MOV52H,R7L2:CJNER3,#03H,L3MOV53H,R7L3:CJNER3,#04H,L4MOV54H,R7L4:CJNER3,#05H,L5MOV55H,R7L5:CJNER3,#06H,LLMOV56H,R7LL:ACALLDELAY1AJMPINT1SUBDEC1:DECR7ACALLDELAY1AJMPINT1SUBBACK1:RETI;=====倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=====COUNT:MOVR0,#00H;重置定时器中断次数MOVTH1,#3CHMOVTL1,#0B0H;重置定时器RECOUN