收藏 分享(赏)

基于ARM的交通灯设计.doc

上传人:精品资料 文档编号:8319813 上传时间:2019-06-20 格式:DOC 页数:16 大小:1,002.30KB
下载 相关 举报
基于ARM的交通灯设计.doc_第1页
第1页 / 共16页
基于ARM的交通灯设计.doc_第2页
第2页 / 共16页
基于ARM的交通灯设计.doc_第3页
第3页 / 共16页
基于ARM的交通灯设计.doc_第4页
第4页 / 共16页
基于ARM的交通灯设计.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、 sfe攀枝花学院本科课程设计基于 ARM 的交通灯设计学生姓名: 学生学号: 院(系): 电气信息工程学院 年级专业: 指导教师: 二一四年十二月攀枝花学院本科课程设计论文第 0 页摘 要本设计是基于 STM32 微控制器进行的交通灯设计,STM32 是意法半导体以ARM 为核心的微控制器。交通灯通常指由红、黄、绿三种颜色灯组成用来指挥交通的信号灯。绿灯亮时,准许车辆通行,黄灯亮时,已越过停止线的车辆可以继续通行;红灯亮时,禁止车辆通行。 交通灯的硬件设计主要由三部分组成:微控制器最小系统,交通灯的信号灯,显示时间的数码管。软件部分由三部分组成:数码管显示函数,交通灯切换函数,时间计时函数。

2、交通灯工作的流程是计数器每秒钟减一,减到零时切换信号灯,在主函数中调用数码管显示函数,以便快速扫描显示。交通灯设计的关键问题是实现信号灯切换、计数器自减、数码管扫描显示等功能。同时该设计具有设计方法合理,简单易行,成本低,安全实用等特点,具有推广价值。关键词 微控制器,交通灯,数码管,STM32,ARM攀枝花学院本科课程设计论文第 1 页目 录摘 要 .11 绪论 .31.1 本课题研究的背景及意义 .31.2 国内外研究现状、水平 .31.3 本课题的发展趋势 .31.4 本课题的研究内容 .32 方案设计 .52.1 微控制器选择 .52.2 显示设备的选择 .52.3 信号灯的选择 .5

3、2.4 系统设计思路 .52.5 方案框图 .62.6 方案论证 .63 硬件设计与实现 .63.1 电路设计框图 .63.2 最小系统设计 .73.3 LED 模块 73.4 数码管模块 .73.5 系统总电路图 .84 软件设计 .94.1 软件的设计架构 .94.2 软件设计过程 .94.3 MDK 工程建立及配置 .104.4 主要函数代码 .115 系统仿真与调试 .13体会 .14参 考 文 献 .15攀枝花学院本科课程设计论文第 2 页1 绪论1.1 本课题研究的背景及意义随着社会的发展,人们不断地从农村涌入城市,城市人口越来越多,现在中国的千万级人口的城市越来越多。人口多伴随的

4、是车辆越来越多,而且我们的生活越来越好,私家车越来越多,如果没有一个良好的交通规则,那么城市的交通系统必然会瘫痪。交通警察是有限的,这种情况下永不下岗的“交通警察”交通灯就派上大用场了。现在的交通灯已经是城市中不可缺少的基础设施。交通灯通常指由红、黄、绿三种颜色灯组成用来指挥交通的信号灯。绿灯亮时,准许车辆通行,黄灯亮时,已越过停止线的车辆可以继续通行;红灯亮时,禁止车辆通行。1.2 国内外研究现状、水平目前设计交通灯的方案有很多,西方国家已经有应用 CPLD 设计实现交通信号灯控制器方法;有应用 PLC 实现对交通灯控制系统的设计;有应用单片机实现对交通信号灯设计的方法。目前,国内的交通灯一

5、般设在十字路门,在醒目位置用红、绿、黄三种颜色的指示灯。加上一个倒计时的显示计时器来控制行车。对于一般情况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存在以下缺点:1两车道的车辆轮流放行时间相同,在十字路口,经常一个车道为主干道,车辆较多,放行时间应该长些;另一车道为副干道,车辆较少,放行时间应该短些。2两条干道的红绿时间不能随时间的改变而修改。1.3 本课题的发展趋势随着智能时代的到来,让交通灯也智能的想法已经不是难事,智能的表现方式主要是拥有自动调整亮灯时间长短的功能。譬如说,它能自动感应该地区的交通情况,如果塞车的话该交通灯能自行控制红、黄与绿等的亮灯时间长短。

