毕业设计(论文)-基于单片机的八路抢答器设计.doc

上传人:哈尼dd 文档编号:3283768 上传时间:2019-08-08 格式:DOC 页数:29 大小:246.52KB
返回 下载 相关 举报
毕业设计(论文)-基于单片机的八路抢答器设计.doc_第1页
第1页 / 共29页
毕业设计(论文)-基于单片机的八路抢答器设计.doc_第2页
第2页 / 共29页
毕业设计(论文)-基于单片机的八路抢答器设计.doc_第3页
第3页 / 共29页
毕业设计(论文)-基于单片机的八路抢答器设计.doc_第4页
第4页 / 共29页
毕业设计(论文)-基于单片机的八路抢答器设计.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《毕业设计(论文)-基于单片机的八路抢答器设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于单片机的八路抢答器设计.doc(29页珍藏版)》请在三一文库上搜索。

1、廊坊师范学院本科生毕业论文摘 要很多人都抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。 本设计是以八路抢答为基本理念。考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。关键词: 单片机;抢答器

2、; AT89C51 AbstractMany people are scare-answering device as a tool, has been widely applied in all kinds of intelligence and knowledge competition situation. But vies to implement use frequency is quite low, and some either make complicated or low reliability. As a unit, if specialized purchased a v

3、ies to implement whereas economically may inherit, but every year the number of little use for long-term storage, often make (electronics) vies is damaged, again the purchase of trouble and timeliness will affect activities, so this contest was designed device. This design is 8 vies for basic ideas.

4、 Considering according to need to set limit to answer function, using AT89C51 and periphery interface implementation of scare-answering system, of the microcontroller timer/counter timing and numeration principle, software and hardware organically, and makes the system can correctly to the time, at

5、the same time making digital tube can properly shows the time. Keywords: Microcontroller ;Scare-answering device ; AT89C51 目 录摘要英文摘要目录绪论1第1章 系统设计内容11.1 系统设计根据11.2 设计任务和要求11.3 设计目的2第2章 硬件设计22.1 单片机控制原理22.2 抢答器的原理32.2.1原理及电路总框图42.3 功能模块电路52.3.1 晶振复位及开始抢答电路52.3.2 选手抢答键(矩阵式键盘)62.3.3显示与显示驱动电路72.3.4蜂鸣器音频输

6、出电路8第3章 软件设计3.1程序设计3.1.1 系统流程图103.1.2 显示抢答违规流程图113.1.3 抢答成功流程图113.2 程序代码11第4章 系统功能说明124.1 系统的调试介绍124.2软件调试过程12参考文献14致谢15附录一 程序代码1625绪 论单片机作为计算机的一个重要分支,其应用范围很广,发展很快,它已成为现代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用范围十分广泛。从事单片机应用与开发,不仅为将来可能从事该方面的开发打下基础,另一方面,由于单片机作为微型计算机的一种,麻雀虽小,五脏俱全,可以把它当作微

7、型计算机的一个简化模型来看待,学习单片机可以加深对微型计算机工作原理的理解,更加清楚计算机的脉络。同时,提供了一个实际应用手段。21世纪,是一个信息技术飞速发展的时代,智力竞赛是一种形式比较活泼的教育方式,是人们休闲娱乐生活的一部分。这些竞赛一方面充实了人们的娱乐生活,另一方面也提高了人们努力汲取相关领域的知识的兴趣。智力竞赛,也就是几个参赛选手之间在规定的时间,规定的地点进行相互竞争的比赛。 抢答是各种竞赛常用的一种形式。在抢答赛中,往往要有主持人宣布抢答的开始,还要确定是哪个选手抢到了答题权,具体答题的时间有时也要设定。这些如果仅凭主持人的主观判断,很容易出现误判的情况。因此,在竞赛中,抢

8、答器就扮演了一个非常重要的角色。第1章 系统设计内容1.1系统设计依据 抢答器由计数器、寄存器、集成定时器和译码显示等组合、时序电路组成。可分为抢答电路,定时电路,报警电路等几个单元部分。每个单元电路分别可以处理一些抢答竞赛中的基本问题。 本次课程设计设计的是一个多路定时抢答器,是多于两位选手参赛的一个抢答器,具有锁存和显示功能。同时由主持人控制系统的清零和抢答的开始。抢答开始后,若有任何一名选手按动抢答按钮,抢答器就会显示该选手编号直至系统被主持人清零,并有扬声器发出提示,同时其他人再抢答就无效了。此次设计的抢答器还有自动定时功能,主持人可以设定选手答题的时间。当主持人启动“开始”键后,定时

