《交通灯设计》PPT课件.ppt

上传人:牧羊曲112 文档编号:5458334 上传时间:2023-07-09 格式:PPT 页数:32 大小:857.50KB
返回 下载 相关 举报
《交通灯设计》PPT课件.ppt_第1页
第1页 / 共32页
《交通灯设计》PPT课件.ppt_第2页
第2页 / 共32页
《交通灯设计》PPT课件.ppt_第3页
第3页 / 共32页
《交通灯设计》PPT课件.ppt_第4页
第4页 / 共32页
《交通灯设计》PPT课件.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《《交通灯设计》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《交通灯设计》PPT课件.ppt(32页珍藏版)》请在三一办公上搜索。

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

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

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

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

5、控制东、西、南、北四个路口的红、黄、绿信号灯正常工作:(1)当东西方向放行、南北方向禁止时,东西方向绿灯亮25s,黄灯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(定时器/脉宽调

6、制模块)共有三个模块TPM0、TPM1、TPM2。TPM支持输入捕捉、,输出比较,并且能够产生PWM信号来控制电机。通过异步时钟源,可以让计数器、输出比较和输入捕捉寄存器工作在低功耗模式下。TPM的基本定时器部分是一个递增的计数器,通过设定模块的溢出值,当计数器递增到该数值时,产生TPM中断,可以选择时钟源和溢出值设定该计数器的频率。本实验,TPM定时设为1秒。,功能思路:,首先,对定时器初始化,禁止定时器1溢出中断,设置为1s发生1次定时器溢出中断。再设置定时器状态和控制寄存器,以秒为最小单位递增。,整体向串口-发送时间,功能思路:首先,初始化UART模块,设置串口信息、波特率,然后设置串行

7、发送字节和接收字节等功能函数,实现串口发送当前时间数据。,四、代码分析,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_T

8、EST 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_029extern void isr_uart1_re(void);#define VECTOR_029 isr_uart1_re#endif#ifdef VECTOR_033/2 注册TPM0中断向量#undef VECTOR_033extern void tpm0

9、_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,void isr_uart1_re(void)/串口1接收中断服务例程 static uint_8 index=0;/收到的个数 uint_8 flag=1;enter_critica

10、l();if(index2)index=0;/三个字节一收,时分秒 g_timeindex=uart_re1(UART_1,void tpm0_isr(void)/tpm定时中断 static uint_32 TPMCounter=0;/定时器溢出中断标志 if(TPM_SC_REG(TPM0_BASE_PTR),主程序 Main.c#include includes.h/包含总头文件int main(void)uint_32 remember;/1.声明主函数使用的局部变量/2.关总中断 enter_critical();/进入临界区,关中断/3.初始化底层模块/light_init(LIG

11、HT_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

12、_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;rememb

13、er=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;,五、实验结果,谢谢大家,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号