嵌入式系统设计专题实践交通灯控制系统专业:电子信息工程班级:电子1102姓名:XXX学号:XXXXXXXX同组人:XXX指导教师:XXX1目录一、方案设计与论证..................................................11.1系统任务描述.................................................11.2系统方案设计.................................................41.3系统框图.....................................................4二、硬件电路设计....................................................42.1控制器最小系统设计...........................................42.2数码管显示模块设计...........................................62.3交通灯指示模块设计...........................................8三、系统软件设计....................................................83.1系统软件流程图...............................................83.2500ms定时器子程序设计.......................................93.3计数显示子程序设计.........................................10四、系统调试.......................................................114.1硬件调试....................................................114.2软件调试....................................................114.3综合调试...................................................11五、结论...........................................................12六、心得体会.......................................................13七、附录...........................................................157.1实物图..............................................................157.1参考文献....................................................167.2示例代码....................................................162摘要随着移动设备的流行和发展,嵌入式系统已经成为一个热点。它并不是最近出现的新技术,只是随着微电子技术和计算机技术的发展,微控制芯片功能越来越大,而嵌入微控制芯片的设备和系统越来越多,从而使得这种技术越来越引人注目。它对软硬件的体积大小、成本、功耗和可靠性都提出了严格的要求。嵌入式系统的功能越来越强大,实现也越来越复杂,随之出现的就是可靠性大大降低。最近的一种趋势是一个功能强大的嵌入式系统通常需要一种操作系统来给予支持,这种操作系统是已经成熟并且稳定的,本文将介绍一种基于飞思卡尔K60P144M100SF2RM控制的交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用嵌入式系统,本系统性能稳定,功能完善,实用性强。关键词:交通灯K60P144M100SF2RM嵌入式系统定时显示一、方案设计与论证1.1系统任务描述本次设计中根据实际需要,结合嵌入式系统的特点,完成对交通灯的控制系统设计。系统功能包括实现对车辆的直行,左拐、停止等待等功能。基于飞思卡尔K60P144M100SF2RM控制器,实现对车辆进行指导控制。本系统中主要由控制器最小系统、数码管显示模块、交通灯模块等相关模块构成。系统任务包括三个环节。假设十字路口南北方向为主干车道,东西方向为支干道。1)完成交通灯的变化规律,就是一个十字路口分别为东西向和南北向,四个路口均有红黄绿三灯和两位LED数码显示管,及每个路口有一个人行道交通灯。2)交通灯上电后进入初始状态即东西红灯常亮60s,南北绿灯常亮60s,第一种状态:南北绿灯亮通车,东西红灯亮禁止通行,当东西红灯亮时,东西方向的人行道为绿灯,持续60s后转第二个状态:南北绿灯灭转黄灯闪亮10次,延时10s,东西仍然红灯,东西方向人行道仍为绿灯;10s后转第三个状态:东西绿灯亮通车60s,南北转红灯禁止通行60s,南北方向人行道为绿灯持续60s;60s后转第四个状态:东西绿灯灭转黄灯闪亮10次,延时10s,南北仍然红灯,南北方向人行道仍为绿灯。最后循环至第一种状3态。3)用4个两位一体LED数码管(各个方向均有1个两位一体LED数码管,分别表示个位和十位)显示倒计时。倒计时用于提醒驾驶员和行人信号灯发生变化的时间,以便他们在“停止”和“通行”两者作出合适的选择。以下为系统的工作状态图:图1-1工作状态图下为本系统的工作方式图图1-2工作方式图(1)状态160s状态210s状态360s4图1-2工作方式图(2)1.2系统方案设计本系统基于K60P144M100SF2RM控制器设计的交通灯控制系统。设计过程主要采用自上向下的设计思路和模块化设计的设计思想,对软件和各个硬件模块进行独立设计,综合调试。软件包括显示、定时器、GPIO、时钟等设置。硬件电路包括由三极管驱动的数码管显示电路以及交通灯显示电路。1.3系统框图5图1-3系统框图二、硬件电路设计本系统中硬件系统包括K60P144M100SF2RM最小系统设计、数码管显示模块、交通灯显示模块。采用模块化设计的思想对以上模块进行设计。2.1K60P144M100SF2RM最小系统设计Kinetis是低功耗可扩展和在工业上使用混合信号ARMCortex-M4系列的最好的组合。KinetisMCUs使用了飞思卡尔的新的90nm带有独特FlexMemory的薄膜存储器(TFS)闪存技术。Kinetis系列MCU结合了最新的低功耗革新技术和高性能,高精密混合信号功能与连通,人机界面,安全及外设广泛。KinetisMCUs使用了飞思卡尔和ARM第三方合作伙伴的市场领先的捆绑模式。所有Kinetis系列都包涵强大的逻辑、通信和时序阵列和带有伴随着闪存大小和I/O数量的集成度等级的控制外围部件。Kinetis产品组合内核具有以下特点:ARMCortex-M4内核带DSP指令,性能可达1.25DMIPS/MHz(部分Kinetis系列提供浮点单元);32通道的DMA可用于外设和存储器数据传输并减少CPU干预;提供不同级别的CPU频率50MHz、72MHz和100MHz(部分Kinetis系列提供120MHz和150MHz);10种低功耗操作模式用于优化外设活动和唤醒时间以延长电池的寿命;行业领先的快速唤醒时间。正是由于K60控制器在性能上有较多的优点和较低的功耗,因而适合用来开发交通灯控制系统。以下为本控K60P144M100SF2RM控制器最小系统电源交通灯指示模块数码管显示计时模块6制器的最小系统原理图:图2-1最小系统原理图72.2数码管显示模块设计LED显示器采用发光二极管显示字段。单片机糸统中经常采用的是八段显示器,即LED显示器中有8个发光二极管,每段LED的笔画分别称为a、b、c、d、e、f、g,代表“a.b.c.d.e.f.g.”七个字段和一个小数点“dp”。它有共阴和共阳两种结构。七段LED的阳极连在一起称为共阳极接法,而阴极接在一起的称为共阴极接法。图2-2数码管图2-2七段LED的段代码8数码管的驱动分为静态和动态驱动。在本系统中采用两个共阳数码管进行动态显示。分别对三个状态进行计时,个位和十位分别用一个数码管显示,每次计时加一的时间是1s。以下是本模块的原理图:图2-3四位共阳数码管其中由数码管的位选端和段选端进行控制数码管的显示程序。根据PNP三极管的导通原理,当位选端为低电平时,三极管导通,根据共阳极编码进行合理设置即可。此外用三极管驱动数码管的原因是三极管显示更明亮一些。用数码管显示效果比较直观。92.3交通灯指示模块由南向北和由北向南车道各用一组红、绿、黄三色的指示灯,指挥车辆通行。绿灯是通行信号,面对绿灯的车辆可以直行,红灯是禁止通行信号,面对红灯的车辆必须在路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以继续行进。三、软件设计3.1软件系统流程图在系统的软件设计时,需要对系统时钟进行设计,以满足对本次系统的功能需求。还需对GPIO端口进行初始化设置,500ms定时延迟设置。然后需要考虑交通灯的三个工作状态,合理安排显示与计数的时序关系。NYY图3-1软件系统流程图3.2500ms定时器子程序设计开始系统初始化程序时钟设置交通指示灯交替亮灭500ms定时器设置计数程序数码管显示计数结束?结束10本模块是将产生500ms定时器,让在计数器计数时提供计时间隔,同时也可作为数码管个位和十位的刷新时间,即每次数码管显示更新递增一个数字经过的时间是1s。以下是本模块的子程序软件流程图:NY图3-2定时器流程图开始设置LPTMR定时器1KHzLPO时钟计数设置count_val比较值触发输出清除标志位结束到达count_val值?113.3计数显示子程序设计计数显示是在定时器运行前提下进行工作的。数码管每刷新一个数时,时间是1s。这样的好处是显示与指示灯状态同步起来。同时也能做到效果比较直观。以下是此部分模块的流程图:图3-3计数器开始dis_0=0dis_1=0dis_2=0初始化dis_1++数码管译码指示灯亮1000ms定时器指示灯亮1000ms定时器dis_0++dis_0601000ms定时器数码管译码指示灯亮dis_2++dis_260?dis_110?12四、系统调试4.1硬件调试在硬件调试时,K60最小系统的调试就是用集成Mini核心板进行调试,当系统上电后,将系统示例程序下载到开发板中,用一个示例LED等进行测试能否正常运行。在GPIO端口进行初始化后,应对端口进行合理设置。在对核心板程序下载成功后,在程序能正确运行时,可以根据共阳数码管的特点进行测试,对显示电路能否正常工作进行测试。验看数码管计数时是否与预想的一样,若不一样营及时修正程序。最终使结果出现与预期一样。4.2软件调试在软件调试时,在IARforARM6.30版本平台上进行编程下载,通过J—LinkJI进行下载到K60核心板中。在调试时可以用单步调试,全速运行,设置断点等方式。与此同时观看寄存器和变量的值在调试中常常发挥着重要作用。在修改和完善程序后,最终下载到核心板中运行。图4-1软件编程界面134.3综合调试测试一开始,我们就发现了系统出现了两个问题:一是有一部分交通灯亮度不够,所发出来的光非常的微弱以致于几乎感觉不到它的亮度;二是数码管不工作,没有时间显示。这与设计的要求完全不符。为了找出这个问题和解决方法,我们查找了电路的输出各部分的输出电平。发现了一个现象,我们采用的数码管是共阴极数码。而控制数码段显示的P1口输出的是高电平。经多方查阅资料,解决第二个问题可以有两个解决方法。其一,将硬件电路作修改,将数码管换成共阳极的数码管。这样数码管就可以正常进行