9、器会自动减计时,这个会显示在显示器上。选手只有在抢答时间内抢答才有效,若在答题时间内没有选手答题,时间到时,报警电路就会发出警报亮灯并且禁止抢答。1.2设计任务和要求设计一个八路抢答器要求:(1)设计出硬件电路; (2)设计出软件编程方法,并写出源代码; (3)用PROTEUS进行仿真; (4)论文格式要符合学院的统一规定,结构要合符逻辑,表达要得体。1.3 设计目的通过设计学习单片机最小系统的基本设计方法,掌握单片机应用系统的开发调试过程。(1)学习单片机开发工具功能、特点和使用方法。(2)学会单片机控制系统程序的编制和调试方法。(3)设计单片机抢答器硬件电路,绘制出电路原理图。(4)编制并

10、调试出键盘扫描程序和显示驱动程序。(5)掌握单片机定时器的基本用法,编制出定时器的中断程序。第2章 硬件设计2.1 单片机控制原理单片机(SCM)是单片微型计算机(Single Chip Microcomputer)的简称。它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口电路、定时/计数器以及输入/输出适配器都集成在一块芯片上,构成一个完整的微型计算机。它的最大优点是体积小,可放在仪表内部;但存储量小,输入/输出适配器简单,功能较低。目前,单片机在民用和工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。简单的说,用单片机系统来设计抢答器,实现两组的抢答时间即使是相

11、差几微秒,也可分辨出哪组优先答题。P0端口(P0.0-P0.7):P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1端口(P1.0-P1.7):P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高电平,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和

12、校验时,P1口作为第八位地址接收。 P2端口(P2.0-P2.7):P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3端口(P3.0-P3.7):P3口管脚是一个带有内

13、部上拉电阻的8位的双向I/O端口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入端时,由于外部下拉为低电平,P3口将输出电流(ILL)。2.2 抢答器的原理数码管及上拉电阻AT89C51复位电路抢答器计时时间调整及语音报警独立式按键键盘电子智能抢答计分器在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。为了完成这个任务设计时系统能显示抢答组号、各组计分并能计分显示以及比赛结束时能发出报警声三个要求;电子智能抢答计分器主要是由硬件部分和软件部分构成,硬件和软件分开设计;系统综框图如下:图2.2系统综框图2.2.1 原

14、理及电路总框图所需元件:该系统的核心器件是AT89C51,其外部接上复位电路、上拉电阻、数码管、按钮及扬声器。元件为:晶体振荡管X1,电容C1、C2、C3,电阻RP1,P3.0和P3.1有裁判控制分别是抢答停止和开始键;P1.0-P1.7是8组抢答的输入口;P2.0-P2.3口为数码管的位选口;段选口用的是P0.0-P0.6口输出,外部中断0、1和P3.2,P3.3为抢答记时调整口,实现的对个队进行计时,并且加减调整,外部中断0,1实现了答题时间调整。P3.4、P3.5分别实现了时间的加一和减一;P3.6为蜂鸣器控制口。智能抢答器用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,

15、采用单片机AT89C51,它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,并允许在系统内改写或用编程器编程。该智力竞赛抢答器的准确度很高,其误差主要由晶振自身的误差所造成。AT89C51单片机内部由CPU、4KB的FPEROM ,128B的RAM,两个16位的定时/计数器T0和T1,4个8位的I/O端P0、P1、P2、P3等组成。单片微机内部最核心的部分是CPU。CPU主要功能是产生各种控制信号,控制存储器、输入/输出端口的数据传输、数据的算术运算、逻辑运算以及位操作处理等,CPU按其功能可分为运算器和控制器两部分。控制器由程序计数器PC、指令储存器、指令译码器、实

