【基于89C51单片机的声光显示智力抢答器设计8700字(论文)】_第1页
【基于89C51单片机的声光显示智力抢答器设计8700字(论文)】_第2页
【基于89C51单片机的声光显示智力抢答器设计8700字(论文)】_第3页
【基于89C51单片机的声光显示智力抢答器设计8700字(论文)】_第4页
【基于89C51单片机的声光显示智力抢答器设计8700字(论文)】_第5页
已阅读5页,还剩43页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

基于89C51单片机的声光显示智力抢答器设计目录TOC\o"1-3"\h\u摘要 摘要摘要:随着我国社会竞争越来越激烈,各类比赛、竞争、辩论层出不穷,在各类竞争比赛中为了做到公平公正,抢答器应运而生。本设计是根据八路抢答器的基础思想进行设计。鉴于考虑到按照所需要求进行限定时间来回答的特点,该自动抢答器的实现离不开89C51单片机及其外围设备接口,该自动抢答系统的定时计数采用的是定时器和计数器,通过软、硬件的有机融合,使得定时器和数码管都能正常工作。该设备的主控核心为STC89C51单片机,通过外围设备接口与蜂鸣器、晶振、数码管等连接来实现的一个声光显示智力抢答器。设计的声光显示智力不仅具有显示抢答倒计时时间、答题倒计时时间和实时显示抢答选手号码的功能,并具有复位、提示、违规抢答报警的功能,这些功能都是利用单片机的延时电路、按键复位电路、时钟电路、定时器/计数器、红外遥控等来实现的。关键词:单片机;电路;定时器;复位;抢答引言电子信息科学技术发展的速度越来越快,发展的规模越来越大,在工业、农业、电力、电子、智能楼宇等行业都有单片机控制系统的影子,基于各类单片机的操作控制系统在各方面应用已经十分广泛。嵌入式控制系统的核心与主体一般都是单片微控制计算机,传统的控制操作系统的常规电路已经被取代。电子信息科学的发展与成熟的同时,也为基于单片机系统的应用与普及打下了了坚实的基础。在各类竞赛的过程中,为了增强比赛的观赏性,一般采用抢答的方式,为了达到抢答的目的,知道哪一位选手抢到回答问题的权利,所以设计一个系统来达到这个目的是非常必要的。在抢答的过程中,如果靠感官判断出哪组先答题是非常困难的。这个声光显示智力抢答器利用单片机系统来设计,使得上述问题迎刃而解,即使几个组抢答的时间相差极其微小也可以轻松辨别出哪组优先抢得回答问题的权利。抢答组数共八组,在八组以内可以随意使用。本系统的核心采用STC89C52单片机,控制系统共五个模块,分别为:单片机最小系统、显示驱动模块、显示模块、音乐音频输出模块、抢答开关模块等。多路数字抢答器在各类智力竞赛、比赛中广泛应用。抢答环节在举办的各类比赛、竞赛中不计其数,举办方大多通过让选手举题板的速度快慢来判断谁先抢到答题权,在某些程度这样存在较大的误差,会因为其他客观因素或者主持人的主观误断产生误差,导致比赛的不公平。为了解决这个问题,借用这次毕业设计的机会我制作了一个声光显示智力抢答器。一方面能够加深对所学习知识,巩固模拟电路和数字电路方面的内容,也提升我们在日常生活中发现问题、解决问题的能力,掌握一些设计步骤与设计方法。积累动手制作经验,提升动手操作能力,为未来面对更实用更复杂的数字电路应用领域打下坚实的基础。这个控制系统是由单片机控制电路、显示电路及存储器接口电路组成的微型计算机系统。具体的系统工作核心主要为单片机,并通过外围设备接口为单片机连接上了上拉电阻、复位电路、数码管、按键及扬声器等元器件,单片机主要负责协调各部分之间的工作,使个部件之间配合更加严密。绪论单片机作为计算机的一个重要组成部分,因其应用范围广,发展速度快被很多人认可,它在多个技术中日益普遍推广,俨然成为一项新兴技术,有着非常光明的市场前景。对于学习计算机、电子信息专业的同学来说,即使暂时从事的工作或者研究方向与单片机的开发与应用没有较大关系,单片机的学习也是十分重要的。学习单片机,为将来可能从事这方面的工作奠定基础,为从事单片机开发做好准备;另一方面,单片机作为微型计算机的一个重要分支类型,体积或规模虽小,具备的功能却很齐全,完全可以把它当作一个简易的微型计算机的模型来看待,在学习单片机中不仅可以加深理解微型计算机的工作原理,还能更加清楚的了解计算机的脉络。同时,也为我们提供了一个动手实际操作组装的平台。进入21世纪,我们迎来了百年未有之大变局,在这样一个信息、科技、知识、生活各方面快速发展的时代,智力竞赛作为一种活泼更具有乐趣的教育方式,已经融入人们的休闲娱乐生活。这些竞赛不仅丰富了了人们的娱乐休闲方式,另一方面也提高了人们渴望获得某些领域知识的兴趣。例如中央电视台的《中国诗词大会》、《中国汉字大会》,还有《一站到底》、《最强大脑》等优秀的竞赛节目。智力竞赛,也就是多个参赛选手之间在规定的时间,规定的地点相互竞争的比赛。抢答是常用的一种竞赛形式。在抢答比赛中,由主持人公布问题,并由主持人宣布抢答开始,在确定的抢答时间内,最先按下抢答键的选手抢到了答题权,有的比赛也有固定的答题时间,在一定时间内,抢得答题权的选手要回答完问题。主持人在比赛中扮演着重要的角色,如果这些全部由主持人通过肉眼观察或者听力来判断会有很大的误差,很容易出现误判的情况。因此,在竞赛中,智力抢答器就十分重要了。

