基于ARM的交通灯设计.docx

上传人:b****7 文档编号:11363106 上传时间:2023-02-28 格式:DOCX 页数:29 大小:267.78KB
下载 相关 举报
基于ARM的交通灯设计.docx_第1页
第1页 / 共29页
基于ARM的交通灯设计.docx_第2页
第2页 / 共29页
基于ARM的交通灯设计.docx_第3页
第3页 / 共29页
基于ARM的交通灯设计.docx_第4页
第4页 / 共29页
基于ARM的交通灯设计.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

基于ARM的交通灯设计.docx

《基于ARM的交通灯设计.docx》由会员分享,可在线阅读,更多相关《基于ARM的交通灯设计.docx(29页珍藏版)》请在冰豆网上搜索。

基于ARM的交通灯设计.docx

基于ARM的交通灯设计

成绩_______

指导教师评定成绩:

审定成绩:

 

重庆邮电大学移通学院

课程设计报告

一、设计题目:

基于ARM的交通灯设计

学校:

学生姓名:

专业:

电气工程及其自动化

班级:

05111105

学号:

05111105xx

指导教师:

 

设计时间:

2014年12月

重庆邮电大学移通学院

《嵌入式系统》课程设计任务书

——供11级自动化系学生用

引言:

嵌入式系统课程设计是自动化专业的一个重要教学环节,既有别于毕业设计,又不同于课堂教学。

它需要学生统筹运用所学各个专业的基本理论、基本方法对现实生活中的实际问题进行设计和调试。

二、设计题目:

基于ARM的交通灯设计

掌握嵌入式系统设计的基本方法,熟悉S3C24X0的开发环境及软硬件的调试过程,了解S3C24X0芯片各个引脚功能,工作方式,计时/定时,I/O口,中断等的相关原理,根据控制要求进行编程,解决十字路口交通灯控制的问题。

巩固和加深对理论课中知识的理解,提高对所学知识的综合运用能力。

三、系统工作过程说明

车辆遇到红灯停绿灯行的行走情况,红绿灯时间均为60s,切换时间为10s,最后5s为黄灯闪烁。

利用S3C24X0ARM芯片实现单路交通灯的控制:

①实现红、绿、黄灯的循环控制。

使用红、黄、绿三种不同颜色的LED灯实现此功能,由南往北方向红、黄、绿三个灯依次在P1.18、P1.19、P1.20上,由北往南方向的红、黄、绿三个灯依次接在P1.21、P1.22、P1.23上,人行道用红、绿两个灯控制,依次接在P1.24、P1.25上,用软件控制灯的亮与灭来控制车辆和行人的通行。

②用数码管显示倒计时。

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

③南北方向控制车辆的绿灯熄灭的同时,控制蜂鸣器响2秒来作为警报。

蜂鸣器接P0.7引脚。

交通路口示意图如下图:

设计内容:

(1)完成S3C24X0最小系统的硬件电路设计,并用ProtelDXP设计电路原理图;

(2)完成交通指示灯控制程序代码设计,在实验箱上调试并且能正常工作。

四、设计步骤:

(1)对系统进行需求分析;

(2)初始化配置(各种寄存器);

(3)编写各种相关的中断程序并在主函数中调用这些程序;

(4)编译程序;

(5)使用仿真器进行调试。

目录

《嵌入式系统》课程设计任务书2

摘要5

一、绪论6

二、系统分析及硬件设计7

1、S3C2440芯片介绍7

2、电路原理图10

三、系统软件设计11

1、系统流程图11

2、系统程序设计11

四、系统调试12

总结13

参考文献14

附录15

1、源程序15

摘要

本设计此次试验以S3C2440嵌入式开发平台为硬件基础,主要介绍了嵌入式实时操作系统中的最小系统的各个组成部分,其中包括电源、时钟、复位、存储器、JTAG接口电路原理图及交通灯电路图的设计。

随着移动设备的流行和发展,嵌入式系统已经成为一个热点。

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

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

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

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

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

 

关键词:

ARM;交通灯;控制;

 

一、绪论

1、设计目的

掌握嵌入式系统设计的基本方法,熟悉S3C24X0的开发环境及软硬件的调试过程,了解S3C24X0芯片各个引脚功能,工作方式,计时/定时,I/O口,中断等的相关原理,根据控制要求进行编程,解决十字路口交通灯控制的问题。

