基于ARM的交通灯设计教材.docx
《基于ARM的交通灯设计教材.docx》由会员分享,可在线阅读,更多相关《基于ARM的交通灯设计教材.docx(23页珍藏版)》请在冰豆网上搜索。
基于ARM的交通灯设计教材
成绩_______
重庆邮电大学移通学院
嵌入式系统课程
设计报告
题目交通灯设计
系别自动化
专业名称自动化
班级
学号
姓名
指导教师
重庆邮电大学移通学院实训中心制
二〇一四年十二月
《嵌入式系统》课程设计任务书
——供11级自动化系学生用
引言:
嵌入式系统课程设计是自动化专业的一个重要教学环节,既有别于毕业设计,又不同于课堂教学。
它需要学生统筹运用所学各个专业的基本理论、基本方法对现实生活中的实际问题进行设计和调试。
一、设计题目:
基于ARM的交通灯设计
掌握嵌入式系统设计的基本方法,熟悉S3C24X0的开发环境及软硬件的调试过程,了解S3C24X0芯片各个引脚功能,工作方式,计时/定时,I/O口,中断等的相关原理,根据控制要求进行编程,解决十字路口交通灯控制的问题。
巩固和加深对理论课中知识的理解,提高对所学知识的综合运用能力。
二、系统工作过程说明
车辆遇到红灯停绿灯行的行走情况,红绿灯时间均为60s,切换时间为10s,最后5s为黄灯闪烁。
利用S3C24X0ARM芯片实现单路交通灯的控制:
①实现红、绿、黄灯的循环控制。
使用红、黄、绿三种不同颜色的LED灯实现此功能,人行道用红、绿两个灯控制,用软件控制灯的亮与灭来控制车辆和行人的通行。
②用数码管显示倒计时。
可以利用动态显示或静态显示,串行并出或者并行并出实现。
③南北方向控制车辆的绿灯熄灭的同时,控制蜂鸣器响2秒来作为警报。
ARM92440芯片原理图:
交通路口示意图如下图:
设计内容:
(1)完成S3C24X0最小系统的硬件电路设计,并用ProtelDXP设计电路原理图;
(2)完成交通指示灯控制程序代码设计,在实验箱上调试并且能正常工作。
三、设计步骤:
(1)对系统进行需求分析;
(2)初始化配置(各种寄存器);
(3)编写各种相关的中断程序并在主函数中调用这些程序;
(4)编译程序;
(5)使用仿真器进行调试。
摘要
随着社会经济的发展,城市交通问题越来越引起人们的关注。
人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。
城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。
随着嵌入式系统的飞速发展,通过嵌入式的设计解决了交通的拥堵问题。
关键词:
ARM交通灯控制
Withthedevelopmentofsocietyandeconomy, city trafficproblemhasattractedmoreandmoreattention. Coordinationofhuman,vehicle, road, therelationshipbetweenthethree, hasbecomeoneoftheimportant problemsoftraffic management departmentstosolvethe. City trafficcontrolsystemfor city trafficdata monitoring,trafficsignalcontrol and trafficmanagementcomputersystem, it isthemostimportantpartof themodern citytrafficcontrolsystem.Withtherapiddevelopmentofembeddedsystem, the embeddeddesign tosolvethe trafficcongestionproblems.
Keywords:
ARM;Trafficlight;Control
一、绪论
1、设计目的
通过设计,培养自己综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练,加深对ARM芯片的了解;熟悉ARM芯片各个引脚的功能,工作方式,计数/定时,I/O口,中断等相关原理,巩固学习嵌入式的相关内容知识。
2、设计内容
通过设计,培养自己综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练,加深对ARM芯片的了解;熟悉ARM芯片各个引脚的功能,工作方式,计数/定时,I/O口,中断等相关原理,巩固学习嵌入式的相关内容知识。
3、要实现的目标
车辆遇到红灯停绿灯行的行走情况,红绿灯时间均为60s,切换时间为10s,最后5s为黄灯闪烁。
利用S3C24X0ARM芯片实现单路交通灯的控制:
①实现红、绿、黄灯的循环控制。
使用红、黄、绿三种不同颜色的LED灯实现此功能,人行道用红、绿两个灯控制,用软件控制灯的亮与灭来控制车辆和行人的通行。
②用数码管显示倒计时。
可以利用动态显示或静态显示,串行并出或者并行并出实现。
③南北方向控制车辆的绿灯熄灭的同时,控制蜂鸣器响2秒来作为警报。
二、系统分析及硬件设计
1、S3C24X0芯片介绍
(1)S3C2410X概述
S3C2410X是韩国三星公司推出的16/32位RISC微控制器,其CPU采用的是ARM920T内核,加上丰富的片内外设,为手持设备和其它应用,提供了低价格、低功耗、高性能微控制器的解决方案。
(2)主要特性
·具有16KB指令Cache、16KB数据Cache和存储器管理单元MMU。
·外部存储器控制器,可扩展8组,每组128MB,总容量达1GB;支持从Nandflash存储器启动。
56(60)个中断源。
4通道的DMA,并且有外部请求引脚。
·3个通道的UART,带有16(64)字节的TX/RXFIFO,支持IrDA1.0功能。
·具有2通道的SPI、1个通道的IIC串行总线接口和1个通道的IIS音频总线接口。
·有2个USB主机总线的端口,1个USB设备总线的端口。
·有4个具有PWM功能的16位定时器和1个16位内部定时器。
·8通道的10位A/D转换器,最高速率可达500kB/s;提供有触摸屏接口。
·2440有一个AC97音频解码器接口,一个数字摄像头接口。
·具有117(130)个通用I/O口和24通道的外部中断源。
·兼容MMC的SD卡接口(2410于2440的SD卡的波特率计算公式不同)。
·具有电源管理功能,可以使系统以普通方式、慢速方式、空闲方式和掉电方式工作。
·看门狗定时器。
·具有日历功能的RTC。
·有LCD控制器,支持4K色的STN和256K色的TFT,配置有DMA通道。
·具有PLL功能的时钟发生器,2410时钟频率高达203MHz,2440正常时钟平率为400MHz。
双电源系统:
·2410电源管理:
1.8/2.0V内核供电,3.3V存储器和I/O供电。
·2440电源管理:
1.2V内核供电。
·1.8V/2.5V/3.3V存储器和3.3VI/O供电。
(3)系统结构
主要由两大部分构成:
ARM920T内核及片内外设。
图2-1ARM920T内核及片内外设
ARM920T内核
由三部分:
ARM9内核ARM9TDMI、32KB的Cache、MMU。
图2-2ARM920T内核
片内外设
分为高速外设和低速外设,分别用AHB总线和APB总线。
图2-3片内外设
2、系统电路设计
(1)总体设计框图
用ARM9系列S3C24X0芯片作为系统的主控芯片,控制交通灯的循环点亮并显示灯亮时间(采用倒计时显示),当定时时间到的时候控制蜂鸣器响来提醒人们注意红绿灯的状态。
交通灯循环
S3C24X0
最小系统
蜂鸣器
图2-4最小系统
(2)系统电源电路:
图2-5系统电源电路
(3)蜂鸣器设计:
将蜂鸣器正极端接电源,负极端通过三极管接地,三极管基极通过电阻接到芯片的引脚上。
图2-6蜂鸣器
3、电路原理图
图2-7电路原理图
三、系统软件设计
1、
系统流程图中断服务程序流程图
开始系统保护现场
Y
定时器0初始化0<=Flag<50车道红灯计数-1
N
初始化中断,开Y
中断50<=Flag<<55车道红灯闪烁-1
N
交通灯显示倒计时55N
NFlag==120
60<=flag<110Y车道绿灯计数-1
Flag=0,清零计数变量N
N110<=flag<115Y绿灯闪烁计数-1
Flag==55or115N
Y115<=flag<120Y黄灯闪烁计数-1
N
控制蜂鸣器2S
中断返回
2、系统程序设计
由南向北和由北向南车道各用一组红、绿、黄三色的指示灯,指挥车辆通行。
绿灯是通行信号,面对绿灯的车辆可以直行,红灯是禁止通行信号,面对红灯的车辆必须在路口的停车线后停车。
黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以继续行进。
具体红绿灯时间分配时间如表3-1所示。
50s
5s
5s
50s
5s
5s
南北通道
红灯亮
黄灯亮
黄灯闪
绿灯亮
黄灯亮
黄灯闪
人行道
绿灯亮
绿灯亮
绿灯亮
红灯亮
红灯亮
红灯亮
表3-1时间分配表
由于试验箱没有红黄绿三色LED灯,只有一组8个红色LED灯,所有就用如下LED灯来模拟交通信号灯。
图3-2实验箱LED灯
LED18、LED17分别为人行道红灯、绿灯;
LED16、LED15、LED14分别为南向北的一组红灯、黄灯、绿灯;
LED13、LED12、LED11分别为北向南的一组绿灯、黄灯、红灯;
图3-3LED灯模拟交通灯
根据红绿灯是时间分配表可以看出,红绿灯有六个状态:
状态
人行道
南向北马路
北向南马路
16进制
1
0
1
1
0
0
0
0
1
0x61
2
0
1
0
1
0
0
1
0
0x52
3
0
1
0
0
0
0
0
0
0x40
0
0
0
1
0
0
1
0
0x12
4
1
0
0
0
1
1
0
0
0x8c
5
1
0
0
1
0
0
1
0
0x92
6
1
0
0
0
0
0
0
0
0x80
0
0
0
1
0
0
1
0
0x12
表2信号灯16进制模拟
状态1:
马路红灯亮,人行道绿灯亮;
状态2:
马路黄灯亮,人行道绿灯亮;
状态3:
马路黄灯闪,人行道绿灯亮;
状态4:
马路绿灯亮,人行道红灯亮;
状态5:
马路黄灯亮,人行道红灯亮;
状态6:
马路黄灯闪,人行道红灯亮。
由于本本实验系统采用的是动态显示接口,其中数码管扫描控制地址为0x20006000,位0-位5位分别对应一个数码管,将其中某位清0来选择相应的数码管,地址0x20007000,为数码管的数据寄存器。
数码管采用共阳方式,向该地址写一个数据就可以控制数码管的显示。
所有我用如下代码来显示数码管的倒计时。
for(j=0;j<10;j++){
for(n=0;n<150;n++){
*((U8*)0x20007000)=0xfd;
*((U8*)0x20006000)=num1[i];
Delay
(1);
*((U8*)0x20007000)=0xfe;
*((U8*)0x20006000)=num2[j];
Delay
(1);
}
}
四、系统调试
1、硬件调试
检查实验箱电路连接是否出错,LED是否完好。
2、程序调试
使用软件ADTIDE对程序进行检测语法错误。
3、软硬联调
当确认程序无误后下载到试验箱中进行仿真模拟,看实验箱上的LED灯是否按要求闪烁。
总结
着眼于目前普遍应用在城市道路上的交通灯控制系统,从课程设计的题目要求出发,设计了一个交通灯控制电路。
这让我们接触到了生活实际,也让我看到了嵌入式这么学科的现实应用,也让我在学校中学到的知识得到了相应的应用。
在设计的过程遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计,把以前所学过的知识重新温故,巩固了所学的知识。
参考文献
[1].朱恺主编.嵌入式系统基础.北京:
机械工业出版社,2012.4
[2].何立民.单片机高级教程[M].北京:
航空航天大学出版社,2000
[3].查振亚.智能交通灯控制系统[J].北京:
华中理工大学学报, 1997
[4].谭浩强.C 程序设计[M].北京:
清华大学出版社,1999
[5].何立民.单片机应用技术大全[M].北京:
航空航天大学出版社,1994
[6].李广弟.单片机基础[M].北京:
航空航天大学出版社,1992
[7].张云龙.交通信号控制器的设计[J.北京:
兵工自动化出版社,2003
[8].阎 石.数字电子技术基础(第四版)[M].北京:
高等教育出版社,2000
[9].胡汉才.单片机原理及其接口技术[M].北京:
清华大学出版社,2000
附录
一、源程序
#defineU8unsignedchar
unsignedcharnum1[6]={0x92,0x99,0xb0,0xa4,0xf9,0xc0};//5--0
unsignedcharnum2[10]={0x90,0x80,0xf8,0x82,0x92,
0x99,0xb0,0xa4,0xf9,0xc0};//9--0
voidDelay(inttime);//延时程序初始化
voidled(void){
while
(1){
inti,j,n;
for(i=0;i<5;i++){//马路红灯亮50S
*((U8*)0x20005000)=0x61;
for(j=0;j<10;j++){
for(n=0;n<150;n++){
*((U8*)0x20007000)=0xfd;
*((U8*)0x20006000)=num1[i];
Delay
(1);
*((U8*)0x20007000)=0xfe;
*((U8*)0x20006000)=num2[j];
Delay
(1);
}
}
}
Delay
(1);
*((U8*)0x20005000)=0x52;
for(j=0;j<5;j++){//马路红灯亮,人行道绿灯5S
for(n=0;n<150;n++){
*((U8*)0x20007000)=0xfd;
*((U8*)0x20006000)=0xc0;
Delay
(1);
*((U8*)0x20007000)=0xfe;
*((U8*)0x20006000)=num2[j];
Delay
(1);
}
}
for(j=5;j<10;j++){//马路黄灯闪5s
Delay
(1);
for(n=0;n<150;n++){
*((U8*)0x20005000)=0x40;
*((U8*)0x20007000)=0xfd;
*((U8*)0x20006000)=0xc0;
Delay
(1);
*((U8*)0x20007000)=0xfe;
*((U8*)0x20006000)=num2[j];
Delay
(1);
*((U8*)0x20005000)=0x52;
}
}
for(i=0;i<2;i++){//马路绿灯亮50s
*((U8*)0x20005000)=0x8c;
for(j=0;j<10;j++){
for(n=0;n<150;n++){
*((U8*)0x20007000)=0xfd;
*((U8*)0x20006000)=num1[i];
Delay
(1);
*((U8*)0x20007000)=0xfe;
*((U8*)0x20006000)=num2[j];
Delay
(1);
}
}
}
Delay
(1);
*((U8*)0x20005000)=0x92;
for(j=0;j<5;j++){//马路黄灯亮,人行道红灯亮5s
for(n=0;n<150;n++){
*((U8*)0x20007000)=0xfd;
*((U8*)0x20006000)=0xc0;
Delay
(1);
*((U8*)0x20007000)=0xfe;
*((U8*)0x20006000)=num2[j];
Delay
(1);
}
}
for(j=5;j<10;j++){//马路黄灯闪5s
Delay
(1);
for(n=0;n<150;n++){
*((U8*)0x20005000)=0x80;
*((U8*)0x20007000)=0xfd;
*((U8*)0x20006000)=0xc0;
Delay
(1);
*((U8*)0x20007000)=0xfe;
*((U8*)0x20006000)=num2[j];
Delay
(1);
*((U8*)0x20005000)=0x92;
}
}
}
}
//延时程序
voidDelay(inttime){
inti;
intdelayLoopCount=100;
for(;time>0;time--);
for(i=0;i}
四、课程设计报告:
1、报告内容:
本报告内容包括7个部分,具体如下:
(1)封面;
(2)摘要、关键词(摘要要综述性概括设计的任务、过程、结论,200-300字,关键词3-5个);
(3)课程设计任务书;
(4)正文(设计过程,包括需求分析、硬件设计、软件设计、工作过程描述等);
(5)总结(包括课程设计过程中的学习体会与收获、对本次课程设计的认识等内容);
(6)参考文献5-8篇(包括在设计过程中查询过的文献资料);
(7)附录(包括附图、程序等)。
2、报告格式:
(1)摘要标题——加粗,宋体二号字,居中;
内容——宋体小四号字,1.5倍行距
关键词标题——加粗,宋体小四号字,居左;
内容——宋体小四号字,关键词之间以分号隔开
——分页
(2)正文
正文标题——居中,加粗宋体三号字
内容——宋体小四号字,1.5倍行距
——分页
(3)总结标题——居中,加粗宋体二号字
内容——宋体小四号字,1.5倍行距
——分页
(4)参考文献标题——居中,加粗宋体二号字
内容——宋体小四号字,1.5倍行距
格式:
[序号]作者姓名.书名(不用书名号).出版社.出版日期
如:
——分页
(5)附录标题——居中,加粗宋体二号字
内容——宋体小四号字,1.5倍行距
3、其他要求:
(1)论文中涉及到的贴图,一律需要在贴图正下方居中位置用宋体五号字体注明序号及名称,如:
图1贴图名称;涉及到的表格,一律需要在表格正上方居中位置用宋体五号字体注明序号及名称,如:
表2数据结构表;
(2)正文部分要求在10页以上;
(3)论文中所有正文中文部分采用小四号宋体字,全角中文标点。
英文和数字一律采用半角,英文采用小四TimesNewRoman字体,半角标点符号。
(5)论文一律用A4纸打印,页边距采用A4默认的页边距,即:
上、下为:
2.54厘米;左、右为:
3.17厘米。