1方案设计 1.1设计方案1.1.1方案论证1.总体方案(1)采用可编程I/O口扩展芯片81558155作为一种通用的多功能可编程I/O扩展器,其功能的改变可由计算机的指令来完成。8155片内不只是有3个可编程的并行I/O接口(A口、8位B口、六位C口),而且还有一个14位定计数器和256BSRAM,其作用就是用作单片机的外部扩展接口,与键盘、传感器、显示器等外部设备连接。用8155不仅会浪费,而且8155的读写要使用P0口和P2口,这样不仅浪费了端口,而且使得编程变得复杂。从简化编程和节约资源的角度考虑,放弃这种方法。(2)直接使用STC89C52RC单片机直接使用89C52单片机,不仅会优化编程过程,而且还能有效的利用各个端口。使整个实验过程变得更加简单,51单片机完全能够使得整个系统完整运行。所以本设计使用STC89C52单片机2.按键模块(1)采用4×4矩阵键盘本设计共有14个按键,采用矩阵键盘就会有多余的按钮,而且每个按键有着不同的功能。分为主持人按键区和选手按键区,主持人按键区工6个按键,选手按键区共8个按键。如果采用矩阵键盘会造成按键混乱,而且矩阵键盘扫描要送数读数,使编程变得更加复杂。(2)采用独立按键独立按键功能更加明确,独立按键不仅节约端口还能简化编程,程序只需要读数检查就可以。所以本设计采用独立按键。1.1.2任务要求1.可以实现八个选手抢答;2.抢答时间和答题时间的倒计时可以按键调整;3.当比赛开始,主持人按下开始抢答按键,“抢答时间”倒计时开始“30”,此时数码管开始进行30s的倒计时显示,当有一个选手抢答时,对应的会在数码管上显示出该选手的编号和答题时间如“1-60”,主持人摁下开始答题按键“答题时间”开始倒计时,选手需在60s内完成答题;4.若无人抢答,蜂鸣器也会报警提示;5.当开始抢答时,主持人也可以通过按键暂停抢答时间,进入等待状态;6.进行下一轮抢答时,主持人按下复位按键,即进行下一轮抢答;7.主持人共6个按键分别为开始、复位、抢答时间增加、抢答时间减少、答题时间增加、答题时间减少;8.在主持人没有按下开始键时,有选手提前按下抢答键,蜂鸣器就会报警提示犯规,数码管显示相应的犯规选手编号。2硬件设计2.1整机工作原理本系统的整个控制核心采用STC89C52单片机。控制系统主要有显示模块、控制模块、抢答模块、报警模块组成。工作时,该工作系统通过键盘按键输入开始抢答信号,经过单片机的处理后,输出控制信号,利用一个4位数码管显示数据来完成显示功能并伴随蜂鸣器工作。选手通过按键进行抢答,数码管上显示出哪一组优先答题,这样整个抢答的过程得以完成。主持人按下开始抢答键才可以抢答,向单片机P3.0引脚输入一个低电平信号,表示整个电路开始工作。主持人在没有按下开始抢答按钮(K9)之前,有人摁下抢答按键则是抢答违规,蜂鸣器报警并显示违规组号,主持人按下开始抢答按键重新开始抢答。主持人按下开始抢答按钮(K9),蜂鸣器响声提示,数码管开始30秒倒计时。若有特殊情况主持人按下开始抢答按钮(K9)可以暂停计时。30秒内有人摁下抢答键,蜂鸣器响声提示并显示他的组号,主持人再次摁下抢答按钮(K9)则开始60秒回答问题倒计时(60秒内必须回答完问题),最后十秒倒计时蜂鸣器响声警报。主持人按下复位键再按开始键则开始下一轮的抢答环节。此次用单片机控制的抢答器思路简单明了,可操作性强,可靠性高,不仅能够完全实现普通抢答器的基本功能,而且扩展功能强。图2-1单片机声光显示智力抢答器设计方案2.2单片机介绍根据系统的功能与要求,选择STC89C5RC单片机。STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统的51单片机不具备的功能。在单芯片上,拥有灵巧的8位CPU

