ATC单片机课程设计抢答器设计_第1页
ATC单片机课程设计抢答器设计_第2页
ATC单片机课程设计抢答器设计_第3页
ATC单片机课程设计抢答器设计_第4页
ATC单片机课程设计抢答器设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一需求分析1.设计目的现如今电视节目日益丰富其中的竞赛环节也越来越多,其中智力抢答器是不可或缺的器材。在本学期学习了单片机这门课之后,我们小组成员觉得可以试着自己来实现抢答器的功能,令它能准确、公正、直观地判断出第一抢答者,并通过抢答器的数码管显示和蜂鸣器报警指出抢答组别。我们最终做出一种数字式抢答器的设计方案,通过Proteus设计完成,利用WAVE6000软件编辑程序,仿真验证,适用于多种竞赛场合。2.设计要求 设计一个用于智力竞赛的抢答器,其功能的实现是由单片机控制的,满足(1)能容许2-6组进行抢答。(2)能显示抢答组号。(3)各组记分,并能记分显示。(4)比赛结束时,能发出报警声。二

2、设计方案在设计中采用的单片机是AT89C51,它主要负责控制各个部分协调工作。P1.0和P1.7由裁判控制,分别是抢答开始和停止键。P1.1P1.6是6组抢答的输入口,按下对应按钮即为抢答。P0口为数码管的段选口,位选口用的是P2口的低4位,外部中断0。外部中断1,P3.3用于控制有组答题完成后结束计时。P3.4P3.5分别实现了分数的加一和减一。P3.6为蜂鸣器的控制口。外部中断和内部中断并存,单片机有硬件复位端,只要输入持续4个机器周期的高电平即可实现复位。外部还接有蜂鸣器用来发出报警音。采用7SEG-MPX4-CC-BLUE显示,它是共阴极的由高电平点亮。系统仿真用到了WAVE6000和

3、Proteus软件,通过仿真可以显示所设计系统的功能,对于程序的调试等有很大的帮助。三硬件设计1.电路原理图 图3.1 电路原理图2.总体设计电路图整个系统分为:外部振荡电路、复位电路、 加减分电路及蜂鸣器报警电路、 抢答电路及裁判控制开始停止电路、数码管显示电路几个部分本设计的核心是单片机AT89C51。 AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲

4、方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。振荡电路使用外部振荡电路,由两个1nF的电容和一个晶体振荡、外部振荡电路。 图3.2.1 晶振振荡电路外部中断和内部中断并存,单片机有硬件复位端,只要输入持续4个机器周期的高电平即可实现复位。硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值。因为本设计功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能用软复位。软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序开始。图3.2.2 复位

5、电路P3.3接口的开关按下意味着答题结束,P3.4接口开关表示给抢答相应组加上一分,P3.5接口开关按下表示相应组减去一分。裁判示意开始抢答、有组抢答成功、违规抢答、最后5s倒计时都会触发蜂鸣器发出警报。P3.6为蜂鸣器控制口。 图3.2.3 加减分电路及蜂鸣器报警电路P1.0和P1.7由裁判控制,分别是抢答开始和停止键。P1.1-P1.6是6组抢答的输入口,按下按钮抢答。 图3.2.4 抢答电路及裁判控制开始停止电路采用排阻RESPACK-8来做为上拉电阻,排阻一般应用在数字电路上,通常作为某个并行口的上拉或者下拉电阻用。排阻具有方向性,与色环电阻相比具有整齐、少占空间的优点,比用若干只固定

6、电阻更方便。图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 第二组违规抢答如图为第四组回答正确加一分 图3.2.10 第四组答题正确加一分如图为第四组回答错误减一分 图3.2.11 第四组答题错误减一分四程序框图图4.1

7、 程序流程图6 课程设计总结在这次课程设计中,我们运用到了以前所学的专业课知识,如:汇编语言、模拟和数字电路知识等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路; 要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在

8、设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。 发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。参考文献1 周立功.夏宇闻.单片机与CPLD综合应用技术M.北京:北京航空航天大学出版2 丁元杰.单片微机原理及应用M.北京:机械工业出版社.3 靳达编.单片机应用系统开发实

