嵌入式系统课程设计11页_第1页
嵌入式系统课程设计11页_第2页
嵌入式系统课程设计11页_第3页
嵌入式系统课程设计11页_第4页
嵌入式系统课程设计11页_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

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

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

3、灯控制示意图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口的电平高低,从而控制交通灯的顺序亮灭。Corte

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

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

8、E uint32_t SysTick_Config(uint32_t ticks)if (tick>systick_maxcount) Return (1);SysTick->LOAD = (ticks & systick_maxcount)-1;NVIC_SetprioritySysTick_IRQn,(1<<_NVIC_PRIO_BITS)=1;SysTick->VAL = (0x00);SysTick->CTRL=(1<<SYSTICK_CLKSOURCE)|(1<<SYSTICK_ENABLE)|(1<<S

9、YSTICK_TICKINT);Return(0);实际上真正开启SysTick定时器的就是这个函数,前面的SysTick_Init(void)只是将这个函数封装起来而已。一旦我们调用了这个函数,SysTick定时器就被开启,按照设定好的定时周期递减技术,SysTick定时器有一个24位的计数寄存器,当计数寄存器里面的值减为0时,就进入中断函数,当中断函数执行完毕之后又重新计时,如此循环,除非它被关闭,SysTick定时器的开启和关闭由其控制及状态寄存器的第0位来控制。最终可以用条件判断来的到秒脉冲的程序,其主要程序如下所示:uint16_t t;void systick_init(void)

10、if(SysTick_Config(72000000 / 1000)/延时n毫秒while(1); /SysTick->CTRL = SysTick_CTRL_ENABLE_Msk; SysTick->CTRL &= SysTick_CTRL_ENABLE_Msk; void delay_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 in

11、t s)while(s-)delay_ms(1000);其I/O口配置和逻辑延时程序见附录所示。4系统调试将开发板的各个引脚用排线与驱动电路的基极相连接,驱动电路的射级公共端接地,各个集电极与对应的由三色发光管组成的红绿灯相的公共阴极相连接,将红绿灯的各个阳极接至12V电源。将程序下载至STM32F103RB芯片中,运行开发板并观察。测试发现有的红绿灯出现部分发光管不亮现象。初步判断是由于管子引脚接反或者印制线开路所致,用万用表进行逐一测量发现其中有些发光管组是因为发光管的引脚接反所致,有的是开焊或印制线在制作当中被腐断所致。于是对其进行一一整改,整改后交通灯均按照正常的逻辑顺序进行交替闪烁,

12、的到了预期的效果,实现了设计的要求。5实习总结通过本次基于STM32F103RB的红绿灯的课程设计设计,使我们了解了嵌入式系统,熟悉了STM32F103RB芯片的一些特性,学会了对ARM芯片的编程和调试;同时也是我们明白了交通灯的工作过程和控制原理。这次课程设计之后是同学们对嵌入式有了很深的了解,激发了同学们的学习热情和学习欲望。在日后的嵌入式学习中起到了铺垫和巩固的至关重要的作用。在本次课程设计的实习中,老师的耐心指导和同学们的刻苦训练的精神让人难忘,在这里衷心感谢老师的对同学们耐心、认真和负责的教育指导。在今后的学习中我们将继续努力以更加认真的态度学习好所有课程,认真对待每次的实习为明年的

13、就业工作做好准备。参考文献1 周立功等.ARM嵌入式系统基础教程M.北京:北京航空航天大学出版社,2005.1.2康华光.电子技术基础数字部分(第五版)M.北京:高等教育出版社,2006.13赖于树.ARM微处理器与应用开发M,北京:电子工业出版社,2007.8附录#include "LED.H"#include "systick.h"void led_control(void) GPIO_ResetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_6|GPIO_Pin_8|GPIO_Pin_11|GPIO_Pin_14

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);/其他全灭; delay_s(15); GPIO_SetBits(GPIOA,GPIO_Pin_2);/左1绿灭 delay_s(1); GPIO_ResetBits(GPIOA,GPIO_Pin_2);/左1绿亮 delay_s(1)

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绿灭 GPIO_ResetBits(GPIOA,GPIO_Pin_1);/左1黄亮 delay_s(3); GPIO_SetBi

16、ts(GPIOA,GPIO_Pin_1);/左1黄灭 GPIO_ResetBits(GPIOA,GPIO_Pin_0);/左1红亮 delay_s(3); GPIO_SetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_6);/直1红灭,人车1红灭 GPIO_ResetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_7);/直1绿亮,人车1绿亮 delay_s(15); GPIO_SetBits(GPIOA,GPIO_Pin_7);/人车1绿灭 delay_s(1); GPIO_ResetBits(GPIOA,GPIO_Pin_7);/人车1绿亮 delay_s(1); GPIO_SetBits(GPIOA,GPIO_Pin_7);/人车1绿灭 delay_s(1); GPIO_ResetBits(GPIOA,GPIO_Pin_7);/人车1绿亮 delay_s(1); GPIO_SetBits(GPIOA,GPIO_Pin_7);/人车1绿灭 delay_s(1); GPIO_ResetBits(GPIOA,GPIO_Pin_7);/人车1绿亮 del

温馨提示

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

评论

0/150

提交评论