十字路口交通灯控制嵌入式系统设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目:十字路口交通灯控制
湖南工程学院课程设计
课程名称嵌入式系统设计
课题名称十字路口交通灯控制
专业电子科学与技术
班级电科0902班
学号
姓名
指导教师
2012 年12 月10 日
目录
第1章概述.................................................................. - 1 -
1、EasyARM2131开发板介绍................................ - 1 - 第2章设计方案 ......................................................... - 3 -
1、设计思路 .............................................................. - 3 -
2、基本原理与框图 .................................................. - 4 - 第3章单元电路设计 ................................................. - 5 -
1、软件模块 .............................................................. - 5 -
2、硬件模块 .............................................................. - 6 - 第4章安装与调试 ....................................................... - 7 -
1、调试 ...................................................................... - 7 -
2、调试结果 .............................................................. - 7 - 第5章总结心得 ....................................................... - 10 - 参考文献........................................................................ - 11 -
附录................................................................................ - 12 - 附录A:总电路图 ..................................................... - 12 - 附录B:程序清单 .................................................. - 13 -
第1章概述
1、EasyARM2131开发板介绍
EasyARM2131开发板采用了PHILIPS 公司基于ARM7TDMI-S 核、单电源供电、LQFP64 封装的LPC2131,具有JTAG 仿真调试、ISP 编程等功能。

EasyARM2131 实验板功能特点
1、完全自主设计的软硬件、拥有自主版权的JTAG 仿真技术;
2、支持ADS1.2 集成开发环境及其PHILIPS 所有型号ARM 微控制器的仿真与开发;
3、采用“主板+CPU PACK 适配器+SD 卡适配器(标准配置)+多种可选配置适配器”的形式构成EasyARM2131开发套件;
4、标准配置的CPU PACK主芯片为LPC2131FBD
5、板上的功能部件与CPU 之间,可以使用跳线器选择连接;
6、全面支持9 种型号的64 PIN 小管脚ARM7 微控制器:
7、多种免费商业化软件包及其详细的开发文档:
8、多种可选配置适配器:
9、所有I/O 口全部引出,方便用户连接外部电路的开发与使用;
10、可进行GPIO 的控制实验,如键盘输入、蜂鸣器控制、模拟SPI 等;
11、6 个独立按键(可用于外部中断、定时器捕获输入),8 个LED 指示灯;
12、具有RS232 转换电路,可与上位机进行通讯,完成UART通讯实验;
13、可以与标准串行modem 直接接口,方便远程通讯;
14、具有I2C接口和SPI/SSP接口输出;
15、提供基于PC 的人机界面,方便调试实时时钟、串口通信等功能;
16、可进行外部中断实验,学习向量中断控制器(VIC);
17、定时器控制实验,如定时控制LED、定时器捕获等;
18、使用板内的CAT1025(内含复位功能),完成I2C总线的实验;
19、使用74HC595 芯片,实现SPI 接口数据发送、接收实验;
20、A/D 转换实验;DAC 转换实验(更换CPU 为LPC2132 及以上);
21、实时时钟控制实验;
22、WDT 及低功耗控制实验;
23、4个基础实验及其大量的中间件软件包,完整地验证了几乎所有的硬件功能资源;
25、详细的配套资料(《深入浅出ARM7—LPC213x/214x》(上/下册);
随着移动设备的流行和发展,嵌入式系统已经成为一个热点。

它并不是最近出现的新技术,只是随着微电子技术和计算机技术的发展,微控制芯片功能越来越大,而嵌入微控制芯片的设备和系统越来越多,从而使得这种技术越来越引人注目。

它对软硬件的体积大小、成本、功耗和可靠性都提出了严格的要求。

嵌入式系统的功能越来越强大,实现也越来越复杂,随之出现的就是可靠性大大降低。

最近的一种趋势是一个功能强大的嵌入式系统通常需要一种操作系统来给予支持,这种操作系统是已经成熟并且稳定的,可以是嵌入式的Linux,WINCE等等。

本文所要研究的就是基于ARM嵌入式系统的交通灯系统的设计与实现。

本设计采用EasyARM2131作为核心处理器.
第2章设计方案
1、设计思路
1、本课程设计利用LPC2131ARM芯片实现单路交通灯的控制:
1)、实现红、绿、黄灯的循环控制。

