本科毕业论文-基于ARMLPC2103人行过马路交通灯设计.doc_第1页
本科毕业论文-基于ARMLPC2103人行过马路交通灯设计.doc_第2页
本科毕业论文-基于ARMLPC2103人行过马路交通灯设计.doc_第3页
本科毕业论文-基于ARMLPC2103人行过马路交通灯设计.doc_第4页
本科毕业论文-基于ARMLPC2103人行过马路交通灯设计.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计题目 人行过马路交通灯控制系统设计 学生所在学院 电气信息学院 专 业 电气工程及其自动化 学 号 20100042 学 生 姓 名 礼广毅 指 导 教 师 刘敦放 助理指导教师 起 止 日 期 2014.1.5至2014.5.25 毕业设计摘要摘 要随着社会的发展和进步 ,单片机的应用越来越广泛,而ARM7的32位高速单片机的出现,进一步提升了嵌入式系统在社会中的重要性。嵌入式系统是后PC时代广泛应用的计算机平台。嵌入式系统是指以应用为中心,以计算机技术为基础,软件,硬件可裁减,可满足应用系统对功能、可靠性、成本、体积、和功耗严格要求的专用计算机系统。嵌入式系统已广泛应用到科技领域和日常生活的各个角落,由于其自身的特性,是人们很难发现它的存在。本文设计了一款基于ARM7的人行过马路交通灯控制系统,系统中采用单片机控制各十字路口的信号灯,利用ARM7控制板完成对单片机的控制。主控计算机通过互联网完成对ARM7系统板控制,在主控计算机上可实现任意相位的设置,同时,可完成城市所有路口信号灯的监视和在线调整。GPIO有两种模式:高速GPIO和低速GPIO(相对高速而言)。高速GPIO的控制寄存器位于CPU的局部总线上,可进行高速的读写操作,而低速GPIO的控制寄存器是挂在VPB总线上。关键词:LPC2103 发光二极管 GPIOI 毕业设计目录目 录摘 要I1. 绪论11.1背景11.2课题来源及目的和意义21.2.1课题来源21.2.2课题目的21.2.3课题意义22. LPC2103及EasyARM2103硬件简介32.1 LPC210332.1.1概述32.1.2 特性32.1.3管脚配置42.2 EasyARM210352.2.1概述52.2.2功能特点52.3.3 LPC2103 PACK板硬件原理62.4 EasyARM2103底板原理图72.4.1 电源电路72.4.2复位和I2C电路72.4.3 时钟电路72.4.4 JTAG电路82.4.5 UART接口电路82.4.6 按键与显示电路83. LPC2103功能部分简介83.1引脚连接模块93.1.1概述93.1.2 寄存器描述93.2 GPIO113.2.1概述114 中断控制124.1 向量中断控制器124.1.1 概述124.1.2 特性124.1.3 寄存器描述134.1.4 基本使用方法134.1.5 向量IRQ中断145. 定时器0和定时器1165.1 概述165.2 特性165.3 引脚描述175.4 寄存器描述175.5 定时器中断196. 设计分析与程序216.1 逻辑分析216.2程序流程图216.2.1主程序流程图216.2.2 定时器流程图236.3 状态图与实现程序236.4 烧写277. 总结与展望307.1 总结307.2 展望30参考文献32附录33 毕业设计正文1 绪论早在1850年,城市交叉口处不断增长的交通就引发了人们对安全和拥堵的关注。第一次对交叉路口交通的控制尝试起源于1868年英国伦敦,当时由警察手工轮流变换指挥用的旗帜,当时的控制指令可以称之为旗语。这种控制方式在1908年传到美国纽约,并且很快在全国传播开来。城市电气化的发展导致了1914年在俄亥俄州的克利夫兰市出现了第一台电力驱动的交通信号灯。1919年,纽约市开始把手动指挥的旗子换成了电机控制的信号灯。在1923年,Garrett Morgan申请专利Morgan交通信号灯,后来卖给了通用电气公司。到1932年,在布鲁克林市Parkside大街上的最后一个手动控制的旗子也被电机控制信号灯取代。从1920年到1970年近50年的时间里,电机驱动的信号灯占据了交通信号控制系统的主要市场。周期长度是通过安装合适的齿轮来进行保证的,通过在一个计时转盘上插入销子来把周期分成不同的时间间隔。为了适应交通变化的需要,这种划分时间的方式被称为“三个时段”划分法。同时为了保证相邻的交叉口能够在一个交通信号系统中以预计的信号周期、绿信比和相位差下工作,一种“七条线缆”连接的方式发展起来,以使相邻的电机驱动的信号灯能够在一种系统控制的方式下工作。即使现在我们步入了新千年,在一些城市的某些地方仍然使用这种基于三个时段划分周期的信号控制器和七条线缆连接的系统。甚至,大部分在电机驱动的系统中发展起来的术语到现在仍然在现代的微处理控制器中使用。在20世纪60年代早期,计算机被引进到交通信号控制系统中。1.1背景我国机动车辆发展迅速,而城镇道路建设由于历史等各种原因相对滞后。道路拥挤、阻塞现象及交通事故常有发生。如何利用当今计算机与自动控制技术,有效地疏导交通,提高城镇交通路口的通行能力,提高车辆速度,减少交通事故是值得我们研究的新课题。1.2课题来源及目的和意义1.2.1课题来源课题来源为刘敦放老师的毕业设计中关于ARM7的课题设计,课题全名为:人行过马路交通灯控制设计1.2.2课题目的进入21世纪以来,我国的交通事业飞速发展,而发展的同时交通拥堵有成为城市道路现代化建设的一个“瓶颈”。我国是一个人口大国,特别是一线城市中,虽然在大力改造拓宽城市道路,但是日益增加的机动车数量还是不能很好的解决这个矛盾,因此,如何协调好人,车,路之间的关系是我我国解决城市交通问题的突破口。人行过马路交通灯系统的建立无疑就是这个突破口的关键所在。其目的在于更好的协助交通部门对人,车,路之间的管理,减少交通事故的发生,改善我国交通环境,从而提高人们的出行效率,保证人民生命财产安全。交通灯是城市交通中的重要指挥系统,它与人们日常生活密切相关随着人们生活水平的提高,对交通管制也提出了更高的要求,因此提供一个可靠、安全、便捷的多功能交通灯控制系统有着现实的必要性。它可以指导车辆和行人通行,减少交通事故的发生,让人们在有秩序的环境中生活。1.2.3课题意义交通灯是城市交通中的重要指挥系统,它与人们日常生活密切相关随着人们生活水平的提高,对交通管制也提出了更高的要求,因此提供一个可靠、安全、便捷的多功能交通灯控制系统有着现实的必要性。它可以指导车辆和行人通行,减少交通事故的发生,让人们在有秩序的环境中生活。2 LPC2103及EasyARM2103硬件简介2.1 LPC21032.1.1概述LPC2103是一个基于支持实时仿真的16/32位ARM7 TDMI-S CPU的微控制器,并带有32kB的嵌入高速Flash存储器,128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。较小的封装和极低的功耗使LPC2103适用于访问控制器和POS机等小型应用系统中;由于内置了宽范围的串行通信接口(2个UART、SPI、SSP和2个I2C)和8KB的片内SRAM,LPC2103也适合用在通信网关和协议转换器中。32/16位定时器、增强型10位ADC、定时器输出匹配PWM特性、多达13个边沿、电平触发的外部中断、32条高速GPIO,使得LPC2103微控制器特别适用于工业控制和医疗系统中。2.1.2 特性1) 16/32位ARM7 TDMI-S微控制器,超小LQFP48封装;2) 8KB的片内静态RAM和32KB的片内Flash程序存储器。128位宽度接口/加速器可实现高达70 MHz工作频率;3) 通过片内boot装载程序实现在系统/在应用编程(ISP/IAP)。单个Flash扇区或整片擦除时间为100ms,256字节编程时间为1ms;4) 嵌入式ICE RT通过片内RealMonitor软件提供实时调试;5) 10位A/D转换器提供8路模拟输入(每个通道的转换时间低至2.44us),以及特定的结果寄存器来最大限度地减少中断开销;6) 2个32位定时器/外部事件计数器(带7路捕获和7路比较通道);7) 2个16位定时器/外部事件计数器(带3路捕获和7路比较通道);8) 低功耗实时时钟(RTC)具有独立的电源和特定的32KHz时钟输入;9) 多个串行接口,包括2个UART(16C550协议标准)、2个高速I2C总线(400 Kbit/s)、SPI和具有缓冲作用和数据长度可变功能的SSP;10) 向量中断控制器(VIC),可配置优先级和向量地址;11) 多达32个通用I/O口(可承受5V电压);12) 多达13个边沿、电平触发的外部中断管脚;13) 通过一个可编程的片内PLL(100us的设置时间)可实现最大为70MHz的CPU操作频率,其具有10MHz25MHz的输入频率;14) 片内集成振荡器与外部晶体的操作频率范围为125MHz;15) 低功耗模式包括空闲模式、带RTC的睡眠模式和掉电模式;16) 可通过个别使能/禁止外围功能和外围时钟分频来优化额外功耗;17) 通过外部中断或RTC将处理器从掉电模式中唤醒。2.1.3管脚配置图2.1 LQFP48 管脚配置图2.2 PLCC44管脚配置2.2 EasyARM21032.2.1概述EasyARM2103开发板是广州周立功单片机发展有限公司设计的EasyARM系列开发套件之一,它采用了NXP公司基于ARM7 TDMI-S核、LQFP48封装的LPC2103芯片,具有JTAG仿真调试和ISP编程功能。EasyARM2103开发板上提供了按键、发光二极管等常用的功能器件,具有RS-232接口电路和I2C存储器电路。用户可以更换兼容的CPU进行仿真调试,如LPC2101和LPC2102芯片等。开发板上所有的I/O口全部引出,灵活的跳线组合,极大的方便用户进行32位ARM嵌入式系统的开发实验。2.2.2功能特点EasyARM2103开发板的功能特点如下:1) 采用“底板PACK板”的形式构成EasyARM2103开发套件,PACK板的主芯片为LPC2103;2) 板上所有的功能器件与LPC2103的引脚可通过跳线来连接;3) 配套有详细的开发板实验教程;4) I/O口全部引出,方便用户连接外部电路进行开发;5) 可进行GPIO的输入输出实验,如按键输入、发光二极管输出等;6) 按键、发光二极管分别可用于外部中断、GPIO输出等;7) 具有RS-232转换电路,可与上位机进行通信,完成UART通信实验;8) 具有I2C接口和SPI/SSP接口输出;9) 提供基于PC的人机界面,方便调试实时时钟和串口通信等;10) 可进行外部中断实验,学习向量中断控制器(VIC);11) 定时器实验,如定时输出和定时器捕获等;12) 复位芯片CAT1025,完成I2C总线实验;13) A/D转换实验;14) 实时时钟控制实验;15) WDT看门狗实验;16) 详细的实验教程和实验例程完整地验证了芯片的所有功能外设。2.3.3 LPC2103 PACK板硬件原理LPC2103 PACK板的电路设计如图2.3所示,芯片LPC2103的所有引脚全部连接到插针上,电容C1-C5用于对LPC2103芯片上5个电源端进行滤波。图2.3 LPC2103 PACK 板原理图2.4 EasyARM2103底板原理图2.4.1 电源电路LPC2103控制器需要双电源供电,1.8V内核电压和3.3V功能外设电压。5V电源由变压器或USB电源线输入,二极管1N5819可以防止电源反接。电路采用SPX1117系列LDO芯片SPX1117M-3.3和SPX1117M-1.8将电压稳至3.3V和1.8V,0欧的电阻用来隔离数字电源和模拟电源、数字地和模拟地。SPX1117系列LDO芯片是EXAR公司生产的低压差芯片,其特点是输出电流大,输出电压精度高,稳定性高,宽电压输入(这里选择的是5V输入)。此系列LDO芯片的输出电流高达800mA,输出电压的精度在1之内,可广泛应用于手持式仪表、数字家电、工业控制等领域。注意在电路输入输出端接一个10F的电容,可改善瞬态响应和稳定性2.4.2复位和I2C电路由于ARM芯片的高速、低功耗和低工作电压的工作特性,导致其噪声容限低,对电源纹波、瞬态响应性能、时钟源的稳定性和电源监控的可靠性等诸多方面有很高的要求。开发板采用的是带有256字节存储空间、I2C接口的专用电源监控复位芯片CAT1025,保证了系统的可靠性。nRST连接到芯片LPC2103的复位引脚,当复位按键RST1按下时,CAT1025的复位引脚输出有效信号,使芯片LPC2103复位。I2C总线需要外接上拉电阻R15、R16 。2.4.3 时钟电路LPC2103微控制器可使用外部晶振或外部时钟源,内部PLL电路可调整系统时钟,使系统运行速度更快(CPU的操作频率最大可达70MHz)。若不使用片内PLL功能及ISP下载功能,则外部晶振频率为130MHz,外部时钟频率为150MHz;若使用片内PLL功能或ISP下载功能,则外部晶振频率为1025MHz,外部时钟频率为1025MHz。EasyARM2103开发板使用外部晶振11.0592MHz,实时时钟为32.768KHz。用11.0592MHz的外部晶振使串口的波特率更精确,同时能支持LPC2103微控制器内部的PLL电路及ISP(在系统编程)功能。2.4.4 JTAG电路JTAG接口电路采用ARM公司提出的标准20 脚JTAG仿真调试接口。在RTCK引脚处接一个4.7K的下拉电阻,将在系统复位后使能JTAG调试接口。2.4.5 UART接口电路由于开发板是3.3V供电系统,需要使用电平转换芯片SP3232E来进行RS-232电平转换。SP3232E的工作电压为3.3V。当使用ISP功能时,需要将PC机的串口与开发板的串口相连,短接JP6端口,短接P0.14,在系统复位时,进入ISP状态。同样,在程序仿真调试中,若用到串口UART0,则需要短接JP6两个端口。2.4.6 按键与显示电路EasyARM2103开发板提供了3个独立的按键、4个发光二极管,按键与显示电路。当P0口作为输入时,内部没有上拉电阻,需要外接上拉电阻R17、R18、R19。显示电路中采用灌电流的驱动方式来驱动发光二极管,由于LPC2103芯片I/O口提供的灌电流大于其拉电流,可以保证了发光二极管的亮度。图2.3是上述所有电路底板原理图。图2.3 EasyARM2103 底板原理图3 .LPC2103功能部分简介3.1引脚连接模块3.1.1概述LPC2103控制器的引脚都具有多种功能,但是每个引脚在某一时刻只能选择一种功能。图3.1是LPC2103引脚P0.0的一个功能选择示意图,通过配置引脚功能选择寄存器即可选择相应的功能。当使用一个功能外设时,如果需要相应的引脚参与(如GPIO等),则必须在实现这一功能之前先设置好引脚的功能,否则无法实现该外设功能。图3.1 引脚连接模块示意图3.1.2 寄存器描述LPC2103具有两个PINSEL寄存器,PINSEL0和PINSEL1,它们都是32位宽度的,详细描述表3.1所列表3.1 PINSEL0和PINSEL1名称描述访问复位值地址PINSEL0引脚功能选择寄存器0读/写0x000000000xE002C000PINSEL1引脚功能选择寄存器0读/写0x000000000xE002C004PINSEL0和PINSEL1寄存器中的每两个位控制着一个引脚的功能,所以一个引脚最多可以有4种不同的功能选择。本设计只用到了PINSEL0,因此表3.2为PINSEL0寄存器所列的设定来选择P0口的引脚功能。表3.2 PINSEL0 寄存器PINSEL0引脚名称00011011复位值1:0P0.0GPIO P0.0TxD0 (UART0)MAT3.1 (定时器3)保留003:2P0.1GPIO P0.1RxD0 (UART0)MAT3.2 (定时器3)保留005:4P0.2GPIO P0.2SCL0 (I2C0)CAP0.0 (定时器0)保留007:6P0.3GPIO P0.3SAD0 (I2C0)MAT0.0 (定时器0)保留009:8P0.4GPIO P0.4SCK0 (SPI0)CAP0.1 (定时器0)保留0011:10P0.5GPIO P0.5MISO0 (SPI0)MAT0.1 (定时器0)保留0013:12P0.6GPIO P0.6MOSI (SPI0)CAP0.2 (定时器0)保留0015:14P0.7GPIO P0.7SSEL0(SPI0)MAT2.0 (定时器2)保留0017:16P0.8GPIO P0.8TxD1 (UART1)MAT2.1 (定时器2)保留0019:18P0.9GPIO P0.9RxD1 (UART1)MAT2.2 (定时器2)保留0021:20P0.10GPIO P0.10RTS1(UART1)CAP1.0 (定时器1)AIN30023:22P0.11GPIO P0.11CTS1(UART1)CAP1.1 (定时器1)AIN40025:24P0.12GPIO P0.12DSR1(UART1)MAT1.0 (定时器1)AIN500续表27:26P0.13GPIO P0.13保留MAT1.1 (定时器1)DTR1 (UART1)0029:28P0.14GPIO P0.14EIT1SCK1 (SSP 1)DCD1 (UART1)0031:30P0.15GPIO P0.15EIT2保留R11 (UART1)003.2 GPIO3.2.1概述LPC2103只有1个32位的通用I/O口P031:0,由于与引脚的其它功能复用,在使用前要进行相关的引脚设置,然后才能进行操作。其中,P0.27P0.31是JTAG调试引脚,在复位时,如果DEBUG引脚为高,则P031:27是不能作为GPIO使用的,只能作为JTAG调试引脚;反之,如果复位时DEBUG引脚为低,则P031:27引脚可以由用户设置,此时,调试禁止。LPC2103的GPIO有两种模式:高速GPIO和低速GPIO(相对高速而言)。高速GPIO的控制寄存器位于CPU的局部总线上,可进行高速的读写操作,而低速GPIO的控制寄存器是挂在VPB总线上。P0口作为高速GPIO使用时,将不能在调试环境下观察GPIO在VPB总线上的寄存器。本设计采用低俗GPIO控制寄存器,详细描述表3.3所示。表3.3 低速GPIOIOSETGPIO端输出置位寄存器。该寄存器和IOCLR寄存器一起控制输出管脚状态。写入1使对应管脚出书高电平。写入0无效。R/W00xE002 8004IO0SETIOCLRGPIO端输出清零寄存器。该寄存器控制输出管脚状态。写入1使对应管脚出书低电平并清零IOSET寄存器的对应位。写入0无效。WO00xE002 800CIO0CLR4 中断控制4.1 向量中断控制器4.1.1 概述向量中断控制器VIC(Vectored Interrupt Controller)具有32个中断请求输入。可将这些中断编程分为3类:FIQ、向量IRQ、非向量IRQ。 快速中断请求FIQ(Fast Interrupt reQuest)具有最高的优先级。如果分配给FIQ的请求超过1个,VIC将中断请求相“或”后向ARM处理器产生FIQ信号。当只有1个中断被分配为FIQ时,可实现最短的FIQ等待时间,因为FIQ服务程序只要简单地启动器件的处理即可。但分配给FIQ级的中断多于1个时,FIQ服务程序需要读取FIQ状态寄存器来识别产生中断请求的FIQ中断源。 向量IRQ(Vectored IRQ)具有中等优先级。该级别可分配32个中断请求中的16个。32个请求中的任意一个都可分配到16个向量IRQ slot中的任意一个,其中slot0具有最高优先级,而slot15则为最低优先级。 非向量IRQ(Non-vectored IRQ)的优先级最低。VIC将所有向量IRQ和非向量IRQ相“或”,向ARM处理器产生IRQ信号。IRQ服务程序可通过读取VIC的一个寄存器来启动并跳转到相应的地址。如果有任意一个向量IRQ发出请求,VIC则提供最高优先级请求IRQ服务程序的地址;否则提供所默认程序的地址。该默认程序由所有非向量IRQ共用。默认程序可读取IRQ状态寄存器,来确定哪个IRQ被激活。 VIC中所有的寄存器都为字寄存器,不支持字节和半字的读写操作。4.1.2 特性向量中断控制器的特性如下: 1) ARM PrimeCellTM向量中断控制器; 2) 32个中断请求输入; 3) 16个向量IRQ中断; 4) 16个优先级,可动态分配给中断请求; 5) 可产生软件中断。4.1.3 寄存器描述表4.1是常用VIC所包含的寄存器表4.1 VIC寄存器描述VIC控制寄存器名称 描述 访问 复位值 地址 VICIntSelect 中断选择寄存器。该寄存器将32个中断请求分配为FIQ或IRQ R/W 0 0xFFFF F00CVICIntEnable 中断使能寄存器。该寄存器控制32个中断和软件中断的使能 R/W 0 0xFFFF F010VICVectAddr 向量地址寄存器。当发生一个IRQ中断时,IRQ服务程序可读出该寄存器并跳转到读出的地址R/W 00xFFFF F030VICVectAddr0 向量地址0寄存器。向量地址寄存器015保存了16个向量IRQ slot的中断服务地址 R/W 0 0xFFFF F100VICVectCntl0向量控制0寄存器。向量控制寄存器015分别控制16个向量IRQ slot中的一个。Slot0优先级最高,而slot15优先级最低R/W 0 0xFFFF F2004.1.4 基本使用方法VIC的寄存器比较多,但在一般应用中,没有必要用到全部寄存器,掌握一些常用、基本的寄存器即可。VIC的基本使用方法:1) 确定该中断分配为FIQ还是IRQ中断;2) 若分配为FIQ,则进行相关初始化;若分配为IRQ,继续分配是向量IRQ还是非向3) 量IRQ中断,然后分别进行相关设置;4) 清除相应中断标志,并使能相应中断;5) 编写中断服务程序。以上步骤以流程图方式归纳如图4.1所示图4.1 流程图4.1.5 向量IRQ中断向量IRQ具有中等优先级,处理中断比较迅速。一旦发生向量IRQ中断,ARM处理器进入IRQ模式,PC指向IRQ异常入口0x18,同时向量IRQ服务程序的地址从相应通道的向量地址寄存器(VICVectAddr0-15)中复制到VIC的向量地址寄存器(VICVectAddr),PC根据VICVectAddr内的地址进行跳转,执行相应的服务程序,如图4.2所示。这整个过程都是由VIC硬件自动完成的,无需用户的软件干预。图4.2 跳转程序在一个具体应用中,向量IRQ中断使用往往是最多的,一个系统往往都会有多个向量IRQ中断。将一个中断分配为向量IRQ中断后,需要在程序中设置该中断的优先级、服务程序地址,接着清除相关中断标识再使能相应中断,最后编写IRQ中断服务程序即可。 IRQ的中断处理过程与FIQ比较类似,如图4.3所示。在系统模式下,IRQ与FIQ中断允许,当发生IRQ中断后,处理器硬件会禁止IRQ中断,但是,FIQ中断仍然是允许的,这一点与FIQ的处理是不同的。 发生IRQ中断时,处理器硬件会获取向量IRQ的服务地址,即,将对应的向量地址寄存器内容复制到VICVectAddr寄存器中。图4.3 IRQ中断处理过程5 定时器0和定时器15.1 概述LPC2103含有两个32位定时器:定时器0和定时器1,这两个定时器除了外设基地址不同外,其它都相同。定时器/计数器对外设时钟(PCLK)或外部提供的时钟周期进行计数,可选择产生中断或根据4个匹配寄存器的设定,在到达指定的定时值时执行其它动作。它还包括4个捕获输入,用于在输入信号发生跳变时捕获定时器值,并可选择产生中断。由于LPC2101/02/03器件的管脚数目有限,定时器0只有3个捕获输入和3个匹配输出被连接到器件的管脚。2个匹配寄存器可以在MATn.20管脚上提供单边沿控制的PWM输出。由于MAT0.3寄存器在定时器0上没有管脚输出,因此建议使用MRn.3寄存器来控制PWM周期长度。需要用另一个匹配寄存器来控制PWM边沿位置。剩余的两个寄存器可用来创建其它的PWMn输出,该输出具有由MRn.3决定的PWM周期率。5.2 特性1) 两个32位定时器/计数器各含有一个可编程32位预分频器;2) 计数器或定时器操作;3) 定时器0有3路、定时器1有4路捕获通道。当输入信号跳变时可取得定时器的瞬时值。也可选择使捕获事件产生中断;4) 每个定时器共有4个32位匹配寄存器,匹配时的动作有如下3种:a. 匹配时定时器继续工作,可选择产生中断;b. 匹配时停止定时器,可选择产生中断;c. 匹配时复位定时器,可选择产生中断。5) 定时器0有3个、定时器1有4个对应于匹配寄存器的外部输出,匹配时的输出有如下4种:a. 匹配时设置为低电平;b. 匹配时设置为高电平;c. 匹配时翻转;d. 匹配时无动作。6) 对于每个定时器,多达4个匹配寄存器可配置为PWM,允许使用多达3个匹配输出作为单边沿控制的PWM输出。5.3 引脚描述定时器/计数器相关管脚的简要描述如表5.1所列表5.1 引脚描述管脚名称管脚方向管脚描述MAT0.20MAT1.30输出外部匹配输出0/1:当匹配寄存器0/1(MR3:0)等于定时寄存器(TC)时,该输出可翻转,变为低电平、变为高电平或不变。外部匹配寄存器(EMR)和PWM控制寄存器(PWMCON)控制该输出功能。下面是所有匹配信号及其选择的管脚列表:MAT0.0: P0.3 MAT0.1: P0.5 MAT0.2:P0.16MAT1.0:P0.12 MAT1.1:P0.13 MAT1.2:P0.19 MAT1.3:P0.205.4 寄存器描述定时器/计数器0、1所包含的寄存器如表5.2所列41表5.2 寄存器描述定时器0、定时器1寄存器映射通用名称描述访问复位值定时器0地址和名称定时器/计数器1地址&名称IR中断寄存器。可以写IR来清除中断。可读取IR来识别哪个中断源(8个可能中断源中)被挂起R/W00xE0004000T0IR0xE0008000T1IRTCR定时器控制寄存器。TCR用于控制定时器计数器功能,定时器计数器可通过TCR禁止或复位R/W00xE0004004T0TCR0xE0008004T1TCRPR预分频寄存器。预分频计数器(下面)等于该值时,下个时钟增加TC并清除PCR/W00xE000400CT0PR0xE000800CT1PRMCR匹配控制寄存器。MCR用于控制在匹配时是否产生中断或复位TCR/W00xE0004014T0MCR0xE0008014T1MCRMR0匹配寄存器0。MR0可通过MCR设定为在每次MR0匹配TC时复位TC、停止TC和PC,选择产生中断R/W00xE0004018T0MR00xE0008018T1MR0 MR1 匹配寄存器1。见MR0描述 R/W0 0xE000401C T0MR1 0xE000801C T1MR1 MR2 匹配寄存器2。见MR0描述 R/W0 0xE0004020 T0MR2 0xE0008020 T1MR2 MR3 匹配寄存器3。见MR0描述 R/W0 0xE0004024 T0MR3 0xE0008024 T1MR3 EMR 外部匹配寄存器。EMR控制外部匹配管脚MAT0.2.0和MAT1.3.0 注:MAT0.3不连接到LPC2101/02/03的管脚 R/W0 0xE000403C T0EMR 0xE000803C T1EMR 续表5.5 定时器中断LPC2103含有两个32位定时器,每个定时器可以产生8种类型的中断:4路匹配中断、4路捕获中断,可以通过读取中断标志寄存器(TnIR)来区分中断类型。定时器中断与向量中断控制器(VIC)的关系如图5.1所示图5.1 定时器中断与向量中断控制器(VIC)定时器0和定时器1分别处于VIC的通道4和通道5,中断使能寄存器VICIntEnable用来控制VIC通道的中断使能。1) 当VICIntEnable4 = 1时,通道4中断使能,即:定时器0中断使能;2) 当VICIntEnable5 = 1时,通道5中断使能,即:定时器1中断使能。中断选择寄存器VICIntSelect用来分配VIC通道的中断。当某一位为“1”时,对应的通道中断分配为FIQ;当某一位为“0”时,对应的通道中断分配为IRQ。VICIntSelect4和VICIntSelect5分别用来控制通道4和通道5,即:1) 当VICIntSelect4 = 1时,定时器0中断分配为FIQ中断;2) 当VICIntSelect4 = 0时,定时器0中断分配为IRQ中断;3) 当VICIntSelect5 = 1时,定时器1中断分配为FIQ中断;4) 当VICIntSelect5 = 0时,定时器1中断分配为IRQ中断。分配为IRQ 之后,还需要设置对应的通道控制寄存器和地址寄存器。6 设计分析与程序6.1 逻辑分析人行马路四周共有4组红绿灯以及1个数码管,所以需要10个LED灯和1个数码管连接到LPC的引脚上,本次设计我选用的是P0.0P0.15这16个引脚来与LED灯和数码管相连接。然后选择这10个引脚的GPIO功能。使用定时器0的中断来实现LED灯的亮灭和数码管的显示。6.2程序流程图6.2.1主程序流程图整个毕业设计实验结果的程序流程图如图6.1数码管显示为1,人行绿灯与车行红灯亮,持续12秒,直至人行红灯,车行绿灯亮。数码管显示为7,人行红灯与车行绿灯亮,持续10秒,直至车行黄灯亮,人行红灯亮。数码管显示为0,车行黄灯亮,持续2秒,人行红灯亮。终止开始图6.1 过程流程图程序开始运行,判断是否选择GPIO功能,如果否则结束.选择是,然后启动定时器0,定时器1和IRQ向量使能。分配引脚为输出状态。给予定时器0中断使能。图6.2 主程序流程图6.2.2 定时器流程图开始运行定时器,定时器复位后,设置匹配寄存器控制动作。通过设定fpclk设置延时,MR与TC匹配是否相等,如果不等则继续执行匹配。如果相等则产生中断。图6.3 定时器流程图6.3 状态图与实现程序1) 状态一:人行绿灯和车行红灯亮,分别由LED9,10,11,12控制,数码管显示为1。当数码管显示为7时,变为状态二。下图为实现图6.4图6.4 状态一实现程序:if (count%12) = 1) IO0SET=LED0|LED1|LED2|LED3|LED4|LED5|LED6|LED7|LED8|LED9|LED10|LED11|LED12|LED13|LED14|LED15;IO0CLR=LED1|LED2|LED9|LED10|LED11|LED12; if (count%12) = 2) IO0SET=LED0|LED1|LED2|LED3|LED4|LED5|LED6|LED7|LED8|LED9|LED10|LED11|LED12|LED13|LED14|LED15;IO0CLR=LED0|LED1|LED3|LED4|LED6|LED9|LED10|LED11|LED12; if (count%12) = 3) IO0SET=LED0|LED1|LED2|LED3|LED4|LED5|LED6|LED7|LED8|LED9|LED10|LED11|LED12|LED13|LED14|LED15;IO0CLR = LED0|LED1|LED2|LED3|LED6|LED9|LED10|LED11|LED12; if (count%12) = 4) IO0SET=LED0|LED1|LED2|LED3|LED4|LED5|LED6|LED7|LED8|LED9|LED10|LED11|LED12|LED13|LED14|LED15;IO0CLR=LED1|LED2|LED5|LED6|LED9|LED10|LED11|LED12; if (count%12) = 5) IO0SET=LED0|LED1|LED2|LED3|LED4|LED5|LED6|LED7|LED8|LED9|LED10|LED11|LED12|LED13|LED14|LED15;IO0CLR=LED0|LED2|LED3|LED5|LED6|LED9|LED10|LED11|LED12;if (count%12) = 6) IO0SET=LED0|LED1|LED2|LED3|LED4|LED5|LED6|LED7|LED8|LED9|LED10|LED11|LED12|LED13|LED14|LED15;IO0CLR=LED0|LED2|LED3|LED4|LED5|LED6|LED9|LED10|LED11|LED12;2) 状态二:人行红灯和车行绿灯亮,分别由LED7,8,13,14控制,数码管显示为7。当数码管显示为0时,变为状态三。下图为实现图6.5图6.5 状态二实现程序:if (count%12) = 7) IO0SET=LED0|LED1|LED2|LED3|LED4|LED5|LED6|LED7|LED8|LED9|LED10|LED11|LED12|LED13|LED14|LED15;IO0CLR=LED0|LED1|LED2|LED7|LED8|LED13|LED14; if (count%12) = 8) IO0SET=LED0|LED1|LED2|LED3|LED4|LED5|LED6|LED7|LED8|LED9|LED10|LED11|LED12|LED13|LED14|LED15;IO0CLR=LED0|LED1|LED2|LED3|LED4|LED5|LED6|LED7|LED8|LED13|LED14; if (count%12) = 9) IO0SET=LED0|LED1|LED2|LED3|LED4|LED5|LED6|LED7|LED8|LED9|LED10|LED11|LED12|LED13|LED14|LED15;IO0CLR=LED0|LED1|LED2|LED3|LED5|LED6|LED7|LED8|LED13|LED14; if (count%12) = 10) IO0SET=LED0|LED1|LED2|LED3|LED4|LED5|LED6|LED7|LED8|LED9|LED10|LED11|LED12|LED13|LED14|LED15;IO0CLR=LED0|LED1|LED2|LED3|LED4|LED5|LED7|LED8|LED13|LED14; if (count%12) = 11) IO0SET=LED0|LED1|LED2|LED3|LED4|LED5|LED6|LED7|LED8|LED9|LED10|LED11|LED12|LED13|LED14|LED15;IO0CLR=LED0|LED1|LED2|LED3|LED4|LED5|LED7|LED8|LED13|LED14;3) 状态三:人行红灯和车行黄灯亮,分别由LED7,8,15控制,数码管显示0。当数码管显示1时,重复状态1。下图为实现图6.6图6.6状态三实现程序:if (count%12) = 0) IO0SET=LED0|LED1|LED2|LED3|LED4|LED5|LED6|LED7|LED8|LED9|LED10|LED11|LED12|LED13|LED14|LED15;IO0CLR=LED0|LED1|LED2|LED3|LED4|LED5|LED7|LED8|LED15;6.4 烧写本次设计我用的是ADS 1.2集成开发环境来进行的烧写的。而首先需要进行工程的建立。点击WINDOWS操作系统的“开始”“程序”“ARM Developer Suite v1.2”“CodeWarrior for ARM Developer Suite”启动Metrowerks CodeWarrior;或 双 击“CodeWarrior for ARM Developer Suite”快捷方式启动,启动ADS1.2 IDE如图6.7所示。图6.7 启动ADS1.2 IDE点击“File”菜单,选择“New”即弹出“New”对话框,。选择工程模板为“ARM Executable Image for lpc2103”,然后在“Location”项选择工程存放路径,并在“Project name”项输入工程名称,点击“确定”按钮即可建立相应工程,工程文件名后缀为“mcp”。如图6.8所示图6.8选择工程模板工程建立之后,会弹出一个对话框,之后单机“user”出现一个“main.C”的下拉菜单,如图6.9所示。图6.9 下拉菜单点击进入之后,进行程序的编写,如图6.10所示.图6.10 程序编写界面程序编写完成后,单击保存按钮,然后关闭程序编写窗口。之后按照图6.11所示,在所需文件前打钩,并点击下拉按钮,选择“DebugINFLASH”,然后单击旁边的绿色按钮进行编译调试烧写过程。若编译有错会有提示,根据提示,修改程序。图6.11 烧写过程烧写完毕后,观察自己所焊接的电路板结果。7 总结与展望7.1 总结我在这次毕业设计中,也对毕业设计中所涉及到的知识进行了一次系统性的准备。在课题确定以后,我首先通过互联网及身边的实际情况对我国的交通状况做了一次详细的了解,发现了我国道路交通所存在的矛盾,并且对多存在的问题提出了自己的一些想法。然后,对我毕业设计中所会碰到的关于嵌入式系统的知识做了完整的梳理,了解到了嵌入式系统在实际生活中存在的重要性。军事,政治等各个方面几乎都设计到了嵌入式系统。在对整个知识梳理完毕后,我又对实物的电路图进行了设计。我所设计的人行过马路交通信号控制中,数码管和LED灯一共需要用到LPC2103的17个管脚,所以要用到PINSEL0和PINSEL1。而为了减少差错率,我将黄灯共用一个管脚,因此就恰好控制在PINSEL0的16个管脚内,这样可以不需用到PINSEL1。到整个实物完成后我发现了,其实还可以继续减少管脚,提高LPC2103的利用率,为我所做的毕业设计做进一步改进。通过本次毕业设计,让我在大学即将毕业之时,对自己在学校里所学的知识进行了一次较为系统的知识结构整合。充分的印证了实践是检验真理的唯一标准,因此,在这次毕业设计中,让我深入的理解了理论知识和实际操作不一样的地方,为以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论