《基于单片机的竞赛抢答器系统设计毕业设计(40页).doc》由会员分享,可在线阅读,更多相关《基于单片机的竞赛抢答器系统设计毕业设计(40页).doc(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于单片机的竞赛抢答器系统设计毕业设计-第 33 页毕业设计说明书基于单片机的竞赛抢答器系统设计专业自动化学生姓名班级B自动化学号091060指导教师完成日期毕业设计说明书(毕业论文)独创性声明本人声明所呈交的毕业设计说明书(毕业论文)是本人在导师指导下进行的研究、设计工作后独立完成的。除了文中特别加以标注和致谢的地方外,说明书中不包含其他人己经发表或撰写过的研究成果。对本文的研究所做贡献集体和个人,均己在说明书中作了明确的说明并表示谢意。本人完全意识到本声明的法律后果由本人承担。毕业设计说明书(毕业论文)作者签名(手写): 日期: 年 月 日指导教师签名(手写):日期: 年 月 日基于单片
2、机的竞赛抢答器系统设计摘 要:在现在的抢答比赛中需要高效准确的确定第一抢答者,那么一个功能完善的抢答器可以准确公正直观的确定第一抢答者,所以对于基于单片机的竞赛抢答器系统设计的研究是有重要意义的。设计需要了解数字电子技术、模拟电子技术,同时需要对单片机理论有相当的了解。目标是实现八路竞赛抢答器的设计。设计使用蜂鸣器报警、数码管显示、按钮输入,使用51系列单片机通过软件编程进行数据处理,从而实现八路抢答器的设计。硬件电路主要是进行模块化设计,最后连接成一个整体的硬件电路。软件设计是采用汇编语言编程。软件方面主要通过单片机的汇编程序进行数据的处理。抢答器的判定都是使用单片机进行处理的,从而杜绝了人
3、为的作弊。本次设计的系统能实现抢答器基本功能,同时有报警和倒计时功能。本次设计的实物体积比较小巧,同时成本比较低廉,维护起来非常方便系统实用性强、判断精确、操作简单、扩展功能强。由于目前小型比赛较多,价格低廉容易转移的抢答器会有较大的市场。关键词:八路抢答器;AT89C51;报警;计时Contest for microcontroller-based system designAbstract: In todays game first responder responder needs to determine the accurate and efficient, so a perfect
4、 function of the responder can determine the first answer accurately and fairly intuitive, so for the competition responder system design based on single chip microcomputer research has important significance. This design need to understand the digital electronic technology, analog electronic techno
5、logy, at the same time need to be knowledgeable of SCM theory. Goal is to realize the eight-way responder design competition. This design USES a buzzer alarm, digital tube display, buttons, input, using 51 series single-chip microcomputer by software programming for data processing, so as to realize
6、 eight-way responder design. Hardware circuit is mainly carries on the modular design, the hardware circuit connection into a whole. Software design is to use assembly language programming. Software mainly by MCU assembly program for data processing. Buzzer judgement is to use single chip microcompu
7、ter for processing, so as to put an end to cheating in the man-made. The basic function design of the system can realize the buzzer, alarm and count down function. This design in small physical volume, at the same time, the cost is low, it is very convenient to maintain the system, with strong pract
8、icality, judgment accuracy, simple operation, strong function. Cheap price, because of the small game is at present more easier to transfer the responder has the larger market.Key Words: Eightway responder; AT89C51; Alarm; Time目 录1 概 述11.1 选题背景及意义11.2 抢答器功能介绍12 系统硬件设计32.1 总体方案设计32.2 单片机介绍42.3 键盘扫描电路
9、62.4 报警电路72.5 显示电路83 系统程序设计103.1 主程序103.2 正常抢答123.3 犯规抢答133.4 显示程序143.5 报警程序143.6 抢答时间调整子程序144 系统仿真调试164.1 Keil uVision2软件调试164.2 Proteus仿真165 实物电路制作以及调试196 结束语21参 考 文 献22致 谢23附 录24附录1: 程序清单24附录2: 设计图纸33附录3: 元器件目录表361 概 述1.1 选题背景及意义现在我们进入了电脑时代,在这个时代个人计算机已经被大部分人所熟知,还有一类计算机大多数人并不熟悉,这就是微控制器,也就是俗称的单片机。这
10、种计算机现已经集成到了一个芯片上,一般都用来进行简单的运算和控制。虽然体积比较小,但是在整个装置中起到相当于人脑的作用。在现在的电子产品中一旦用到单片机就可以在产品前加上智能型三个字。在现在社会,我们需要选拔人才,评选优胜,各种各样的竞赛一场接着一场,尤其是在一些需要抢答的环节上,我们如果通过人力选择出抢答的人就会很耗时间。同时由于人得视野有限,反应有延迟,不能有效的区分到底是谁第一个抢到问题。同时选择时也存在一些主观的人为的因素,这就会造成比赛的不公平。而且选手和观众也会对结果有分歧,不利于比赛的氛围,这就迫切需要设计一个系统使选手和观众都称心如意,不会对结果产生分歧的系统。如果在抢答中,靠
11、视觉是很难判断出哪组先答题。怎样来设计抢答器,能使以上问题得以解决?无论差别多少时间,只要有时间差别就能分辨出来,那么也就必然离不开抢答器。现在抢答器越来越数字化,越来越智能化,这就会使抢答器的成本不断增加。而有些小规模的竞赛并不需要太过于花哨的功能,同时由于规模较小场地不固定,迫切需要低成本的同时功能完善的抢答器,所以小型抢答器会很有市场。目前市场上抢答器有可靠性低,使用的时间不长,维护比较麻烦等等不方便的因素,所以此次设计提成用AT89C51单片机为核心设计出一个可靠、容易维护的竞赛抢答器系统。本次设计通过蜂鸣器设计了一个报警模块,用来提示发生的事件。通过数码管显示出时间以及需要的选手的编
12、号。输入直接使用按钮模拟选手输入。再用单片机和其最小系统将各个模块联系起来形成一个完整的整体。本次设计的系统实用性强、判断精确、操作简单、扩展功能强。1.2 抢答器功能介绍本次设计的抢答器可以由8个人或代表队使用。在比赛开始前,主持人可以根据题目的难易进行时间上的设定,时间设定灵活多变,简单易用。同时会有抢答清除按钮用来清除显示和报警,以应对各种不同状况。同时会提示非法抢答,保证比赛公平公正。比赛开始,主持人读完题之后按下“开始键”,即抢答开始,蜂鸣器提示一次,定时器进行减计时,直到有一个选手按下抢答键,对应的会在数码管上显示出该选手的编号和回答剩余的时间,同时蜂鸣器也会发出一次提示音,以示有
13、人抢答本题。在30秒内无抢答键按下,时间耗尽后无法抢答。在最后5秒,若无抢答键按下,会进行报警,用以提示参赛选手。在倒计时过程中,主持人可以随时按“停止键”结束本次回答或者抢答。抢答器会锁存选手编号,并且在LED数码管上显示出来。同时该数字除了主持人按清除按钮之外无法被修改,即使有别的选手在这之后按下抢答按钮也不会改变结果。这样就可以保证公平第一的原则。同时第一抢答选手按下按钮时会有蜂鸣器发声提示。若主持人没有按下“开始”按钮,就有人非法抢答,那么数码管也会显示该位选手编号,编号除了清除按钮之外不会受别的影响,会一直保持,同时蜂鸣器会不断报警。在每次抢答时只要主持人按下清除复位按钮都会使系统清
14、零,数码管全部显示“F”。2 系统硬件设计2.1 总体方案设计方案一:抢答器系统采用中小规模集成电路,使用按钮作为开关,完成输入信号的触发。该方案不需要软件编程,只需要硬件电路不出错就可以实现需要的功能。但是电路结构复杂,不利于调试,成本较高,实际接线的时候会因导线连接混乱造成干扰和短路等故障,如图2-1。图2-1基于中小规模集成电路设计方案方案二:采用AT89C51作为系统控制器的方案。单片机可以通过编程实现各种不同的功能,同时经过多年发展越来越多的型号被制造出来满足大多数使用需求。在方案中用模块化设计思想,设计出各种所需要的模块,再通过单片机联系起来,从而形成一个整体,实现所需要的功能,如
15、图2-2。图2-2基于AT89C51作为系统控制器方案方案三:采用现场可编程门列阵(FPGA)。FPGA可以给出很多逻辑单元,可以将你想要的电路用硬件语言描述出来,许多的复杂功能都可以实现,比较灵活多变而且在时序方面比单片机要好,。但是本设计对数据处理的速度要求不高,FPGA高速优势无法体现,同时芯片引脚比较多,实物电路板布线复杂,加重实际焊接时的工作。基于以上分析,本次设计采用方案二。2.2 单片机介绍单片机最小系统。时钟电路如图2-3。图2-3 时钟电路AT89C51一个机器周期有12个振荡脉冲,及振荡脉冲的12分频。本设计使用的晶振频率是12MHZ,也就是说该系统的一个机器周期是1us。
16、电路中的瓷片电容可以帮助晶振起振同时可以微调晶振的频率。这就构成了单片机最小系统中的时钟系统。复位电路如图2-4。单片机复位很简单,只需要在复位的端口加上2个周期以上的高电平就可以了,复位后程序从开始重新执行。在RST上有持续的高电平,那么单片机就会一直处于复位的状态。复位一般分为上电复位、开关复位。芯片刚上电是会有一段时间的供电不稳,这时就会使单片机产生错误,为了解决这种问题我们可以通过添加一个电解电容和一个电阻解决这个问题,这就是上电复位保证单片机正确的正常启动。现在许多芯片增加延时功能,不过以防万一我们还是会增加上电复位,以保证单片机不会出错误。上电复位是如此工作的,此时不用考虑按键和图
17、中1K电阻的作用。给单片机供电时,电解电容相当于一段导线使得复位端口有了高电平,这时单片机就恢复位。不过电解电容在上电的时候就开始充电,直到它达到和电源电压相同时,由于电势相同,该段导线就相当于不在导通,单片机又正常工作手动复位时需要一个添加一个按钮。这是为了在发生程序错误时或者一些特殊情况时,可以不用关闭电源直接是单片机恢复到初始的状态。按钮的作用主要是让电解电容放电,这样电解电容又可以看成导线,复位端又会出现高电平,单片机复位,按钮松开电容又充电。此时单片机上电复位完毕,系统程序从0000H开始执行。图2-4 复位电路2.3 键盘扫描电路一般我们使用单片机时我们都会使用键盘作为数据的输入设
18、备。键盘由按钮组成,按钮实物图如图2-5。图2-5 按钮实物图方案一:采用矩阵式键盘。矩阵式键盘按键比较多可以适应大多数的场合,可以节约单片机的I/O。但是应为按键比较多,那么相应的连线就比较多比较复杂。同时按键过多使的在编程时会比较复杂。适用于需使用大量按键的场合。方案二:采用独立式键盘。独立式键盘每个键都需要一个I/O口,当按键过多时会造成I/O口紧张,但是在编程时独立式键盘有较大的优势。适用于所需按键较少的场合。因为,本设计I/O口线比较富余,所以采用方案二。给P1口编号1到8,作为选手抢答时的按键输入的链接引脚。因为选手按键一端接引脚一段接地,所以每当一个选手按下按钮时,就相当于在P1
19、口的某个引脚输入了一个低电平。这时单片机就会会进行相应的程序处理。选手抢答电路如图2-6。图2-6 选手抢答电路主持人控制的电路如图7所示。开始按键与单片机的10管脚连接,停止按键与11管脚连接。单片机通过读取P3.0和P3.1的端口值,来判断主持人是按下“开始”键还是“结束”键。P3.2到P3.6这4个端口对应调节时间的4个按钮。这四个按键用于主持人对回答时间和抢答时间的调整。2.4 报警电路单片机通过控制不同频率的矩形脉冲来控制蜂鸣器发声。报警电路如图2-7。图2-7 报警电路因为单片机的引脚电压不一定能驱动蜂鸣器,所以蜂鸣器在实际应用中需要加入驱动电路。驱动电路如图2-8。三极管可以用最
20、普通的9000系列的三极管,便宜且好买,常用低频小功率三极管9011:NPN、9012:PNP、9013:NPN、9014:NPN、9015:PNP、8550:PNP、8050:NPN。最常用的NPN型的管子是S9013,PNP的选S9012。本设计采用S9012。图2-8 蜂鸣器驱动电路2.5 显示电路8段数码管如图2-9所示。数码管的数字是由二极管组成的8字。可以通过点亮数码管来显示数字和一些特定的字符。数码管分为共阴和共阳2种。共阳极数码管想要点亮就需要将所有的公共端连接到一起,然后共阳的公共端接到5V电压上,在A到H的引脚上只要有一个低电平就可以是对应的数码管点亮。如果不想点亮某一段的
21、二极管,只要在A到H上对应的引脚上加上高电平就好。共阴极数码管想要点亮就需要将所有的公共端连接到一起,然后共阴的公共端接到地线上,在A到H的引脚上加上高电平就可以使对应的数码管点亮,不想点亮就加上低电平。图2-9 数码管表2-1共阴极数码管真值表输入数字abcdefgh111111000011000001110110102111100103011001104101101105101111106111000007111111108111101109方案一:采用数码管显示。数码管精确度能达到本设计的要求,对使用环境没有特别的要求,性价比也比较高。在程序设计上数码管的编译容易。方案二:采用液晶屏显示
22、。画面效果比数码管好,主要体现在可以显示多种符号,分辨率高可以看得面积比较大。但是资源占用比数码管多,同时成本比数码管高。因为,只需显示选手号码和时间,所以选用方案一。显示电路如图2-10。此电路包括显示和驱动,显示采用数码管,通过P0口控制数字的显示,驱动用P2口,数码管采用动态显示。数码管动态显示,驱动数码管的电平不断的发生改变,使数码管亮与灭轮流变化。一般芯片的引脚不一定能够驱动数码管亮灭,所以需要一个能驱动数码管的电源驱动数码管。为了简化电路,一般直接使用芯片的电源驱动数码管,但是数码管需要的电压较低直接使用会烧坏数码管。这时需要一个220V的电阻来降低电压使得数码管在正常使用的时候不
23、会被烧毁。图2-10数码管显示电路3 系统程序设计3.1 主程序任何控制系统开始正常工作前都必须要进行初始化,本设计抢答器正常工作时,对系统初始化,扫描P3.0口,判断是否有低电平,即开始按键是否按下。如果“开始”键没有被按下,那么在扫描选手键是否被按下。如果有选手按下,就是非法抢答需要使用非法抢答子程序。如果“开始”键按下后,选手键才被按下,那么就是正常抢答,此时就是执行正常抢答程序。本部分的程序主要就是初始设置,包括中断和相关的系统参数。中断在设计中需要考虑某个中断源是否允许,中断优先级和对于一些特殊的中断需要特定的设置。本设计的特殊的中断主要是定时/计数器和外部中断;首先需要确定定时/计
24、数器的功能,在使用前确定是定时模式。在设计中在确定了定时功能模式后,定时/计数器将有多种工作方式可供选择,本设计采用方式一。该工作方式下,定时初值没有重新装填的功能。定时的初始值存放在TH0、TH1、TL0和TL1中。定时/计数器还需要设定其启动方式,本文中采用软件启动方式。具体实现为:MOV TMOD, #11H ,定时/计数器的启动由定时/计数器控制寄存器TCON中的TR0和TR1的置位实现。外部中断不仅需要设置中断优先和中断允许还需要设置中断的触发方式。本文程序设计中采用边沿触发方式。通过定时/计数器控制寄存器TCON中的IT0和IT1确定。置位表示边沿触发方式。反之为电平触发方式。指令
25、的实现方法为: SETB IT0。只要有中断程序响应,系统就会自动的将程序指针的PC值调到对应的中断服务的入口地址之上。在51系列单片机中,中断服务程序会大于8个字节,而中断服务程序入口地址后只分配8字节的程序空间,故需使用跳转指令跳转至存储器空间中的适当位置。有中断被响应,现在正在执行的程序会被暂停,同时进行保护,然后去执行刚刚的中断程序。这时将涉及到断点保护和现场保护的问题。断点保护由单片机内部自动完成,不需要外界干预。但是,现场保护是通过PUSH和POP指令完成的,也就是说通过软件设置现场保护的。堆栈的深度也可以根据设计的实际情况重新设定。如果不进行设定,SP的值将为07H,堆栈深度为2
26、4B。大量的程序初始参数都需要在初始化的时候被设定,这样的话在程序运行的时候就可以方便的调用这些数据进行运算,这些数据的设定能直接影响程序的运行,需要小心设置。主程序流程图如下:图3-1主程序流程图3.2 正常抢答正常抢答是在“开始”按钮,被按下后进行的抢答。程序实现了第一抢答选手的编号的锁存功能。正常抢答流程图如下:图3-2正常抢答程序流程图3.3 犯规抢答在主持人未按下“开始”键时,为了保证比赛的公平,专门设计里对于非法抢答选手进行警告的程序。当非法抢答事件发生的时候,数码管显示多少号选手发生非法抢答,同时会跳到非法抢答子程序上。犯规抢答流程图如下:图3-3 犯规抢答程序流程图3.4 显示
27、程序数码管是采用共阴极的数码管,将数码管的公共端接到低电平上,在给数码管A到H脚接上一个高电平就可以是对应的二极管发亮。程序设置P0和P2口,完成数码管的数字显示和数码管位的选择。3.5 报警程序蜂鸣器通过P3.6发出控制信号来控制三极管导通和关断,从而使蜂鸣器发声。当RING标志位为1时候P3.6口不断取反使喇叭发出一定频率的声音。3.6 抢答时间调整子程序改抢答器的时间是可以通过按键在量程内自由修改的,再按下“抢答时间调整按钮”或者“回答时间调整按钮”后,数码管上会显示已经设定好的时间,如果不满意可以按下“加一”按钮进行时间上的加一。如果想减1S,按下“减一”键。LED显示装置会自动显示修
28、改后的抢答时间。时间只能在0到99之内调节,如果超过99,就会变成0。如果低于0就会变为99。回答时间的调整与此类似。抢答时间调整子程序流程图如下:图3-4 抢答时间调整程序流程图4 系统仿真调试4.1 Keil uVision2软件调试本设计由于是采用51系列单片机,因此使用使用Keil uVision2。C51在Keil uVision2中被充分使用。在Keil uVision2开发环境中,我们可以实现C51的编译、调试,生成单片机所需的文件。在Keil uVision2新建工程,选择Atmel中的89C51。新建文件以.asm结尾,并保存,将.asm文件添加入工程。首先对于用户的程序需要
29、进行检查,将所有的错误改正后才可以顺利的进行编程。在程序完全无错之后通过Keil uVision2中的工具将单片机执行文件生成出来。最后再点击编译就能生成.hex文件了。生成的HEX文件就是可用于单片机使用的文件。4.2 Proteus仿真Proteus软件是一款EDA工具软件,它由英国的一家公司出版。它与其他的EDA软件相比,不仅有软件仿真,还可以将单片机外围部件一起仿真。从目前情况看,它是最好的仿真软件。Proteus可以进行原理图绘制,代码的调试,整个电路图的仿真,还可以进行PCB的绘制工作。从概念性上的设想到实际的实物的设计都可以使用它。目前世界上唯一的将电路仿真、虚拟模型仿真和PCB
30、的设计结合在一起的软件。在Proteus中将原理图画好,然后将已经编译好的程序代码导入到原理图的芯片里面,从而使芯片可以运行,运行模拟仿真的功能就可以看到和实物差不多的功能演示。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。它可以替代相当一部分的传统上的单片机的教学任务,使人们不需要实物就可以得到直观的结果。本设计用到Proteus仿真软件。首先进行ISIS原理图设计将电路图根据设计要求在软件中准确地画出,我们的仿真也是完全基于ISIS原理图模块下进行的。再进行电气检查,确认电气接线无误。原理图如图4-1。单击源代码,单击添加/删除源文件,得到对话框,添加.HEX文件。选择全部编译。
31、然后将Keil uVision2生成的HEX文件导入到到该中原理图的芯片中。图4-1电气检查无误程序导入后的原理图文档建立好之后,按开始运行,执行仿真。下面是几组仿真图。图4-2 开始时显示FFF开始时,仿真显示的是”F”,这说明抢答器已经准备好可以进行下一步的工作在复位后、开始时、结束时都是这个状态。图4-3 启动开始键,倒计时图4-4 5号选手抢答图4-5 7号选手非法抢答主持人按下开始键后,开始显示倒计时,最初的倒计时设定为30S。在这之后有选手抢答,假设为5号,就会在数码管上显示抢答选手编号以及回答时间的倒计时,初始设定为60S。如果主持人没有按下开始键就有人抢答,就会显示非法抢答选手
32、编号,同时后2为数码管显示“F”。5 实物电路制作以及调试在焊接实物前需要检查下所购买的的元器件是否有损坏的情况,以防止在焊好之后发现损坏增加了额外的工作量。因为所买的按钮时4引脚的,需要用万用表检测出常开和常闭的引脚,防止接错后按钮无反应,一直处于导通状态。再用万用表检测数码管是否都能点亮。也可以在万用板上焊上USB接口,串联上220欧姆电阻,再引出一根导线,和接地端的导线和在一起就形成一个简易的测试数码管的设备。检测蜂鸣器能否发声。在检测完元件后,对照着原理图就可以焊接设备了。焊接时首先进行的是单片机最小系统的焊接,为了防止干扰将晶振贴近单片机。为了使电路看上去简单特地将瓷片电容放在单片机
33、的托架里面。同时复位部分的电阻电容也放在里面,复位按钮则放置在单片机外面。再将EA脚接到电源脚上。在焊接数码管,在焊接前需要将所有的脚代表的意义画出来。单片机连接到数码管上时需要考虑下连线的问题,因为连线会交叉在一起,所以需要好好考虑一下连线的先后顺序问题。第一次焊接的时候由于按钮的摆放位置没有考虑好,造成按钮连接地线时焊接比较麻烦。由于链接的导线比较复杂,同时导线为完全拉直造成一定的干扰,使得第一块板子没有达到预期效果。焊接第二块板子时,吸收以上教训将按钮位置调整了下,在连接底线时直接使用拨完皮的导线,围绕按钮直接连接到地线上。在元器件和连接的到导线都焊好后,就需要进行检查了。首先进行线路检
34、查,根据电路原理图,检查电路连线有没有接错,检查元器件是否能够使用,有需要时要时可用万用表检测线路通断情况。检查元件的引脚是否都焊好,防止短路、断路情况的发生。在这时可以使用万用表辅助检查,再将51单片机插入卡槽。然后,给单片机上电,首先要检测单片机的复位按钮是否有用。然后测试其第一管脚,如果有低电平输出说明电路连接正确。最后,进行按键检测,观察数码管有无变化,同时对蜂鸣器进行验证,是否正常发声。最后总体调试,看看设计是否符合预期的目标。最后完成的实物如图5-1、5-2所示。图5-1 实物正面元件排版图5-2 实物背面接线图6 结束语毕业设计是一次综合的实践过程。通过查阅书本资料,利用便利的网
35、络资源实现理论知识的准备工作。再和此次设计题目相结合将资料综合整理,选择出所需要的基础资料。在与以前学过的理论知识进行联系,加深理解,同时还锻炼了基础的电路焊接能力通过这次设计学会了汇编语言的编程,掌握使用Proteus进行仿真的方法。此次设计主要以硬件系统为基础,软件设计为核心,设计的抢答器基本能实现预期目标,具有实用,简单,成本低,易维护等优点。电子产品的好坏可以和硬件系统挂钩。我们选择硬件系统的时候要考虑硬件的性价比,在万能板上的布局,不仅要减少系统内的干扰还要减少系统外的干扰。软件设计有灵活多样,易移植等优点。软件的中断设计有助于CPU提高效率,减少对其的占用。延时的设计可以顺利实现显
36、示和蜂鸣器发声的功能,同时有利于提升系统的稳定性。软件的模块化设计方便移植、修改和增加可读性。本次设计已满足设计要求,能够满足8路抢答的要求,同时有蜂鸣器的报警、数码管的显示和倒计时功能。在后续设计中,可以使用矩阵式键盘扩大抢答选手的范围,可以添加加分减分模块,以提升用户体验。参 考 文 献1 贾海瀛. 数字电子技术与实训M. 北京:机械工业出版社, 2008.2 何立民. 单片机应用与设计M. 北京: 北京航天航空大学出版社, 1990.3 杨晓辉, 张彤, 蒋俊海. 智能抢答器的设计与制作J. 长春大学学报, 2000, (6): 24-25.4 康华光, 邹寿彬编. 电子技术基础数字部分
37、(第四版)M. 北京:高等教育出版社, 2005.5 史新鹏, 尹永一. 基于AT89S52单片机的数字时钟设计J. 电脑编程技巧与维护, 2012, (3): 22-24.6 康丽洁. 基于单片机的8路抢答器简单设计J. 信息系统工程, 2010, (2): 78-80.7 张友德. 单片机原理及应用M. 北京: 机械工业出版社, 2000.8 庞澜. 8051单片机在线升级升级软件的方法J. 单片机与嵌入式系统应用, 2005, (8): 71-73.9 张毅刚. 单片机原理及应用M. 北京: 高等教育出版社, 2003, 12.10 梁超. 一款基于单片机技术的电子抢答器J. 现代机械,
38、 2008, (8): 45-48.11 谢贵波. 80C51单片机的串行口通信原理及编程J. 电脑编程技巧与维护, 2010, (20): 36-38.12 李朝青. 单片机原理与接口技术M. 北京: 北京航天航空大学出版社, 1994.13 付晴晴, 吴爱萍. 基于FPGA的多路抢答器设计J. 信息系统工程, 2010, (15): 66-70.14 何立民. MCS-51系列单片机应用系统设计系统配置与接口技术M. 北京: 北京航空航天大学出版社, 1999.15 程相波, 卫安军. 基于MCS-51单片机的八路抢答器设计方法研究J. 北京工业职业技术学院学报, 2007, (2): 1
39、2-15.16 李雅轩. 模拟电子技术M. 西安: 西安电子科技大学出版社, 2006.17 阎石. 数字电子技术基础M. 北京: 高等教育出版社, 2011.5.18 康华光. 电子技术基础(数字部分)M. 高等教育出版社, 1999.19 李玉梅. 基于MCS-51系列单片机原理的应用设计M. 北京: 国防工业出版社, 2006.20 潘新民. 微型计算机控制技术M. 北京: 电子工业出版社, 2003.21 张光飞. 单片机课程设计实例指导M. 北京: 北京航天航空大学出版社, 2003.22 冯博琴. 微型计算机原理与接口技术M. 北京: 清华大学出版社, 2010.23 王为青. 单
40、片机Keil Cx51应用开发技术M. 北京: 人民邮电出版社, 2007.24 徐爱钧. Keil Cx51 V7.0单片机高级语言编程与Vision2应用实践M. 北京: 电子工业出版社, 2008.25 王文峰. 数码显示六路抢答器的设计J. 井冈山师范学院学报, 2000, (5): 20-21.26 张靖武. 单片机Proteus仿真M. 北京: 电子工业出版社, 2007.27 贺敬凯. 单片机系统设计、仿真与应用基于Keil和Proteus仿真平台M. 西安: 西安电子科技大学出版社, 2011.致 谢行文至此,我的这篇论文已接近尾声,在论文完成之际,我首先向关心帮助和指导我的林
41、老师表示衷心的感谢并致以崇高的敬意!岁月如梭,我四年的大学时光也即将敲响结束的钟声,回顾四年来的学习经历,面对现在的收获,我感到无限欣慰。为此,我向热心帮助过我的所有老师和同学表示由衷的感谢。在论文工作中,遇到了许许多多这样那样的问题,林老师不厌其烦的帮助我进行论文的修改和改进,使我的论文可以又快又好的完成,林老师以其渊博的学识、严谨的治学态度、求实的工作作风和他敏捷的思维给我留下了深刻的印象再一次向他表示衷心的感谢。由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正!最后,衷心地感谢在百忙之中评阅论文和参加答辩的各位专家、教授!附 录附录1: 程序清单OK EQU 2
42、0H;抢答开始标志位RING EQU 22H;响铃标志位ORG 0000HAJMP MAINORG 0003HAJMP INT00ORG 000BHAJMP T00ORG 0013HAJMP INT11ORG 001BHAJMP T11ORG 0040HMAIN:MOV R1,#30;设抢答时间30sMOV R2,#60;设答题时间60s MOV TMOD,#11H;设置定时器为模式1 MOV TH0,#0F0H MOV TL0,#0FFH MOV TH1,#3CH MOV TL1,#0B0H;50ms为一次溢出中断 SETB EASETB ET0 SETB ET1 SETB EX0 SETB
43、 EX1;允许四个中断T0/T1/INT0/INT1CLR OK CLR RING SETB TR1SETB TR0;一开始运行定时器,开始显示FFFLOOP:MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY;调用显示FFF子程序 JB P3.0,LOOP1;判断未开始答题,若有人按下抢答,跳到LOOP1非法抢答处理程序 ACALL DELAY JB P3.0,LOOP1;判断已开始答题,则向下执行 ACALL BARK;蜂鸣器响 MOV A,R1 MOV R6,A;将R1中30s送入R6 SETB OK;复位,用于COUNT中判断是否查询抢答
44、 MOV R7,#01H;读抢答键按下数,要求只读一次有用信号 MOV R3,#0AH;抢答时间指显示计时,不显示号数 AJMP COUNT;进入COUNT倒计时子程序,查询有效抢答程序LOOP1:JNB P1.0,FALSE1 JNB P1.1,FALSE2 JNB P1.2,FALSE3 JNB P1.3,FALSE4 JNB P1.4,FALSE5 JNB P1.5,FALSE6 JNB P1.6,FALSE7 JNB P1.7,FALSE8 AJMP LOOP;非法抢答查询程序,若没有跳回主程序FALSE1:MOV R3,#01H;1号选手违规 AJMP ERROR;跳转到ERROR非
45、法抢答处理程序FALSE2:MOV R3,#02H AJMP ERRORFALSE3:MOV R3,#03H AJMP ERRORFALSE4:MOV R3,#04H AJMP ERRORFALSE5:MOV R3,#05H AJMP ERRORFALSE6:MOV R3,#06H AJMP ERRORFALSE7:MOV R3,#07H AJMP ERRORFALSE8:MOV R3,#08H AJMP ERROR;=中断=INT00:MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY;在时间LED上显示抢答时间30s JNB P3.4,INC0 JNB P3.5,DEC0 JNB P3.1,BACK0 AJMP INT00INC0:MOV A,R1CJNE A,#63H,ADD0;如果不是99,则跳转到ADD0加1程序,否则往下执行,置0,重新加起 MOV R1,#00H ACALL DELAY AJMP INT00ADD0:INC R1 ACALL DELAY AJMP INT00DEC0:MOV A,R1 JZ SETT;如果R1中值为0,则跳到SETT程序,R1置99 DEC R1ACALL DELAYAJMP INT00SETT:MOV R1,#63H