当前位置:文档之家› 单片机课程设计(完整版六路抢答器)

单片机课程设计(完整版六路抢答器)

学号 2010《单片机中级教程原理与应用》课程设计(2010届本科)题目:六路抢答器设计学院:物理与机电工程学院专业:电气程及其自动化作者姓名:指导教师:职称:副教授完成日期: 201 年12 月15 日摘要本设计是六路智力抢答器。

使用51系列单片机,编写应用程序来实现智力抢答功能。

硬件设计使用的是51系列单片机中的89C51。

硬件设计利用其中断控制程序进行抢答部分的处理,通过非门的控制去申请单片机内部的中断,以达到显示抢答的目的。

软件设计利用中断系统的基本构成原理编写中断服务程序,其信号由按键电路提供,由CPU响应中断,并输出响应。

用到了查询按键模块、定时器模块、显示时间模块、显示组号模块、报警模块等。

关键词:89C51 中断定时器报警电路等目录第1章绪论 (3)1.1 智能抢答器的发展现状 (3)1.2 抢答器的背景和特点 (3)第2章抢答器的系统概述 (3)2.1 六路抢答器设计功能要求 (3)2.2 抢答器设计方案 (4)第3章系统硬件电路设计 (4)3.1 系统电路图 (4)3.2 时钟频率电路的设计 (5)3.3 键盘扫描电路的设计 (5)3.4 显示电路的设计 (6)第4章系统软件设计 (7)4.1 程序流程图 (7)4.2 系统程序 (7)第5章仿真调试及性能分析 (8)5.1 仿真调试 (8)一、上电显示 (8)二、开始抢答倒计时显示 (8)三、正确抢答显示 (9)四、违规抢答显示 (9)5.2 性能分析 (10)第6章设计出现的问题及总结 (10)6.1 设计出现的问题 (10)6.2 总结 (10)附录 (13)第1章绪论1.1 智能抢答器的发展现状随着电子技术的发展,现在的抢答器功能越来越强,可靠性和准确性也越来越高。

能够实现抢答器功能的方式有多种,可以采用前期的模拟电路、数字电路或模拟与数字电路相结合的方式,但这种方式制作过程复杂,而且准确性与可靠性不高,成品面积大。

对于目前抢答器的功能描述,如涵盖抢答器、抢答限时、选手答题计时及犯规组号抢答器具有抢答自锁,灯光指示、暂停复位、电子音乐报声、自动定时等功能,还有工作模式的切换和时间设定,对于这些,随着科学技术的发展,肯定还要得到进一步的改进。

一般都要趋向于智能化。

1.2 抢答器的背景和特点在各类竞赛中,特别是做抢答题时,在抢答过程中,为了知道哪一组或哪一名选手先答题,必须要有一个系统来完成这个任务。

如果在抢答过程中,只靠人的视觉是很难判断出哪组先答题。

利用单片机来设计抢答器,使以上问题得以解决,即使有两组的抢答时间相差几微秒,也可分辨出哪组优先答题。

抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。

早期的抢大漆只由几个三极管、可控硅、发光管等组成,能通过发光管的指示辨认出选手号码。

现在大多数抢答器均使用单片机(如MCS-51型)和数字集成电路,并增加了许多新功能,如选手号码显示、抢按前或抢按后的计时、选手得分显示功能。

像这类抢答器,制作过程简单,准确性与可靠性高,而且安装维护简单。

对于抢答器的应用,如早期的数字电路,随着科技的逐步发展,进而到了单片机的控制来实现其功能,而且功能齐全,电路简单,成本低,性能高,真正朝着有利的方向发展。

第2章抢答器的系统概述2.1 六路抢答器设计功能要求1、基本要求(1)抢答器同时供6名选手或6个代表队比赛,分别用6个按钮S0 ~ S5表示。

(2)设置一个系统清除和抢答控制开关S,该开关由主持人控制。

(3)抢答器具有锁存与显示功能。

即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。

选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