9、例导航M.北京:人民邮电出版社. 4 李光飞.单片机课程设计实例指导M.北京:北京航空航天大学出版社.5 胡宴如.高频电子线路M.北京:高等教育出版社. 6 白驹珩.雷晓平.单片计算机及其应用M.成都:电子科技大学出版社. 7 李广弟.单片机基础M.北京:北京航空航天大学出版社. 8 沈美明.温冬婵.IBM汇编语言程序设计M.北京:清华大学出版社.9 彭传正.林春景.凌阳单片机原理与实践M.北京:北京航空航天大学出版社.10 李荣正.陈学军.PIC单片机实践教程M.北京:北京航空航天大学出版社。致 谢此次竞赛抢答器课程设计我学到了很多知识,使我对单片机的认识以及Proteus软件的操作更加深刻

10、!在此次课程设计中,我在老师的精心指导和严格要求下,巩固了所学理论知识,极大地提高了实践动手能力,同时了解了许多单片机的一些基本知识,为我今后进一步学习计算机方面的知识打下了坚实的基础。在此,我衷心感谢申老师指导和支持。由于本次课程设计花了比较多的时间去找资料和同学们交流,就是通过问老师和同学才把课程设计做出来的。所以这次课程设计能够顺利的完成,当然有我个人的努力,但同时也离不开指导老师的答疑解惑,同时也让我明白了,别人帮助的重要性。有了大家的帮忙,才能事半功倍。而且在别人的身上可以学习到很多知识。在此我向老师表示感谢,谢谢老师的认真耐心的指导,让我对单片机这门课程上,有了很多的收获,把以前没

11、弄懂的部分,也弄懂了很多,谢谢老师!附 录 源程序清单 OK EQU 20H RING EQU 22H ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 0013H AJMP INT1SUB ORG 001BH AJMP T1INT ORG 0040HMAIN: MOV R1,#0FH MOV R2,#01EH MOV TMOD,#11H;设置未定时器/模式1 MOV TH0,#0F0H MOV TL0,#0FFH;越高发声频率越高,越尖 MOV TH1,#3CH MOV TL1,#0B0H;50ms为一次溢出中断 SETB EA SETB ET0 SE

12、TB ET1 SETB EX1;允许3个中断,T0/T1/INT0/INT1 CLR OK CLR RING SETB TR1 SETB TR0;开始就运行定时器,初始显示888如果想重新计数,重置TH1/TL1 ;=查询程序=START: MOV R5,#00H MOV R4,#00H MOV R3,#00H ACALL DISPLAY;未开始抢答时候显示888 JB P1.0,NEXT ACALL DELAY JB P1.0,NEXT;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询 ACALL BARK;按键发声 MOV A,R1 MOV R6,A;送R1-

13、>R6,因为R1中保存了抢答时间 SETB OK;抢答标志位,用于COUNT只程序中判断是否查询抢答 MOV R3,0AH;抢答只显示计时,灭号数 AJMP COUNT;进入倒计时程序,"查询有效抢答的程序"在COUNT里面NEXT:JNB P1.1,FALSE1 JNB P1.2,FALSE2 JNB P1.3,FALSE3 JNB P1.4,FALSE4 JNB P1.5,FALSE5 JNB P1.6,FALSE6 AJMP START;=非法抢答处理程序=FALSE1: ACALL BARK;按键发声 MOV R3,#01H AJMP ERRORFALSE2:

14、 ACALL BARK MOV R3,#02H AJMP ERRORFALSE3: ACALL BARK MOV R3,#03H AJMP ERRORFALSE4: ACALL BARK MOV R3,#04H AJMP ERRORFALSE5: ACALL BARK MOV R3,#05H AJMP ERRORFALSE6: ACALL BARK MOV R3,#06H AJMP ERROR;=INT1(答题对错加减分数程序)=INT1SUB:MOV R4,#0AH MOV R5,#0AH JNB P3.4,INC1 JNB P3.5,DEC1 JNB P1.7,BACK1 ACALL DI

15、SPLAY AJMP INT1SUB MOV A,R3 SUBB A,#01H JZ XXY1 SUBB A,#02H JZ XXY2 SUBB A,#03H JZ XXY3 SUBB A,#04H JZ XXY4 SUBB A,#05H JZ XXY5 SUBB A,#06H JZ XXY6 XXY1:MOV R7,41H XXY2:MOV R7,42H XXY3:MOV R7,43H XXY4:MOV R7,44H XXY5:MOV R7,45H XXY6:MOV R7,46H INC1:INC R7 CJNE R3,#01H,L1 MOV 51H,R7 L1:CJNE R3,#02H,L