16、时控制与条件转移逻辑电路等组成。它的功能是对来自存储器中的指令进行译码,通过实时控制电路,在规定的时刻发出各种操作所需的内部和外部的控制信号,使各部分协调工作,完成指令所规定的操作。运算器由算术逻辑器部件ALU、累加器ACC、暂存器、程序状态字寄存器PSW,BCD码运算调整电路等组成。图2.2.1抢答器总原理图2.3 功能模块电路本设计分为硬件设计和软件设计,这两者相互结合,不可分离;从时间上看,硬件设计的绝大部分工作量是在最初阶段,到后期往往还要做一些修改。只要技术准备充分,硬件设计的大返工是比较少的,软件设计的任务贯彻始终,到中后期基本上都是软件设计任务,随着集成电路技术的飞速发展,各种功

17、能很强的芯片不断出现,使硬件电路的集成度越来越高,硬件设计的工作量在整个项目中的所占的比重逐渐下降。为使硬件电路设计尽可能合理,应注意以下几方面7:(1) 尽可能采用功能强的芯片,以简化电路,功能强的芯片可以代替若干普通芯片,随着生产工艺的提高,新型芯片的的价格不断下降,并不一定比若干普通芯片价格的总和高。(2) 留有设计余地。在设计硬件电路时,要考虑到将来修改扩展的方便。因为很少有一锤定音的电路设计,如果现在不留余地,将来可能要为一点小小的修改或扩展而被迫进行全面返工。(3) 程序空间,选用片内程序空间足够大的单片机,本设计采用AT89C51单片机。(4) RAM空间,AT89C51内部RA

18、M不多,当要增强软件数据处理功能时,往往觉得不足。如果系统配置了外部RAM,则建议多留一些空间。如选用8155作I/O接口,就可以增强256字节RAM。如果有大批数据需要处理,则应配置足够的RAM,如6264,62256等。随着软件设计水平的提高,往往只要改变或增加软件中的数据处理算法,就可以使系统功能提高很多,而系统的硬件不必做任何更换就使系统升级换代。只要在硬件电路设计初期考虑到这一点,就应该为系统将来升级留足够的RAM空间,哪怕多设计一个RAM的插座,暂不插芯片也好。(5) I/O端口:在样机研制出来后进行现场试用时,往往会发现一些被忽视的问题,而这些问题不是靠单纯的软件措施来解决的。如

19、有些新的信号需要采集,就必须增加输入检测端;有些物理量需要控制,就必须增加输出端。如果在硬件电路设计就预留出一些I/O端口,虽然当时空着没用,那么用的时候就派上用场了。2.3.1晶振复位及开始抢答电路晶振的频率为12MHZ,提供89C51的时钟脉冲使89C51工作,复位电路是单片机初始化,使单片机重新开始执行程序。当复位开关按下RST由低电平变为高电平,则程序从头开始执行,在此次课程设计电路中当一个问题结束主持人后按下复位开关后进行下一题的准备。图2.3.1 晶振复位电路图2.3.1开始抢答电路2.3.2 选手抢答键(矩阵式键盘)89C51的P1口做一个为选手抢答的输入按键引脚,P1.0至P1

20、.7轮流输出低电位,给每一个选手编号1至8,当选手按下按钮时,P1口每个端口的电平变化从P1口输入,经单片机处理后从P0输出由数码管显示抢答者编号。图2.3.2 选手抢答电路2.3.3 显示与显示驱动电路此电路包括显示和驱动,显示采用数码管,驱动用P2口, 违规者编号、抢答30秒倒计时、正常抢答者编号和回答问题时间60秒倒计时,数码管采用动态显示。驱动电路P2口,查询显示程序利用P0口做段选码口输出P2低3位做位选码输出,当为低电平则能驱动数码管使其显示数字。在+5V电压下接10k的电阻,保证正常压降。图2.3.3 显示与显示驱动电路2.3.4蜂鸣器音频输出电路图2.3.4蜂鸣器音频输出电路通

21、过控制不同频率的矩形脉冲来控制蜂鸣器发声。此次课程设计中只需要一些简单的提示声音和稍微显眼的灯控,有抢答违规,开始抢答,抢答时间结束和回答时间到得提示声和亮灯提醒。第3章 软件设计3.1程序设计软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计基本定型后,也就基本上决定下来了9。软件任务分析环节是为软件设计做一个总体规划。从软件的功能来看可分为两大类:一类是执行软件,它能完成各种实质性的功能,如测量,计算,显示,打印,输出控制和通信等,另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度角色的软件。这两类软件的设计方法各有

