收藏 分销(赏)

交通灯设计PPT.pptx

上传人:精**** 文档编号:8937245 上传时间:2025-03-08 格式:PPTX 页数:32 大小:987.54KB 下载积分:12 金币
下载 相关 举报
交通灯设计PPT.pptx_第1页
第1页 / 共32页
交通灯设计PPT.pptx_第2页
第2页 / 共32页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,组员:魏娟,戚璐,倪鑫艳,于慧琴,孙涛涛,李亚楠,交通灯设计,一、系统概述,1.1,系统背景,1.2,嵌入式简介,1.3,飞思卡尔简介,二、总体设计思路,2.1,芯片选择,2.2,十字路口状态设计图,2.3,交通灯说明,三、交通灯设计,3.1,交通灯状态设计,3.2,流程图,3.3,功能模块说明,四、代码分析,五、实验结果图,目 录,一、系统概述,1.1,系统背景,随着计算机互联网行业的飞速发展,单片机的应用愈发广泛,大到卫星,小到家用的电子产品,无处不存在单片机的身影,而且单片机方面的人才稀缺,因而掌握单片机技术对于计算机专业的学生很是重要。,1.2,嵌入式简介,嵌入式系统一般指非,PC,系统,有计算机功能但又不称之为计算机的设备或器材。它是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。嵌入式系统几乎包括了生活中的所有电器设备,如掌上,PDA,、移动计算设备、电视机顶盒、手机上网、数字电视、多媒体、等。,专门的,单片微控制器,是大多数嵌入式系统的核心。通过把若干个关键的,系统组成,部分集成到单个芯片上,系统设计者就可以得到小而便宜、可以操作较少外围,电子设备,的,计算机,。现在,嵌入式开发,主要是指用,C#,语言在,微软,的,.NET,Freamwork,环境中进行开发。,1.3,飞思卡尔简介,飞思卡尔专注于嵌入式处理解决方案。面向汽车、网络、工业和消费电子市场,提供的技术包括,微处理器,、,微控制器,、传感器、,模拟集成电路,和连接。飞思卡尔的一些主要应用和终端市场包括汽车安全、,混合动力,和全电动汽车、下一代无线基础设施、智能能源管理、便携式医疗器件、消费电器以及智能移动器件等。,主要应用有,8,位,微控制器,(单片机)、,16,位微控制器(单片机)、,数字信号处理器,与控制器、电源管理、,RF,射频功率放大器、高性能线性功率放大器,GPA,、音视频家电射频多媒体处理器、传感器等。,二、总体设计思路,2.1,芯片选择,芯片选择飞思卡尔的kl25芯片,选择使用飞思卡尔kl25芯片的P1口,(P1.0P1.,7,)分别接上两组八位信号灯,交通信号灯的控制电路中的核心是kl25单片机,其内部带有4KB的FLASH,无须扩展程序存储器;交通灯的控制没有大量的运算和暂存器,KL25芯片内的128B RAM 已能满足要求,所以也不需要外扩RAM,2.2,十字路口状态设计图,东,西,2.3,交通灯说明,设计一个单片机控制交通信号灯,使其能模拟城市“十字”路口交通信号灯的功能,并能进行某些特殊控制。,就是以绿,黄,红色三只共两组(因为东、西方向信号灯的变化情况相同,用一组发光二极管;南、北方向信号灯的变化情况相同,用一组发光二极管)发光二极管(LED)表示交通信号灯。,在双干线的十字路口上,交通信号灯的变化时定时的,其基本变化,规律,如下:,1.,绿灯亮放行后,黄灯亮警告,然后红灯亮禁止。,红灯亮禁止一定时间后,绿灯亮放行。,2.,改设计能控制东、西、南、北四个路口的红、黄、绿信号灯正常工作:,(1),当东西方向放行、南北方向禁止时,东西方向绿灯亮,25,s,黄灯,5s,,南北方向红灯亮30s。,(2),当南北方向放行,东西方向禁止时,南北方向绿灯亮,25s,,黄灯,5s,,东西方向红灯亮30s。,当使两条路线交替地放行或禁止时,就可以实现定时交通控制。,串行通信的通信原理图:,三、交通灯设计,3.1,交通灯状态设计,(,1,)南北绿灯,东西红灯,(,2,)延时,25s,(,3,)南北黄灯,东西红灯,(,4,)延时,5s,(,5,)东西绿灯,南北红灯,(,6,)延时,25s,(,7,)东西黄灯,南北红灯,(,8,)延时,5s,(,9,)循环,流程图,3.3,功能模块说明,TPM,定时器,功能概述:,TPM,(定时器,/,脉宽调制模块)共有三个模块,TPM0,、,TPM1,、,TPM2,。,TPM,支持输入捕捉、,输出比较,并且能够产生,PWM,信号来控制电机。通过异步时钟源,可以让计数器、输出比较和输入捕捉寄存器工作在低功耗模式下。,TPM,的基本定时器部分是一个递增的计数器,通过设定模块的溢出值,当计数器递增到该数值时,产生,TPM,中断,可以选择时钟源和溢出值设定该计数器的频率。本实验,TPM定时设为1秒。,功能思路:,首先,,对定时器初始化,禁止定时器,1,溢出中断,设置为,1s,发生,1,次定时器溢出中断,。,再设置定时器状态和控制寄存器,以秒为最小单位递增。,整体向串口,-,发送时间,功能思路:,首先,初始化UART模块,设置串口信息、波特率,然后设置串行发送字节和接收字节等功能函数,实现串口发送当前时间数据。,四、代码分析,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,/,定义全局变量,uint_8 g_time3;,/,记录时间的数组,#define RUN_COUNTER_MAX 1500000ul,/,定义小灯闪烁频率,/,定义使用的调试号,#define UART_TEST UART_1,#define TEST_UART_BAUDRATE 9600UL,#endif,isr.h,(中断底层驱动构件头文件),#ifndef ISR_H,/,防止重复定义(,ISR_H,开头,),#define ISR_H,/,用户中断向量表注册表,-,#ifdef VECTOR_029,/1,注册串口,1,中断向量,#undef VECTOR_029,extern void isr_uart1_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,/,防止重复定义(结尾,),中断子程序,isr.c,(中断底层驱动构件源文件),#include includes.h,中断函数服务例程,-,/,串口,0,接收中断服务例程,void isr_uart0_re(void),uint_8 ch;,uint_8 flag=1;,enter_critical();,ch=uart_re1(UART_0,if(0=flag),uart_send1(UART_0,ch);,exit_critical();,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,if(0=flag)index+;,exit_critical();,void isr_uart2_re(void),/,串口,2,接收中断服务例程,uint_8 ch;,uint_8 flag=1;,enter_critical();,ch=uart_re1(UART_2,if(0=flag),uart_send1(UART_2,ch);,exit_critical();,void tpm0_isr(void),/tpm,定时中断,static uint_32 TPMCounter=0;,/,定时器溢出中断标志,if(TPM_SC_REG(TPM0_BASE_PTR)&TPM_SC_TOF_MASK)=TPM_SC_TOF_MASK),TPMCounter+;,BSET(TPM_SC_TOF_SHIFT,TPM_SC_REG(TPM0_BASE_PTR);,/,清标志位,if(TPMCounter 1000),/TPM,每中断,1000,次(即,10s,)闪烁一次。,TPMCounter=0;,light_change(LIGHT_PORT,LIGHT_PIN_1);,/,反转小灯亮灭,light_change(LIGHT_PORT,LIGHT_PIN_2);,light_change(LIGHT_PORT,LIGHT_PIN_3);,light_change(LIGHT_PORT,LIGHT_PIN_4);,light_change(LIGHT_PORT,LIGHT_PIN_5);,light_change(LIGHT_PORT,LIGHT_PIN_6);,light_change(LIGHT_PORT,LIGHT_PIN_7);,light_change(LIGHT_PORT,LIGHT_PIN_8);,SecAdd1(g_time);,主程序,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,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);,uart_init(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();,/,开总中断,/,进入主循环,/,主循环开始,for(;),/if(g_time2%10=0),/,判断秒钟是否发生变化,/,/*uart_sendN(UART_1,3,g_time);,/将计时信息通过串口,1,发送给,PC,remember=g_time2;,/,将秒数赋给临时变量,light_change(LIGHT_PORT,LIGHT_PIN_BLUE);*/,/,灯闪亮一次,/light_change(PORTD,7);,/,/end_while,/,主循环结束,return 0;,五、实验结果,谢谢大家,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服