16、2 MOV 52H,R7 L2:CJNE R3,#03H,L3 MOV 53H,R7 L3:CJNE R3,#04H,L4 MOV 54H,R7 L4:CJNE R3,#05H,L5 MOV 55H,R7 L5:CJNE R3,#06H,LL MOV 56H,R7 LL:ACALL DELAY1 AJMP INT1SUB DEC1:DEC R7 ACALL DELAY1 AJMP INT1SUB BACK1:RETI;=倒计时程序(抢答倒计时和回答倒计时都跳到改程序)= COUNT: MOV R0,#00H;重置定时器中断次数 MOV TH1,#3CH MOV TL1,#0B0H;重置定时器R

17、ECOUNT:MOV A,R6;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6 MOV B,#0AH DIV AB;除十分出个位/十位 MOV 30H,A;十位存于(30H) MOV 31H,B;个位存于(31H) MOV R5,30H;取十位 MOV R4,31H;取个位 MOV A,R6 SUBB A,#07H JNC LARGER;大于5s跳到LARGER,小于等于5s会提醒 MOV A,R0 CJNE A,#0AH,FULL;1s中0.5s向下运行 CLR RING AJMP CHECK FULL:CJNE A,#14H,CHECK;下面时1s的情况,报警,显示号数并清R0,

18、重新计数 SETB RING MOV A,R6 JZ QUIT;计时完毕 MOV R0,#00H DEC R6;一秒标志减1 AJMP CHECKLARGER: MOV A,R0 CJNE A,#14H,CHECK;如果1s向下运行,否者跳到查"停/显示" DEC R6;计时一秒R6自动减1 MOV R0,#00H CHECK: JNB P1.7,QUIT;如按下停止键退出 ACALL DISPLAY JB OK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用) AJMP RECOUNT ACCOUT:JNB P1.1,TRUE1

19、JNB P1.2,TRUE2 JNB P1.3,TRUE3 JNB P1.4,TRUE4 JNB P1.5,TRUE5 JNB P1.6,TRUE6 AJMP RECOUNT QUIT:CLR OK;如果按下了"停止键"执行的程序 CLR RING AJMP START;=正常抢答处理程序=TRUE1: ACALL BARK;按键发声 MOV A,R2 MOV R6,A;抢答时间R2送R6 MOV R3,#01H MOV R7,41H CLR OK;因为答题的计时不再查询抢答,所以就锁了抢答 AJMP COUNTTRUE2:ACALL BARK; MOV A,R2 MOV

20、R6,A MOV R3,#02H MOV R7,42H CLR OK AJMP COUNTTRUE3:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#03H MOV R7,43H CLR OK AJMP COUNTTRUE4:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#04H MOV R7,44H CLR OK AJMP COUNTTRUE5:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#05H MOV R7,45H CLR OK AJMP COUNTTRUE6:ACALL BARK; MOV A,R2

21、MOV R6,A MOV R3,#06H MOV R7,46H CLR OK AJMP COUNT;=犯规抢答程序=ERROR:MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3;犯规号数暂存与(34H)HERE: MOV A,R0 CJNE A,#0AH,FLASH;0.5s向下运行->灭并停响 CLR RING MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH;三灯全灭 AJMP CHECK1FLASH:CJNE A,#14H,CHECK1;下面系1s的情况,响并显示号数并清R0,重新计 SETB RING MOV

22、 R0,#00H MOV R3,34H;取回号数 MOV R5,#0BH MOV R4,#0BH;显示FF和号数 AJMP CHECK1CHECK1:JNB P1.7,QUIT1 ACALL DISPLAY AJMP HEREQUIT1: CLR RING CLR OK AJMP START;=显示程序=DISPLAY:MOV 41H,51H MOV 42H,52H MOV 43H,53H MOV 44H,54H MOV 45H,55H MOV 46H,56H MOV DPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出, MOV A,r5 MOVC A,A+DPTR MOV P2,#01H MOV P0,A ACALL DELAY MOV DPTR,#DAT2 MOV A,r4 MOVC A,A+DPTR MOV P2,#02H MOV P0,A ACALL DELAY MOV A,r3 MOVC A,A+DPTR MOV P2,#04H MOV P0,A ACALL DELAY MOV A,R7 MOVC A,A+DPTR MOV P2,#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论