22、特色,执行软件的设计偏重算法效率,与硬件关系密切,千变万化。软件任务分析时,应将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义(输入输出定义)。在各执行模块进行定义时,将要牵扯到的数据结构和数据类型问题也一并规划好。各执行模块规划好后,就可以监控程序了。首先根据系统功能和键盘设置选择一种最适合的监控程序结构。相对来讲,执行模块任务明确单纯,比较容易编程,而监控程序较易出问题。这如同当一名操作工人比较容易,而当一个厂长就比较难了。软件任务分析的另一个内容是如何安排监控软件和各执行模块。整个系统软件可分为后台程序(背景程序)和前台程序。后台程序指主程序及其调用的子程序,这类程序对实时

23、性要求不是太高,延误几十ms甚至几百ms也没关系,故通常将监控程序(键盘解释程序),显示程序和打印程序等与操作者打交道的程序放在后台程序中执行;而前台程序安排一些实时性要求较高的内容,如定时系统和外部中断(如掉电中断)。也可以将全部程序均安排在前台,后台程序为“使系统进入睡眠状态”,以利于系统节电和抗干扰。智力竞赛抢答器要求有记忆功能,一次时间设置完,复位后不需重新进行时间设定,通过键盘扫描输出按键信息,再通过单片机将它转换成能在七段数码管上显示字型码。当抢答完毕时,会在数码管上显示抢答者数字号码提示以表示抢答成功,同时显示其分数,分数的加减可有裁判手动进行。采取独立式键盘,可以实现8路抢答。

24、在显示时使用的是七段数码管显示在本设计中根据实际情况采用的是动态显示方法。臂并通过查表发将其在数码管上显示出来,其中P1口为字型码输入端,P2口低6位为字选段输入端。通过查表将字型码送给7段数码管显示的数字。软件去抖动,如果“开始键”按下就向下执行,否则就跳到开始。采用发声报警或者采用绿灯,起到报警作用。如果想调节抢答时间或答题时间,按抢答时间调节键或答题时间调节键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,如想加一秒按一下加1s键,如果想减一秒按一下-1s键,时间LED上会显示改变后的时间,调整范围为0s99s, 0s时再减1s会跳到99,99s时再加1s会变到0s。 主持人按抢

