基于STM32的四路抢答器课程设计说明书_第1页
基于STM32的四路抢答器课程设计说明书_第2页
基于STM32的四路抢答器课程设计说明书_第3页
基于STM32的四路抢答器课程设计说明书_第4页
基于STM32的四路抢答器课程设计说明书_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

课程设计说明书第页课程设计说明书题目:基于STM32的四路抢答器学院:年级专业:学号:学生姓名:指导教师:摘要在各种智力竞赛场合,抢答器是必不可少的最公正的用具。在我们各种竞赛中我们也经常能看到有抢答的环节,某些举办方采用让选手通过举答题板的方法判断选手的答题权,这在某种程度上会因为主持人的主观误断造成比赛的不公平性,而抢答器的应用就能避免这种弊端。今天随着科技的不断进步抢答器的制作也更加追求精益求精,人们摆脱了耗费很多元件仅来实现用指示灯和一些电路来实现简单的抢答功能,使第一个抢答的参赛者的编号能通过指示灯显示出来,避免不合理的现象发生。但这种电路不易于扩展,而且当有更高要求时就无法实现,例如参赛人数的增加。随着数字电路的发展,数字抢答器诞生了,它易于扩展,可靠性好,集成度高,而且费用低,功能更加多样,是一种高效能的产品。而如今在市场上销售的抢答器大多采用可编程逻辑元器件,或利用单片机技术进行设计。本文实现了一个基于嵌入式STM32单片机的4路抢答器系统设计,本系统设计主要 分为硬件设 备和软件控制两大部分。外部硬件使用STM32单片机作为控制中心,用4 个按键作为抢答输入,抢答开始后,抢答成功者的LED灯标识为红色闪烁,并且显示各 抢答输入的时间。关键词:智能抢答器,STM32,按键输入,数码管显示目录TOC\o"1-3"\h\u23655摘要 226844目录 33406第1章绪论 5247001.1课题研究的相关背景 5106991.2选题的目的和意义 521331.3课题研究的内容 5148881.4国内外研究现状 644841.5抢答器目前存在的主要问题 61376第2章抢答器的系统概述 7150212.1系统的主要功能 7112872.2抢答器的工作流程 761722.3STM32的功能及简介 7303892.4抢答器的优点及组成 1022042.5本章小结 1118623第3章系统的硬件设计与开发 11271363.1系统硬件总体设计 11224453.2STM32最小系统 13304723.4时钟频率电路的设计 1424973.5复位电路的设计 15167423.6数码管显示 16175303.7键盘电路的设计 1743303.8LED电路 18285483.9本章小结 1931013第4章系统的软件设计与开发 19226264.4主要程序分析 21166394.5本章小结 3017437第5章总结与展望 31215195.1总结 31101785.2展望 3229633致谢 331395参考文献 34第1章绪论课题研究的相关背景抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。早期的抢答器只由几个三极管、可控硅、发光管等组成,能通过发光管的指示辩认出选手号码。现在大多数抢答器均使用单片机和数字集成电路,并增加了许多新功能,如选手号码显示、抢按前或抢按后的计时、选手得分显示等功能。本系统设计主要分为硬件设备和软件控制两大部分。外部硬件使用STM32单片机作为控制中心,用4个按键作为抢答输入,抢答开始后,抢答成功者的 LED灯标识为红色闪烁,并且显示各抢答输入的时间。选题的目的和意义通过这次设计,掌握STM32单片机的原理,了解简单多功能抢答器组成原理,初步掌握多功能抢答器的调整及测试方法,提高动手能力和排除故障的能力。同时通过本课题设计与仿真进行调试,提高自己的动手能力,巩固已学的理论知识,建立单片机理论和实践的结合,了解多功能抢答器各单元电路之间的关系及相互影响,从而能正确设计、应用各个单元电路。课题研究的内容本系统采用模块化设计智能抢答器,在抢答比赛中广泛应用,各组分别有一个抢答按钮。抢答开始后,抢答成功者的 LED灯标识为红色闪烁,并且显示各抢答输入的时间。在通过研究并在设计验证后发现,采用单片机技术设计的抢答器与目前常用的抢答器相比,首先,电路连接简单,因为大多数功能单元都通过程序设计在单片机内部,第二,工作性能可靠,抗干扰能力优于目前抢答器。所以本研究是一个实用的工程设计,具有创新性。国内外研究现状抢答器作为一种电子产品,早已广泛应用于各种智力和知识竞赛场合,但目前所使用的抢答器有的电路较复杂不便于制作,可靠性低,实现起来很困难;有的则用一些专用的集成块,而专用集成块的购买又很困难。为适应高校等多代表队单位活动的需要而设计一个多功能抢答器,这种抢答器具有电路简单,元件普通,易于购买等优点,很好地解决了制作者制作困难和难于购买的问题。在国内外已经开始了普遍的应用。抢答器目前存在的主要问题随着改革开放事业的不断深入,促使人们学科学、学技术、学知识的手段多种多样,抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。但抢答器的使用频率校低,且有的要么制作复杂,要么可靠性低,减少兴致。作为一个单位若专购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展。而且目前多数抢答器存在3个不足之处:第一,现场线路连接复杂。因为每个选手位于抢答现场的不同位置,每个选手与控制台之间要有长长的连接线。选手越多,连接线就越多、越乱,这些连接线不仅影响了现场的美观,而且降低了抢答器的可靠性,增加了安装的难度,甚至影响了现场人员的走动。第二,电路复杂。因为单片机只完成号码处理、计时、数据运算等功能,其它功能如选手号码的识别、译码、计分显示等仍只能通过数字集成电路完成。采用单片机扫描技术识别选手抢按号码时,电路的延迟时间较大。第三,选手抢按成功,但出现没有抢答被记录的问题。抢答器的系统概述2.1系统的主要功能本系统是借用单片机采用模块化设计的4路抢答器,包括4路抢答按纽、计时显示、抢答成功标识,各种相关显示调控功能等本系统采用模块化设计的四路抢答器,在抢答比赛中广泛应用,各组分别有一个抢答按钮。一共有4个按键输入,分别对应4路选手的抢答按键。单片机是整个抢答器的核心,内部电路设计用汇编语言编写。它完成了时间参数的设定,抢按号码的译码,保存;显示;输出,抢按及答题倒计时功能等。本设计中,有四个共阳的数码管,四个数码管。主持人按下复位键(RESET)后开始抢答。抢答成功者的LED灯标识为红色闪烁,并且显示各抢答输入的时间。2.2抢答器的工作流程抢答器的基本工作原理:在抢答后,按键产生的下降沿,被中断的LINE线捕捉,从而实现进入中断服务函数,进行LED闪烁,以及实现相应数码管的计时显示工作,进而标识识别出抢答成功者的标号,进行相应的回答。2.3STM32的功能及简介现阶段,市场上低端产品处理器以8位单片机为主,例如广为人知的C51系列,而高端则是以32位单片机为主,例如基于ARMCortex-M3内核的STM32系列,是专门为要求高性能、低功耗、低成本的嵌入式系统设计的芯片。本系统是使用STM32单片机,采用模块化设计的4路抢答器,包括4路抢答按纽、计时显示、各种相关显示调控功能等。采用STM32F103VET6的100管脚的单片机,连接四路按键,四路LED,以及要显示四个独立的数码管,故需要比较多的I/O口.使用外部中断包含16个的边沿检测器,用于产生中断,每个中断线都可以独立地配置它的触发事件(上升沿或下降沿或双边沿),并能够单独地被屏蔽;有一个挂起寄存器维持所有中断请求的状态。EXTI可以检测到脉冲宽度小于内部APB2的时钟周期。多达112个通用I/O口连接到16个外部中断线,满足系统功能的需要。从性能、价格、实际需要,STM32F103VET6较之8位8051单片机等,更为符合设计要求。图2.4STM32单片机的内部结构图ARMCortex-M3处理器是新一代的32位处理器,是一个高性能、低成本的开发平台,适用于微控制器、工业控制系统以及无线网络传感器等应用场合。其特点为:性能丰富成本低。专门针对微控制处理器应用特点而开发的32位MCU,具有高性能、低成本、易应用等特点。低功耗。把睡眠模式与状态保留功能结合在一起,确保Cortex-M3处理器既可提供低能耗,又不影响很高的运行性能。可配置性强。Cortex-M3处理器的NVIC功能提高了设计的可配置性,提供了多达240个具有单独优先级、动态重设优先级功能和集成系统时钟的系统中断。丰富的链接。功能和性能兼顾的良好组合,使基于Cortex-M3的设备可以有效处理多个I/O通道和协议标准。STM32系列处理器先进的内部结构:1.哈佛结构。使其在处理器整数性能测试上有着出色的表现,可以达1.25DMIPS/MHz,而功耗仅为0.19mW/MHz。2.Thumb-2指令集以16位的代码密度带来了32位的性能。3.内置了快速的中断控制器,提供了优越的实时特性,中断的延迟时间降到只需6个CPU周期,从低功率模式唤醒的时间也只需6个CPU周期。4.单周期惩罚指令和硬件除法指令。STM32在嵌入式系统应用领域有着无可比拟的优势,本系统应用的STM32F103ZET6的增强型系列单片机的功能也十分强大。详细介绍如下:1.内核:(位的Cortex™-M3

CPU)最高工作频率,在存储器的0等待周期访问时可达1.25DMips/MHz;单周期乘法和硬件除法。2.存储器:从至512K字节的闪存程序存储器;高达64K字节的SRAM;带4个片选的静态存储器控制器、支持CF卡、SRAM、PSRAM、NOR和NAND存储器;并行LCD接口,兼容8080/6800模式。3.时钟、复位和电源管理:2.0~3.6V供电和I/O引脚;上电/断电复位(POR/PDR)、可编程点压监测器(PVD);4~晶体振荡器;内嵌经出厂调校的的振荡器;内嵌带校准的的振荡器;带校准功能的32kHzRTC振荡器。4.低功耗:睡眠、停机和待机模式;VBAT为和后备寄存器供电。5.3个位模数转换器,1μs转换时间(多达个输入通道转换范围:0至3.6V;三倍采样和保持功能;温度传感器6.2通道12位D/A转换器7.DMA(12通道DMA控制器):支持的外设:定时器、ADC、DAC、SDIO、I^2S、SPI、I^2C和USART。8.调试模式:串行单线调试(SWD) 和JTAG接口;Cortex-M3内嵌跟踪模块(ETM)。9.多达112个快速I/O端口:51/80/112个多功能双向I/O口,所有I/O口可以映像到16个外部中断;几乎所有端口均可容忍5V信号。10.多达11个定时器:多达4个16位定时器,内个定时器有多达4个用于输入捕获/输出比较/PWM或脉冲计数的通道和增量编码器输入;2个16位位带死区控制和急刹车,用于电机控制的PWM高级控制定时器;2个看门狗定时器(独立和窗口型的);系统时间定时器;24位自减型计数器;2个16位基本定时器用于驱动DAC。11.多达13个通信接口:多达2个I^2C接口(支持SM-Bus/PM-Bus);多达5个USART接口(支持ISO7816,LIN,Ir-DA接口和调制解调控制);多达3个SPI接口(18M位/秒),2个可复用为I^2S接口;CAN接口(2.0B主动);USB2.0全速接口;SDIO接口。12.CRC计算单元,96位的芯片唯一代码13.ECOPACK®封装2.4抢答器的优点及组成在知识比赛中,特别是做抢答题目的时候,在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。本文主要介绍了单片机抢答器设计及工作原理,以及它的实际用途。系统工作原理本系统采用STM32单片机作为核心。控制系统的四个模块分别为:存储模块、显示模块、计时模块、抢答开关模块。该抢答器系统通过四个个按键输入抢答信号;利用存储程序来完成软件的设计;利用四个4位七段共阳数码管来完成显示功能。工作时,用按键通过开关电路输入各路的抢答信号,经单片机的处理,输出控制信号,控制四个七段数码管和喇叭工作。在数码管上显示哪一组先答题,从而实现整个抢答过程。2.5本章小结本章主要讲述了抢答器的工作原理和本设计系统的工作流程。在说明工作原理的过程中,突出了电路的组成单元以及这些单元如何实现抢答功能;在说明系统的流程时,结合本设计的内容,指出了参数设置的方法和意义。抢答正常流程的实现,同时也说明了抢答器的优点和STM32的功能及简介。第3章系统的硬件设计与开发3.1系统硬件总体设计本章主要内容是系统的硬件电路的实现,即现场检测设备的硬件电路设计,四路按键作为输入信号传给STM32单片机,STM32作为主控制芯片,四盏LED作为输出,抢答成功者的LED灯红色闪烁,四个独立数码管,分别显示各自的抢答时间,电源模块采用的12V的开关电源,再通过稳压芯片转换为所需5V和3.3V电源输出。还需要USB转串口电路,JTAG调试电路,晶振、BOOT等外围电路。STM32单片机STM32单片机4位七段数码管显示LED显示=4路抢答按键输入复位电源晶振JTAG3.2STM32最小系统采用STM32F103VET6最小系统,100引脚,512闪存,32位CPU,最高72Mhz工作频率,完全可满足本系统设计的需要。3.3JTAG电路JTAG(JointTestActionGroup,即联合测试行动小组)是一种国际标准的测试协议,主要应用于芯片的内部测试,现在主流的DSP、FPGA芯片等都支持JTAG协议。标准的接口是4线制的,包括:TMS、TCK、TDI、TDO,分别代表模式选择、时钟设置、数据输入和数据输出。JTAG的基本原理是在器件内部定义一个TAP(TestAccessPort,即测试访问口)然后通过专门的调试工具对芯片内部的节点进行测试。图3.3STM32的JTAG调试接口电路3.4时钟频率电路的设计单片机必须在时钟的驱动下才能工作。在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。时钟电路如图5所示。图3.4外部振荡源电路一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值为30PF。单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数,常用fosc表示。图中时钟频率为12MHz,即fosc=12MHz,则机器周期为1µs.3.5复位电路的设计单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图6所示:图3.5复位电路图6中由复位键以及电解电容C3、电阻R2构成按键及上电复位电路。由于单片机是高电平复位,所以当复位键按下的时候,单片机的9脚RESET管脚将处于高电平,此时单片机就处于复位状态。当上电后,由于电容的缓慢充电,单片机的9脚电压会逐步由高向低转化,经过一段时间后,单片机的9脚处于稳定的低电平状态,此时单片机上电就复位完毕,系统程序从0000H开始执行。值得注意的是,在设计当中使用到了硬件复位和软件复位这两种功能,由上面的硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值,而前面的功能介绍中提到了倒计时时间的记忆功能,该功能的实现的前提条件就是不能对单片机进行硬件复位,所以设定了软件复位功能。软件复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。3.6数码管显示显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。在这里我们使用的是四个独立七段数码管显示,通常在显示上我们采用的方法一般包括两种:一种是静态显示,一种是动态显示。其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多;动态显示的特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。在本设计中根据实际情况采用的是动态显示方法。图3.6共阴极数码管图2.6中数码管采用的是4个七段共阳数码管,其中选手A数码管连接PB0-PB6口,选手B连接PB7-PB13,选手C连接PC7-PC13,选手D连接PC0-PC6口。3.7键盘电路的设计键盘是人与单片机打交道的主要设备。关于键盘硬件电路的设计方法也可以在文献和书籍中找到,配合各种不同的硬件电路,这些书籍中一般也会提供相应的键盘程序,在单片机应用中键盘用得最多的形式是独立键盘和矩阵键盘。它们都有各自的特点,其中独立键盘的硬件电路简单,而且在程序设计上也不复杂,一般都用在对硬件电路要求不高的简单电路中;矩阵键盘与独立键盘有很大区别,首先在硬件电路上它要比独立键盘复杂很多,而且在程序算法上要比它烦琐,而且在触点抖动按键同与断过程中可能会出现判断错误。应该采用软件去抖方法,即延时重复扫描法,延时法的原理为:在检测到有按键被按下时,执行一个10ms左右(具体时间应该视所使用的按键进行调整)的延时程序,再确认该键电平是否仍保持闭合状态的电平,若仍保持闭合状态电平,则确认该键处于闭合状态;同理,在检测到该键释放后,也应该采用相同的步骤进行确认,从而消除去抖的影响。在本文设计中采用了独立键盘的方式,本设计中有4个抢答按键输入,如图3.7所示。图3.7抢答按键在图3.7中4个抢答按键分别接入单片机的PA0-PA3端口,单片机通过读写PA0-PA7的值来判断当前输入的是4个抢答按键中的哪一个,从而触发断,完成抢答成功者LED显示及抢答时间显示。3.8LED电路各类LED发展非常迅速,已经成为各种照明标识常用的显示元件,本系统采用IO口直接连接的LED驱动电路,如下图3.8。在图308中4盏LED灯分别接入单片机的PA4-PA7端口,单片机通过写0写1,进而控制LED的亮灭与否。3.9本章小结本章详细讲述了以STM32为核心元件的抢答器的硬件电路具体设计过程,分析了具体电路。在设计过程中,实现抢答功能的是通过编写程序的方法集成在STM32内部。接着将程序下载到硬件电路中,配合周边的时钟电路,复位电路等,制作出符合设计要求的抢答器。系统的软件设计与开发4.1系统总体设计本系统的软件设计采用模块化编程,由LED显示,按键输入,数码管,主函数构成,使用中断,在按键输入后,下降沿检测,进而进入中断函数,完成数码管,LED的显示。程序编译环境为KEILu-Vision5,主控制器采用ARMcortex-M3内核的STM32,调试工具为J-Link的JTAG仿真器,便于在线调试。4.2STM32开发调试环境介绍基于ARMcortex-M3内核的STM32微处理器得到越来越广泛的应用,所以开发工具也分为好多种,当下最流行的STM32的开发工具为KEILMDK和IAREWARM,两种工具各有千秋,作下简要介绍。KEILMDK作为一个套件,包含了全套的软件模块,其中就包括KEIL公司的IDE环境“KEILu-Vision”,KEILu-Vision5是它的第五个版本。而本文所使用的RVMDK全称是REALVIEWMDK,是KEIL公司专门用于嵌入式开发所使用的软件,REALVIEWMDK集成了包括u-Vision5的开发环境与REALVIEW编译器.另外一种开发工具IAREWARM,全称IAREmbeddedWorkbenchforARM,是ISRSystem公司为ARM芯片开发的一个集成环境,IAREWARM中包含了一个全软件的模拟程序,使得用户甚至不需要任何硬件的支持就可以模拟各种ARM内核、中断甚至外部设备,使用方便且便于操作,尤其适用于内核的移植。调试工具J-Link是SEGGER公司为支持仿真内核芯片推出的一款JTAG仿真器,适用于KEIL、IAREWARM、REALVIEW等多种集成开发环境,特别适合开发基于ARM的嵌入式系统。4.3程序流程图在本设计中包括了以下主要的程序:主程序,LED,数码管,按键,中断服务函数,主流程图如4.3所示:图4.3程序设计流程图4.4主要程序分析4.4.1主程序分析#include"main.h"intmain(void){LED_GPIO_Config(); KEY_Config();DIGITRON_GPIO_Config(); TimeCount(); NVIC_Config(); while(1) { }}程序分析:进入主函数后,进行LED配置,按键配置,数码管配置,显示函数,以及中断配置,随后进入while死循环,等待中断响应。4.4.2LED函数分析 #include"led.h"voidLED_GPIO_Config(void) { /*定义一个GPIO_InitTypeDef类型的结构体*/GPIO_InitTypeDefGPIO_InitStructure; /*选择要控制的GPIOA引脚*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5| GPIO_Pin_6;/*设置引脚模式为通用推挽输出*/GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; /*设置引脚速率为50MHz*/GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; /*调用库函数,初始化GPIOA*/GPIO_Init(GPIOA,&GPIO_InitStructure);/*关闭所有led灯*/ GPIO_SetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5| GPIO_Pin_6); }程序分析:进入LED_GPIO_Config后,完成LED相关引脚配置。4.4.3按键配置函数#include"key.h"voidKEY_Config(void){ //GPIO配置 EXTI_InitTypeDefEXTI_InitStructure; GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA| RCC_APB2Periph_AFIO,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2| GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; GPIO_Init(GPIOA,&GPIO_InitStructure); //EXTI配置 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0|\ GPIO_PinSource1|GPIO_PinSource2|GPIO_PinSource3);//中断源 EXTI_InitStructure.EXTI_Line=EXTI_Line0|EXTI_Line1|EXTI_Line2|EXTI_Line3;//中断线路 EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt; //外部触发 EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//下降沿 EXTI_InitStructure.EXTI_LineCmd=ENABLE; EXTI_Init(&EXTI_InitStructure); }程序分析:完成KEY相关引脚配置,并设置相应的中断线,中断模式,触发方式,使能EXTI的配置。4.4.4NVIC配置#include"nvic.h"voidNVIC_Config(void){ //ÉùÃ÷NVIC½á¹¹Ìå NVIC_InitTypeDefNVIC_InitStructure; //设置中断0 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1; NVIC_InitStructure.NVIC_IRQChannelSubPriority=3; //设置中断1 NVIC_InitStructure.NVIC_IRQChannel=EXTI1_IRQn; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1; NVIC_InitStructure.NVIC_IRQChannelSubPriority=3; //设置中断2 NVIC_InitStructure.NVIC_IRQChannel=EXTI2_IRQn; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1; NVIC_InitStructure.NVIC_IRQChannelSubPriority=3; //设置中断3 NVIC_InitStructure.NVIC_IRQChannel=EXTI3_IRQn; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1; NVIC_InitStructure.NVIC_IRQChannelSubPriority=3; NVIC_Init(&NVIC_InitStructure);}程序分析:在NVIC中,分别完成相应的中断1,2,3,4中断分组,抢占优先级,响应优先级的配置,由于是均等条件的抢答,故抢占及响应优先级均为同一等级。4.4.5DIGITRON函数#include"digitron.h"u8table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};//共阳极 0-9intFlagA=1,FlagB=1,FlagC=1,FlagD=1;u16TIME=500;voiddelayms(u16time);//延时1msvoidTimeCount(void); //计时voidDIGITRON_GPIO_Config(void) { /*定义一个GPIO_InitTypeDef类型的结构体*/ GPIO_InitTypeDefGPIO_InitStructure;/*开启GPIOA的外设时钟*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE); /*选择要控制的GPIOB引脚*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;/*设置引脚模式为通用推挽输出*/ GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; /*设置引脚速率为50MHz*/ GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;/*调用库函数,初始化GPIOA*/ GPIO_Init(GPIOB,&GPIO_InitStructure);}voidTimeCount(){ u8i=0,j=0,m=0,n=0; //选手A for(;i<10;i++) { GPIO_ResetBits(GPIOB,GPIO_Pin_All); switch(i) { case0:GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|\ GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4| GPIO_Pin_5);delayms(TIME); break; // 0 case1:GPIO_SetBits(GPIOB,GPIO_Pin_1|GPIO_Pin_2);delayms(TIME); break; // 1 case2:GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|\ GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_6);delayms(TIME); break; // 2 case3:GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|\ GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_6);delayms(TIME); break; // 3 case4:GPIO_SetBits(GPIOB,GPIO_Pin_1|GPIO_Pin_2|\ GPIO_Pin_5|GPIO_Pin_6);delayms(TIME); break; // 4 case5:GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_2|\ GPIO_Pin_3|GPIO_Pin_5|GPIO_Pin_6);delayms(TIME); break; // 5

case6:GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_2|\ GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5| GPIO_Pin_6);delayms(TIME); break; // 6