使用红、黄、绿三种不同颜色的LED灯实现此功能,南北方向绿、黄、红三个灯依次接在P0.20、P0.21、P0.22引脚上,东西方向的绿、黄、红三个灯依次接在P0.16、P0.17、P0.18引脚上,用软件控制灯的亮与灭来控制东西南北方向车辆和行人的通行。

2)、用LED共阳极数码管显示倒计时。

可以利用动态显示或静态显示,串行并出或者并行并出实现。

2、采用两位数码显示器显示南北方向时间,采用两位数码显示器显示东西方向时间;交通灯控制器工作流程如图1所示:
2、基本原理与框图
本设计采用ARM7系列芯片LPC2131作为系统的主控芯片,控制交通灯的循环点亮并显示灯亮时间,并采用倒计时显示。

基本框图是主要有三部分组成:LPC系统模块、交通灯循环模块、倒计时显示模块。

其系统框图如图2所示:
其主程序流程图如图2.2,其中时间显示本采用中断,但时间显示不稳定,因此采用刷新模块,使其稳定。

第3章单元电路设计
1、软件模块
1)显示模块
采用共阳极七段数码管显示交通灯倒计时,东西、南北两方向个用两个数码管显示时间。

设置红绿灯时间为25秒,当南北方向绿灯倒计时为0后,黄灯倒计时延时5秒。

5秒后,南北方向交通灯变为红灯,而东西方向交通灯变为绿灯,倒计时5秒整个交通灯倒计时用循环模块无限制循环。

南北方向绿、黄、红三个灯依次接在P0.20、P0.21、P0.22上,东西方向的绿、黄、红三个灯依次接在P0.16、P0.17、P0.18上,P0.0-P0.7引脚连接数码管段选位,P0.12-P0.15引脚连接数码管位选。

本设计采用共阳极七段数码管,故有效电平为低电平,根据引脚
0XFFBFFFFF或者0XFFFBFFFF代表红灯亮,其中B(1011);0XFFFEFFFF或者0XFFFEFFFF代表绿灯亮,其中E(1110);0XFFDFFFFF或者0XFFFDFFFF 黄,其中D(1101)。

通过IO0PIN =(IO0PIN&0XFFFF0FFF)|(wei[weishu]<<8),将IO0的32个接口按位与“FFFF0FFF”,把P0.12-P0.15端口清,同时将位码左移8位,因为在开始的位码数组中,定义的值是在4-7位,但是在芯片上接口在
12-15位,所以需要左移8位。

IO0PIN=(IO0PIN&0XFFFFFF00)|(LED_num[shu])将P0.0-P0.7变为低电平,芯片接口就是在最低8位,所以不用左移。

其交通灯显示情况如表3.1所示:
2)刷新与延时模块
本设计本可采用循环子程序显示时间的循环,但不稳定,故在此运用刷新子程序,在整个程序运行过程中,不断刷新数组值用以显示不同时间。

此处刷新模块的值可以设置在一定范围内。

延时子程序用以去抖动,防止因硬件不稳定而造成显示不稳定。

2、硬件模块
根据设计任务要求,自行选择电子元件,画出电气原理图,并调试。

一个完整的系统除了主控芯片以外,还需配上电源系统、放大电路等。

独立的芯片是不能工作的。

本设计采用的芯片是LPC2131,共使用12灯,显示东西南北四个方向的红、黄、绿灯情况,四个共阳极七段数码管显示时间。

其中LPC2131芯片如图4.1所示:
图4.1 LPC2131芯片
同时,由于芯片电流较小,为得到较大电流,采用三极管放大电路,对电流进行放大。

其电路如图4.2所示:
图4.2 放大电路
第4章安装与调试
本设计主要运用Keil、Proteus两个软件,Keil软件采用C语言编译代码,Proteus软件中建立硬件模型仿真图。

软件编译正确、硬件连接完善后,在Proteus硬件反正图中导入Keil软件中生成的.hex文件,即可在硬件仿真图中显示正确设计效果。

1、调试
在写C程序时,遇到了不少麻烦,主要是对流程控制时间掌握,发现LED灯在某个时候会闪烁一段时间,后面仔细找问题,结果发现把5写成了15。

另外就是数码管个位总是不停闪烁,最后调整了顺序和控制时间就正常了。

2、调试结果
上下代表东西方向,左右代表南北方向
1)南北方向绿灯亮,东西方向红灯亮
2)南北方向黄灯亮,东西方向红灯亮此时,有5秒延时时间,用来准备。

