当前位置:文档之家› 基于.ARM的交通灯设计说明书

基于.ARM的交通灯设计说明书

\\\\\\\\\\\ sfe攀枝花学院本科课程设计基于ARM的交通灯设计学生姓名:学生学号:院(系):电气信息工程学院年级专业:指导教师:二〇一四年十二月摘要本设计是基于STM32微控制器进行的交通灯设计.STM32是意法半导体以ARM 为核心的微控制器。

交通灯通常指由红、黄、绿三种颜色灯组成用来指挥交通的信号灯。

绿灯亮时.准许车辆通行.黄灯亮时.已越过停止线的车辆可以继续通行;红灯亮时.禁止车辆通行。

交通灯的硬件设计主要由三部分组成:微控制器最小系统.交通灯的信号灯.显示时间的数码管。

软件部分由三部分组成:数码管显示函数.交通灯切换函数.时间计时函数。

交通灯工作的流程是计数器每秒钟减一.减到零时切换信号灯.在主函数中调用数码管显示函数.以便快速扫描显示。

交通灯设计的关键问题是实现信号灯切换、计数器自减、数码管扫描显示等功能。

同时该设计具有设计方法合理.简单易行.成本低.安全实用等特点.具有推广价值。

关键词微控制器.交通灯.数码管.STM32.ARM目录摘要 (1)1 绪论 (3)1.1本课题研究的背景及意义 (3)1.2国内外研究现状、水平 (3)1.3本课题的发展趋势 (3)1.4本课题的研究内容 (3)2 方案设计 (5)2.1微控制器选择 (5)2.2显示设备的选择 (5)2.3信号灯的选择 (5)2.4系统设计思路 (5)2.5方案框图 (6)2.6方案论证 (6)3 硬件设计与实现 (6)3.1电路设计框图 (6)3.2最小系统设计 (7)3.3 LED模块 (7)3.4数码管模块 (7)3.5系统总电路图 (8)4 软件设计 (9)4.1软件的设计架构 (9)4.2软件设计过程 (9)4.3 MDK工程建立及配置 (10)4.4主要函数代码 (11)5 系统仿真与调试 (13)体会 (14)参考文献 (15)1 绪论1.1本课题研究的背景及意义随着社会的发展.人们不断地从农村涌入城市.城市人口越来越多.现在中国的千万级人口的城市越来越多。

人口多伴随的是车辆越来越多.而且我们的生活越来越好.私家车越来越多.如果没有一个良好的交通规则.那么城市的交通系统必然会瘫痪。

交通警察是有限的.这种情况下永不下岗的“交通警察”交通灯就派上大用场了。

现在的交通灯已经是城市中不可缺少的基础设施。

交通灯通常指由红、黄、绿三种颜色灯组成用来指挥交通的信号灯。

绿灯亮时.准许车辆通行.黄灯亮时.已越过停止线的车辆可以继续通行;红灯亮时.禁止车辆通行。

1.2国内外研究现状、水平目前设计交通灯的方案有很多.西方国家已经有应用CPLD设计实现交通信号灯控制器方法;有应用PLC实现对交通灯控制系统的设计;有应用单片机实现对交通信号灯设计的方法。

目前.国内的交通灯一般设在十字路门.在醒目位置用红、绿、黄三种颜色的指示灯。

加上一个倒计时的显示计时器来控制行车。

对于一般情况下的安全行车.车辆分流尚能发挥作用.但根据实际行车过程中出现的情况.还存在以下缺点:1.两车道的车辆轮流放行时间相同.在十字路口.经常一个车道为主干道.车辆较多.放行时间应该长些;另一车道为副干道.车辆较少.放行时间应该短些。

2.两条干道的红绿时间不能随时间的改变而修改。

1.3本课题的发展趋势随着智能时代的到来.让交通灯也智能的想法已经不是难事.智能的表现方式主要是拥有自动调整亮灯时间长短的功能。

譬如说.它能自动感应该地区的交通情况.如果塞车的话该交通灯能自行控制红、黄与绿等的亮灯时间长短。

而这个检测道路车辆数量的方案有很多种.技术上比较难施工上比较容易的是在交通的上加上摄像头.运用数字图像处理技术来识别车辆的数量。

另一种方法是可以在公路下面埋上压力传感器.这种方法技术上没什么难度.但施工比较麻烦。

1.4本课题的研究内容本设计是基于STM32F407的交通灯设计.交通灯的硬件设计主要由三部分组成:微控制器最小系统.最小系统的构建有主控芯片STM32.晶振.滤波电容.复位电路;交通灯的信号灯.信号灯由超低功耗的LED组成.LED的正极接电源正极.负极连接STM32I/O口.并且要串联一个限流电阻;显示时间的数码管数码管用以显示倒计时.倒计时只有几十秒.所以只用2个数码管就够了.数码管采用动态扫描显示方式.所以在程序中需要不断的刷新显示.给程序增加了难度。

软件部分由三部分组成:数码管显示函数.函数输入一个数字.数码管就可以显示该数字;交通灯切换函数.倒计时为0时.就要执行该函数.实现红绿灯的切换;时间计时函数.该函数实现倒计时.是本设计的核心。

交通灯工作的流程是计数器每秒钟减一.减到零时切换信号灯.在主函数中调用数码管显示函数.以便快速扫描显示。

ARM处理器是Acorn计算机有限公司面向低预算市场设计的第一款RISC微处理器。

更早称作Acorn RISC Machine。

ARM处理器本身是32位设计.但也配备16位指令集.一般来讲比等价32位代码节省达35%.却能保留32位系统的所有优势。