6、而这个检测道路车辆数量的方案有很多种,技术上比较难施工上比较容易的是在交通的上加上摄像头,运用数字图像处理技术来识别车辆的数量。另一种方法是可以在公路下面埋上压力传感器,这种方法技术上没什么难度,但施工比较麻烦。攀枝花学院本科课程设计论文第 3 页1.4 本课题的研究内容本设计是基于 STM32F407 的交通灯设计,交通灯的硬件设计主要由三部分组成:微控制器最小系统,最小系统的构建有主控芯片 STM32,晶振,滤波电容,复位电路;交通灯的信号灯,信号灯由超低功耗的 LED 组成,LED 的正极接电源正极,负极连接 STM32I/O 口,并且要串联一个限流电阻;显示时间的数码管数码管用以显示倒

7、计时,倒计时只有几十秒,所以只用 2 个数码管就够了,数码管采用动态扫描显示方式,所以在程序中需要不断的刷新显示,给程序增加了难度。软件部分由三部分组成:数码管显示函数,函数输入一个数字,数码管就可以显示该数字;交通灯切换函数,倒计时为 0 时,就要执行该函数,实现红绿灯的切换;时间计时函数,该函数实现倒计时,是本设计的核心。交通灯工作的流程是计数器每秒钟减一,减到零时切换信号灯,在主函数中调用数码管显示函数,以便快速扫描显示。ARM 处理器是 Acorn 计算机有限公司面向低预算市场设计的第一款 RISC微处理器。更早称作 Acorn RISC Machine。ARM 处理器本身是 32 位

8、设计,但也配备 16 位指令集,一般来讲比等价 32 位代码节省达 35%,却能保留 32 位系统的所有优势。早期的 ARM 以 ARM7、ARM9 等命名,在推出了 ARM11 之后的ARM 核心采用了不同的命名方式,这就是新型的 Cortex 内核,分为三个系列,A 系主打高端市场,R 系用于实时性要求很高的领域,M 系是面向控制的内核,与单片机一样,Cortex-M 核目前有 M0、M3、M4,前不久 ARM 推出了最新的ARM7,为可穿戴设备设计。STM32 是意法半导体基于 ARM 核心加上外围模块构成的新型微控制器。STM32 系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门

9、设计的ARM Cortex-M 内核, STM32F1 等基于 Cortex-M3,STM32F4 等基于 Cortex-M4。STM32F407 采用了 90 纳米的 NVM 工艺和 ART,ART 技术使得程序零等待执行,提升了程序执行的效率,将 Cortex-M4 的性能发挥到了极致,该芯片最高工作频率可达到 168MHz,运行速度接近低端微处理器,STM32F407 集成了单周期 DSP 指令和 FPU(浮点单元),提升了计算能力,可以进行一些复杂的计算和控制。攀枝花学院本科课程设计论文第 4 页2 方案设计2.1 微控制器选择ARM 体系是一个很大的体系,基于 ARM 设计的微控制器

10、、微处理器很多,由于交通灯设计主要是控制而非处理,所以我们选择微控制器作为主控芯片基于 ARM 的微控制器有很多,主要有意法半导体的 STM32 系列,飞思卡尔公司的 K 系列,以及爱特梅尔、TI 等公司都在做基于 ARM 的微控制器。由于意法半导体的 STM32 性价比非常高且容易买到,所以我们选择STM32 作为本次设计的主控芯片。STM32 也是一个家族,有 F1 系列、F2 系列、F3 及 F4 系列,其中 F4 系列基于 ARM Cortex-M4 内核,比 Cortex-M3 要先进,而且具有学习价值,所以我们选择 STM32F407 作为主控芯片。2.2 显示设备的选择显示设备有

