2022年基于arm7的交通灯方案设计书.docx
精品学习资源嵌入式系统设计题目 : 基于 ARM 嵌入式系统的交通灯设计专 业:电气工程及其自动化班 级: K0309414学 号: K030941410同学姓名:蔡泉权指导老师:徐建摘 要随着移动设备的流行和进展,嵌入式系统已经成为一个热点;它并不是最近显现的新技术,只是随着微电子技术和运算机技术的进展,微掌握芯片功能越来越大,而嵌入微掌握芯片的设备和系统越来越多,从而使得这种技术越来越引人注目;它对软硬件的体积大小、成本、功耗和牢靠性都提出了严格的要求;嵌入式系统的功能越来越强大,实现也越来越复杂,随之显现的就是牢靠性大大降低;最近的一种趋势是一个功能强大的嵌入式系统通常需要一种操作系统来赐予支持,这种操作系统是已经成熟并且稳固的,可以是嵌入式的 Linux , WINCE等等;本文所要讨论的就是基于ARM嵌入式系统的交通灯系统的设计与实现;本设计采纳了飞利浦的32 位 ARM 微处理器 LPC2138 作为核心处理器;关键词:嵌入式系统,ARM , LPC2138 ,交通灯欢迎下载精品学习资源AbstractWith the prevalence of mobile devices and development of embedded systems has become a hot spot. It is not a recent emergence of new technology, just as micro-electronics technology and the development ofcomputertechnology, micro-chipcontrolfunctionsmore and more, and controlof micro-chipsembedded in the equipment and systems more and more, making the technologymoreReplyPeople attention.Hardwareand softwareofitssize, cost, power consumption and reliability have made stringent requirements. Embedded systems function more powerful, and more and more complicated, then there is the reliability greatly reduced. A recenttrend is a powerful embedded systems usually need a operating system to support the operating system is already mature and stable, can be embedded Linux, WINCE, and so on. This paper is tostudy under the ARM embedded system s the system of traffic lights design and implementation.This design uses Philips's 32 as the LPC2138 ARM microprocessor core processors.欢迎下载精品学习资源Keywords : Embedded Systems, ARM, LPC2138, raffic lights目 录1 引言错误!未定义书签;2 相关内容及原理错误!未定义书签;3 设计方案 ··················································- 3 -3.1 设计思路 ·············································- 3 -3.2 总体设计框图··········································- 3 - 4 硬件设计 ··················································- 4 -4.1 LPC2138 芯片介绍及设计 ···································- 4 -4.2 LPC2138 芯片最小系统硬件设计······························- 5 -欢迎下载精品学习资源4.3 系统电源电路设计 ·- 6 -4.4 晶振与复位电路········································- 6 -4.5 LED 循环显示设计·······································- 6 -4.6 数码管倒计时显示硬件设计·································- 7 -4.7 蜂鸣器设计 ···········································- 8 - 5 软件设计 ··················································- 9 -5.1 交通灯掌握软件流程图····································- 9 -5.2 ARM 交通灯模拟掌握程序设计 ······························- 10 - 6 运行测试结果 ··············································- 10 - 7 设计心得体会及总结 ··········································- 12 - 参考文献 ·················································- 15 - 附录 ·····················································- 15 -欢迎下载精品学习资源1 引言交通信号灯指挥着人和各种车辆的安全运行,实现红、黄、绿灯的自动指挥是城乡交通治理现代化的重要课题;在城乡街道的十字交叉路口,为了保证交通秩序和行人安全, 在每条道路上各有一组红、黄、绿交通信号灯,其中红灯亮,表示该条道路禁止通行;黄灯亮,表示该条道路上未过停车线的车辆停止通行,已过停车线的车辆连续通行;绿灯 亮,表示该条道路答应通行;交通灯掌握电路自动掌握十字路口两组红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行,实现十字路口城乡交通治理自动化;本文为了实现交通道路的治理,力求交通治理先进性、科学化;分析应用了单片机实现智能交通灯管制的掌握系统,以及该系统软、硬件设计方法,试验证明该系统实现简 单、经济,能够有效地疏导交通,提高交通路口的通行才能;欢迎下载精品学习资源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,切换时间为 10s,最终 5s 为黄灯闪耀;公共场所公共场所欢迎下载精品学习资源3.2 总体设计框图图 3.1 交通路口示意图欢迎下载精品学习资源用 ARM7 系列芯片 LPC2138 作为系统的主控芯片,掌握交通灯的循环点亮并显示灯亮时间(采纳倒计时显示),当定时时间到的时候掌握蜂鸣器响来提示人们留意红绿灯的状态;欢迎下载精品学习资源交LPC2131倒通灯循最小系统计时显环蜂鸣器示图 3.2 交通灯总体设计框图4 硬件设计依据设计任务要求,自行挑选电子元件,画出电气原理图,并调试;一个完整的系统除了主控芯片以外,仍需配上电源系统、时钟电路、复位电路等;独立的芯片是不能工作的;4.1 LPC2138 芯片介绍及设计LPC2138 是基于一个支持实时仿真和嵌入式跟踪的32 位 ARM7TDMI-STMCPU 的微掌握器,并带有32kB 的嵌入的高速Flash 储备器; 128 位宽度的储备器接口和特殊的加速结构,使 32 位代码能够在最大时钟速率下运行;对代码规模有严格掌握的应用可使用16位 Thumb 模式将代码规模降低超过30%,而性能的缺失却很小;较小的封装和极低的功耗使 LPC2131 可抱负地用于小型系统中,具有以下一些特性:小型 LQFP64 封装8k 的片内静态 RAM 和 32k 的片内 Flash 程序储备器片内 Boot 装载软件实现在系统 /在应用中编程( ISP/SAP)单扇区或整片擦除时间为400ms, 256 字节行编程时间为1ms1 个 10 位 D/A 转换器两个 32 位定时器 /计数器(带四路捕捉和四路比较通道)、PWM单元( 6 路输出)和看门狗实时时钟具有独立的电源和时钟源,在节电模式下极大地降低了功耗多个串行接口,包括2 个 16C550 工业标准 UART 、2 个高速 I/O 接口( 400 kbit/s )、 SPITM 和具有缓冲作用和数据长度可变功能的SSP多达 47 个 5V 的通用 I/O 口;向量中断掌握器,可配置优先级和向量地址9 个边沿或电平触发的外部中断引脚欢迎下载精品学习资源片内晶振频率范畴: 1 30 MHz通过片内 PLL 可实现最大为 60MHz 的 CPU 操作频率, PLL 的稳固时间为 100us低功耗模式:闲暇和掉电可通过个别使能 /禁止外部功能和外围时钟分频来优化功耗通过外部中断将处理器从掉电模式中唤醒单电源,具有上电复位(POR)和掉电检测( BOD )电路欢迎下载精品学习资源CPU 操作电压范畴: 3.0V 3.6 V 3.3 V的电压10± , I/O 口可承担 5V欢迎下载精品学习资源4.2 LPC2138 芯片最小系统硬件设计图 4.1 为 LPC2138 芯片的原理图, 64 个引脚,采纳 3.3V 电源供电,设计所需外接器件的网络名已经标出;图 4.1 LPC2138 芯片的原理图欢迎下载精品学习资源4.3 系统电源电路设计本电源运用5V 的直流电源(图4.2 所示);通过 DS2434 芯片将 5V 电压转换为3.3V电压,为 LPC2138 芯片供电, LPC2138 芯片所能承担的电压范畴是3V3.6V ;50s表41:红绿灯时间安排时间如表5s5s50s5s5s南北通道人行道绿灯亮红灯亮绿灯闪黄灯闪红灯亮红灯亮红灯亮绿灯亮红灯闪红灯亮黄灯闪红灯亮图 4.2 直流电源电路设计4.4 晶振与复位电路系统的晶振电路如图4.3 所示 LPC2138 芯片采纳 11.0592MHz 的晶振作为振荡时钟源,通过对芯片的进行软件设计可以将晶体振荡器的频率分频为所需的频率;系统的复位电路如图 4.4 所示, SP708S 芯片的 7 号引脚连接到主控芯片的复位引脚(复位键 S2 时,系统将会复位到初始的状态;nRST )上,按下图 4.3 系统的晶振电路图图 4.4 系统的复位电路图4.5 LED 循环显示设计由南向北和由北向南车道各用一组红、绿、黄三色的指示灯,指挥车辆通行;绿灯是通行信号,面对绿灯的车辆可以直行,红灯是禁止通行信号,面对红灯的车辆必需在路口的停车线后停车;黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已非常接近停线而不能安全停车时可以连续行进;具体红绿灯时间安排时间如表4 1 所示:上表说明南北通道绿灯亮、绿灯闪黄灯闪时人行道都是红灯亮,只有车道红灯亮(车辆完全停下来)时人行道绿灯才亮,这样保证了过公路的行人人身安全,防止了不必要的交欢迎下载精品学习资源通事故;硬件电路连接图如图4.5 所示:图 4.5 硬件电路连接图交通灯 LED 的发光和熄灭的掌握,是通过掌握GPIO 寄存器组来完成的,须先将引脚P1.18P1.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 蜂鸣器设计将蜂鸣器正极端接电源,负极端通过三极管接地,三极管基极通过电阻接到LPC2138芯片的 P0.8 引脚上;具体硬件电路连接图如图4.8 所示:图 4.8 蜂鸣器硬件电路连接图欢迎下载精品学习资源5 软件设计5.1 交通灯掌握软件流程图图 5.1 为 ARM模拟交通灯掌握程序流程图,主程序主要完成倒计时显示及掌握蜂鸣器,中断服务程序主要掌握那些灯亮以及亮的时间;欢迎下载精品学习资源主程序流程图中断服务程序流程图开头系统爱护现场定时器 0 初始化0<=Flag<50车道红灯计数变量 -1初始化中断,开中断NY50<=flag<55车道红灯闪烁计数 -1交通灯倒计时显示NY55<flag<60黄灯闪耀计数-1Nflag=120NYY60<=flag<110车道绿灯计数-1flag=0, 清零计数变量NY110<=flag<115车道绿灯闪烁计数 -1NNflag=55or115Y115<=flag<120车道闪耀黄灯计数 -1YN掌握蜂鸣器响2秒中断返回图 5.1ARM 模拟交通灯掌握程序流程图5.2 ARM 交通灯模拟掌握程序设计定时器掌握原理:定时器对外设时钟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 编译结果示意图车道红灯、公路绿灯,一位数码管50 秒倒计时显示如下图6.2 所示:图 6.2 车道红灯、公路绿灯50 秒倒计时显示车道红灯、公路绿灯,一位数码管50 秒倒计时显示,倒计时5 秒,公路方向亮黄灯, 以提示即将亮红灯,如下图6.3 所示:欢迎下载精品学习资源图 6.3 东西方向亮黄灯提示即将亮红灯显示设计为系统上电即点亮车道红灯以及公路绿灯,倒计时50s 红灯开头闪耀,同时公路红灯亮,红灯闪5s 接着转为黄灯闪5s,然后车辆通道转为绿灯亮,50s 后绿灯闪 5s,黄灯再闪 5s 之后又回到红灯亮,人行道只在车辆通道红灯时才亮绿灯;这主要靠在中断服务程序中对计数值 flag 的判定来对正在点亮的灯进行定时实现程序具体清单见附录;欢迎下载精品学习资源7 设计心得体会及总结两周的课程设计终止了,在这次的课程设计中不仅检验了我所学习的知 识,也培育了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情;在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督;学会了合作,学会了运筹帷幄,学会了宽容,学会了懂得,也学会了做人与处世;课程设计是我们专业课程学问综合应用的实践训练,着是我们迈向社会, 从事职业工作前一个必不少的过程; ”千里之行始于足下 ”,通过这次课程设计,我深深体会到这句千古名言的真正含义;我今日仔细的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础;通过这次交通灯设计,本人在多方面都有所提高;通过这次交通灯设计,培育综合运用所学学问、独立分析和解决实际问题的才能,培育创新意识和创新才能,并获得科学研究的基础训练;明白所挑选的ARM 芯片各个引脚功能,工作方式,计数/定时, I/O 口,中断等相关原理,并巩固学习嵌入式的相关内容学问;通过软硬件设计实现利用ARM芯片完成交通灯掌握功能;第一查阅相关文献资料,熟识所选ARM芯片;其次步总体设计方 案规划,设计车辆遇到红灯停绿灯行情形,红绿灯时间均为60s,切换时间为 10s,最终 5s 为黄灯闪耀;接下来的系统硬件设计,熟识I/O 接口,定时器计数器工作原理;最终系统软件设计,包括交通信号灯的工作流程软件实现,用C 语言编程;提高了运算才能,绘图才能,熟识了规范和标准,同时各科相关的课程都有了全面的复习,独立摸索的才能也有了提高;在这次设计过程中,表达出自己单独设计模具的才能以及综合运用学问的才能,体会了学以致用、突出自己劳动成果的欢乐心情,从中发觉自己平常学习的不足和薄弱环节,从而加以补偿;由于本人的设计才能有限,在设计过程中难免显现错误,恳请老师们多多指教,我非常愿意接受你们的批判与指正,本人将万分感谢;欢迎下载精品学习资源参考文献1 周立功主编; ARM嵌入式系统基础教程 M (第 2 版);北京:北京航空航天高校出版社; 2021.2 张崙编著; 32 位嵌入式系统硬件设计与调试M ;北京:机械工业出版社;2005.3 马洪连等编著;嵌入式系统设计教程M ;北京:电子工业出版社;2006.4 王田苗主编;嵌入式系统设计与实例开发M ;北京:清华高校出版社;2003.5 符意德编著;嵌入式系统设计原理及应用M ;北京:清华高校出版社;2004.欢迎下载精品学习资源附录:#include "config.h"#define LED1 1<<18/P1.18 南北红灯#define LED2 1<<19/P1.19 南北绿灯#define LED3 1<<20/P1.20 南北黄灯#define LED4 1<<21#define LED5 1<<22/P1.21 南北红灯/P1.22 南北绿灯#define LED6 1<<23#define LED7 1<<24/P1.23 南北黄灯/P1.24 公路红灯#define LED8 1<<25/P1.25 公路绿灯#define Y 0x00900000#define R 0x00240000#define G 0x00480000#define SEL1 1<<26/数码管位选1#define SEL2 1<<27#define HC595_CS 0x00000200/数码管位选/P0.92#define BEEP0x00000100/P0.8 为蜂鸣器掌握unsigned int dat,nb,h,flag ;unsigned char tab=0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90;/*定时器 0 中断服务子程序 重装初值,计数增减*/ voidirq IRQ_Time0voidunsigned int i ;ifflag<=50ifflag=0 nb=55 ;IO1CLR=LED1|LED4|LED8; / 车道红公路绿IO1SET=LED1|LED4|LED8;欢迎下载精品学习资源nb-;/ 南北红灯时间秒减1ifflag>50&&flag<55i=IO1PIN ;ifi&R=0IO1SET=R ;elseIO1CLR=R ;/ 红灯每秒闪耀一次nb-;/ 红灯时间减 1ifflag=55IO1CLR=LED3|LED6|LED7; / 车道黄公路红IO1SET=LED3|LED6|LED7;h=5;if55<flag&&flag<60i=IO1SET ;ifi&Y=0IO1SET=Y ;elseIO1CLR=Y ;/ 黄灯闪耀h-;/ 黄灯时间秒减1if60<=flag&&flag<110欢迎下载精品学习资源ifflag=60 nb=51 ;IO1CLR=LED2|LED5|LED7;/ 车道绿公路红IO1SET=LED2|LED5|LED7;nb-; /绿灯时间减 1if110<=flag&&flag<115/计数慢一个周期后重新开头计数i=IO1SET ;ifi&G=0IO1SET=G ;elseIO1CLR=G ;/ 绿灯闪耀nb-;/ 绿灯时间减 1ifflag=115h=5;IO1CLR=LED3|LED6|LED7;/车道黄公路红IO1SET=LED3|LED6|LED7;if115<flag&&flag<120i=IO1SET ;ifi&Y=0IO1SET=Y ;elseIO1CLR=Y ;欢迎下载精品学习资源/ 黄灯闪耀h-;/ 黄灯时间减 1flag+ ;T0IR = 0x01 ;/ 清除中断标志VICVectAddr = 0x00 ;/ 通知 VIC 中断处理终止/*Time0Init定时器 0 定时中断初始化*/ void Time0InitvoidT0PR = 99 ;/ 设置定时器 0 分频为 100 分频得 110592Hz T0MCR = 0x03 ;/ 匹配通道 0 匹配中断并复位 T0TCT0MR0 = 110592 ;/ 比较值 1 秒定时值 T0TCR = 0x03;/启动并复位T0TCT0TCR = 0x01;VICIntSelect = 0x00 ;/ 全部中断通道设置为IRQ 中断VICVectCntl0= 0x24;/ 定时器 0 中断通道安排最高优先级VICVectAddr0= uint32IRQ_Time0 ;/ 设置中断服务程序地址向量VICIntEnable = 0x00000010 ;/ 使能定时器 0 中断/* void SPImasterInit SPI初始化*/ void SPImasterInitunsigned int fdiv ;fdiv=8 ;欢迎下载精品学习资源S0PCCR=fdiv&0xfe ;S0PCR=0<<3|1<<4|1<<5|0<<6|1<<7;/* HC595_SendDat 向 74HC595 发送一字节数据*/ void HC595_SendDatunsigned int datIO0CLR=HC595_CS ;S0PDR=dat;while0=S0PSR&0x80;/等待数据发送完毕IO0SET=HC595_CS ;/* Delay_NS长软件 1ms 延时*/ void Delay_Nsunsigned int dlywhiledly-/dly ms 延时unsigned int j ;forj=1 ; j<=613 ;j+/1ms 延时;/* void LED_Display*功能 : LED 数码管显示*/ void LED_Display欢迎下载精品学习资源ifflag<55|60<=flag&&flag<115dat=nb/10 ;/显示十位数据HC595_SendDattabdat ;IO1SET=SEL1 ;/打开数码管位选1 Delay_Ns20 ;IO1CLR=SEL1 ;/关闭数码管 1dat=nb%10;/显示个位数据HC595_SendDattabdat ;IO1SET=SEL2 ;/打开位选 2 Delay_Ns20 ;IO1CLR=SEL2 ;/关闭位选 2else if55<=flag&&flag<60|115<=flag&&flag<120dat=h;/显示黄灯倒计时间HC595_SendDattabdat ;IO1SET=SEL2 ;Delay_Ns20 ;IO1CLR=SEL2 ;/* main :初始化 I/O 及定时器,然后不断的查询定时器中断标志;* 当定时时间到达时,取反BEEPCON 掌握口;*/ int mainvoidPINSEL0=0x00000000 ;/ 设置全部引脚连接GPIO PINSEL1 = 0x00000000 ;/设置管脚连接 GPIO欢迎下载精品学习资源IO1DIR = 0xffffffff;/ 设置 I/O 为输出IO0DIR=0x000003f0 ;/设置 SPI 掌握口 ,BEEP 和 nCS 为输出IO1SET=0xffffffff;IO0SET=BEEP ;flag=0 ;Time0Init ;/初始化定时器 0 SPImasterInit ;/SPI 初始化IRQEnable ;/ 使能中断while1ifflag=120 flag=0 ;ifflag=55|flag=115IO0CLR=BEEP ;ifflag=57|flag=117 IO0SET=BEEP ;return0 ;欢迎下载