嵌入式系统课程设计(共11页)

上传人:des****85 文档编号:215632211 上传时间:2021-11-26 格式:DOCX 页数:11 大小:52.37KB
返回 下载 相关 举报
嵌入式系统课程设计(共11页)_第1页
第1页 / 共11页
嵌入式系统课程设计(共11页)_第2页
第2页 / 共11页
嵌入式系统课程设计(共11页)_第3页
第3页 / 共11页
嵌入式系统课程设计(共11页)_第4页
第4页 / 共11页
嵌入式系统课程设计(共11页)_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《嵌入式系统课程设计(共11页)》由会员分享,可在线阅读,更多相关《嵌入式系统课程设计(共11页)(11页珍藏版)》请在金锄头文库上搜索。

1、精选优质文档-倾情为你奉上嵌入式系统课程设计报告 基于ARM的交通灯控制系统设计院 系: 学生姓名: 专 业: 班 级: 指导教师: 完成时间: 2015年5月15日 摘要:本设计是基于STM32F103RB的红绿灯设计,其以ARM芯片为控制中心,通过对STM32F103RB芯片引脚的配置控制驱动电路的导通与关断,从而控制红绿灯的顺序亮灭。本设计主要由三部分电路组成:ARM开发板、LED驱动电路和LED组显示灯。概述了LED驱动电路、LED组显示灯电路和控制软件的设计方法。交通灯的系统时间由软件程序系统滴答时钟定时器和延时函数构成。关键词:STM32F103RB、驱动电路、LED组显示灯、滴答

2、时钟1引言随着城市交通拥堵问题的日益突出,传统的人为交通疏导已经不能适应人们的出行要求。解决了城市交通拥挤问题,提高城市交通的效率,适应未来的城市交通的发展,从长远来看该研究具有巨大的现实意义。本设计采用RAM芯片通过编程精准可靠地系统控制驱动电路,从而控制交通灯的顺序亮灭。该系统具有灵活性、易维护性、安全性和可拓展性,具有很高的使用价值。2设计方案2.1设计要求制作一个十字路口模型,并实现普通路口的所有控制功能。(1) 以箭头表示左转、前行、右转;(2) 要求设置行人、非机动车指示灯、并且有相应动作。(3) 可以根据自己的进度扩展其他功能。(4) 根据设计任务要求十字路口交通模型图如下图1所

3、示:图1 十字路口交通信号灯控制示意图2.2交通灯工作过程的分析(1)东西路左转、直行、人行道和非机动车道红灯亮。(2)南北路直行、人行道和非机动车道红灯亮,左转绿灯亮15秒,之后左转黄灯亮3秒,接着左转红灯亮。直行绿灯亮15秒,同时人行道和非机动车道绿灯亮12秒,之后人行道和非机动车道绿灯亮以1秒间隔连闪3次,以警告人行道和非机动车道上的行人,之后变为红灯。同时直行绿灯灭黄灯亮3秒,直行红灯亮。此时南北路口红灯全亮禁止通行。(3)南北直行红灯亮的同时东西左转绿灯亮15秒,之后左转黄灯亮3秒,左转红灯亮。东西直行绿灯亮15秒,同时人行道和非机动车道绿灯亮12秒,12秒到分别以1秒间隔连闪三次,

4、人行道和非机动车道红灯亮。15秒到东西直行红灯亮。东西路所有红灯亮,东西路口禁止通行。东西直行红灯亮同时南北左转绿灯亮15秒。此时红绿灯完成一个逻辑控制,之后以上逻辑分析所示依次循环。2.3总体设计方案本设计主要部件是ARM开发板STM32F103RB芯片,通过编程控制STM32F103RB芯片I/O口引脚的电平,直接控制驱动电路的通断,间接控制LED组显示灯构成的红绿灯。其总体方案框图如下体2所示。ARM开发板STM32F103RB芯片图2 总体设计方案框图2.4驱动电路的设计考虑到所给电源要求为12V,每个发光管经实际测量在发光管两端加至2V时亮度最大且在继续加电压变化不大,既满足了亮度需

5、求也确保了其使用寿命。经过以上测量分析采用没6个发光管串联为一组,多组发光管并联接至驱动电路上。这样每组发光管所流过的电流为10mA,每个灯大概均为10组以上,所以驱动电路要承受起100mA以上的电流。三极管8050的ICQ为0.5A,可以驱动这些发光管组,为了保险起见采用两个三极管并联形势以确保能够安全稳定的工作。由于STM32F103RB芯片引脚高电平时电压3.3V,综上分析采用两个8050NPN型三极管来构成。3程序设计在本设计的程序中最重要也是最核心的是秒时钟的程序,在这里我们用滴答时钟作为源程序对其进行扩展使其实现以秒为单位的计时,然后根据逻辑控制着各个I/O口的电平高低,从而控制交