(4)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。

当主持人启动"开始"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。

(5)参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

(6)如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示FF。

2.2 抢答器设计方案在设计中采用的单片机是AT89C51,它主要负责控制各个部分协调工作。

P1.0和P1.7由裁判控制,分别是抢答开始和停止键。

P1.1—P1.6是6组抢答的输入口,按下对应按钮即为抢答。

P0口为数码管的段选口,位选口用的是P2口的低4位。

P3.6为蜂鸣器的控制口。

外部还接有蜂鸣器用来发出报警音。

采用7SEG-MPX4-CA-BLUE显示,它是共阴极的由高电平点亮。

系统仿真用到了Proteus7.10软件,通过仿真可以显示所设计系统的功能,对于程序的调试等有很大的帮助。

第3章系统硬件电路设计3.1 系统电路图如图3-1,P1.0为开始抢答,P1.7为停止,P1.1-P1.6为六路抢答输入,数码管段选P0口,位选P2口低3位,蜂鸣器输出为P3.6口。

图3-1 系统电路原理图3.2 时钟频率电路的设计单片机必须在时钟的驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。

图3-2晶振电路的设计3.3 键盘扫描电路的设计P1.0和P1.7由裁判控制,分别是抢答开始和停止键。

P1.1-P1.6是6组抢答的输入口,按下按钮抢答。

图3-3 点键盘扫描电路3.4 显示电路的设计采用7个电阻做为上拉电阻,数码管7SEG-MPX4-CA-BLUE,它是共阴极的数码管。

采用74LS04单输入非门。

图3-4 显示电路的设计第4章系统软件设计软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计基本定型后,也就基本上决定下来了。

4.1 程序流程图图4-1 程序流程图4.2 系统程序在本设计中包括了以下六个主要的程序:主程序、非法抢答程序、倒计时程序、正常抢答处理程序、犯规处理程序、显示及发声程序。

P1.0为开始抢答,P1.7为停止,p1.1-p1.6为六路抢答输入数码管段选P0口,位选P2口,蜂鸣器输出为P3.6口。

注:源程序代码见附页第5章仿真调试及性能分析5.1 仿真调试一、上电显示图5-1 上电显示图当上电时,数码显示管显示“FFF”,其中,左边两个数码管显示时间,最后一个显示抢答选手的编号。

二、开始抢答倒计时显示图5-3 开始抢答倒计时显示当主持人按下“开始”按钮后,定时器开始48s倒计时,各选手要在48s中完成抢答,当倒计时剩余5s时,若还无人抢答,蜂鸣器就会发出声响进行提示。

若无人抢答,此轮抢答结束,显示器显示“FFF”。

三、正确抢答显示图5-3 正确抢答显示如图,当主持人按下“开始”按钮后,五号选手抢答成功,并开始答题倒计时,要求选手在限定时间内作答。

当倒计时剩余5s时,蜂鸣器开始发出声响,当倒计时完成时,显示器显示“FFF”。

四、违规抢答显示图5-4 违规抢答显示当主持人还未按下“开始”按钮,选手就按下了抢答键,就会出现如上图所示情况,并且蜂鸣器会一直发出警报,直到按下结束“按钮”。

5.2 性能分析(1)具有清零装置和抢答控制,可由主持人操纵避免有人在主持人说“开始”前提前抢答违反规则。

(2)具有定时功能,在48秒内无人抢答表示所有参赛选手获参赛队对本题弃权。

(3)48秒时仍无人抢答其报警电路工作表示抢答时间耗尽并禁止抢答。

