《基于51单片机八路抢答器的设计 .doc》由会员分享,可在线阅读,更多相关《基于51单片机八路抢答器的设计 .doc(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、编号: 课程设计说明书专业工程设计题 目: 基于51单片机八路抢答器的设计 院 系: 信息与通信学院 专 业: 微电子科学与工程 学生: 伦海威 学 号: 1300240120 指导教师: 李 琦 2021 年 12 月 17 日 摘 要 随着科学技术的开展和普及,各种各样的竞赛越来越多,其中抢答器的作用也就显而易见。目前很多抢答器根本上采用小规模数字集成电路设计,使用起来不够理想。因此设计一更易于使用和区分度高的抢答器成了非常迫切的任务。现在单片机已进入各个领域,以其功耗小、智能化而著称,所以假设利用单片机来设计抢答器,便使以上问题得以解决.针对以上情况,本文设计出以STC89C52RC单片
2、机为核心的八路抢答器。我们采用了数字显示器直接指示,自动锁存显示结果,并自动复位的设计思想,它能根据不同的抢答输入信号,经过单片机的控制处理并产生不同的与输入信号相对应的输出信号,最后通过LED数码管显示相应的路数,即使两组的抢答时间相差几微秒,也可分辨出是哪组优先按下的按键,它充分利用了单片机系统的优点,具有结构简单、功能强大、可靠性好、实用性强的特点。 本设计是以八路抢答为根本理念。考虑到依需设定限时答复的功能,利用51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键
3、盘输出,扬声器及LED指示灯发出提示。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为犯规;满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。【关键词】STC89C52RC ;共阴数码管 ;按键 ;蜂鸣器仅供学习参考ABSTRACT With the development and popularization of science and technology, a variety of competitions more and more, in which the role of the Responder will be obvious
4、. At present, a lot of answer basically using small-scale digital integrated circuit design, use it is not ideal. So design a more easy-to-use and high-definition of the Responder has become a very urgent task. Now MCU has entered various fields, with its power consumption is small, intelligent and
5、known, so if the use of single-chip design to answer, so that the above problems can be resolved.In view of the above, this design to STC89C52RC single chip as the core of the eight- . We use the direct display of digital display, automatically latch the display results, and automatically reset the
6、design, it can answer in accordance with the different input signals, through the microcontroller control and produce different input signal corresponding to the output signal, and finally through LED digital tube shows the corresponding number of road, even if the two groups of the answer time diff
7、erence of a few microseconds, which can be distinguished which group of priority press the button, which makes full use of the advantages of SCM system with a simple, powerful, reliable Good, practical and strong features.The design is based on eight-way answer for the basic idea. Taking into accoun
8、t the need to set the time limit to answer the function, the use of 51 MCU and peripheral interface to achieve the answer in the system, the use of single-chip timer / counter timing and counting principle, the software and hardware organically combine, making the system correctly Time, while allowi
9、ng the digital tube to display the correct time. With the switch to do the keyboard output, speaker and LED indicator. At the same time the system can be achieved: in the answer, only after the beginning of the answer is valid, if in the beginning to answer before answering for foul,full time after
10、the system automatically reset and master reset.【Key words】 STC89C52RC, common cathode digital tube, button, buzzer目 录引 言1第一章 方案概述21.1 设计目标2 1.1.1 根本功能2 1.1.2 主要技术参数2第二章 硬件设计与原理32.1 总设计框图32.2 硬件设计分析3 2.2.1单片机主控模块4 2.2.2 STC89C52芯片简介4 2.2.3封装和引脚说明4 2.2.4 数码管显示电路7 2.2.5 按键输入电路9 2.2.5 报警与指示电路11第三章 软件仿真
11、113.1 软件调试局部11 3.1.1 PROTEUS简介11 3.1.2 软件调试123.2 PROTEUS仿真图13第四章 硬件调试154.1 DXP软件简介15 4.1.1 原理图15 4.1.2 PCB图154.2实物图15结论16谢 辞 17参考文献18附录一 总源程序19附录二 原理图32附录三 PCB图32附录四 元件清单33附录五 实物图33引 言最近几年来,随着科技的飞速开展,单片机领域正在不断的走向社会各个角落,还带动传统控制检测日新月异更新。在实时运作和自动控制的单片机应用到系统中,单片机如今是作为一个核心部件来使用,仅掌握单片机方面知识是不够的,还应根据其具体硬件结构
12、,以及针对具体应用对象特点的软件结合,加以完善。“单片机原理及应用课程设计是电子类专业的学科根底科,它是继“汇编语言程序设计,“接口技术等课程之后开出的实践环节课程。 第一章 方案概述1.1 设计目标1.1.1根本功能1、同时供8名选手或8个代表队参加比赛,分别用8个按钮K1 K8表示。2、设置一个系统抢答控制开关K0,该开关由主持人控制。3、抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,扬声器发出声响提示,并在七段数码管上显示选手号码。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统去除为止。4、抢答器具有定时抢答功能,且一次抢答的时间由主持人设定如30秒。当主持人
13、启动开始键后,定时器进行减计时。5、参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统去除为止。在这段时间如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示F FF。1.1.2主要技术参数 1、在抢答中,只有在主持人按“开始按键后抢答才有效,如果在按“开始抢答按键前抢答为犯规,系统发出警报,数码管显示违规号码及FF如3 FF。2、抢答限定时间和答复下列问题的时间是在1060s设定。3、数码管可以显示是哪位选手有效抢答和无效抢答,正确按键后有音提示并在数码管上正确显示。4、主持人按下“开始按键后抢答时间和
14、答复下列问题时间倒记时在数码管上显示,时间完后系统自动复位为F FF。5、在抢答时间和倒计时时间准备到达时,系统会发出警报提示。6、按键锁定,在有效状态下,按键无效非法。第二章 硬件设计与原理以STC89C52RC单片机为核心,起着控制作用。系统包括数码管显示电路、复位电路、时钟电路、按键输入电路和蜂鸣器报警电路。设计思路分为六个模块:复位电路、晶振电路模块、STC89C52RC、数码管显示电路、按键输入电路和蜂鸣器报警电路这六个模块。2.1 总设计框图 设计总框图如下列图2-1所示。图2-1 设计总框图2.2 硬件设计分析2.2.1单片机主控模块 51单片机是对目前所有兼容intel 803
15、1指令系统的单片机的统称。该系列单片机的始祖是intel的8031单片机,后来随着技术的开展,成为目前广泛应用的为单片机之一。单片机是在一块芯片内集成了CPU、RAM、ROM、定时器计数器和多功能I/O口等计算机所需要的根本功能部件的大规模集成电路,又称为MCU。51系列单片机内包含以下几个部件:一个位CPU;一个片内振荡器及时钟电路;4KB的ROM程序存储器;一个128B的RAM数据存储器;寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路;32条可编程的I/O口线;两个16位定时计数器;一个可编程全双工串行口;个中断源、两个优先级嵌套中断结构。2.2.2 STC89C52芯片简
16、介单片机是微型机的一个主要分支,在结构上的最大特点是把CPU、存储器、定时器和多种输入/输出接口电路集成在一块超大规模集成电路芯片上。就其组成和功能而言,一块单片机芯片就是一台计算机。它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多。8KB Flash ROM,可以擦除1000次以上,数据保存10年。STC89C52RC的主要特性如下表2-1所示。表2-1 STC89C52RC的主要功能特性兼容MCS51指令系统32个可编程I/O线4k字节可编程闪烁存储器可编程UARL通道三个16位可编程定时/计数器中断时钟频率0-24MHz2个外部中断源,共8个中断源2568bit内部RAM2个
17、读写中断口线可直接驱动LED软件设置睡眠和唤醒功能低功耗空闲和掉电模式 2.2.3 封装和引脚说明 STC89C52单片机为双列直插式DIP芯片,是最常用的有总线扩展引脚的DIP40封装。如图2-2所示。1.电源及时钟引脚 Vcc:接入电源。 Vss:接地。 XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。2.控制线引脚 RST:RST是复位信号输入端。 ALE/PROG:地址锁存允许信号输入端。在存取外存储器时,用于锁存低8位地址信号。当单片机正常工作后,ALE端就周期性地以时钟振荡频率的1/6固定频率向外输出正脉冲信号。此引脚的第2功能PRO
18、G是作为编程脉冲输入端。 PSEN:程序存储器允许输出端。CPU从外部程序存储器取指令时,PSEN信号会自动产生负脉冲,作为外部程序存储器的选通信号。 EA/Vpp:程序存储器地址允许输入端。当EA为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFH时,将自动转向执行片外程序存储器指令;当EA为低电平时,CPU只执行片外程序存储器指令。3.并行I/O引脚 P0口:P0口是一组8位漏极开路型双向I/O 口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线
19、分时转换地址低8位和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动吸收或输出电流4个TTL逻辑门电路。对端口写“1,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2 的外部计数输入P1.0/T2和输入P1.1/T2EX。Flash编程和程序校验期间,P1接收低8位地
20、址。 P2口:P2是一个带有内部上拉电阻的8 位双向I/O口,P2的输出缓冲级可驱动吸收或输出电流4个TTL逻辑门电路。对端口P2写“1,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器例如执行MOVX DPTR指令时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器如执行MOVX RI指令时,P2口输出P2锁存器的内容。Flash编程或校验时,P2亦接收高位地址和一些控制信号。 P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓
21、冲级可驱动吸收或输出电流4个TTL逻辑门电路。对P3口写入“1时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流IIL。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能P3口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。如表2-2所示。 图2-2 STC89C52单片机引脚封装 表2-2 P3特殊功能口 口管脚备选功能 P3.0 RXD串行输入口 P3.1 TXD串行输出口 P3.2 /INT0外部中断0 P3.3 /INT1外部中断1 P3.4 T0记时器0外部输入 P3.5 T1记时器1外部输入 P3.6 /WR外部数据存储
22、器写选通 P3.7 /RD外部数据存储器读选通 单片机最小系统原理图如图2-3所示。图2-3 单片机最小系统单片机最小系统说明:时钟信号的产生:在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,这就是单片机的时钟振荡电路。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。一般地,电容C2和C3取30pF左右,晶体的振荡频率范围是1.2-12MHz。如果晶体振荡频率高,那么系统的时钟频率也高,单片机的运行速度也就快。单片机
23、复位使CPU和系统中的其他功能部件都处在一个确定的初始状态下,并从这个状态开始工作。单片机复位条件:必须使9脚加上持续两个机器周期即24个振荡周期的高电平。2.2.4数码管显示电路显示系统采用四位一体数码管来显示,LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点。LED数码管的结构简单,分为七段和八段两种形式,也有共阳和共阴之分。以八段共阳管为例,它有8个发光二极管(比七段多一个发光二极管,用来显示sP,即点),每个发光二极管的阳极连在一起,如图2-4所示。这样,一个LED数码管就有I根位选线和8根段选线,要想显示一个数值,就要分别对它们的上下电平来加以控制。为方
24、便起见,本文主要讨论共阴八段LED数码显示管,其他类形的显示管与其类似。 图2-4 LED数码管LED 灯的显示原理:通过同名管脚上所加电平的上下来控制发光二极管是否点亮而显示不同的字形,如 H,G,F,E,D,C,B,A全亮显示为8,采用共阴极连接驱动代码,代码表如下表2-3所示。表2-3 LED驱动代码显示数值H,G,F,E,D,C,B,A驱动代码0001111113FH10000011006H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011107H8011111117FH9011011116FH 2.
25、2.5 按键输入电路按键是由一组按压式或触摸式开关构成的阵列,是一种常用的输入设备。键盘可分为编码式键盘和非编码式键盘两种。1.编码键盘通过硬件电路产生被按按键的键码,这种键盘所需程序简单,但硬件电路复杂、价格昂贵通常不被单片机系统采用。2.非编码键盘常用一些按键排列成行列矩阵,其硬件逻辑与按键编码不存在严格的对应关系,而要由所用的程序来决定。非编码键盘的硬件接口简单,但是要占用较多的CPU时间,通常采用可编程键盘管理芯片来克服这个缺点。本设计使用两种按键,一种是按键式非编码键盘和轻触式非编码开关。在接线时由于有四个引脚,连接时需要用万用表进行测量,然后接通两个引脚,原理图如图2-5a,(b)
26、所示。 要进行数据的计算就必须先进行数据的输入,也就必须确定按键输入的数值是什么,这就需要对键盘进行扫描,从而确定究竟是哪个键按下。图2-5(a) 按键电路 图2-5(b) 按键电路2.2.6 报警与指示电路 在电路设计当中,设有报警与指示电路如图2-6所示,电路在整个电路中起到报警提示的作用。图2-6 报警与指示电路第三章 软件仿真 一般调试都是在编写代码完之后用来验证电路的准确与否,通过反复修改程序代码来来使电路尽可能完善,但是单单依靠软件来仿真并不能保证电路能实现想要的功能,因为软件仿真并不像现实的一样。所以还要依靠硬件电路来实现,不断修改。3.1 软件调试局部 使用Proteus和Ke
27、iluVision4软件来仿真,Proteus软件是用来仿真电路图,而KeiluVision4软件用来编译代码和编写代码,总程序如附录一所示。3.1.1PROTEUS简介Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:(1)现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。(
28、2)支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。(3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、存放器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。(4)具有强大的原理图绘制功能。可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的
29、效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。 PROTEUS 是单片机课堂教学的先进助手。 PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者那么是实物演示实验难以到达的效果。 它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行
30、结果等。 课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。 3.1.2软件调试 用软件来调试查找编程上的错误,可以比拟好的修改电路和程序,使得电路能尽可能完善和正确。如图3-1为电路连接图在Proteus的接法。 图3-1 Proteus电路原理图 而KeiluVision4用来检查语法和编译上的错误,用起来比拟方便,它是和Proteus软件相结合的,只有编译没有问题、正确后才能导入Proteus中得到正确的结果。
31、如图3-2是编译检查正确后的结果。 图3-2 KeilUvision4编写程序 其次,用KeilUvision4编写程序,编译无误后生成HEX文件,通过在网上买的最小系统来烧录程序,最小系统烧录程序很简单,只需插到电脑的USB接口,在网上下载烧录STC系列的单片机的烧录软件,找到生成HEX文件,即可下载。3.2 Proteus仿真图 下列图片为通过Proteus软件将已经用KeilUvision4编写的程序,编译无误后生成HEX文件装载入单片机中仿真出来后的结果。图3-3a为仿真的初始画面,图3-3b为6号犯规仿真结果图,图3-3c为4号成功抢答的仿真结果图,图3-3d为抢答时间调整仿真结果图
32、,图3-3e为答题时间调整仿真结果图。 图3-3a仿真初始画面 图3-3b6号犯规 图3-3c4号成功抢答图3-3d抢答时间调整图3-3e答题时间调整第四章 硬件调试 为了能够更好地完成电路的设计我使用DXP这款软件来制作电路板4.1 DXP软件简介 Altium公司作为EDA领域里的一个领先公司,在原来Protel 99SE的根底上,应用最先进的软件设计方法,于2002年率先推出了一款基于Windows2000和Windows XP操作系统的EDA设计软件Protel DXP。并于2004年推出了整合Protel完整PCB板级设计功能的一体化电子产品开发系统环境Altium Designer
33、2004版。 Protel DXP在前版本的根底上增加了许多新的功能。新的可定制设计环境功能包括双显示器支持,可固定、浮动以及弹出面板,强大的过滤和对象定位功能及增强的用户界面等。Protel DXP是第一个将所有设计工具集于一身的板级设计系统,电子设计者从最初的工程模块规划到最终形成生产数据都可以按照自己的设计方式实现。Protel DXP运行在优化的设计浏览器平台上,并且具备当今所有先进的设计特点,能够处理各种复杂的PCB设计过程。通过设计输入仿真、PCB绘制编辑、拓扑自动布线、信号完整性分析和设计输出等技术融合,Protel DXP提供了全面的设计解决方案。4.1.1原理图 因为使用PC
34、B板来焊接电路,所以还会用DXP软件,这个软件里面必须先画原理图,如图附录二为所设计电路的原理图。4.1.2 PCB图在原理图编译没有错误后就可以直接导入到PCB工程中,生成设计电路的PCB图,然后进行布线排版,调到适宜的位置后可以进行自动布线,不过也可以自己布线,但是必须设计好规那么。如图附录三是布好线的PCB图。 由于太久没有使用DXP软件,对这款软件也不是很熟练使用,因此在布线上不是很美观有一些红色的跳线。4.2 实物图 将做好的PCB图打印出来后,制好电路板并且打好孔,将如附录四所示的元件清单按电路图焊接好,最后检查调试好电路,得到实物如附录五所示。 结 论 经过近一个月的努力,终于顺
35、利完成了课程设计。刚开始,头绪不是很清楚,不知道从哪里入手,但通过老师的耐心指导并和同学认真研究设计课题,跑图书馆查资料、确定根本设计方案、对所用芯片功能进行查找、调试、上机仿真等,经历了一次次的困难,从中积累了很多珍贵的经验。在整个设计的过程中虽然遇到了很多的问题,比方对之前学习的单片机课程有些淡忘,学过的知识掌握的不牢靠;对常用的软件不是很熟练,在应用时经常通过查找资料来解决等。通过设计进一步认识到了自己的缺乏,让自己能够端正学习态度,对自己要严格要求,一切都要实事求是,不能够一知半解,要力求明明白白。不能急于求成,在动手之前,头脑里必须清楚该怎么做,要有总体思路,这一点是很重要的。就目前
36、来说,我的动手能力虽然不是很好,但我想,只要通过我的不懈努力,总会得到提高,这一点,我坚信。因为别人能做到的,我相信我也一定能做到。在此次的课程设计中我最大的体会就是进一步认识到了理论与实践的重要性。一份耕耘,一份收获。总而言之,此次课程设计让我学到了好多平时在课堂上学不到的东西,增加了我的知识运用能力,增强我的实际操作能力,为下一个学期的毕业设计做好了根底。谢谢老师给我们提供这么好的时机,为我们之后走向工作,走向社会奠定了一个好的根底。谢 辞随着2021年接近尾声,我的课程设计也顺利的完成了,通过此次的课程设计我从中又学到了很多课本上学不到的知识,这也为我下学期的毕业设计打下了良好的根底,在
37、提高自己的能力的同时又能为自己将要步入工作、社会铺设了道路。在这次课程设计过程中获得了各方面的支持,在这里首先向我的指导老师表示最诚挚的感谢,对那些无私的帮助和支持过我的老师和同学,在此我深表谢意。最后再次向所有在课设设计的过程中给予我帮助的老师和同学最诚挚的谢意!参考文献1 李群芳,张士军,黄建.单片微型计算机与接口技术. 北京:电子工业出版社, 20212 张迎新.单片微型计算机原理、应用及接口技术.北京:国防工业出版社,19993 顶峰.单片微机应用系统设计及使用技术.北京:机械工业出版社,20074 彭伟.单片机c语音程序设计实例基于protues仿真.北京:电子工业出版社, 2007
38、5 徐春河.浅谈AT89S51J.制造业自动化,2021,12:80-82.6 吴汉清.常用的典型单片机资料J.无线电,2007,(11):72-80.7 陈汝全.实用微机与单片机控制技术M电子科技大学出版社1995.7 12.8 李建民单片机在温度控制系统中的应用M江汉大学学报,1996.6 210-215.9 薛玲,孙曼,张志会,夏莉丽,魏希文.基于单片机AT89S51的温湿度控制仪 J.2021,37, (7):66-6910张毅刚.单片机原理及接口技术M.出版地:北京市丰台区成寿寺路,出版社: 人民邮电出版社,出版年月:2021年8月第一版 11郭天祥.51单片机C语言教程M.出版地:
39、成都新华路口33号,出版社:电子 工业出版社,出版年月:2021年1月12马杰.C语言程序设计根底M.出版地:广西桂林市中华路22号,出版社:广 西师范大学出版社,出版年月:2021年8月第一版附录一 总源程序#includetypedef unsigned char uchar;typedef unsigned int uint;sbit K0=P30;/开始抢答按键sbit beep=P37;/蜂鸣器sbit D0=P31;/指示灯sbit K1=P10;/1号选手抢答按键sbit K2=P11;/2号选手抢答按键sbit K3=P12;/3号选手抢答按键sbit K4=P13;/4号选手
40、抢答按键sbit K5=P14;/5号选手抢答按键sbit K6=P15;/6号选手抢答按键sbit K7=P16;/7号选手抢答按键sbit K8=P17;/8号选手抢答按键sbit S1=P32;/答题计时键sbit S2=P33;/开始抢答时间调整键sbit S3=P34;/答题计时时间调整键char s;uchar num=0;char time1;/抢答时间char time2;/答题限时时间uint m,n;/T0,T1定时器定一秒时bit flag1,flag2,flag3,flag4;/标志位bit aa,bb;/时间调整标志位/延时子函数void delay(uint z)u
41、int x,y;for(x=z;x0;x-)for(y=120;y0;y-);uchar code table1=/共阴数码管段码值0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar code table2=/共阴数码管位码值0xfe,0xfd,0xfb,0xf7;/初始化子函数void init()TMOD=0x11;TH0=(65536-2000)/256;TL0=(65536-2000)%256;TH1=(65536-2000)/256;TL1=(65536-2000)
42、%256;ET0=1;ET1=1;EA=1;P0=0x00;time1=10;time2=10;flag2=1;/开始键扫描子函数void key1()uchar i=100;if(K0=0)delay(10);if(K0=0)while(K0=0&i)i-;delay(10);TR0=1;s=time1;m=0;flag1=1;flag2=1;flag3=1;num=0;beep=1;D0=1;flag4=0;/去除违规标志位aa=0;bb=0;/选手抢答按键扫描子函数void key() uchar i=100;if(K1=0)delay(10);if(K1=0)while(K1=0&i)i-;delay(10);num=1;/数码管显示1号1TR0=0;/关闭定时器0,时间停