6、通灯的顺序亮灭。Cortex-M3处理器内包含了一个简单的定时器。因为所有的CM3芯片都带有这个定时器,软件在不同CM3器件间的移植工作就得以简化。该定时器的时钟源可以是内部时钟(FCLK,CM3上的自由运行时钟),或者是外部时钟(CM3处理器上的STCLK信号)。在STM32中Systick以FCLK作为运行时钟。首先我们从主程序看起。主程序如下所示:int main(void)SystemInit(); /系统初始化时钟配置,初始化为72MHZ时钟GPIO_Config(); / GPIO端口配置for(;)led_control() ;SystemInit();将系统时钟配置为72M。G

7、PIO_Config();配置与LED相关的I/O口,SystemInit();这个函数是在SysTick.c文件中实现的,其功能是启动系统滴答定时器SysTick,并将SysTick配置为1us中断一次。SysTick_Init();函数如下所示:Viod SysTick_Init(void)/*SystemFrequency / 1us中断一次If (SysTick_config(SystemFrequency / ) While(1);SysTick_Init();函数又调用了库函数SysTick_Config(uint32_t ticks);其程序如下所示:Static_LININE

8、uint32_t SysTick_Config(uint32_t ticks)if (ticksystick_maxcount) Return (1);SysTick-LOAD = (ticks & systick_maxcount)-1;NVIC_SetprioritySysTick_IRQn,(1VAL = (0x00);SysTick-CTRL=(1SYSTICK_CLKSOURCE)|(1SYSTICK_ENABLE)|(1CTRL = SysTick_CTRL_ENABLE_Msk; SysTick-CTRL &= SysTick_CTRL_ENABLE_Msk; void dela

9、y_ms(uint16_t x)t = x;SysTick-CTRL |= SysTick_CTRL_ENABLE_Msk;while(t != 0);void systick_interrupt(void)if (t != 0) t-;void delay_s(unsigned int s)while(s-)delay_ms(1000);其I/O口配置和逻辑延时程序见附录所示。4系统调试将开发板的各个引脚用排线与驱动电路的基极相连接,驱动电路的射级公共端接地,各个集电极与对应的由三色发光管组成的红绿灯相的公共阴极相连接,将红绿灯的各个阳极接至12V电源。将程序下载至STM32F103RB芯片

10、中,运行开发板并观察。测试发现有的红绿灯出现部分发光管不亮现象。初步判断是由于管子引脚接反或者印制线开路所致,用万用表进行逐一测量发现其中有些发光管组是因为发光管的引脚接反所致,有的是开焊或印制线在制作当中被腐断所致。于是对其进行一一整改,整改后交通灯均按照正常的逻辑顺序进行交替闪烁,的到了预期的效果,实现了设计的要求。5实习总结通过本次基于STM32F103RB的红绿灯的课程设计设计,使我们了解了嵌入式系统,熟悉了STM32F103RB芯片的一些特性,学会了对ARM芯片的编程和调试;同时也是我们明白了交通灯的工作过程和控制原理。这次课程设计之后是同学们对嵌入式有了很深的了解,激发了同学们的学

11、习热情和学习欲望。在日后的嵌入式学习中起到了铺垫和巩固的至关重要的作用。在本次课程设计的实习中,老师的耐心指导和同学们的刻苦训练的精神让人难忘,在这里衷心感谢老师的对同学们耐心、认真和负责的教育指导。在今后的学习中我们将继续努力以更加认真的态度学习好所有课程,认真对待每次的实习为明年的就业工作做好准备。参考文献1 周立功等.ARM嵌入式系统基础教程M.北京:北京航空航天大学出版社,2005.1.2康华光.电子技术基础数字部分(第五版)M.北京:高等教育出版社,2006.13赖于树.ARM微处理器与应用开发M,北京:电子工业出版社,2007.8附录#include LED.H#include s

12、ystick.hvoid led_control(void) GPIO_ResetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_6|GPIO_Pin_8|GPIO_Pin_11|GPIO_Pin_14);/PA2,3,6,8,11,14=0;左1绿,直1红,人车1红,左2红,直2红,人车2红灯亮GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_15)

13、;/其他全灭; delay_s(15); GPIO_SetBits(GPIOA,GPIO_Pin_2);/左1绿灭 delay_s(1); GPIO_ResetBits(GPIOA,GPIO_Pin_2);/左1绿亮 delay_s(1); GPIO_SetBits(GPIOA,GPIO_Pin_2);/左1绿灭 delay_s(1); GPIO_ResetBits(GPIOA,GPIO_Pin_2);/左1绿亮 delay_s(1); GPIO_SetBits(GPIOA,GPIO_Pin_2);/左1绿灭 delay_s(1); GPIO_ResetBits(GPIOA,GPIO_Pin_2);/左1绿亮 delay_s(1); GPIO_SetBits(GPIOA,GPIO_Pin_2);/左1绿灭 GPIO_ResetBits(GPIOA,GPIO_Pin_1);/左1黄亮 delay_s(3); GPIO_SetBits(GPIOA,GPIO_Pin_1);/左1黄灭 GP

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号