交通灯设计PPT学习课件_第1页
交通灯设计PPT学习课件_第2页
交通灯设计PPT学习课件_第3页
交通灯设计PPT学习课件_第4页
交通灯设计PPT学习课件_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、组员: 魏娟 戚璐 倪鑫艳 于慧琴 孙涛涛 李亚楠,交通灯设计,1,一、系统概述 1.1系统背景 1.2嵌入式简介 1.3飞思卡尔简介 二、总体设计思路 2.1芯片选择 2.2十字路口状态设计图 2.3交通灯说明 三、交通灯设计 3.1交通灯状态设计 3.2流程图 3.3功能模块说明 四、代码分析 五、实验结果图,目 录,2,一、系统概述,3,1.1系统背景,随着计算机互联网行业的飞速发展,单片机的应用愈发广泛,大到卫星,小到家用的电子产品,无处不存在单片机的身影,而且单片机方面的人才稀缺,因而掌握单片机技术对于计算机专业的学生很是重要。,4,1.2嵌入式简介,嵌入式系统一般指非 PC 系统,

2、有计算机功能但又不称之为计算机的设备或器材。它是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。嵌入式系统几乎包括了生活中的所有电器设备,如掌上 PDA 、移动计算设备、电视机顶盒、手机上网、数字电视、多媒体、等。 专门的单片微控制器是大多数嵌入式系统的核心。通过把若干个关键的系统组成部分集成到单个芯片上,系统设计者就可以得到小而便宜、可以操作较少外围电子设备的计算机。现在嵌入式开发主要是指用C#语言在微软的.NETFreamwork环境中进行开发。,5,1.3飞思卡尔简介,飞思卡尔专注于嵌入式处理解决方案。面向汽车、网络、工业和消费

3、电子市场,提供的技术包括微处理器、微控制器、传感器、模拟集成电路和连接。飞思卡尔的一些主要应用和终端市场包括汽车安全、混合动力和全电动汽车、下一代无线基础设施、智能能源管理、便携式医疗器件、消费电器以及智能移动器件等。 主要应用有8位微控制器(单片机)、16位微控制器(单片机)、数字信号处理器与控制器、电源管理、RF射频功率放大器、高性能线性功率放大器GPA、音视频家电射频多媒体处理器、传感器等。,6,二、总体设计思路,7,2.1 芯片选择,芯片选择飞思卡尔的kl25芯片 选择使用飞思卡尔kl25芯片的P1口,(P1.0P1.7)分别接上两组八位信号灯 交通信号灯的控制电路中的核心是kl25单

4、片机,其内部带有4KB的FLASH,无须扩展程序存储器;交通灯的控制没有大量的运算和暂存器,KL25芯片内的128B RAM 已能满足要求,所以也不需要外扩RAM,8,2.2十字路口状态设计图,东,西,9,2.3交通灯说明,设计一个单片机控制交通信号灯,使其能模拟城市“十字”路口交通信号灯的功能,并能进行某些特殊控制。 就是以绿,黄,红色三只共两组(因为东、西方向信号灯的变化情况相同,用一组发光二极管;南、北方向信号灯的变化情况相同,用一组发光二极管)发光二极管(LED)表示交通信号灯。,10,在双干线的十字路口上,交通信号灯的变化时定时的,其基本变化规律如下: 1. 绿灯亮放行后,黄灯亮警告

5、,然后红灯亮禁止。 红灯亮禁止一定时间后,绿灯亮放行。 2. 改设计能控制东、西、南、北四个路口的红、黄、绿信号灯正常工作: (1)当东西方向放行、南北方向禁止时,东西方向绿灯亮25s,黄灯5s,南北方向红灯亮30s。 (2)当南北方向放行,东西方向禁止时,南北方向绿灯亮25s ,黄灯5s,东西方向红灯亮30s。 当使两条路线交替地放行或禁止时,就可以实现定时交通控制。,11,串行通信的通信原理图:,12,三、交通灯设计,13,3.1交通灯状态设计,(1)南北绿灯,东西红灯 (2)延时25s (3)南北黄灯,东西红灯 (4)延时5s (5)东西绿灯,南北红灯 (6)延时25s (7)东西黄灯,

