嵌入式人行通道交通灯解析.docx
《嵌入式人行通道交通灯解析.docx》由会员分享,可在线阅读,更多相关《嵌入式人行通道交通灯解析.docx(25页珍藏版)》请在冰豆网上搜索。
嵌入式人行通道交通灯解析
指导教师评定成绩:
审定成绩:
重庆邮电大学移通学院
课程设计报告
设计题目:
人行通道交通灯设计
学校:
重庆邮电大学移通学院
学生姓名:
陈
专业:
电气工程及其自动化
班级:
学号:
指导教师:
设计时间:
2014年12月
重庆邮电大学移通学院
摘要
嵌入计算机系统作为计算机系统和计算机应用的一个重要领域,已经深入到社会的方方面面。
嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源非常有限,并且对成本很敏感,有时对实时响应要求很高。
特别是随着消费家电的智能化。
由嵌入式系统的高效性,稳定性,可靠性和节能性等特点,使其目前主要应用在消费类电子,通信,医疗,安全等行业。
最近的一种趋势是一个功能强大的嵌入式系统通常需要一种操作系统来给予支持,这种操作系统是已经成熟并且稳定的,可以是嵌入式的Linux,WINCE等等。
本次设计所要研究的就是基于ARM嵌入式系统的交通灯系统的设计与实现。
本设计采用了飞利浦的32位ARM微处理器S3C2440作为核心处理器。
关键词:
嵌入式系统ARMS3C2440交通灯
TrafficLightsSystembasedontheARMEmbeddedSystem
Student:
chengcanGuideTeacher:
huangna
Embeddedcomputersystemsasaimportantareaofcomputersystemsandcomputer applications,hasdeepintoeveryaspectofsociaty。
Embeddedsystemusedincertainspecialequipment,haidwareresourceisverylimited,usuallytotheequipmentandthecostisverysensitive,sometimestothehighrequirementofreal-timeresponse。
Especiallyeiththeintelligenthomeappliance。
Becauseoftheembeddedsystemefficiency,stability,reliabilityandenergyefficiency,etc。
Atpresentismainlyusedincomputerelectronics,medical,securityandetc。
Arecenttrendisapowerfulembeddedsystemsusuallyneedaoperatingsystemtosupporttheoperatingsystemisalreadymatureandstable,canbeembeddedLinux,WINCE,andsoon。
ThispaperistostudyundertheARMembeddedsystem’sthesystemoftrafficlightsdesignandimplementation。
ThisdesignusesPhilips's32astheS3C2440ARMmicroprocessorcoreprocessors。
Keywords:
EmbeddedSystemsARMS3C2440trafficlights
1、引言..............................4
2、相关内容及原理..........................5
3、设计方案.............................6
3.1设计思路...........................6
3.2总体设计框图.........................7
4、硬件设计............................8
4.1S3C2440芯片介绍及设计....................8
4.2S3C2440芯片最小系统硬件设计.................9
4.3系统电源电路设计.......................10
4.4晶振与复位电路........................10
4.5LED循环显示设计.......................11
4.6数码管倒计时显示硬件设计...................12
4.7蜂鸣器设计..........................13
5、软件设计............................14
5.1交通灯控制软件流程图.....................14
5.2ARM交通灯模拟控制程序设计..................15
6、运行测试结果..........................16
7、设计心得体会及总结.......................18
参考文献.............................19
附录...............................20
引言
交通信号灯指挥着人和各种车辆的安全运行,实现红、黄、绿灯的自动指挥是城乡交通管理现代化的重要课题。
在城乡街道的十字交叉路口,为了保证交通秩序和行人安全,一般在每条道路上各有一组红、黄、绿交通信号灯,其中红灯亮,表示该条道路禁止通行,黄灯亮,表示该条道路上未过停车线的车辆停止通行,已过停车线的车辆继续通行;绿灯亮,表示该条道路允许通行。
交通灯控制电路自动控制十字路口两组红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行,实现十字路口城乡交通管理自动化。
本文为了实现交通道路的管理,力求交通管理先进性、科学化。
分析应用了单片机实现智能交通灯管制的控制系统,以及该系统软、硬件设计方法,实验证明该系统实现简单、经济,能够有效地疏导交通,提高交通路口的通行能力。
2、相关内容及原理
通过设计,培养自己综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练,加深对ARM芯片的了解;熟悉ARM芯片各个引脚的功能,工作方式,计数/定时,I/O口,中断等相关原理,巩固学习嵌入式的相关内容知识。
利用ARM芯片模拟实现交通灯控制。
自行选择所需ARM芯片,查阅相关文献资料,熟悉所选ARM芯片,了解所选ARM芯片各个引脚功能,工作方式,计数/定时,I/O口,中断等相关原理,通过软硬件设计实现利用ARM芯片完成交通灯的模拟控制。
3、设计方案
3.1设计思路
利用LPC2131ARM芯片实现单路交通灯的控制:
a实现红、绿、黄灯的循环控制。
使用红、黄、绿三种不同颜色的LED灯实现此功能,由南往北方向红、黄、绿三个灯依次接在P1.18、P1.19、P1.20上,由北往南方向的红、黄、绿三个灯依次接在P1.21、P1.22、P1.23上,人行道用红、绿两个灯控制,依次接在P1.24、P1.25上,用软件控制灯的亮与灭来控制车辆和行人的通行。
b用数码管显示倒计时。
可以利用动态显示或静态显示,串行并出或者并行并出实现。
c南北方向控制车辆的绿灯熄灭的同时,控制蜂鸣器响2秒来作为警报。
蜂鸣器接P0.7引脚。
交通路口示意图如图3-1车辆遇到红灯停绿灯行的行走情况,绿灯时间为为60s,红灯时间为15s,更换时间为5s是黄灯闪烁。
图3-1交通路口示意图
3.2总体设计框图
用ARM7系列芯片LPC2138作为系统的主控芯片,控制交通灯的循环点亮并显示灯亮时间(采用倒计时显示),当定时时间到的时候控制蜂鸣器响来提醒人们注意红绿灯的状态。
图3-2交通灯总体设计框图
4、硬件设计
4.1S3C2440芯片介绍及设计
根据设计任务要求,自行选择电子元件,画出电气原理图,并调试。
一个完整的系统除了主控芯片以外,还需配上电源系统、时钟电路、复位电路等。
独立的芯片是不能工作的。
S3C2440微处理器是一款由Aansung半导体公司推出的高性能,低功耗,高集成度并具有工业级温度范围和性能的处理器,经过工业级EMC测试.具有以下一些特性:
∙具有工业级温度范围。
∙主频高达533MHz。
∙具有数字摄像头接口。
∙更低的内核电压。
∙支持更多分辨率液晶屏。
∙支持多种电压存储器。
∙具有AC97编解码器接口。
∙具有更多可用的I/O口。
∙UART口输入输出各具有64字节FIFO。
∙无需外围电路的触摸屏接口。
∙两片4banks*4Mbits*16bits.SDRAM工64MB,可扩展至128MB。
∙12MKz系统外部时钟源,32.769KHz的RTC时钟源。
∙单电源,具有上电复位(POR)和掉电检测(BOD)电路。
∙CPU操作电压范围:
3.3V~5V(3.3V±10﹪),I/O口可承受5V的电压。
4.2S3C2440芯片最小系统硬件设计
图4-1为S3C2440芯片的原理图,64个引脚,采用3.3V电源供电,设计所需外接器件的网络名已经标出。
图4-1S3C2440芯片的原理图
4.3系统电源电路设计
本电源运用5V的直流电源(图4-2所示)。
通过DS2434芯片将5V电压转换为3.3V电压,为S3C2440芯片供电,S3C2440芯片所能承受的电压范围是3.3V~5V。
图4-2直流电源电路设计
4.4晶振与复位电路
系统的晶振电路如图4-3所示S3C2440芯片采用11.0592MHz的晶振作为振荡时钟源,通过对芯片的进行软件设计可以将晶体振荡器的频率分频为所需的频率;系统的复位电路如图4-4所示,SP708S芯片的7号引脚连接到主控芯片的复位引脚(nRST)上,按下复位键S2时,系统将会复位到初始的状态。
图4-3系统的晶振电路图图4-4系统的复位电路图
4.5LED循环显示设计
由南向北和由北向南车道各用一组红、绿、黄三色的指示灯,指挥车辆通行。
绿灯是通行信号,面对绿灯的车辆可以直行,红灯是禁止通行信号,面对红灯的车辆必须在路口的停车线后停车。
黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以继续行进。
具体红绿灯时间分配时间如表4—1所示。
表4—1:
红绿灯时间分配时间如表
路况
时间
55s
5s
10s
5s
南北通道
绿灯亮
黄灯闪
红灯亮
黄灯闪
人行道
红灯亮
红灯亮
绿灯亮
红灯亮
上表说明南北通道绿灯亮、绿灯闪黄灯闪时人行道都是红灯亮,只有车道
红灯亮(车辆完全停下来)时人行道绿灯才亮,这样保证了过马路的行人人身安全,避免了不必要的交通事故。
硬件电路连接图如图4-5所示。
图4-5硬件电路连接图
交通灯LED的发光和熄灭的控制,是通过控制GPIO寄存器组来完成的,须先将引脚P1.18~P1.25通过引脚功能选择寄存器PINSEL1,设置为GPIO方式;再设置GPIO方向寄存器1(IO1DIR),对应的引脚设置为输出方向。
要点亮LED1~LED8需要使用GPIO清零寄存器1(IO1CLR)的对应位设置为1,即在引脚P1.18~P1.25上加逻辑低电平,即可点亮这些灯。
与之相反,要熄灭这些灯,则要用GPIO输出置位寄存器1(IO1SET)将对应的位置位即可。
4.6数码管倒计时显示硬件设计
数码管是一种很普遍的显示器件,数码管的主要部分是七段发光二极管;数码管分为共阴极和共阳极两种,为了保护各段LED,需外加限流电阻。
有的产品还附加有一个小数点,因此有人也称之为八段式发光二极管。
图4-6数码管外形图及阴阳两极连接示意图
如图4-6所示,数码管由8个发光段(第八段表示小数点)的不同组合,从而实现十六进制数的显示。
通过段选端可以控制数码管显示内容,位选端用于控制整个数码管是否工作:
对于共阴极数码管,位选端要接低电平,对于共阳极数码管,位选端接高电平。
数码管有两种显示方式:
动态显示和静态显示。
静态显示让数码管要点亮的数码管同时持续点亮;动态显示则利用了人眼的视觉暂留原理,在一个时间内只点亮一个数码管。
本次设计采用2位一体的数码管,数码管的2条位选线连接ARM的通用I/O口;数码管的8个段选端连接74HC595芯片的并行I/O输出接口,74HC595再与ARM的SPI0模式进行通信,接受ARM发送过来的数据。
数码管硬件电路连接图如图4-7所示。
图4-7数码管硬件电路连接图
4.7蜂鸣器设计
将蜂鸣器正极端接电源,负极端通过三极管接地,三极管基极通过电阻接到S3C2440芯片的P0.8引脚上。
具体硬件电路连接图如图4-8所示
图4-8蜂鸣器硬件电路连接图
5、软件设计
5.1交通灯控制软件流程图
图5-1为ARM模拟交通灯控制程序流程图,主程序主要完成倒计时显示及控制蜂鸣器,中断服务程序主要控制那些灯亮以及亮的时间。
主程序流程图中断程序流程图
5.2ARM交通灯模拟控制程序设计
定时器控制原理:
定时器对外设时钟Fpclk周期进行计数,根据4个匹配寄存器的设定可设置为匹配(即达到匹配寄存器指定的定时值)时产生中断或执行其他操作。
ARMLPC2138有两个32位定时器,定时器0和定时器1,本次设计仅适用定时器0,选定定时器0中断为向量IRQ。
设置P0、P1口为GPIO输出状态,初始化定时器,选定定时器0中断为向量IRQ,对VICIntEnable、VICIntSelect、VICvectCntl进行设置,初始化SPI接口,根据设计要求编写软件程序。
根据事先画好的程序流程图,用C语言编写程序,在主程序中对需要用到的I/O口进行定义,并设置相应的I/O口,比如要求P1。
18~P1。
25引脚为GPIO功能,则通过对引脚功能选择寄存器PINSEL1将对应的引脚设置为GPIO方式并设置GPIO方向,在GPIO方向寄存器IO1DIR里设置,之后对定时器0进行初始化,并开相应的中断。
然后进入大循环进行倒计时显示、控制蜂鸣器的蜂鸣与否并判断flag是否加到设定值,对flag加到设定值后进行清零,让flag重新计数。
中断服务程序的设计,每隔一秒钟定时器中断一次,每中断一次flag加1根据LED点亮的先后顺序以及点亮的时间,分别编写相应的程序。
6、运行测试结果
根据事先画好的程序流程图,用C语言编写程序,并成功生成HEX文件,编译结果如图6-1所示。
图6-1编译结果示意图
车道红灯、马路绿灯,一位数码管55秒倒计时显示如下图6-2所示。
图6-2车道红灯、马路绿灯50秒倒计时显示
车道红灯、马路绿灯,一位数码管55秒倒计时显示,倒计时5秒,马路方向亮黄灯,以提示即将亮红灯,如下图6-3所示。
图6-3东西方向亮黄灯提示即将亮红灯显示
设计为系统上电即点亮车道红灯以及马路绿灯,倒计时10s红灯开始闪烁,同时马路红灯亮,黄灯闪5s,然后车辆通道转为绿灯亮,55s后绿灯闪5s,黄灯闪5s之后又回到红灯亮,人行道只在车辆通道红灯时才亮绿灯。
这主要靠在中断服务程序中对计数值flag的判断来对正在点亮的灯进行定时实现程序详细清单见附录。
7、设计心得体会及总结
此次的课程设计,是同老师和同学一起完成的,过程中遇到了不少的困难,比如讨论的时候和同学意见不一致,这不仅是对我们专业知识的考察,让我们对次门课有了更深刻的了解,找出自己不会的地方,还让我们在设计过程中学会与同学团结协作,虚心接受别人的意见,向同学学习。
在讨论和疑问中共同进步。
很多看着很困难的题目只要弄清了原理就很简单了,锻炼了我们独立思考的能力,包括以后出去工作了也是一样的,要想独当一面就得学会独立思考,有这个想法以后再去实践,和同事合作,就会有很多收获。
通过这次交通灯设计,本人在多方面都有所提高。
通过这次交通灯设计,培养综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练。
了解所选择的ARM芯片各个引脚功能,工作方式,计数/定时,I/O口,中断等的相关原理,并巩固学习嵌入式的相关内容知识。
专业知识是独立思考和创新的基础,同时也说明专业知识对个人发展的重要。
在工业生产中的重要性。
我们现在要打好基础。
要严格要求自己,毕业以后才能在我们的专业领域有一席之地。
参考文献
[1]周立功主编;嵌入式系统基础教程[M](第2版);北京:
北京航天大学出版社;2008
[2]张崙编著;32位嵌入式系统硬件设计与调试[M];北京:
机械工业出版社;2005。
[3]马洪连等编著;嵌入式系统设计教程[M];北京:
电子工业出版社;2006。
[4]朱恺,吉逸,褚昊明编著;嵌入式系统基础[M];北京:
机械工业出版社;2012。
附录
#include"config。
h"
#defineLED11<<18//P1。
18南北红灯
#defineLED21<<19//P1。
19南北绿灯
#defineLED31<<20//P1。
20南北黄灯
#defineLED41<<21//P1。
21南北红灯
#defineLED51<<22//P1。
22南北绿灯
#defineLED61<<23//P1。
23南北黄灯
#defineLED71<<24//P1。
24马路红灯
#defineLED81<<25//P1。
25马路绿灯
#defineY0x00900000
#defineR0x00240000
#defineG0x00480000
#defineSEL11<<26//数码管位选1
#defineSEL21<<27//数码管位选2
#defineHC595_CS0x00000200//P0。
9
#defineBEEP0x00000100//P0。
8为蜂鸣器控制
unsignedintdat,nb,h,flag;
unsignedchartab[]={0XC0,0XF9,0XA4,0XB0,0X99,
0X92,0X82,0XF8,0X80,0X90};
/************************************************************
定时器0中断服务子程序重装初值,计数增减
************************************************************/
void__irqIRQ_Time0(void)
{
unsignedinti;
if(flag<=50)
{if(flag==0)nb=55;
IO1CLR=LED1|LED4|LED8;//车道红马路绿
IO1SET=~(LED1|LED4|LED8);
nb--;//南北红灯时间秒减1
}
if((flag>50)&&(flag<55))
{
i=IO1PIN;
if((i&R)==0)
IO1SET=R;
else
IO1CLR=R;//红灯每秒闪烁一次
nb--;//红灯时间减1
}
if(flag==55)
{
IO1CLR=LED3|LED6|LED7;//车道黄马路红
IO1SET=~(LED3|LED6|LED7);
h=5;
}
if((55{
i=IO1SET;
if((i&Y)==0)
IO1SET=Y;
else
{
IO1CLR=Y;
}//黄灯闪烁
h--;//黄灯时间秒减1
}
if((60<=flag)&&(flag<110))
{
if(flag==60)nb=51;
IO1CLR=LED2|LED5|LED7;//车道绿马路红
IO1SET=~(LED2|LED5|LED7);
nb--;//绿灯时间减1
}
if((110<=flag)&&(flag<115))//计数慢一个周期后重新开始计数
{
i=IO1SET;
if((i&G)==0)
IO1SET=G;
else
{
IO1CLR=G;
}//绿灯闪烁
nb--;//绿灯时间减1
}
if(flag==115)
{
h=5;
IO1CLR=LED3|LED6|LED7;//车道黄马路红
IO1SET=~(LED3|LED6|LED7);
}
if((115{
i=IO1SET;
if((i&Y)==0)
IO1SET=Y;
else
{
IO1CLR=Y;
}//黄灯闪烁
h--;//黄灯时间减1
}
flag++;
T0IR=0x01;//清除中断标志
VICVectAddr=0x00;//通知VIC中断处理结束
}
/************************************************************
**Time0Init()定时器0定时中断初始化
*************************************************************/
voidTime0Init(void)
{
T0PR=99;//设置定时器0分频为100分频得110592Hz
T0MCR=0x03;//匹配通道0匹配中断并复位T0TC
T0MR0=110592;//比较值(1秒定时值)
T0TCR=0x03;//启动并复位T0TC
T0TCR=0x01;
VICIntSelect=0x00;//所有中断通道设置为IRQ中断
VICVectCntl0=0x24;//定时器0中断通道分配最高优先级VICVectAddr0=(uint32)IRQ_Time0;//设置中断服务程序地址向量
VICIntEnable=0x00000010;//使能定时器0中断
}
/*****************************************************