【基于STM32的智能红绿灯控制系统设计与实现8300字(论文)】_第1页
【基于STM32的智能红绿灯控制系统设计与实现8300字(论文)】_第2页
【基于STM32的智能红绿灯控制系统设计与实现8300字(论文)】_第3页
【基于STM32的智能红绿灯控制系统设计与实现8300字(论文)】_第4页
【基于STM32的智能红绿灯控制系统设计与实现8300字(论文)】_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

基于STM32的智能红绿灯控制系统设计与实现摘要目前,存在很多智能交通灯的设计案例,大多数是通过51单片机或者PLC来实现。本设计提出了一种利用STM32单片机自动控制交通灯的的方法。对交通灯的状态预设为两种,一种是普通状态,在普通状态下,交通灯就根据路口预设的时间进行红、黄、绿灯的交替变化和倒计时。另一种是特殊状态,在特殊状态下,由蓝牙模拟对交通灯进行远程控制,实时调节不同交通情况下信号灯的状态,充分保证了交通信号灯在不同的状态下可以来回切换,进一步完善了交通灯的控制系统。根据stm32f103c8t6单片机的原理和在实际应用中的特点,本文给出了软件和硬件设计的总体方案和各个模块的详细介绍,对于在STM32单片在设计交通灯的过程中有可能遇到的各种问题都有涉足。关键词交通灯;STM32单片机;数码管;蓝牙;控制目录TOC\o"2-2"\h\z\t"标题1,1"1引言 11.1交通灯的发展和趋势 11.2交通灯的研究意义 12设计方案和工作原理 22.1设计方案 22.2工作原理 33STM32单片机模块 43.1最小系统组成 43.2主要逻辑函数的实现 74LED信号灯模块 94.1LED驱动电路 94.2LED初始化程序 95数码管模块 115.1数码管模块介绍 115.2数码管驱动电路 125.3数码管显示程序 126蓝牙模块 136.1HC-05蓝牙模块介绍 136.2串口通信 15结论 18参考文献 19附录 201引言交通灯的发展和趋势交通灯的出现已有一百多年的历史,1868年12月10世界上出现了第一盏手摇煤气交通灯。1914年,美国克里夫兰市首次使用的电信号灯。由于技术的限制,交通灯一直以来采用人工切换的方式。直到晶体管和集成电路板的诞生,交通灯才实现从人工控制到自动控制的突破。但是当时的交通灯没有统一的规定和控制,直到上个世纪70年代微软共公司的崛起,才使得交通灯有了统一的处理系统。当前,国内大多数交通灯还一直沿用以往的控制系统。大部分都是红灯、黄灯和绿灯进行交替切换。当面对庞大的车流量量和人流量也受到了很多的限制。未来交通灯的发展趋势,主要体现在智能化,主要包括以下几个方面:可根据车流量自动调节路口时间。可根据路口突发状况,自动调配时间。可远程控制多个交通灯。交通灯的研究意义众所周知,交通运输在城市发展中起着至关重要的作用。随着21世纪汽车工业的飞速发展和人们生活水平的不断提高,每个家庭都有自己的汽车。汽车的爆发式增长和城市初期建设道路无法拓宽是导致交通拥堵的主要原因。虽然城市的建设者们也纷纷使用各种措施去改善交通状况,例如修建地铁和城市快速路。但是面对交通高峰时期仍然是捉襟见肘。如何有效的缓解交通问题已经成了各大城市关注的热点问题之一。从目前来看,想要彻底的改变交通状况,就需要城市建设者和规划者们不惜成本的对城市道路进行拓宽和重新布局。显然,从短期来讲这是不现实的。短期想要改善交通状态,就不得不把目光放在路口的交通信号灯上。在过去的几十年,交通灯已经出现在各个城市的大小路口。虽然它们在当时可以很好的改善交通状况。但是在目前庞大的交通参与者的情况下,显然不能满足。21世纪是情报和信息的时代,由微型计算机控制的智能交通灯,是改善交通状况的一个重要研究方向。让交通灯根据不同的路口状态实现自动控制和远程控制交通灯对目前的城市交通改善有着很现实的意义。同时,在未来越来越智能的交通控制系统才能适应城市的发展需求。因此,研究智能交通灯有着长远而又重要的意义。2设计方案和工作原理2.1设计方案本次设计的方案是在十字路口设计一个智能交通灯。在四个路口处分别各有一个红色,黄色和绿色的LED灯。共有12个LED灯。此外,每个交叉点都有一个0.28英寸的两位数公共阳极数码管来显示倒计时,总共有四个数码管。其中,在东西方向和南北方向上的同种颜色的小灯由STM32单片机的同一个GPIO控制,同样,同方向上的数码管片选端也由单片机的同一个IO口控制。这样既可以达到同步的效果又可以简化电路。在正常状态下南北和东西方向的红绿灯依次交替倒计时改变灯色,实现通行和禁止。当在特殊情况下又分为以下表几种状态。命令东西LED南北LED东西数码管南北数码管禁止通行红红9999东西通行绿红9999南北通行红绿9999夜间模式黄黄0000复位————————(1)禁止通行:当道路出现特殊情况不允许车辆通过时,通过手机向蓝牙发送禁止通行的命令,东西南北各个路口都会显示红灯,并且数码管显示持续的99秒,无倒计时。此时所有路口的车辆都不允许通过。当第二次接到此命令返回主函数。(2)东西通行或南北通行:当道路遇到紧急状况,例如救护车通过时,只允许某一个方向通行,当用手机蓝牙向单片机发送某一个方向通行的的命令后,这个方向就会显示持续的绿灯,而另一个方向就会显示持续的红灯,数码管显示99秒无倒计时。当第二次接到此命令,返回主函数。(3)夜间模式:此模式适用于深夜车辆少的情况,当深夜时发送此命令,十字路口的各个状态都显示黄灯。这样在车辆少的情况下避免了等红灯的时间。当第二次接到此命令返回主函数。(4)复位指令:当交通灯在突发情况下出现问题或者卡死,通过该指令让交通灯恢复到初始状态。2.2工作原理图SEQ图\*ARABIC1总体控制图大体结构如上图1所示,本设计采用STM32F103C8T6单片机的GPIOA7、GPIOA8、GPIOA9分别连接东西方向的红、绿、黄灯,用GPIOA10、GPIOA11、GPIOA12分别连接南北方向的红、绿、黄灯,将这些不同颜色的LED灯的正极连接到3.3V电源,并通过限流电阻器将负极连接到单片机的不同GPIO端口。当微控制器输出低电平时,LED灯的正极和负极之间会产生电位差,小灯就会发光。相反,当单片机输出高电平时,小灯就会灭。共用了4个共阳极数码管来显示各个路口的时间。数码管的A、B、C、D、E、F、G端口分别直接和单片机的GPIOB8——GPIOB14连接。东西方向上的片选端连接在一起,南北方向上的片选端连接在一起。用四个PMOS管SS8550来驱动这些数码管。单片机的GPIOB4、GPIOB5驱动南北方向的PMOS,GPIOB6、GPIOB7驱动东西方向上的PMOS。当STM32F103C8T6单片机的GPIO口输出为低电平时,P型MOS管就会导通REF_Ref20096\r[2],数码管的片选端为高电平。反之当STM32F103C8T6单片机的GPIO输出高电平时,P型MOS管截止REF_Ref20096\r[2],片选端为低电平。当片选端为高电平时,根据位选端的电平变化,就能让数码管显示相应的示数。STM32F103C8T6微控制器的GPIOA2和GPIOA3分别发送数据TX和接收数据RX。将单片机的发送TX连接到蓝牙模块的接收RX,将单片机的接收RX连接到蓝牙模块的发送TX,然后将单片机和蓝牙连接模块到公共GND。就可以可实现单片机和蓝牙模块的相互通信。用手机给蓝牙模块发送命令,当蓝牙模块接收到命令根据串口中断执行相应的函数。即可实现用手机远程控制交通灯。3STM32单片机模块3.1最小系统组成目前在各种资料上可以看到很多交通灯的设计案例,他们大多数采用单片机或者PLC去实现交通灯的功能。用单片机设计交通灯不仅设计简单方便,而且成本也不高。STM32F103C8T6单片机虽然在众多STM32系列单片机中性能不算优越,但是相比于传统51而言仍然是十分强大。仅有48个引脚,却拥有20K的RAM、32个通用I/O口、64K的FLASH、3个USART、1个USB、2个SPI、2个I2C、一个CAN和两组10通道的12位同步ADC。用其设计交通灯可以满足各种需求。所以文中设计采用此款单片机。引脚图如下图2所示。图SEQ图\*ARABIC2引脚图图SEQ图\*ARABIC3最小系统STM32最小系统如上图3所示是微控制器运行的最低要求,它主要由五个部分组成:电源,时钟电路,复位电路,调试接口和控制芯片REF_Ref21272\r[3]。(1)电源图SEQ图\*ARABIC4电源模块本设计中使用的电源模块是AMS1117-3.3V芯片,其主要功能是将5V电压转换为3.3V电压以为单片机供电REF_Ref21605\r[4]。输入和输出各采用两个滤波电容。(2)时钟电路图SEQ图\*ARABIC5时钟电路如图5所示,本次设计STM32单片机最小系统采用了一个8M和一个32.768K的两脚无缘晶振。8M晶体振荡器主要用作系统时钟。通过将PLL乘法器设置为9乘法器,最大工作频率可以达到72MHZ。由石英内部分频器分频15次后,由32.768K晶体振荡器产生的振荡信号可以得到1HZ信号,即秒针每秒运动32.768K=32768=2^15REF_Ref22131\r[5],以及石英时钟中的内部分频器只能执行15个分频。如果将此晶体振荡器更改为其他频率,则在15个分频之后,将无法获得1HZ信号。因此,当使用32.768K晶体振荡器时,数据转换更加方便和准确。同时,硬件分别在8M晶体振荡器和32.768K晶体振荡器的两侧分别连接22PF和15PF负载电容器。它的功能是将电能转换为其他形式的能量。没有这两个电容器,振荡部分将没有环路并停止振荡,电路将无法正常工作。(3)复位电路图SEQ图\*ARABIC6复位电路从图6可以看出,STM32微控制器的复位引脚在初始状态下为高电平。当按下按钮时,复位引脚的电平从高电平跳到低电平,从而产生复位信号。其中图中C9电容的作用是按键消抖,因为按键在按下时大约有10ms左右的抖动,虽然对于肉眼几乎察觉不到,但是对于STM32单片机来说以经是很长的时间了,如果不用电容来消抖,就可能让单片机执行错误误动作,进行多次复位。由于电容具有储能作用,两边电压不会突变,所以用电容防止按键抖动。(4)调试图SEQ图\*ARABIC7调试模块调试接口也是程序下载口,主要有四根线,VCC,GND,SDIO,SCLK。在日常程序烧录和在线仿真中,有两调试方式一个是SWD,另一个是JTAG。JTAG有很多缺点。例如,JTAG在调试时使用更多的接口,并且在数据量较大时可能无法下载。而SWD的接口更加简化,下载的可靠性更强。所以本次设计用的是SWD模式下载和在线仿真。3.2主要逻辑函数的实现整个程序的逻辑主要分为两大块,分别实现交通灯在普通状态和特殊状态下的功能。交通灯在正常情况下的功能是在主函数下实现的,首先在main()函数里对需要用到的交通灯和数码管和串口初始化函数进行声明。并根据需求设置串口的波特率和中断优先级分组。然后再while(1){}的死循环中执行普通状态下的交通灯显示,具体流程下图8所示:图SEQ图\*ARABIC8程序框图特殊状态下的功能是在串口中断服务函数里实现的,根据串口接收的不同命令,去执行相应的函数。具体流程如下图9所示。图SEQ图\*ARABIC9串口中断流程4LED信号灯模块4.1LED驱动电路图SEQ图\*ARABIC10LED驱动电路LED灯本质上是具有单向导电性的发光二极管。此设计中的12个不同颜色的LED灯的正极直接连接到3.3V电源,负极再各通过一个470R的限流电阻接到STM32单片机的GPIO口上,限流电阻的作用主要是限制电流。因为LED灯的功率很小,如果不加任何电阻直接连的话可能会电流过大烧坏STM32单片机和LED灯。由图10可知,单片机位高电平时LED灯正负极电压相同,小灯不亮。当STM32单片机的引脚输出低电平时,在小灯正负极之间产生一个电势差,电流通过小灯从正极流到负极,小灯发光。所以单片机通过不断切换IO口的高低电平就可以实现LED的亮灭。这种直接灌电流的驱动方式对于小功率LED器件可以使用,但是当器件过多或者稍微的大功率器件都不建议使用,最好使用MOS管驱动或者采用光耦隔离的方式,单片机的高低电平只控制MOS管或者光耦的开光,可以很好的保护电路不被烧坏。4.2LED初始化程序LED模块我们主要用到的固件库文件是:stm32f10x_gpio.c/stm32f10x_gpio.hstm32f10x_rcc.c/stm32f10x_rcc.hmisc.c/misc.h由于本次设计采用的是库函数的方法。库函数就是官方将各种寄存器的配置封装在不同的函数里。这样在编程时就不用去配置寄存器,直接去调用官方给的库函数即可。这样一来,使编程更加简单和高效。所以可以在stm32f10x_rcc.c源文件中找到关于时钟配置的相关函数。在stm32f10x_gpio.c源文件中可以找到单片机GPIO口相关的配置函数。为了增加程序的可读性,在每个模块都编写一个C文件和一个H文件,使程序模块化,本文中LED模块的程序,以bsp_led.c和bsp_led.h来命名。在硬件连接上南北方向的红、黄、绿的三个灯分别由GPIOA10、GPIOA12、GPIOA11来控制,在东西方向上的红、黄、绿三个灯灯分别由GPIOA7、GPIOA9、GPIOA8来控制。首先在H文件中对输出的IO口进行宏定义,以GPIOA10端口为例:#defineTrafficLightsSN_R_PORT GPIOA #defineTrafficLightsSN_R_CLK RCC_APB2Periph_GPIOA #defineTrafficLightsSN_R_PIN GPIO_Pin_10TrafficLightsSN_R_PORT代表GPIOA端口,TrafficLightsSN_R_CLK代表GPIOA端口的时钟,TrafficLightsSN_R_PIN代表端口的引脚号。其他的LED控制引脚都如同上述方法进行宏定义。同时在H文件下也包含了三个函数的声明,具体函数如下:voidLED_SN_GPIO_Config(void);voidLED_EW_GPIO_Config(void);voidTrafficLightsConfig(void);这三个函数的的具体内容是在C文件下完成的。其中voidLED_SN_GPIO_Config(void)是南北方向IO控制端口的初始化函数,voidLED_EW_GPIO_Config(void)对东西方向IO口直端口的初始化函数。这两个函数的作用就对控制LED小灯的几个GPIO口进行配置,具体内容包括开启该GPIO的时钟、确定是哪几个接口、接口的输出模式输出速度和GPIO口初始的电平状态。在这里特别强调的是,STM32单片机在配置任何外设的时候外设的时候,都应该先使能其对应时钟线上的时钟,否则GPIO无法正常输入输出。文件中最后一个函数就是对上面两个函数的声明,当需要对LED控制函数初始化的时候只需调用第三个函数,这样是程序更加简单易读。5数码管模块5.1数码管模块介绍数码管是我们日常生活中很常见到的电子显示元器件,通常情况下,共有八个段,分别对应于A,B,C,D,E,F,G,DP。数字管的每个部分都是一个发光二极管。如果所有灯都点亮,将显示一个八字和一个小数点。根据内部结构的不同,数码管分为共阳极和共阴极,公共阳极将八个发光二极管的所有阳极连接在一起以形成公共端口REF_Ref22722\r[6]。当使用该器件时,将这个公共的阳极接在电源的正极,其他的八个二极管的负极接在控制端口。当需要显示某个字符或者数字时,就改变控制端电平的组合状态。例如:需要显示数字八,只需要将DP置为高电平,其他七个控制端口都置为低电平。因为共阳极数码管,低电平时会产生电势差,电流流过二极管,从而发亮。而高电平时,二极管两端电势相同,所以不亮。共阴极数字管与共阳极数字管相对。它将八个二极管的阴极连接在一起以形成一个公共端子。正极用作显示不同数字的控制端子。因此,对于普通阴极数字管,仅当控制端子处于高电平时才产生电势差。二极管的相应对应部分才发光。本次交通灯的设计采用的是4个0.28寸的两位共阳极数码管显示倒计时,如图10所示:图SEQ图\*ARABIC11数码管如图10所示,6、9号引脚分别对应的是片选端,其它A、B、C、D、E、F、G引脚分别连接单片机的GPIOB8、GPIOB9、GPIOB10、GPIOB11、GPIOB12、GPIOB13、GPIOB14。数码管占用的GPIO口比较多,为了使设计更加简单稳定节省,因此,采用了动态显示的方法。该方法是将这四个数字管的段代码线的相应段并行连接,由单片机的八个IO口控制,而各显示位的公共端则有另外的IO口控制。所谓动态显示就是每时每刻只有一位片选有效,即,显示所选的数码管,而不显示其他未选择的数码管。因为每个间隔都很短,所以要定期以规则的间隔逐个点亮每个数码管。由于每次间隔的时间都很短,人眼无法识别是依次点亮,以为多个数码管在同时发光。这种效果也被称为余晖效应。5.2数码管驱动电路一般情况下STM32单片机的电流输出能力都很差,可能直接驱动少量数码管效果还行,但是如果用单片机直接驱动多个数码管,会导致单片机电流过小,从而导致数码管亮度不足,甚至无法发光。所以本次设计采用P型MOS管SS8550来驱动数码管,单片机通过控制MOS管的开关,从而控制数码管。图SEQ图\*ARABIC12数码管驱动电路如图11所示,为数码管片选端的驱动电路,S1、S2、S3、S4分别连接单片机的GPIOB4、GPIOB5、GPIOB6、GPIOB7。因为南北方向上的两个数码管与东西方向上的两个数码管是分别同步的。所以,南北方向由相同的片选端S1、S2控制,东西方向由相同的片选端S3、S4控制。当STM32微控制器的GPIO输出高电平时,P型MOS管的栅极电压为3.3VREF_Ref24906\r[7],因此Vgs=0V,PMOS管截止,片选端为低电平。当STM32微控制器的GPIO输出低电平时,P型MOS管的栅极电压为0V,Vgs=-3.3V,PMOS管导通REF_Ref24906\r[7],片选端为高电平。从而驱动数码管。5.3数码管显示程序数码管程序主要放在ntube.c和ntube.h文件中,数码管的A、B、C、D、E、F、G端口分别对应单片机的GPIOB8——GPIOB14,在ntube.h文件中宏定义为:#defineNtube_Dis_Port GPIOB #defineAllNtube_DIS_Clk RCC_APB2Periph_GPIOB #defineAllNtube_DIS_Pin GPIO_Pin_8| GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14数码管的四个片选端对应的单片机接口为GPIOB4——GPIOB7在ntube.h文件中宏定义为:#defineNtube_CS_Port GPIOB #defineAllNtube_CS_Clk RCC_APB2Periph_GPIOB #defineAllNtube_CS_PinGPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7在ntube.c文件中主要包含以下六个函voidNTUBE_DIS_GPIO_Config(void);voidNTUBE_CS_GPIO_Config(void);voidNTUBE_GPIO_Config(void);voidNtube_DisplayEWSN(void);voidDisplay(uint16_tDATAa,uint16_tDATAb,uint16_tDATAc,uint16_tDATAd);其中函数voidNTUBE_DIS_GPIO_Config(void)是对单片机连接的数码管对应的A、B、C、D、E、F、G引脚的初始化。VoidNTUBE_CS_GPIO_Config(void)函数是对数码管四个片选端引脚的初始化。主要包含引脚的输出模式,输出速度和初始状态下引脚的电平状态。voidNTUBE_GPIO_Config(void)是将上面的两个函数包含在内,增加程序的可读性。函数voidNtube_DisplayEWSN(void)和函数voidDisplay(uint16_tDATAa,uint16_tDATAb,uint16_tDATAc,uint16_tDATAd)编写的是东西南北方向数码管的显示函数。具体函数见附录三。6蓝牙模块6.1HC-05蓝牙模块介绍本次交通灯的设计在特殊情况下可以实现手机远程对交通灯的控制。根据需求无线控制模块采用的是JDY-30蓝牙模块,根据数据手册可知,该模块是基于蓝牙3.0的协议标准,不仅性能稳定,而且数据传输快且信号强。它的工作频率2.4GHZ。图SEQ图\*ARABIC13蓝牙实物图如上图13所示,是本次设计所需蓝牙的实物图,该产品功能强大,带有内置PCB天线,同时支持UART接口,支持与SPP主蓝牙模块,Android手机SPP和计算机SSP蓝牙进行通信。此外,它还符合蓝牙SPP串行端口协议,其传输速率可以达到每秒8K以上。产品原理图14所示:图SEQ图\*ARABIC14蓝牙模块原理图尽管模块有许多引脚,但与STM32F103C8T6通信时仅使用了四个引脚,即TX,RX,VCC和GND。其中,VCC和GND是蓝牙模块的电源引脚,分别连接到电源的正极和负极。TX是发送数据线,连接到STM32串行端口的接收数据线RX。RX是接收数据线,与STM32微控制器串行端口的发送数据线连接。此外,蓝牙模块实现串口通信之前,还需要提前通过AT指令对蓝牙的各项参数进行设置。不同型号的的蓝牙其对应的AT指令集也有所不同。可根据数据手册查询。以本蓝牙为例:例子:设置配置密码为1234发送:AT+PIN1234\r\n返回:+PIN=1234此时表示配对密码已经配置成1234例子:设置115200波特率发送:AT+BAUD8\r\n返回:+BAUD=8此时模块波特率已经设置成115200波特率根据以上例子依次用AT对蓝牙进行名称、密码、波特率等的设置蓝牙就可以和单片机连接使用了。6.2串口通信串口是微型计算机重要的外部接口之一,在软件调试和程序下载过程中起着很重要的作用。现在使用的微型计算机基本上都带有串口,当然STM32单片机也不例外。STM32F103C8T6拥有USART1、USART2和USART3三路串口。串口是异步通信,在使用时只用到了三个引脚,分别包括TX、RX和GND。本次交通灯远程通信模块的设计用到的是STM32C8T6单片机的串口二和蓝牙模块连接,即单片机的TX(GPIOA2)和蓝牙模块的RX连接,单片机的RX(GPIOA3)和蓝牙模块的TX连接REF_Ref25354\r[8]REF_Ref25638\r[9]。STM32单片机在使用库函数开发时,不需要去配置寄存器,直接在库函数中去调用相关函数。在stm32f10x_usart.c和stm32f10x_usart.h这两个文件中包含了串口相关的函数。本设计中和串口相关的函数主要在bsp_usart.c和bsp_usart.h这两个文件中。在C文件下主要包含了两个函数,一个是串口初始化函数voidbsp_USART2_Init(u32bound);另一个是串口中断服务函数voidbsp_USART2_IRQHandler(void);串口初始化函数,在上面已经做了基本的概述,主要是配置对引脚的输入输出模式,端口的分时复用和串口模式和基本参数的设置,函数如下:NVIC_InitTypeDefNVIC_InitStructure;GPIO_InitTypeDefGPIO_InitStructure;USART_InitTypeDefUSART_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//GPIOA时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);USART_DeInit(USART2);//复位串口1//USART2_TXPA.2GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;//PA.2GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //复用推挽输出GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化PA2//USART2_RX PA.3GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空输入GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化通过蓝牙远程控制交通灯,主要是在串口二的中断服务函数里面实现的,当单片机接收到数据进入中断,根据接收到的命令执行相应的函数,函数如下:Voidbsp_USART2_IRQHandler(void){charRes;if(USART_GetFlagStatus(USART2,USART_FLAG_ORE)!=RESET){ USART_ReceiveData(USART2);} if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET) { USART_ClearITPendingBit(USART2,USART_IT_RXNE); Res=USART_ReceiveData(USART2); //赋值 switch(Res) { case0X01:Action1();break;//夜间,全黄 case0X02:Action2();break; //禁止,全红 case0X03:Action3();break;//南北通行,南北绿,东西禁止,东西红 case0X04:Action4();break; //南北禁止,南北红,东西通行,东西绿 case0X05:Action5();break; //复位 default:brea

温馨提示

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

评论

0/150

提交评论