早期的ARM以ARM7、ARM9等命名.在推出了ARM11之后的ARM核心采用了不同的命名方式.这就是新型的Cortex内核.分为三个系列.A系主打高端市场.R系用于实时性要求很高的领域.M系是面向控制的内核.与单片机一样.Cortex-M核目前有M0、M3、M4.前不久ARM推出了最新的ARM7.为可穿戴设备设计。

STM32是意法半导体基于ARM核心加上外围模块构成的新型微控制器。

STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核.STM32F1等基于Cortex-M3.STM32F4等基于Cortex-M4。

STM32F407采用了90 纳米的NVM 工艺和ART.ART技术使得程序零等待执行.提升了程序执行的效率.将Cortex-M4的性能发挥到了极致.该芯片最高工作频率可达到168MHz.运行速度接近低端微处理器.STM32F407集成了单周期DSP指令和FPU(浮点单元).提升了计算能力.可以进行一些复杂的计算和控制。

2 方案设计2.1微控制器选择ARM体系是一个很大的体系.基于ARM设计的微控制器、微处理器很多.由于交通灯设计主要是控制而非处理.所以我们选择微控制器作为主控芯片基于ARM的微控制器有很多.主要有意法半导体的STM32系列.飞思卡尔公司的K系列.以及爱特梅尔、TI等公司都在做基于ARM的微控制器。

由于意法半导体的STM32性价比非常高且容易买到.所以我们选择STM32作为本次设计的主控芯片。

STM32也是一个家族.有F1系列、F2系列、F3及F4系列.其中F4系列基于ARM Cortex-M4内核.比Cortex-M3要先进.而且具有学习价值.所以我们选择STM32F407作为主控芯片。

2.2显示设备的选择显示设备有很多种.有LED、LCD、OLED、数码管、TFT等。

由于本设计中显示设备只用显示数字.所以用高级显示设备就会造成资源浪费.增加设计成本。

所以我们这里选择地端的显示设备.低端的显示设备主要有LED和数码管。

LED只能显示点.要显示数字的话就得用很多LED组成点阵.所以我们选择数码管作为本设计的显示设备.在实际运用中.数码管的大小以及亮度达不到实际要求.所以可以采用大量LED组成的点阵来显示。

实验中采用数码管显示是为了降低成本。

2.3信号灯的选择由于信号灯需要红、黄、绿三种颜色.而且是一天24小时显示.不能选择功率大的信号灯.信号灯的亮度不能太低.不然司机看不清楚.基于以上情况我们选择超低功耗的LED作为信号灯。

实验中我们采用一个LED.在实际中为了增加亮度可以采用很多LED组成LED群.以此增加显示亮度。

2.4系统设计思路由于采用了高性能的STM32作为主控芯片.所以在资源上不必担心.芯片得有一个最小系统才能运作。

交通灯有一个倒计时器.所以必须有一个定时器作为时钟。

还有显示倒计时的设备.这里用数码管代替.实际中得用LED做成的显示面板。

信号灯用单个LED灯代替.实际中要用大量LED同时显示.LED的颜色要有红、黄。

绿三种。

定时器一上电就不断地运行.为交通灯提供时间信息.在定时器中会控制2个计数变量.一个变量代表一组信号灯的时间.当计数变量倒计时为0时.就执行信号灯切换函数.实现红黄绿灯的切换。

另外外需要实时显示时间.所以每当计数变量减一时数码管就要变化。

2.5方案框图图2.2 方案框图2.6方案论证本方案简单易行.且性价比高.高性能STM32芯片能稳定地运行.而且由于设计中所用的LED 、数码管、STM32都是低功耗器件.所以整个系统的功耗都很低。

3 硬件设计与实现3.1电路设计框图本设计主要由ARM 微控制器STM32F407、LED 灯、数码管等部分组成。

其中STM32F407是主控芯片.是整个硬件电路的核心.主要完成LED 灯、数码管的控制。

其系统原理框图如图3.1所示。

图3.1 系统原理框图STM32F407 定时器 LE D 数码管计数变量计数变量数码管数码管信号灯信号灯定时3.2最小系统设计STM32有众多系列和型号.我们选择STM32F407作为主控芯片.因为这款芯片是基于最新的Cortex-M4,具有比较高的学习价值和代表性。

对于STM32这种高级的微控制器来说.最小系统比较复杂.不像51单片机那样简单.因为其速度非常快.可以达到168MHz.速度快就对信号的稳定和抗干扰有较高的要求.又由于现在的集成电路工艺技术并不能集成较大的电容.所以SOC设计者们将需要电容的电路接上引脚.在芯片外部接上电容.这样就解决了上面的问题.不过使最小系统变复杂了。

由于STM32内部集成了震荡源.所以没有外部晶振也可以工作。

不过内部震荡源有着不精确地缺点.在高精度场合我们还是有必要接上外部晶振.一般为8M 或16M.晶振需要接上2个电容帮助其起振。

3.3 LED模块LED模块比较简单.STM32的IO口足以驱动LED.为了有更大的电流.我们采用灌电流输出方式.LED负极接IO口.正极接电源.中间还要加上限流电阻。

本设计中总共有2组信号灯.一组信号灯有红、黄、绿三颗LED.所以总共需要6颗LED。

3.4数码管模块本设计中采用的数码管功率比较大.所以不能像LED模块那样直接接在IO口上.需要加上驱动电路.我们有两套驱动方案.方案一是用三极管驱动.这样需要4个三极管。

方案二是用锁存器。

鉴于三极管便宜且容易找到.所以我们采用三极管驱动方案。

3.5系统总电路图图3.5 系统总图4 软件设计4.1软件的设计架构yesno图4.1 程序流程图4.2软件设计过程STM32的C 语言开发思想与51有重大差别.51只需要一个reg52.h 和一个C 文件就可以开发。

相关主题