25、答开始键,会有提示音,并立刻进入抢答倒计时(预设30s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设60s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。倒数时间到小于5s会每秒响一下提示音。 如倒计时期间,主持人想停止倒计时可以随时按停止按键,系统会自动进入准备状态,等待主持人按抢答开始进入下次抢答计时。 如果主持人未按抢答开始键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下停止 键为止。 3.1.1 系统流程图调用抢答者获得的回答问题子程序60秒到中断返回开 始初始化读键盘是否有键按下中断条件是否满足调用显示抢

26、答违规并报警子程序进入中断程序开中断并响声提示设定定时器值并启动定时器30秒抢答时间并显示并显示调用读键子程序为延时程序是否有键按下图3.1.1系统流程图3.1.2显示抢答违规流程图开 始报警一直提示显示违规者编号图3.1.2显示抢答违规流程图3.1.3抢答成功流程图开 始响声提示设置定时器初值并启动显示抢答者后30秒倒计时60秒答问题时间到并响声提示RET图3.1.3抢答成功流程图3.2 程序代码(见附录一)第4章 调试功能说明4.1 系统的调试介绍系统调试包括硬件调试和软件调试,而且两者是密不可分的。我们设计好的硬件电路和软件程序,只有经过联合调试,才能验证其正确性;软硬件的配人情况以及是

27、否达到设计任务的要求,也只有经过调试,才能发现问题并加以解决、完善,最终开发成实用产品。硬件调试分单元电路调试和联机调试,单元电路试验在硬件电路设计时已经进行,这里的调试只是将其制成印刷电路板后试验电路是否正确,并排除一些加工工艺性错误(如错线、开路、短路等)。这种调试可单独模拟进行,也可通过开发装置由软件配合进行,硬件联机调试则必须在系统软件的配合下进行。软件调试一般包括分块调试和联机调试两个阶段。程序的分块调试一般在单片机开发装置上进行,可根据所调程序功能块的入口参量初值编制一个特殊的程序段,并连同被调程序功能块一起在开发装置上运行;也可配合对应硬件电路单独运行某程序功能块,然后检查是否正

28、确,如果执行结果与预想的不一致,可以通过单步运行或设置断点的方法,查出原因并加以改正,直到运行结果正确为止。这时该 程序功能块已调试完毕,可去掉附加程序段。其它程序功能块可按此法进行调试。程序联机调试就是将已调试好的各程序功能块按总体结构联成一个完整程序,在所研制的硬件电路上运行。从而试验程序整体运行的完整性、正确性和与硬件电路的配合情况。在联调中可能会有某些支路上的程序、功能块因受条件制约而得不到相应的输入参数,这时,调试人员应创造条件进行模拟调试。在联调中如发现硬件问题也应及时修正,直到单片机系统的软件、硬件全部调试成功为止。系统调试完成后,还要进行一段时间的试运行,从而检验系统的稳定性和

29、抗干扰能力,验证系统功能是否达到设计要求,是否达到预期的效果。4.2 软件调试过程首先对所用软件及使用方法介绍如下:1、Keil是德国开发的一个51单片机开发软件平台,最开始只是一个支持C语言和汇编语言的编译器软件。后来随着开发人员的不断努力以及版本的不断升级,使它已经成为了一个重要的单片机开发平台,不过KEIL的界面并不是非常复杂,操作也不是非常困难,很多工程师的开发的优秀程序都是在KEIL的平台上编写出来的。可以说它是一个比较重要的软件,熟悉他的人很多很多,用户群极为庞大,要远远超过伟福等厂家软件用户群,操作有不懂的地方只要找相关的书看看,到相关的单片机技术论坛问问,很快就可以掌握它的基本

30、使用了。2、 总调,即应用软件的链接调试,程序固化,软、硬件结合的应用系统软硬件联合仿真系统由一个硬件执行环境和一个软件执行环境组成,通常软件环境和硬件环境都有自己的除错和控制界面,Keil与Proteus的整合调试可以实现系统的总调,在该系统中,Keil作为软件调试界面,Proteus作为硬件仿真和调试界面,下面说一下如何在keil中调用proteus进行MCU外围器件的仿真。(1)安装keil 与 proteus。(2)把安装proteus MODELS目录下 VDM51.dll文件复制到Keil安装目录的 C51BIN目录中。(3)修改keil安装目录下 Tools.ini文件,在C51

31、字段加入TDRV5=BINVDM51.DLL (Proteus VSM Monitor-51 Driver),保存。(注意:不一定要用TDRV5,根据原来字段选用一个不重复的数值就可以了。引号内的名字随意)3、打开proteus,画出相应电路,在proteus的debug菜单中选中use remote debug monitor4、在keil中编写汇编语言程序。5、进入KEIL的project菜单option for target 工程名。在DEBUG选项中右栏上部的下拉菜单选中 Proteus VSM Monitor-51 Driver。6、在keil中进行debug吧,同时在proteus

32、中查看直观的结果(如LCD显示)这样就可以像使用仿真器一样调。参考文献资料1 张友德. 单片机原理及应用. 机械工业出版社 2000年.2 张光飞. 单片机课程设计实例指导. 北京航天航空大学出版社 2003年. 3 雷伏蓉. 51单片机常用模块设计查询手册清华大学出版社 2005年.4 张俊谟. 单片机初级教程. 北京航天航空大学出版社 2000年.5 何宗彬 8位单片机开发技术与规范 机械工业出版社 1999年6 杨居民 单片机课程设计指导清华大学出版社 2000年7 何立民 单片机应用系统设计 北京航天航空大学出版社 2000年致 谢我的毕业论文设计能够顺利的完成,是导师老师悉心指导的结

33、果。在开始的时候,李老师给了我整个制作的大概框架和思路,引导我该如何去做。在我制作的过程中,每次遇到不懂或不会的地方,李老师都会给我一一的讲解,使我每次都有一种茅塞顿开的感觉。李老师以其严谨求实的治学态度,高度的敬业精神,兢兢业业的工作作风和大胆创新的进取精神对我产生重要的影响。在此我向李老师表示感谢。这次的毕业设计我可以顺利如期的完成,使我有了很大的信心,让我了解专业知识的同时也对本专业的发展前景充满信心。在本次设计中取得的点滴进步,都来自于各方面的帮助、指导,感谢大家!毕业设计除了针对我们理论课程掌握的同时,也是对我们大学生进行综合性实践训练的过程,是对整个专业知识的综合,可以使我们的理论

34、知识与实践紧密的相结合,锻炼我们独立思考和解决实际问题的能力。在这次毕业设计的过程中,使我学到许多以前在课本和课堂上无法学到的知识及技术能力,特别是在查找资料的过程中体会到许多的乐趣,从而丰富了自己。在设计的过程中,自己能在指导老师的提点下独立的分析问题、找出问题并解决问题,同时能够更加用心的思考每个细节,把专业知识和实际操作更好的结合起来,使自己能够自每天的学习过程中都有新的收获。附录一抢答器程序OK EQU 20H;抢答开始标志位RING EQU 22H;响铃标志位ORG 0000HAJMP MAINORG 0003HAJMP INT0SUBORG 000BHAJMP T0INTORG 0

35、013HAJMP INT1SUBORG 001BHAJMP T1INTORG 0040HMAIN: MOV R1,#30;初设抢答时间为30sMOV R2,#60;初设答题时间为60sMOV TMOD,#11H;设置未定时器/模式1MOV TH0,#0F0HMOV TL0,#0FFH;越高发声频率越高,越尖MOV TH1,#3CHMOV TL1,#0B0H;50ms为一次溢出中断SETB EASETB ET0SETB ET1SETB EX0SETB EX1;允许四个中断,T0/T1/INT0/INT1CLR OKCLR RINGSETB TR1SETB TR0;一开始就运行定时器,以开始显示F

36、FF.如果想重新计数,重置TH1/TL1就可以了;=查询程序=START: MOV R5,#0BHMOV R4,#0BHMOV R3,#0BHACALL DISPLAY;未开始抢答时候显示FFFJB P3.0,NEXT;dddddddACALL DELAYJB P3.0,NEXT;去抖动,如果开始键按下就向下执行,否者跳到非法抢答查询ACALL BARK;按键发声MOV A,R1MOV R6,A;送R1-R6,因为R1中保存了抢答时间SETB OK;抢答标志位,用于COUNT只程序中判断是否查询抢答MOV R7,#01H ;读抢答键数据信号标志,这里表示只读一次有用信号MOV R3,#0AH;

37、抢答只显示计时,灭号数AJMP COUNT;进入倒计时程序,查询有效抢答的程序在COUNT里面NEXT: JNB P1.0,FALSE1JNB P1.1,FALSE2JNB P1.2,FALSE3JNB P1.3,FALSE4JNB P1.4,FALSE5JNB P1.5,FALSE6JNB P1.6,FALSE7JNB P1.7,FALSE8AJMP START;=非法抢答处理程序=FALSE1: MOV R3,#01HAJMP ERRORFALSE2: MOV R3,#02HAJMP ERRORFALSE3: MOV R3,#03HAJMP ERRORFALSE4: MOV R3,#04H

38、AJMP ERRORFALSE5: MOV R3,#05HAJMP ERRORFALSE6: MOV R3,#06HAJMP ERRORFALSE7: MOV R3,#07HAJMP ERRORFALSE8: MOV R3,#08HAJMP ERROR;=INT0(抢答时间R1调整程序)=INT0SUB:MOV A,R1MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAY;先在两个时间LED上显示R1JNB P3.4,INC0;P3.4为+1s键,如按下跳到INCOJNB P3.5,DEC0;P3.5为-1s键,如按下跳到DECOJN

39、B P3.1,BACK0;P3.1为确定键,如按下跳到BACKOAJMP INT0SUBINC0: MOV A,R1CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。MOV R1,#00HACALL DELAY1AJMP INT0SUBADD0: INC R1ACALL DELAY1AJMP INT0SUBDEC0: MOV A,R1JZ SETR1;如果R1为0, R1就置99,DEC R1ACALL DELAY1AJMP INT0SUBSETR1: MOV R1,#63HACALL DELAY1AJMP INT0SUBBACK0: RETI;=INT1(回答时间R2调整程序)=INT1SUB:MOV A,R2MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DI

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

当前位置:首页 > 研究报告 > 信息产业


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