6、南北红灯 (8)延时5s (9)循环,14,流程图,15,3.3功能模块说明,16,TPM定时器,功能概述: TPM(定时器/脉宽调制模块)共有三个模块TPM0、TPM1、TPM2。TPM支持输入捕捉、,输出比较,并且能够产生PWM信号来控制电机。通过异步时钟源,可以让计数器、输出比较和输入捕捉寄存器工作在低功耗模式下。TPM的基本定时器部分是一个递增的计数器,通过设定模块的溢出值,当计数器递增到该数值时,产生TPM中断,可以选择时钟源和溢出值设定该计数器的频率。本实验,TPM定时设为1秒。,17,功能思路:,首先,对定时器初始化,禁止定时器1溢出中断,设置为1s发生1次定时器溢出中断 。 再

7、设置定时器状态和控制寄存器,以秒为最小单位递增。,18,整体向串口-发送时间,功能思路: 首先,初始化UART模块,设置串口信息、波特率,然后设置串行发送字节和接收字节等功能函数,实现串口发送当前时间数据。,19,四、代码分析,20,includes.h(应用工程总头文件) #ifndef INCLUDES_H_ #define INCLUDES_H_ #include common.h #include gpio.h #include light.h #include uart.h #include sysinit.h #include tpm.h #include timer.h /定义全

8、局变量 uint_8 g_time3; /记录时间的数组 #define RUN_COUNTER_MAX 1500000ul /定义小灯闪烁频率 /定义使用的调试号 #define UART_TEST UART_1 #define TEST_UART_BAUDRATE 9600UL #endif,21,isr.h(中断底层驱动构件头文件) #ifndef ISR_H /防止重复定义(ISR_H 开头) #define ISR_H /用户中断向量表注册表- #ifdef VECTOR_029 /1 注册串口1中断向量 #undef VECTOR_029 extern void isr_uart1

9、_re(void); #define VECTOR_029 isr_uart1_re #endif #ifdef VECTOR_033 /2 注册TPM0中断向量 #undef VECTOR_033 extern void tpm0_isr(void); #define VECTOR_033 tpm0_isr #endif #endif /防止重复定义( 结尾),22,中断子程序 isr.c(中断底层驱动构件源文件) #include includes.h 中断函数服务例程- /串口0接收中断服务例程 void isr_uart0_re(void) uint_8 ch; uint_8 flag

10、 = 1; enter_critical(); ch = uart_re1(UART_0, ,23,void isr_uart1_re(void) /串口1接收中断服务例程 static uint_8 index=0; /收到的个数 uint_8 flag = 1; enter_critical(); if(index2)index=0; /三个字节一收,时分秒 g_timeindex=uart_re1(UART_1, ,24,void tpm0_isr(void) /tpm定时中断 static uint_32 TPMCounter = 0; /定时器溢出中断标志 if(TPM_SC_REG

11、(TPM0_BASE_PTR) ,25,主程序 Main.c #include includes.h /包含总头文件 int main(void) uint_32 remember; /1.声明主函数使用的局部变量 /2.关总中断 enter_critical(); / 进入临界区,关中断 /3.初始化底层模块 / light_init(LIGHT_PORT, LIGHT_PIN_BLUE, LIGHT_OFF); /蓝灯初始化 light_init(LIGHT_PORT,LIGHT_PIN_1,LIGHT_ON); /初始化 light_init(LIGHT_PORT,LIGHT_PIN_2

12、,LIGHT_OFF); light_init(LIGHT_PORT,LIGHT_PIN_3,LIGHT_ON); light_init(LIGHT_PORT,LIGHT_PIN_4,LIGHT_OFF); light_init(LIGHT_PORT,LIGHT_PIN_5,LIGHT_OFF); light_init(LIGHT_PORT,LIGHT_PIN_6,LIGHT_ON); light_init(LIGHT_PORT,LIGHT_PIN_7,LIGHT_OFF); light_init(LIGHT_PORT,LIGHT_PIN_8,LIGHT_ON);,26,uart_init (

13、UART_1,BUSCLK, 9600); /串口1初始化, 总线时钟24000Khz,波特率9600 uart_send_string(UART_1, Hello TPM!rn); tpm_init(TPM0,TPM_CLKSRC_PLL,10000); /4.变量赋初值 g_time0=0; / 时分秒缓存初始化(00:00:00) g_time1=0; g_time2=0; remember = g_time2; / 临时变量remember初始化 /5.开中断 uart_enable_re_int(UART_1); /启动串口1接收中断 tpm_enable_int(TPM0); /启动模块中断 init_critical(); /开总中断,27,/进入主循环 /主循环开始 for(;) /if (g_time2%10=0) /判断秒钟是否发生变化 / /* u

温馨提示

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

评论

0/150

提交评论