巩固和加深对理论课中知识的理解,提高对所学知识的综合运用能力。

2、设计内容

1.查阅相关文献资料,熟悉所选ARM芯片

2.总体设计方案规划,设计车辆遇到红灯停绿灯行情况,红绿灯时间均为60s,切换时间为10s,最后5s为黄灯闪烁。

3.系统硬件设计,熟悉I/O接口,定时器,计数器工作原理

4.系统软件设计,包括交通信号灯的工作流程软件实现,用C语言编程

5.设计心得体会及总结。

3、要实现的目标

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

利用ARM芯片模拟实现交通灯控制。

自行选择所需ARM芯片,查阅相关文献资料,熟悉所选ARM芯片,了解所选ARM芯片各个引脚功能,工作方式,计数/定时,I/O口,中断等相关原理,通过软硬件设计实现利用ARM芯片完成交通灯的模拟控制。

二、系统分析及硬件设计

1、S3C2440芯片介绍

S3C2440A基于ARM920T核心,0.13µm的CMOS标准宏单元和存储器单元。

低功耗,简单,精致,且全静

态设计特别适合于对成本和功率敏感型的应用。

它采用了新的总线架构如先进微控制总线构架(AMBA)。

S3C2440A的突出特点是其处理器核心,是一个由AdvancedRISCMachines(ARM)公司设计的16/32位

ARM920T的RISC处理器。

ARM920T实现了MMU,AMBA总线和哈佛结构高速缓冲体系结构。

这一结构具有独

立的16KB指令高速缓存和16KB数据高速缓存。

每个都是由具有8字长的行(line)组成。

S3C2440A集成的以下片上功能:

●1.2V内核供电,1.8V/2.5V/3.3V储存器供电,3.3V外部I/O供电,具备16KB的指令缓存和16KB的数据缓存和MMU

的微处理器

●外部存储控制器(SDRAM控制和片选逻辑)

●LCD控制器(最大支持4K色STN和256K色TFT)提供1通道LCD专用DMA

●4通道DMA并有外部请求引脚

●3通道UART(IrDA1.0,64字节发送FIFO和64字节接收FIFO)

●2通道SPI

●1通道IIC总线接口(支持多主机)

●1通道IIS总线音频编码器接口

●AC’97编解码器接口

●兼容SD主接口协议1.0版和MMC卡协议2.11兼容版

●2通道USB主机/1通道USB设备(1.1版)

●4通道PWM定时器和1通道内部定时器/看门狗定时器

●8通道10位ADC和触摸屏接口

●具有日历功能的RTC

●摄像头接口(最大支持4096×4096像素输入;2048×2048像素输入支持缩放)

●130个通用I/O口和24通道外部中断源

●具有普通,慢速,空闲和掉电模式

●具有PLL片上时钟发生器

系统管理

●支持大/小端

●地址空间:

每Bank128M字节(总共1G字节)

●支持可编程的每Bank8/16/32位数据总线宽度

●BANK0到BANK6固定Bank的起始地址

●BANK7具有可编程Bank起始地址和大小

●8个存储器Bank:

●六个存储器Bank为ROM,SRAM和其它

●两个存储器Bank为ROM/SRAM/SDRAM

●所有存储器具备完整可编程访问周期

●支持外部等待信号来扩展总线周期

●支持SDRAM掉电时自刷新模式

●支持从各种类型ROM启动(NOR/NANDFlash,

EEPROM或其它)

NANDFlash启动引导(BootLoader)

●支持从NANDFlash启动

●4KB的启动内部缓冲区

●支持启动后NANDflash作为存储器

●支持先进NANDFlash

 

2、电路原理图

三、系统软件设计

1、系统流程图

 

循环

2、系统程序设计

1.首先从设定系统初始值开始,将所有交通灯,数码管的选位,以及倒数计数的数组设定。

2.开始设定子程序,定时器0中断服务子程序重装初值,计数增减,人行道红灯马路绿灯,并且开始计数递减,若在55内并且是0时开始显示黄灯闪烁,闪烁3秒,若是55秒的话马路黄灯人行道红灯,若是在55到60秒之内,黄灯开始闪烁,当到60秒时,马路红灯人行道绿灯。