(5)主持人按"抢答开始"键,会有提示音,并立刻进入抢答倒计时(预设48s 抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设69s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。

倒数时间到小于5s会每秒响一下提示音。

(6)如倒计时期间,主持人想停止倒计时可以随时按"停止"按键,系统会自动进入准备状态,等待主持人按"抢答开始"进入下次抢答计时。

(7)如果主持人未按"抢答开始"键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下"停止" 键为止。

第6章设计出现的问题及总结6.1 设计出现的问题在本次课程设计过程中,出现了许许多多的问题,主要包括在程序的编写及调试、仿真及调试和设计本身的不足,如查询模块、延时模块的程序编写。

此次所设计的抢答器可实现基本的操作功能,可是还存在许多不足之处,如当抢答时,如果前一位选手抢答错误而继续抢答时,前一个选手的号码不能自动被清除;还有就是不能调整抢答计时时间等等。

6.2 总结通过此次单片机设计实习,把自己在学校学到的知识转化为实验成果,积累了一定的经验,提高了分析问题和解决问题的实际能力。

我体会到课程设计的各个环节,不是孤立的,每个环节都是必不可少的。

在该课程设计的过程中,我深刻体会到了计算机研究工作的艰辛。

自己觉得理论上可行的方法,在实验的过程中却不一定行得通。

经过了一次又一次地修改程序和检查电路,终于完成了自己的课程设计。

虽然它有许多的不完善,可我却有一种无法言表的喜悦与成就感。

我明白了课程设计的过程,就是不断地改进与完善的过程。

在开发设计过程中,由于知识有限,经验不足,课程设计时间短,难免有很多的不足,敬请老师指教,以待日后加以改进。

参考文献[1]单片机中级教程原理及应用(第2版),张俊谟,北京航空航天大学出版社,2006[2]Proteus在MCS-51系统中的应用百例,周润景、袁伟亭、景晓松,电子工业出版社,2006[3]单片机系统设计与实例指导,冯育长,西安电子科技大学出版社,2007附录:源程序代码OK EQU 20H; 抢答开始标志位RING EQU 22H; 响铃标志位ORG 0000HAJMP MAINORG 000BHAJMP T0INTORG 001BHAJMP T1INTORG 0040HMAIN: MOV R1,#30H; 初设抢答时间MOV R2,#45H; 初设答题时间MOV TMOD,#11H; 设置未定时器/模式1MOV TH0,#0F0HMOV TL0,#0FFH; 越高发声频率越高,越尖MOV TH1,#3CHMOV TL1,#0B0H; 50ms为一次溢出中断SETB EASETB ET0SETB ET1CLR OKCLR RINGSETB TR1SETB TR0; 一开始就运行定时器,以开始显示FFF.START: MOV R5,#0BHMOV R4,#0BHMOV R3,#0BHACALL DISPLAY; 未开始抢答时候显示FFFJB P1.0,NEXTACALL DELAYJB P1.0,NEXT; 去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询ACALL BARK; 按键发声MOV A,R1MOV R6,A; 送R1-R6,因为R1中保存了抢答时间SETB OK; 抢答标志位,用于COUNT只程序中判断是否查询抢答MOV R3,0AH; 抢答只显示计时,灭号数AJMP COUNT; 进入倒计时程序,"查询有效抢答的程序"在COUNT里面NEXT: JNB P1.1,FALSE1JNB P1.2,FALSE2JNB P1.3,FALSE3JNB P1.4,FALSE4JNB P1.5,FALSE5JNB P1.6,FALSE6AJMP STARTFALSE1: ACALL BARK; 按键发声MOV R3,#01HAJMP ERRORFALSE2: ACALL BARKMOV R3,#02HAJMP ERRORFALSE3: ACALL BARKMOV R3,#03HAJMP ERRORFALSE4: ACALL BARKMOV R3,#04HAJMP ERRORFALSE5: ACALL BARKMOV R3,#05HAJMP ERRORFALSE6: ACALL BARKMOV R3,#06HAJMP ERRORCOUNT: MOV R0,#00H; 重置定时器中断次数MOV TH1,#3CHMOV TL1,#0B0H; 重置定时器RECOUNT: MOV A,R6; R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6 MOV B,#0AHDIV AB; 除十分出个位/十位MOV 30H,A; 十位存于(30H)MOV 31H,B; 个位存于(31H)MOV R5,30H; 取十位MOV R4,31H; 取个位MOV A,R6SUBB A,#07HJNC LARGERMOV A,R0CJNE A,#0AH,FULL; 1s中0.5s向下运行CLR RINGAJMP CHECKFULL: CJNE A,#14H,CHECK; 下面系1s的情况,响并显示号数并清R0,重新计时SETB RINGMOV A,R6JZ QUIT; 计时完毕MOV R0,#00HDEC R6; 一秒标志减1AJMP CHECKLARGER: MOV A,R0CJNE A,#14H,CHECK; 如果1s向下运行,否者跳到查"停/显示"DEC R6; 计时一秒R6自动减1MOV R0,#00HCHECK: JNB P1.7,QUIT; 如按下停止键退出ACALL DISPLAYJB OK,ACCOUT; 如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数AJMP RECOUNTACCOUT: JNB P1.1,TRUE1JNB P1.2,TRUE2JNB P1.3,TRUE3JNB P1.4,TRUE4JNB P1.5,TRUE5JNB P1.6,TRUE6AJMP RECOUNTQUIT: CLR OK; 如果按下了"停止键"执行的程序CLR RINGAJMP STARTTRUE1: ACALL BARK; 按键发声MOV A,R2MOV R6,A; 抢答时间R2送R6MOV R3,#01HCLR OK; 因为答题的计时不再查询抢答,所以就锁了抢答AJMP COUNTTRUE2:ACALL BARK;MOV A,R2MOV R6,AMOV R3,#02HCLR OKAJMP COUNTTRUE3:ACALL BARK;MOV A,R2MOV R6,AMOV R3,#03HCLR OKAJMP COUNTTRUE4:ACALL BARK;MOV A,R2MOV R6,AMOV R3,#04HCLR OKAJMP COUNTTRUE5: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#05HCLR OKAJMP COUNTTRUE6: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#06HCLR OKAJMP COUNTERROR: MOV R0,#00HMOV TH1,#3CHMOV TL1,#0B0HMOV 34H,R3; 犯规号数暂存与(34H)HERE: MOV A,R0CJNE A,#0AH,FLASH; 0.5s向下运行->灭并停响CLR RINGMOV R3,#0AHMOV R4,#0AHMOV R5,#0AH; 三灯全灭AJMP CHECK1FLASH: CJNE A,#14H,CHECK1; 下面系1s的情况,响并显示号数并清R0,重新计SETB RINGMOV R0,#00HMOV R3,34H; 取回号数MOV R5,#0BHMOV R4,#0BH; 显示FF和号数AJMP CHECK1CHECK1: JNB P1.7,QUIT1ACALL DISPLAYAJMP HEREQUIT1: CLR RINGCLR OKAJMP STARTDISPLAY:MOV DPTR,#DAT1; 查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出MOV A,R5MOVC A,@A+DPTRMOV P2,#01HMOV P0,AACALL DELAYMOV DPTR,#DA T2MOV A,R4MOVC A,@A+DPTRMOV P2,#02HMOV P0,AACALL DELAYMOV A,R3MOVC A,@A+DPTRMOV P2,#04HMOV P0,AACALL DELAYRETDA T1: DB 00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H ;"灭","1","2","3","4","5","6","7","8","9","灭","F"DA T2: DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;第一个为零,其他与上相同,因为十位如果为零显示熄灭DELAY1: MOV 35H,#08HLOOP0: ACALL DISPLAYDJNZ 35H,LOOP0RETDELAY: MOV 32H,#12HLOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1DJNZ 32H,LOOPRETBARK: SETB RINGACALL DELAY1ACALL DELAY1CLR RING; 按键发声RETT0INT: MOV TH0,#0ECHMOV TL0,#0FFHJNB RING,OUTCPL P3.6 ; RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音OUT: RETIT1INT: MOV TH1,#3CHMOV TL1,#0B0HINC R0RETIEND单片机课程设成绩评定表。

相关主题