AT89C51单片机课程设计抢答器设计.doc

上传人:scccc 文档编号:12397446 上传时间:2021-12-03 格式:DOC 页数:20 大小:231.50KB
返回 下载 相关 举报
AT89C51单片机课程设计抢答器设计.doc_第1页
第1页 / 共20页
AT89C51单片机课程设计抢答器设计.doc_第2页
第2页 / 共20页
AT89C51单片机课程设计抢答器设计.doc_第3页
第3页 / 共20页
AT89C51单片机课程设计抢答器设计.doc_第4页
第4页 / 共20页
AT89C51单片机课程设计抢答器设计.doc_第5页
第5页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《AT89C51单片机课程设计抢答器设计.doc》由会员分享,可在线阅读,更多相关《AT89C51单片机课程设计抢答器设计.doc(20页珍藏版)》请在三一文库上搜索。

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+D

23、PTR 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,#08H MOV P0,A ACALL DELAY RET DAT1:DB 00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H ;"灭","

24、;1","2","3","4","5","6","7","8","9","灭","F" DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H ;第一个为零,其他与上相同,因为十位如果为零显示熄灭;=加减时间延时(起到不会按下就加N个数)=DELAY1: MOV 35H,#08HLOOP0: ACALL DISPLAY DJNZ 3

25、5H,LOOP0 RET;=延时(显示和去抖动用到)=DELAY: MOV 32H,#12HLOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1 DJNZ 32H,LOOP RET;=发声程序=BARK: SETB RING ACALL DELAY1 ACALL DELAY1 CLR RING;按键发声 RET;=TO溢出中断(响铃程序)=T0INT: MOV TH0,#0ECH MOV TL0,#0FFH JNB RING,OUT; CPL P3.6;RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音OUT: RETI;=T1溢出中断(计时程序)=T1INT: MOV TH1,#3CH MOV TL1,#0B0H INC R0 RETI END20 / 20文档可自由编辑打印

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1