11、很多种,有 LED、LCD、OLED 、数码管、TFT 等。由于本设计中显示设备只用显示数字,所以用高级显示设备就会造成资源浪费,增加设计成本。所以我们这里选择地端的显示设备,低端的显示设备主要有 LED 和数码管。LED 只能显示点,要显示数字的话就得用很多 LED 组成点阵,所以我们选择数码管作为本设计的显示设备,在实际运用中,数码管的大小以及亮度达不到实际要求,所以可以采用大量 LED 组成的点阵来显示。实验中采用数码管显示是为了降低成本。2.3 信号灯的选择由于信号灯需要红、黄、绿三种颜色,而且是一天 24 小时显示,不能选择功率大的信号灯,信号灯的亮度不能太低,不然司机看不清楚,基于

12、以上情况我们选择超低功耗的 LED 作为信号灯。实验中我们采用一个 LED,在实际中为了增加亮度可以采用很多 LED 组成 LED 群,以此增加显示亮度。2.4 系统设计思路由于采用了高性能的 STM32 作为主控芯片,所以在资源上不必担心,芯片得有一个最小系统才能运作。交通灯有一个倒计时器,所以必须有一个定时器作为时钟。还有显示倒计时的设备,这里用数码管代替,实际中得用 LED 做成的显示面板。信号灯用单个 LED 灯代替,实际中要用大量 LED 同时显示,LED 的颜色要有红、黄。绿三种。攀枝花学院本科课程设计论文第 5 页定时器一上电就不断地运行,为交通灯提供时间信息,在定时器中会控制2

13、 个计数变量,一个变量代表一组信号灯的时间,当计数变量倒计时为 0 时,就执行信号灯切换函数,实现红黄绿灯的切换。另外外需要实时显示时间,所以每当计数变量减一时数码管就要变化。2.5 方案框图图 2.2 方案框图2.6 方案论证本方案简单易行,且性价比高,高性能 STM32 芯片能稳定地运行,而且由于设计中所用的 LED、数码管、 STM32 都是低功耗器件,所以整个系统的功耗都很低。3 硬件设计与实现3.1 电路设计框图本设计主要由 ARM 微控制器 STM32F407、LED 灯、数码管等部分组成。其中STM32F407 是主控芯片,是整个硬件电路的核心,主要完成 LED 灯、数码管的控制

14、。其系统原理框图如图 3.1 所示。STM32F407定时器LED数码管计数变量 1 计数变量 2数码管 1 数码管 2信号灯 1 信号灯 2定时器攀枝花学院本科课程设计论文第 6 页图 3.1 系统原理框图3.2 最小系统设计STM32 有众多系列和型号,我们选择 STM32F407 作为主控芯片,因为这款芯片是基于最新的 Cortex-M4,具有比较高的学习价值和代表性。对于 STM32 这种高级的微控制器来说,最小系统比较复杂,不像 51 单片机那样简单,因为其速度非常快,可以达到 168MHz,速度快就对信号的稳定和抗干扰有较高的要求,又由于现在的集成电路工艺技术并不能集成较大的电容,

15、所以 SOC 设计者们将需要电容的电路接上引脚,在芯片外部接上电容,这样就解决了上面的问题,不过使最小系统变复杂了。由于 STM32 内部集成了震荡源,所以没有外部晶振也可以工作。不过内部震荡源有着不精确地缺点,在高精度场合我们还是有必要接上外部晶振,一般为 8M 或 16M,晶振需要接上 2 个电容帮助其起振。3.3 LED 模块LED 模块比较简单,STM32的 IO 口足以驱动 LED,为了有更大的电流,我们采用灌电流输出方式,LED 负极接 IO 口,正极接电源,中间还要加上限流电阻。本设计中总共有2组信号灯,一组信号灯有红、黄、绿三颗 LED,所以总共需要6颗 LED。3.4 数码管

16、模块本设计中采用的数码管功率比较大,所以不能像 LED 模块那样直接接在 IO口上,需要加上驱动电路,我们有两套驱动方案,方案一是用三极管驱动,这样需要 4 个三极管。方案二是用锁存器。鉴于三极管便宜且容易找到,所以我们采用三极管驱动方案。攀枝花学院本科课程设计论文第 7 页3.5 系统总电路图 BOT0/VP94CA23NRS1H_IU-WKXDEFLM5G6Y8Jext+红abfcgdpQ图 3.5 系统总图攀枝花学院本科课程设计论文第 8 页4 软件设计4.1 软件的设计架构yesno图 4.1 程序流程图4.2 软件设计过程STM32 的 C 语言开发思想与 51 有重大差别,51 只