3.主程序开始时,要先对中断程序进行中断初始化。

4.对主程序开始调试,先设置引脚位置和输出位置,初始化定时器,然后引用中断程序,根据定时器的定时,设定红绿黄灯跳转。

四、系统调试

总结

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,ARM嵌入式系统已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握嵌入式的开发技术是十分重要的。

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

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

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

第二步总体设计方案规划,设计车辆遇到红灯停绿灯行情况,红绿灯时间均为60s,切换时间为10s,最后5s为黄灯闪烁。

接下来系统硬件设计,熟悉IO接口,定时器计数器工作原理。

最后系统软件设计,包括交通信号灯的工作流程软件实现,用C语言编程。

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

回顾起此次ARM课程设计,我仍感慨颇多,我学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。

 

参考文献

[1]朱凯,吉逸等.嵌入式系统基础[M].北京:

机械工业出版社,2012.2.

[2]田泽.嵌入式系统开发与应用编程〔M〕.北京:

北京航空航天大学出版设2005.

[3]马忠梅,徐英慧.ARM嵌入式处理器编程与应用基础〔M〕.2版.北京:

北京航空航天大学出版社,2003.

[4]周立功等.ARM嵌入式系统基础教程[M].2版.北京:

北京航空航天大学出版社,2000.

[5]ARM公司.ARMArchitectureReferenceManual.2000

 

附录

1、源程序

#include"at89x51.h"