3)南北方向红灯亮,东西方向红绿灯亮
4)南北方向红灯亮,东西方向黄灯亮
第5章总结心得
通过本次设计,培养自己综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练,加深对ARM芯片的了解;熟悉ARM芯片各个引脚的功能,工作方式,计数/定时,I/O口,中断等相关原理,巩固学习嵌入式的相关内容知识。

通过软硬件设计实现利用EasyARM2131芯片完成交通灯控制功能。

首先查阅相关文献资料,熟悉所选的ARM芯片。

第二步总体设计方案规划,设计车辆遇到红灯停绿灯行情况,红绿灯时间均为25s,换时间为5s。

接下来系统硬件设计,熟悉IO接口工作原理,引脚分布等。

最后系统软件设计,包括交通信号灯的工作流程软件实现,在Keil软件平台上利用C语言对其进行编辑初始化,即我们平常说的驱动。

提高了计算能力,绘图能力,熟悉了规范和标准,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。

在这次设计过程中,体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。

通过这次交通灯设计,本人在多方面都有所提高。

通过这次交通灯设计,培养综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练。

了解所选择的ARM芯片各个引脚功能,工作方式,计数/定时,I/O口,中断等的相关原理,并巩固学习嵌入式的相关内容知识。

两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。

在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。

学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,
也学会了做人与处世。

参考文献
《ARM嵌入式系统基础教程》周立功主编北京航空航天大学出版社《深入浅出ARM7—LPC213x/214x》周立功编著北京航空航天大学出版社
附录
附录A:总电路图
附录B:程序清单
#include "config.h"
//本程序需要周立功LPC2131资料所带的底层文件协同编译const uint32 LED_num[10]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};
const uint32 wei[4]={0x10,0x20,0x40,0x80};
uint8 sec1,sec2,sec3;
uint8 dat[4];
void delay(uint16 z)
{
while(z--);
}
void display(uint8 weishu,uint8 shu)
{
IO0PIN = (IO0PIN&0XFFFF0FFF)|(wei[weishu]<<8);
IO0PIN = (IO0PIN&0XFFFFFF00)|(LED_num[shu]);
}
void refresh()
{
display(0,dat[0]);
delay(300);
display(2,dat[2]);
delay(1000);
display(1,dat[1]);
delay(300);
display(3,dat[3]);
delay(300);
}
main()
{
uint8 i,j;
PINSEL0 = 0x00000000;
PINSEL1 = 0x00000000;
IO0DIR = 0xFFFFFFFF;
IO0SET = 0xFFFFFFFF;
sec1 = 30;
sec2 = 25;
sec3 = 5;
while(1)
{
IO0DIR = 0xFFFFFFFF;
IO0SET = 0xFFFFFFFF;
for(i=25;i>0;i--)
{
dat[0] = sec1%10;
dat[1] = sec1/10;
dat[2] = sec2%10;
dat[3] = sec2/10;
for(j=15;j>0;j--)
{
IO0PIN = (IO0PIN & 0XFFEBFFFF);
refresh();
}
sec1--;
sec2--;
}
sec1=30;
sec2=25;
IO0DIR = 0xFFFFFFFF;
IO0SET = 0xFFFFFFFF;
for(i=5;i>0;i--)
{
dat[0] = sec3%10;
dat[1] = sec3/10;
dat[2] = sec3%10;
dat[3] = sec3/10;
for(j=15;j>0;j--)
{
IO0PIN = (IO0PIN & 0XFFDBFFFF);
refresh();
}
sec3--;
}
sec3=5;
IO0DIR = 0xFFFFFFFF;
IO0SET = 0xFFFFFFFF;
for(i=25;i>0;i--)
{
dat[0] = sec2%10;
dat[1] = sec2/10;
dat[2] = sec1%10;
dat[3] = sec1/10;
for(j=15;j>0;j--)
{
IO0PIN = (IO0PIN & 0XFFBEFFFF);
refresh();
}
sec1--;
sec2--;
}
sec1=30;
sec2=25;
IO0DIR = 0xFFFFFFFF;
IO0SET = 0xFFFFFFFF;
for(i=5;i>0;i--)
{
dat[0] = sec3%10;
dat[1] = sec3/10;
dat[2] = sec3%10;
dat[3] = sec3/10;
for(j=15;j>0;j--)
{
IO0PIN = (IO0PIN & 0XFFBDFFFF);
refresh();
}
sec3--;
}
sec3=5;
}
}
电气与信息工程系课程设计评分表
导教师签名:____________
日期:____________。

相关文档
最新文档