17、需要一个 reg52.h 和一个C 文件就可以开发。STM32 芯片非常复杂,而且是 32 位芯片,内部的寄存器数量巨大,我们不能像开发 51 那样直接操作寄存器,51 的寄存器比较少且是8 位机。所以工程师们引入了一种新的开发方式-库开发,ST 公司为每一款STM32 开发了一个固件库,开放给开发人员免费使用,我们只需建好工程,然后添加这个库,在用户文件中直接调用这些库函数就可以了,这种开发方式非常方便,我们不必去记那么多寄存器或者翻数据手册。加快了开发速度,减小了开发成本。在主函数中,我们需要对外设进行初始化,首先要定义一个 GPIO 初始化函数 GPIO_init(void),在函数中调

18、用库函数对 IO 口进行初始化。函数定义好后就在主函数中首先调用它,然后调用定时器初始化函数 SysTick_Config(168000),开始芯片初始化定时器初始化与配置IO 口初始化倒计时为 0 信号灯切换显示刷新攀枝花学院本科课程设计论文第 9 页并开启定时中断,至此初始化完成。接下来进入一个死循环,在循环中主要检测倒计时是否为 0,如果为 0 则进行红黄绿灯的切换,另外循环中还调用显示函数,不断的刷新显示,一是由于数码管采用的是动态扫描显示方式,需要不断地刷新,二是显示需要一定的实时性。在定时中断服务函数中主要完成计数变量的自减。4.3 MDK 工程建立及配置建立 STM32 的工程很

19、麻烦,需要将库函数移植到工程中,但是一旦移植好后,以后就不用再做同样的工作,只需将该工程拷贝就行,然后在里面修改代码。我们这里就是用的工程模板,固件库有很多版本,我们用的是 1.1 版本。一个完整的工程框架如图 4.3.1 所示。图 4.3.1 工程框架图 4.3.1 中 DEMO 是工程名,user 里面放的是用户文件,CMISI 里面放的是启动代码,FWlib 里面放的是外设驱动与配置函数,它占据了整个库的大部分。建立好工程后就要对其进行配置,鼠标右键点击工程名,选择 Options 选项,出现工程配置界面,如图 4.3.2。图 4.3.2 工程配置配置界面有很多选项,Device 选项是

20、选择工程的目标芯片,我们选的是STM32F407,Output 选项是选择工程输出文件的目录,C/C+ 选项是选择头文件的查询目录。Bebug 选项是选择仿真模式,我们有一个硬件仿真器 STlink,攀枝花学院本科课程设计论文第 10 页所以这里选择硬件仿真,仿真器选 STlink,如图 4.3.3。图 4.3.3 仿真模式工程配置完成后就进行程序编写,编写程序是一个漫长的过程,本设计的核心内容就是编写程序,程序主要有 3 个函数,main 函数实现信号灯的切换,定时器中断服务函数实现倒计时,显示函数实现数码管的动态扫描显示。具体程序在后面列出。编写好程序后就可以进行编译了,依次点击 后就完成

21、了编译汇编链接,出现如图 4.3.4 的情况就编译完成了。图 4.3.4 编译完成4.4 主要函数代码/* 主函数*说明:本函数中主要完成系统初始化、信号灯切换和显示刷新*/int main()unsigned char light_1 = YELLOW,light_2 = RED;SysTick_Config(168000); /滴答定时器初始化,周期 1 毫秒GPIO_init(); /GPIO 初始化GPIO_Write(GPIOE, 0xff); /关闭全部 LED 灯while(1)if(time_1 = 0) /如果 1 组倒计时为 0if(light_1 = RED) /如果 1

