基于ARM的交通灯设计.doc
《基于ARM的交通灯设计.doc》由会员分享,可在线阅读,更多相关《基于ARM的交通灯设计.doc(18页珍藏版)》请在三一办公上搜索。
1、嵌入式系统课程设计报告 (基于ARM的交通灯控制系统) 院 系: 机电学院 学生姓名: 专 业: 应用电子教育 班 级: 指导教师: 田丰庆 付广春 完成时间: 2013年3月28日 1引言11.1设计主旨11.2设计原理11.3总体设计方案12 GPIO的简介42.1 GPIO口的应用42.2 GPIO端口的配置42.3 GPIO 的功能53 STM32最小系统电路5 3.1 STM32芯片管脚介绍5 3.2 STM32复位和时钟电路设计54总结85参考文献10附录一11附录二12基于ARM的交通灯设计摘要:本设计选择STM32为核心控制元件,设计了一款基于ARM3的十字路臂交通灯控制系统,
2、实现对行人、非机动车等的指示。关键词:STM32 ARM 交通灯1引言近年来,城市人口与流动人口急剧增加,全国大中城市人口普遍存在着交通拥挤,道路阻塞,率速缓慢等现象。如何解决城市交通问题成为全社会关注的焦点。随着嵌入式系统的飞速发展,这一问题已经得到了解决,通过嵌入式的设计解决了交通的拥堵问题。1.1设计主旨 利用ARM芯片模拟实现交通灯控制。自行选择所需ARM芯片,查阅相关文献资料,熟悉所选ARM芯片,了解所选ARM芯片各个引脚功能,工作方式,计数/定时,I/O口,中断等相关原理,通过软硬件设计实现利用ARM芯片完成交通灯的模拟控制。 本实验的目的是为了通过设计交通灯从而更好的了解关于ST
3、M32、FLASH等芯片的工作作用。并且对嵌入式有深刻的意识。达到了解交通灯工作原理以及时间控制红蓝绿三灯的闪亮的技术问题。1.2设计原理STM32系列微控器是以ARM Cortex_M3为内核开发生产的32位微控制器,专为高性能,低成本,低功耗的嵌入式应用专门设计。本次实验就是基于ARM的十字路口交通灯设计,通过对现实路况交通灯的分析研究,理解交通控制系统的实现方法,并通过本次实习用开发版实现其功能。通过设计,培养自己综合应用所学知识,独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练,加深对ARM芯片的了解;熟悉ARM芯片各个引脚的功能,工作方式,计数/定时,I
4、/O口,中断等相关原理,巩固学习嵌入式的相关内容知识。利用ARM芯片模拟实现交通灯控制。1.3总体设计方案 本设计采用STM32为主芯片,形成主控制电路。通过程序控制整个电路的运转一级红黄绿三种信号的转换。STM32系列单片机有包含若干定时器/计数器。其中,TIM1和TIM8是高级控制定时器,TIM2TIM5为通用定时器。TIM6和TIM7为基本定时器。在嵌入式系统中,定时器是依靠时钟源来完成定时功能的。 一个十字路口由东西,南北两干道构成,各有一组红,绿,黄三色指示灯。红灯亮禁止通行,绿灯亮允许通行,黄灯亮警示人们注意红,绿灯即将切换且黄灯亮的时间为东西,南北两干道的公共停车时间。当开发版和
5、电脑连接好以后,将程序下载到开发板中可以看到外接电路的红,绿,黄灯的变化情况。一通上电时南北方向上的直走和右转绿灯亮,延时20S后黄灯亮,黄灯延时5S后左转绿灯亮,(在绿灯亮的时候其余方向上的灯都为红灯),延时40S后黄灯亮,延时5S后都被切换成红灯。延时80S再继续循环。此次实习因为资源有限只演示南北方向上的红绿灯变化情况。具体的工作流程如下。图1 流程图2 GPIO的简介2.1 GPIO口的应用 函数GPIO口的具体实现在库文件“stm32f10x_gpio.c”中,其作用是定义各个通用IO端口的模式,对应到外设的输入/输出功能有以下三种情况:(1) 外设对应的引脚为输入:则根据外围电路的
6、配置可以选择浮空输入.带上拉输入或带下拉输入。(2) ADC对应的引脚:配置引脚为模拟输入。(3) 外设对应的引脚为输出:需要根据外围电路的配置选择对应的引脚为复用功能的推挽输出或复用功能的开漏输出。如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。将引脚配置成复用输出功能后,如果外设没有被激活,它的输出将不确定。2.2 GPIO端口的配置图2 端口配置电路2.3 GPIO 的功能(1)最基本的功能是可以驱动LED.产生PWM.驱动蜂鸣器等。(2)具有单独的位设置或位清楚,编程简单。(3)具有外部中断/唤醒能力,端口配置成输入模式时,具有外部中断能力。(4)具有
7、复用功能,复用功能的端口兼有I/O功能等。(5)GPIO 口的配置具有锁定机制,当配置好GPIO口后,在一个端口位上执行了锁定,可以通过程序锁住配置组合,在下一次复位之前,将不能再更改端口位的配置。3 STM32最小系统电路3.1 STM32芯片管脚介绍STM32F103R6T6管脚示意图,如图3所示。图3 STM32F103R6T6管脚示意图3.2 STM32复位和时钟电路设计 此电路主要是复位电路和时钟电路两部分,其中复位电路采用按键手动复位和上电自动复位组合,电路如图4(右)所示:其中7脚为STM32的复位端。时钟电路如图4(左)所示:晶振采用的是8MHz和32.786KHz,8MKz分
8、别接STM32的5脚和6脚,32.786KHz分别接STM32的3脚和4脚。图4 STM32复位和时钟电路定时器程序如下。#include Time_test.h/* * 函数名:TIM2_NVIC_Configuration * 描述 :TIM2中断优先级配置 * 输入 :无 * 输出 :无 */void TIM2_NVIC_Configuration(void) NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); NVIC_InitStructure.NVIC_IRQCha
9、nnel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);/*TIM_Period-1000 TIM_Prescaler-71 -中断周期为1ms*/void TIM2_Configuration(void) TIM_TimeBaseInitTy
10、peDef TIM_TimeBaseStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE); TIM_DeInit(TIM2); TIM_TimeBaseStructure.TIM_Period=1000; /* 自动重装载寄存器周期的值(计数值) */ /* 累计 TIM_Period个频率后产生一个更新或者中断 */ TIM_TimeBaseStructure.TIM_Prescaler= (72 - 1); /* 时钟预分频数 72M/72 */ TIM_TimeBaseStructure.TIM_ClockDivi
11、sion=TIM_CKD_DIV1; /* 采样分频 */ TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; /* 向上计数模式 */ TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_ClearFlag(TIM2, TIM_FLAG_Update); /* 清除溢出中断标志 */ TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); TIM_Cmd(TIM2, ENABLE); /* 开启时钟 */ RCC_APB1PeriphClockCmd(
12、RCC_APB1Periph_TIM2 , DISABLE);/*先关闭等待使用*/ #include Time_test.h/* * 函数名:TIM2_NVIC_Configuration * 描述 :TIM2中断优先级配置 * 输入 :无 * 输出 :无 */void TIM2_NVIC_Configuration(void) NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
13、NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);/*TIM_Period-1000 TIM_Prescaler-71 -中断周期为1ms*/void TIM2_Configuration(void) TIM_TimeBaseInitTypeDef TIM_TimeBase
14、Structure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE); TIM_DeInit(TIM2); TIM_TimeBaseStructure.TIM_Period=1000; TIM_TimeBaseStructure.TIM_Prescaler= (72 - 1); /* 时钟预分频数 72M/72 */ TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
15、 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_ClearFlag(TIM2, TIM_FLAG_Update);/* 清除溢出中断标志 */ TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); TIM_Cmd(TIM2, ENABLE);/* 开启时钟 */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , DISABLE);/*先关闭等待使用*/ 4. 总结 两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ARM 交通灯 设计

链接地址:https://www.31ppt.com/p-2392649.html