和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。[1]图2-2STC89C51单片机引脚图2.3时钟电路和复位电路2.3.1时钟电路STC89C52单片机的时钟信号通常有两种方式产生:一是内部时钟方式,二是外部时钟方式。内部时钟方式如图2-1所示。在STC89C52单片机内部有一振荡电路,只要在单片机的XTAL1(18)和XTAL2(19)引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机内部产生时钟脉冲信号。图中电容C1和C2的作用是稳定频率和快速起振,电容值在5~30pF,典型值为30pF。晶振CYS的振荡频率范围在1.2~12MHz间选择,典型值为12MHz和6MHz。图2-3-1STC89C51内部时钟电路2.3.2复位电路当在STC89C52单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充放电来实现的。只要VCC的上升时间不超过1ms,就可以实现自动上电复位。除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST(9)端与电源VCC接通而实现的。按键手动复位电路见图2-5。时钟频率用11.0592MHZ时C取10uF,R取10kΩ。图2-3-2STC89C51复位电路2.4抢答电路 抢答电路由单片机最小系统、抢答按键模块(四位并行数码显示)、显示模块、显示驱动模块、抢答开关模块和蜂鸣器音频输出模块组成。声光显示智力抢答器的工作原理是采用单片机最小系统,用程序查询方式采用动态显示组号。主持人按下开始抢答键才可以抢答。主持人没有按下开始抢答按钮(P3.0),有人抢答则抢答违规,报警并显示组号,主持人按下开始抢答开关重新抢答。主持人按下开始抢答按钮(P3.0),蜂鸣响声提示,数码管30秒倒计时抢答,蜂鸣器响声提示并显示他的组号,30秒内有人抢答则开始60秒倒计时(60秒内必须回答完问题),最后十秒倒计时警报。单片机最小系统、抢答按键模块(四位并行数码显示)、显示模块、显示驱动模块、抢答开关模块、蜂鸣器音频输出模块。图2.4抢答器总原理图2.5显示和显示驱动电路此电路包括显示和驱动,显示采用数码管,驱动用P2口,违规者编号、抢答30秒倒计时、正常抢答者编号和回答问题时间60秒倒计时,数码管采用动态显示。驱动电路P2口,查询显示程序利用P0口做段选码口输出P2低3位做位选码输出,当为低电平则能驱动数码管使其显示数字。在+5V电压下接1k的电阻,保证正常压降。图2.5显示与显示驱动电路2.6控制电路2.6.1开始抢答电路在此次课程设计电路中当一个问题结束主持人后按下复位开关后进行下一题的准备。 图2.6.1开始抢答电路2.6.2选手抢答键89C51的P1口做一个为选手抢答的输入按键引脚,P1.0至P1.7轮流输出低电位,给每一个选手编号1至8,当选手按下按钮时,P1口各端口的电位变化从P1口输入,经单片机处理后从P0输出由数码管显示抢答者编号。图2.6.2选手抢答电路2.7报警电路通过控制不同频率的矩形脉冲来控制蜂鸣器发声。此次课程设计中只需要一些简单的提示声音和稍微显眼的灯控,有抢答违规,开始抢答,抢答时间结束和回答时间到得提示声和亮灯提醒。图2.7蜂鸣器音频输出电路第3章软件设计3.1程序设计3.1.1系统流程图3.1.2显示抢答违规流程图抢答开始之前,有人按下抢答键,便会触发抢答违规子程序,蜂鸣器响声提示,并且屏幕显示违规选手的号码。3.1.3抢答成功流程图主持人按下开始抢答键,蜂鸣器响声提示,设置定时器初值并启动30秒倒计时,有抢答键被按下,60秒答题时间开始倒计时,时间到蜂鸣器响声提示,并且回到初始状态。3.2程序代码3.2.1主程序 3.2.2定时器子程序voidTimer(){ TMOD|=0x01; TH0=0xd8;//初值55536,计数10000次,每次1US,总计10ms TL0=0xf0; IE=0x82;//这里是中断优先级控制EA=1(开总中断),ET0=1(定时器0允许中断),这里用定时器0来定时 TR0=1; }voidtim(void)interrupt1using1//为定时中断TR0{ TH0=0xd8;//重新赋值 TL0=0xf0; count++; if(count==100)//100*10ms=1秒 { count=0; second--;//秒减1 }}3.2.3延时子程序voiddelay(uintz)//延时函数{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }3.2.4显示子程序voiddisplay(ucharshiwei,gewei,xuanshou)//显示函数{ P2=0xfe;//打开显示时间十位的位选 P0=shiwei;//显示十位 delay(5); P2=0xfd; //个位位选 P0=gewei; delay(5); P2=0xf7;//选手位选 P0=xuanshou; delay(5);}4系统的调试与仿真4.1Keil的安装调试4.1.1Keil简介KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98版本以上的操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,集成环境之方便容易、软件仿真调试工具之强大也会令你得心应手。Keil有两大优点是公认的:1.KeilC51生成目标代码的效率非常高,多数语句生成汇编代码很紧凑,容易理解。在开发大型软件时高级语言的优势就体现出来了。⒉与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,难易程度显而易见,体会更加深刻。4.1.2LIB51库管理器与模拟调试器LIB51库管理器可以把由汇编器、编译器创建的目标文件构建成目标库(LIB)这些库是按规定格式排列的目标模块,可在以后被链接器所使用。KeilC有三个模拟调试器。1、软件模拟调试器dScope51(1)模拟程序运行与调试,包括C、汇编、宏汇编程序;(2)模拟CPU及其外围器件,如串行口、定时器/计数器、I/0口等。2、硬件调试器tScope51tScope51用于对硬件目标板进行调试。3、监视程序Monitor51通过串行口,PC机与目标板进行通信,利用Monitor51,在PC机上显示程序的运行情况4.1.3KeilC操作界面及应用编辑状态的操作界面主要由5部分组成:最上面的菜单栏、菜单栏下面的工具栏、左边的工程管理窗口、中间的编辑窗口、下面的输出信息窗口。菜单项主要有:文件、编辑、视图(View)、工程、调试、片内外设(Peripherals)、工具、软件版本控制系统(SVCS)、窗口、帮助。工具都是相应菜单项的快捷操作按钮,所以,下面以介绍菜单项为主线,并指明对应的工具按钮。图4.1KeilC51在编辑状态下的界面(1)文件(File)菜单文件菜单下都是常见的项,不再给出对应的工具按钮。1)New2)Close3)Open4)Save5)Saveas...6)DeviceDatabase:维护器件数据库7)Print8)PrintSetup..:设置打印机9)Exit(2)编辑(Edit)菜单1)Undo2)Redo:恢复上次的撤销3)Cut4)Copy5)Paste6)IndentSelectText:缩进一个制表符位7)UnindentSelectText左移一个制表符位8)ToggleBookmark:在当前行置书签9)GotoNextBookmark移光标到下一书签10)GotoPreviousBookmark:移光标到上一个书签11)ClearA1lBookmark:清除当前文件中所有的书签12)Find...13)Replace.:查找与替换14)FindinFiles:在多个文件中查找字符串15)GotoMatchingBrace:寻找匹配的各种括号(3)查看(View)菜单1)StatusBar:显示或隐藏状态栏2)FileToolbar:显示或隐藏文件工具栏3)BuildToolbar:显示或隐藏编译工具栏4)DebugToolbar:显示或隐藏调试工具栏5)ProjectWindows:显示或隐藏工程窗口6)OutputWindows:显示或隐藏输出窗口7)SourceBrowser:打开源文件浏览器窗口8)DisassemblyWindows:显示或隐藏反汇编9)Watch&CallStackWindows:显示或隐藏观察和堆栈窗口10)MemoryWindows:显示或隐藏存储器窗口11)CodeCoverageWindows:显示或隐藏代码覆盖窗口12)PerformanceAnalyzerWindows:显示或隐藏性能分析窗口13)SymbolWindows:显示或隐藏符号变量窗口14)SerialWindows#1:显示或隐藏串行口窗口115)SerialWindows#2:显示或隐藏串行口窗口216)Toolbox:显示或隐藏工具箱17)PeriodicWindowsUpdate:在调试运行程序时,周期刷新调试窗口18)WorkbookMode:显示或隐藏工作簿窗口的标签19)Option..:设置颜色、字体、快捷键和编辑器选项4.1.4编译链接调试设置输出.hex文件:在Target1.上点击鼠标右键,点击执行"OptionsforTarget‘Target1’”命令,在弹出的会话界面选择“Output”标签,选中“CreateHEXFile”项即可。编译链接方法:使用Project菜单下的Buildtarget命令或RebuildalltargetFiles命令,或者直接点击工具栏中对应的按钮。编译链接结果:若有错误则不能通过,并且会在信息窗口给出相应的错误信息。编译链接通过后,会产生一个.hex目标文件。[2]4.2抢答器Keil软件的仿真4.3调试与运行软件的设计与调试实行分模块实现的方法。本设计软件调试中的分模块包括显示功能模块,调整时间功能模块,抢答功能模块以及报警功能模块。各个独立模块功能调试成功后,将这些模块程序通过主程序合并在一起,最后再对合并后的总程序进行调试。各软件模块首先要通过PC和仿真器进行软件调试,当仿真效果符合要求后在烧写进单片机看是否在实际电路板上正常工作。本设计通过利用Proteus仿真,将所编写的程序用keil软件编译,所仿真原理图见附录。5结论自接触单片机以来,一直觉得单片机非常难,这次的课程设计我开始是以老师布置题目为主要选择对象的,但是后面发现,像声光显示智力抢答器在我脑海中根本没得一点意象,于是问老师怎么弄,后面发现老师的意见和我的原本的程序和原理图有的地方不同,上网搜了很多资料,也感觉行不通,于是便将两者综合了一下,经调试和运行后,发现还行的通,于是便开始了忐忑的论文写作之路。在我认为快搞完了的时候,发现其实程序和原理图还是搞明白、学透彻才能正式写报告。于是我又将程序和原理图仔细的剖析了一遍,然后将流程图和仿真图完成。经过最近这段时间的在电脑前面的驻守,我觉得只要自己肯付出和努力,其实很多的东西都是挺容易的,以后还是要好好提升自己的独立思考能力和动手能力。

参考文献资料[1]STC89C52RC单片机中文资料

.电子电路网.2012[2]keil8051;百度百科(网址/view/8584343.htm).2008[3]何立民.MCS-51系列单片机应用系统设计系统配置与接口技术[M].北京:北京航空航天大学出版社,1999年[4]陆坤,奚大顺,李之权等,电子设计技术[M].成都:电子科技大学出版社1997年[5]何立民.MCS-51系列单片机应用系统设计系统配置与接口技术[M].北京:北京航空航天大学出版社,1999年[5]胡学海.单片机原理及应用系统设计[M].北京:京电子工业出版社,2005年[6]林凌,李刚,丁茹,李小霞.新型单片机接口器件与技术[M].西安:西安电子科技大学出版社,2005年[7]李朝青主编,《单片机原理与接口技术》.北京航天航空大学出版社,1994年[8]何立民主编,《单片机应用与设计》.北京航天航空大学出版社,1990年[9]邹逢兴编著,《计算机硬件技术基础实验教程》高等教育出版社,1994年[10]裴亚男,付智辉主编,《数字逻辑》,西南交通大学出版社,2005年[11]李海主编,《74系列芯片手册》,重庆大学出版社,1999年[12]何小艇.电子系统设计.浙江:浙江大学出版社,1994.[13]金显贺,王昌长.一种用于在红线检测局部放电的数字滤波技术[14]JianChen,XiaorongCheng.Designofinfraredsensorswitch[J].InternationalCoreJournalofEngineering,2019,5(12).[15]NingXu.TheDesignofIntelligentResponderBasedonSCM[J].AppliedMechanicsandMaterials,2015,3682.

附录一:抢答器原理图附录二:实操效果图效果图1抢答时间30秒效果图2抢答倒计时效果图3答题时间60秒效果图4答题倒计时附录三:程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitstart=P3^0; //主持人按键开始sbitreset=P3^1; //复位sbitadd1=P3^2; //抢答时间调整,加1sbitdec1=P3^3; //抢答时间调整,减1sbitadd2=P3^4; //答题时间调整,加1sbitdec2=P3^5; //答题时间调整,减1sbitk1=P1^0;sbitk2=P1^1;sbitk3=P1^2;sbitk4=P1^3;sbitk5=P1^4;sbitk6=P1^5;//选手按键sbitk7=P1^6;sbitk8=P1^7;sbitbeep=P3^6;//蜂鸣器bitqd; //抢答标志位,=1时开启抢答bitdt; //答题标志位,=1时开启答题bitdisp_qd_dt;bitfoul; //ucharcodetab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77};//0-9代码 10001110 00111010unsignedcharcodetab[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x45,0xDF,0xD7,0xCE,0xC7,0xDC};//数字0-9的编码 gc.debfa F:10001011o:11011000ucharshiwei,gewei,xuanshou,count,p,second;ucharqd_time=30,dt_time=60; //抢答时间,默认30S,答题时间,默认60Suintt,m,n,a,a1,a2,a3,a4,a5,a6;voidTimer(){ TMOD=0x01; TH0=0x3C;//初值15536,计数50000次,每次1uS,总计50ms TL0=0xB0; IE=0x82;//这里是中断优先级控制EA=1(开总中断),ET0=1(定时器0允许中断),这里用定时器0来定时 TR0=0; }voidtim(void)interrupt1using1//为定时中断TR0{ TH0=0x3C;//重新赋值 TL0=0xB0; TR0=1; count++; if((second<=10)&&(count==10)&&(dt==1)) beep=0; if(count==20)//20*50ms=1秒 { count=0; if(second>=1) second--;//秒减1 else TR0=0; if((second<=10)&&(dt==1)) beep=1; }}voiddelay(uintz)//延时函数{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--); //约1ms}voiddisplay(void)//显示函数{ unsignedcharshiwei,gewei,xuanshou; shiwei=tab[second/10]; gewei=tab[second%10]; xuanshou=tab[p]; if(foul==0) { P0=gewei; //个位位选 P2=0x7F; delay(5); P2=0xFF; P0=shiwei; //显示十位 P2=0xBF; //打开显示时间十位的位选 delay(5); P2=0xFF; P0=0x80; //显示横线 P2=0xDF; delay(5); P2=0xFF; P0=xuanshou; P2=0xEF; //选手位选 delay(5); P2=0xFF; } else { P0=0xd8; //显示F P2=0x7F; delay(5); P2=0xFF; P0=0x8b; //显示o P2=0xBF; // delay(5); P2=0xFF; P0=0x80; //显示横线 P2=0xDF; delay(5); P2=0xFF; P0=xuanshou; P2=0xEF; //选手位选 delay(5); P2=0xFF; }}voidkeyscan(void){ if(add1==0) { display(); if(add1==0) { p=11; disp_qd_dt=0; qd_time++; if(qd_time>=99) qd_time=99; } second=qd_time; do display(); while(add1==0); } if(dec1==0) { display(); if(dec1==0) { p=11; disp_qd_dt=0; qd_time--; if(qd_time<=1) qd_time=1; } second=qd_time; do display(); while(dec1==0); } if(add2==0) { display(); if(add2==0) { p=12; disp_qd_dt=1; dt_time++; if(dt_time>=99) dt_time=99; } second=dt_time; do display(); while(add2==0); } if(dec2==0) { display(); if(dec2==0) { p=12; disp_qd_dt=1; dt_time--; if(dt_time<=1) dt_time=1; } second=dt_time; do display(); while(dec2==0); }}voidinit() //初始化函数{ P2=0x04; P0=0x3f; t=0; beep=1; p=10; //选手号初始为显示H,表示等待 second=qd_time;}voidmain(){ uchari;init(); Timer(); //定时器设置 while(1) { if((qd==0)&&(dt==0)&&foul==0) //在非抢答,非答题状态下 keyscan(); display(); if(start==0&&foul==0) //主持人按下开始键 { if((qd==0)&&(dt==0)) { p=10; disp_qd_dt=0; second=qd_time; qd=1; } beep=0; //蜂鸣器长响一声 for(i=0;i<20;i++) { display(); } beep=1; TR0=~TR0; do display(); while(!start); //等待释放按键 } if(reset==0) { display(); if(reset==0) { disp_qd_dt=0; second=qd_time; t=0; p=10; TR0=0; beep=1; qd=0; dt=0; foul=0; } do display(); while(!reset); } if(qd==1) { { if(k1==0) { display(); if(k1==0) display(); t=1; qd=0; dt=1; } elseif(k2==0) { display(); if(k2==0) display(); t=2; qd=0; dt=1; } elseif(k3==0) { display(); if(k3==0) display(); t=3; qd=0; dt=1; } elseif(k4==0) { display(); if(k4==0) display(); t=4; qd=0; dt=1; } elseif(k5==0) { display(); if(k5==0) display(); t=5; qd=0; dt=1; } elseif(k6==0) { display(); if(k6==0) display(); t=6; qd=0; dt=1; } elseif(k7==0) { display(); if(k6==0) display(); t=7; qd=0; dt=1; } elseif(k8==0) { display(); if(k6==0) display(); t=8; qd=0; dt=1; } } if(t) { switch(t) { case1: { TR0=0; p=1; second=dt_time; beep=0; for(i=0;i<20;i++) { display(); } beep=1; qd=0;break; } case2: { TR0=0; p=2; second=dt_time; beep=0; for(i=0;i<20;i++) { display(); } beep=1; qd=0;break; } case3: { TR0=0; p=3; second=dt_time; beep=0; for(i=0;i<20;i++) { display(); } beep=1; qd=0;break; } case4: { TR0=0; p=4; second=dt_time; beep=0; for(i=0;i<20;i++) { display(); } beep=1; qd=0;break; } case5: { TR0=0; p=5; second=dt_time; beep=0; for(i=0;i<20;i++) { display(); } beep=1; qd=0;break; } case6: { TR0=0; p=6; second=dt_time; beep=0; for(i=0;i<20;i++) { display(); } beep=1; qd=0;break; } case7: { TR0=0; p=7; second=dt_time; beep=0; for(i=0;i<20;i++) { display(); } beep=1; qd=0;break; } case8: { TR

温馨提示

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

评论

0/150

提交评论