unsignedcharnum[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数字0~9

unsignedcharctr[]={0x7e,0xf5};//0xfa(P3_0和P3_2为0,即高位有效)

unsignedchardisEW[2];//记录东西向高低位数值

unsignedchardisSN[2];//记录南北向高低位数值

unsignedcharv;

unsignedcharcnt_ctr;

unsignedintscdEW,scdSN;

unsignedintcntSN,cntEW;

unsignedcharcntP3_4,cntP3_5,cntP3_6;

unsignedintcnt_num,cnt_key,cnt_flash,keyMemory;

intgreenEW=56,yellowEW=3,greenSN=56,yellowSN=3;

//延时函数,a为1延时1毫秒

voiddelay_ms(unsignedinta)

{

inti;

while(a--)

{

i=70;

while(i--);

}

}

//设置红绿黄灯秒数

voidsetSecond(void)

{

while(P3_4==0);

cntP3_4++;//标志设置键被按下的次数

switch(cntP3_4)

{

case1:

cntEW=5;

P1=0xf7;

break;

case2:

cntEW=1;

P1=0xef;

break;

case3:

cntSN=1;

P1=0xfe;

break;

case4:

cntSN=3;

P1=0xfd;

break;

case5:

cntEW=5;

cntSN=5;

cnt_num=0;

cntP3_4=0;

break;

}

}

//秒数加1

voidaddSecond(void)

{

while(P3_5==0);

cnt_key=0;//记录长按键的参数清零

switch(cntP3_4)

{

case1:

if(keyMemory!

=greenEW+10)//判断按键是否已经加10,如果没有加10则秒数加1,如果已经加10则不加1

{

greenEW++;

}

if(greenEW==90)

{

greenEW=0;

}

scdEW=greenEW;

scdSN=greenEW+yellowEW+1;

break;

case2:

if(yellowEW++==9)

{

yellowEW=0;

}

scdEW=yellowEW;

break;

case3:

if(keyMemory!

=greenSN+10)

{

greenSN++;

}

if(greenSN==90)

{

greenSN=0;

}

scdEW=greenSN+yellowSN+1;

scdSN=greenSN;

break;

case4:

if(yellowSN++==9)

{

yellowSN=0;

}

scdSN=yellowSN;

break;

}

}

//秒数减1

voidsubSecond(void)

{

while(P3_6==0);

cnt_key=0;//记录长按键的参数清零

switch(cntP3_4)

{

case1:

if(keyMemory!

=greenEW-10)//判断按键是否已经减10,如果没有减10则秒数减1,如果已经减10则不减1

{

greenEW--;

}

if(greenEW==-1)

{

greenEW=89;

}

scdEW=greenEW;

scdSN=greenEW+yellowEW+1;

break;

case2:

if(yellowEW--==0)

{

yellowEW=9;

}

scdEW=yellowEW;

break;

case3:

if(keyMemory!

=greenSN-10)

{

greenSN--;

}

if(greenSN==-1)

{

greenSN=89;

}

scdEW=greenSN+yellowSN+1;

scdSN=greenSN;

break;

case4:

if(yellowSN--==0)

{

yellowSN=9;

}

scdSN=yellowSN;

break;

}

}

//正常显示秒数

voiddisplay(void)

{

cnt_num++;

if(cnt_ctr==10)

{

cnt_ctr=0;

P3=0xff;

P3=ctr[v];

P2=num[disEW[v]];//显示东西方向秒数

P0=num[disSN[v]];//显示南北方向秒数

if(v++==1)

{

v=0;

}

}

}

//闪烁显示秒数

voiddspFlash(void)

{

cnt_flash++;

if(cnt_flash<660)

{

P3=0xff;

//数码管灭

}

else

{

if(cnt_flash==1333)

//数码管亮1333=4000/3即1秒闪3次

{

cnt_flash=0;

}

if(cnt_ctr==59)

{

cnt_ctr=0;

P3=0xff;

P3=ctr[v];

switch(cntP3_4)

{

case1:

P3_0=1;

P3_1=1;

P2=num[disEW[v]];

break;

case2:

P3_0=1;

P3_1=1;

P2=num[disEW[v]];

break;

case3:

P3_2=1;

P3_3=1;

P0=num[disSN[v]];;

break;

case4:

P3_2=1;

P3_3=1;

P0=num[disSN[v]];

break;

}

if(v++==1)

{

v=0;

}

}

}

}

//长按加10秒

voidadd_10s(void)

{

cnt_key=0;

switch(cntP3_4)

{

case1:

greenEW=greenEW+10;//长按秒数加10

if(greenEW>=90)

{

greenEW=0;

}

keyMemory=greenEW+10;//keyMemory用来标记秒数已经加10

scdEW=greenEW;

scdSN=greenEW+yellowEW+1;

break;

case3:

greenSN=greenSN+10;

if(greenSN>=90)

{

greenSN=0;

}

keyMemory=greenSN+10;

scdEW=greenSN+yellowSN+1;

scdSN=greenSN;

break;

}

}

//长按减10秒

voidsub_10s(void)

{

cnt_key=0;

switch(cntP3_4)

{

case1:

greenEW=greenEW-10;//长按秒数减10

if(greenEW<0)

{

greenEW=89;

}

keyMemory=greenEW-10;//keyMemory用来标记秒数已经减10

scdEW=greenEW;

scdSN=greenEW+yellowEW+1;

break;

case3:

greenSN=greenSN-10;

if(greenSN<0)

{

greenSN=89;

}

keyMemory=greenSN-10;

scdEW=greenSN+yellowSN+1;

scdSN=greenSN;

break;

}

}

//T0中断

voidt0(void)interrupt1

{

cnt_ctr++;

if(cntP3_4==0)

{

display();//正常显示秒数

}

if(cntP3_4!

=0)

{

dspFlash();//闪烁显示秒数

}

if(cnt_num==4000)

{

cnt_num=0;

if(scdEW--==0)

{

cntEW++;//东西向秒数减至0,标志位加1

}

if(scdSN--==0)

{

cntSN++;//南北向秒数减至0,标志位加1

}

}

switch(cntEW)

{

case1:

scdEW=yellowEW;//东西向黄灯亮,显示黄灯秒数

P1_3=1;

P1_4=0;

P1_5=1;

cntEW++;//避免程序到此阻塞,故将其至为2

break;

case3:

//避免cntEW为2

scdEW=greenSN+yellowSN+1;//东西向红灯亮,显示红灯秒数

P1_3=1;

P1_4=1;

P1_5=0;

cntEW++;//避免程序到此阻塞,故将其至为4

break;

case5:

//避免cntEW为4

scdEW=greenEW;//东西向绿灯亮,显示绿灯秒数

P1_3=0;

P1_4=1;

P1_5=1;

cntEW=0;

break;

}

switch(cntSN)

{

case1:

scdSN=greenSN;//南北向绿灯亮,显示绿灯秒数

P1_0=0;

P1_1=1;

P1_2=1;

cntSN++;//避免程序到此阻塞,故将其至为2

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1