22、 组为红灯攀枝花学院本科课程设计论文第 11 页time_1 = 54; /绿灯倒计时 55 秒light_1 = GREEN; /红灯转换成绿灯GPIO_Write(GPIOE, 0xf6);else if(light_1 = GREEN) /如果 1 组为绿灯time_1 = 4; /黄灯倒计时 5 秒light_1 = YELLOW; /绿灯转换为黄灯GPIO_Write(GPIOE, 0xf5);else if(light_1 = YELLOW) /如果 1 组为黄灯time_1 = 59; /红灯倒计时 60 秒light_1 = RED; /转换为红灯GPIO_Write(GPIO

23、E, 0xde);if(time_2 = 0) /如果 2 组倒计时为 0if(light_2 = RED) /如果 2 组为红灯time_2 = 54; /绿灯倒计时 55 秒light_2 = GREEN; /转换为绿灯GPIO_Write(GPIOE, 0xde);else if(light_2 = GREEN) /如果 2 组为绿灯time_2 = 4; /黄灯倒计时 5 秒light_2 = YELLOW; /转换为黄灯GPIO_Write(GPIOE, 0xee);else if(light_2 = YELLOW) /如果 2 组为黄灯time_2 = 59; /红灯倒计时 60

24、秒light_2 = RED; /转换为红灯GPIO_Write(GPIOE, 0xf3);Display(time_1,time_2); /调用显示函数,刷新数码管显示/* 定时中断服务函数*说明:本函数主要完成倒计时减一攀枝花学院本科课程设计论文第 12 页*/void SysTick_Handler(void)static unsigned int mill = 0; /定义毫秒变量mill+; /每次进中断毫秒变量加 1if(mill = 1000) /如果达到 1000 毫秒,也就是 1 秒mill = 0; /毫秒变量清 0if(time_10)time_1-; /倒计时减 1if

25、(time_20)time_2-;5 系统仿真与调试STM32有硬件仿真和软件仿真模式,由于我们有硬件,而且有调试器,所以这里选择硬件仿真模式。点击 进行硬件调试出现如图5.1所示界面。图5.1 调试界面点击 实现程序单步运行,点击 实现全速运行,点击 实现程序复位。在观察窗口输入相应的变量名,就可以实时监控该变量。主要监控的变量有time_1、time_2,light_1 、light_2。每次单步运行后都可以查看变量的变化。主界面区观察窗口寄存器区攀枝花学院本科课程设计论文第 13 页体会这次课程设计总的来说还是比较成功,虽然花费了很多时间和精力,但是收获颇多,也激起了我对这方面的兴趣。从

26、不知道课程设计论文怎样写,我开始了独立的学习和实验,查看相关的资料和书籍,让自己头脑中模糊的概念逐渐清晰,使自己的论文一步步完善起来,每一次改进都是我学习的收获。在这段时间,我学会了很多,感受也很多。在这次课程中也遇到了一些困难:第一,芯片太复杂,使用起来比较困难,虽然以前使用过 STM32,但现在忘记了很多。第二,开始我们在数码管模块中没有加驱动电路,导致数码管亮度太低,后来才发现是驱动电流不够,我们只得重新设计并制作电路板。经过多次的修改和整理,基于 ARM 的交通灯设计的基本要求。性能稳定可靠。加电后,数码管能实时显示时间,LED 灯可以实现转换。经过这次课程设计,我们的大学课程也基本结

27、束了,单这并不是代表着学习的结束,而是一个新的开始。在今后的生涯中,我将会充分利用此次试验中学到的知识,并结合新的知识,做出更好的更满意的作品。总之,这次试验设计算是成功的。在这次实验中,我进一步熟悉了 MDK 软件以及 C 语言。也明白了做出实物和仿真是两个不同的概念,在今后的学习生活中,我将更加注重实际操作能力的提升。这次试验使得我的操作能力和专业技能都有了很大的提高,也为以后的毕业设计打下了基础。攀枝花学院本科课程设计论文第 14 页参 考 文 献【1】 丁元杰. 单片微机原理及应用. 机械工业出版社【2】 意法半导体. STM32F4 数据手册【3】 宋岩. ARM Cortex-M3 权威指南. 北京航空航天大学出版社【4】 谢自美. 电子线路设计实验测试. 华中科技大学出版社 【5】王连英,章小印. 数字电子技术 江西高校出版社 【6】孙惠芹. 电路设计 PROTEL. 天津大学出版社 【7】谭浩强. C 程序设计. 清华大学出版社【8】冷淑君. 计算机操作与应用. 高等教育出版社【9】潘松,黄继业. EDA 技术实用教程. 北京:科学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报