case7:GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|\ GPIO_Pin_2);delayms(TIME); break; // 7

case8:GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|\ GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5\ |GPIO_Pin_6);delayms(TIME); break; // 8

case9:GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|\ GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_5| GPIO_Pin_6);delayms(TIME); break; // 9

} if(FlagA==1) { break; } }voiddelayms(u16time)//延时1ms{ u16i=0; while(time--) { i=12000; while(i--); } }程序分析:在数码管函数中,采用switch-case语句进行数码管从0-9的显示,每个数字显示500ms,在响应中断后,跳出for循环,从而实现抢答时间的显示。4.4.6中断服务函数voidEXTI0_IRQHandler(void){if(EXTI_GetITStatus(EXTI_Line0)!=RESET){ for(;i<=repeat;i++) { LED1(ON); Delay(100); LED1(OFF); Delay(100); } FlagA=1; EXTI_ClearITPendingBit(EXTI_Line0);}}程序分析;当按键按下后,产生下降沿,从而进入中断函数,LED闪烁,并将FlagA置1,实现数码管函数的跳出for循环。4.5本章小结本章是抢答器的软件设计,采用库函数编程的方法,实现抢答功能,将程序下载到硬件电路中,实现抢答功能。第5章总结与展望5.1总结本文研究与设计的八路多功能抢答器采用了通用的电子元器件,利用80C51单片机及外围接口实现抢答系统,利用单片机的定时器/计数器定时和计数的原理,将软、硬件有机地结合起来。通过查资料和搜集有关的文献,理论联系实践,培养了自学能力和动手能力。并且由原先的被动的接受知识转换为主动的寻求知识,这可以说是学习方法上的一个很大的突破。在设计过程中由于时间仓促和能力有限使很多地方难免存在不足之处,硬件设计和软件设计中有些功能还尚未开发出来。但在以后的工作中,我会严格要求自己,追求完美。整个设计通过了软件和硬件上的调试,我想这对于自己以后的学习和工作都会有很大的帮助的。在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计中的问题。而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力。它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。但是,通过这次设计我也发现自己的很多不足之处。在设计过程中我发现自己考虑问题很不全面,自己的专业知识掌握的很不牢固,所掌握的计算机应用软件还不够多,我希望自己的这些不足之处能在今后的工作和学习中得到改善。而且,通过这次设计,我懂得了学习的重要性,学会了坚持和努力,这将为以后的学习做出了最好的榜样!5.2展望回头再看看该设计,还可以将设计的扩展功能增强:1、可以设计声控装置,在主持人说开始时,系统自动完成清零并开始计时的功能。2、增加记分模块,可以设定初始积分,并记录每次抢答完成后的积分。3、将抢答按键用无线实现,如红外线,使抢答者可以远距离进行抢答,并简化按键模块的线路布置。如果提供相应的器材及时间上的宽限,一定可以完成上述扩展功能,进一步完善作品。致谢在此要感谢我的指导老师对我悉心的指导,感谢给我的帮助。在设计过程中,我通过查阅大量有关资料,与导师交流经验和自学,并向请教,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的不完美,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。参考文献[1]张淑清,张立国,金海龙,胡永涛.嵌入式单片机STM32设计及应用技术.国防工业出版社,2015:5-8。[2]李增生.对《抢答器》的改进[J].电子制作,2008,(12).[3]高伟.单片机原理及应用[M].北京:国防工业出版社,2008年.[4]蔡朝阳.单片机控制实习与专题制作[M].北京:北京航空航天大学出版社,2006年.[5]胡学海.单片机原理及应用系统设计[M].北京:北京电子工业出版社,2005年.基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究基于单片机的模糊控制器在工业电阻炉上的应用研究基于双单片机冲床数控系统的研究与开发

温馨提示

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

评论

0/150

提交评论