《ARM课程设计报告.doc》由会员分享,可在线阅读,更多相关《ARM课程设计报告.doc(16页珍藏版)》请在三一办公上搜索。
1、目录1. 摘要.32. 关键词.43. 引言 .44. 原理与总体方案 .55. 软件设计.76. 仿真设计.117. 硬件设计.148. 调试 .149. 结束语.1610. 参考文献.171. 摘要:由于网络与通信技术的发展,嵌入式系统在经历了近20年的发展历程后,又进入了一个新的历史发展阶段,即从普遍的低端应用进入一个高、低端并行发展,并且不断提升低端应用技术水平的时代,其标志是32位MCU的发展。LPC2000系列ARM7微控制器包含有六路PWM波产生通道;在显示方面着多利用LED和LCD, LCD 的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透
2、过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面;我们此次课程设计的作品主要运用了LPC2000系列的微控制器芯片、产生T=10ms的PWM波,在指定的引脚输出,并将其周期,占空比的改变在LCD屏上显示。利用按键K1改变其占空比高电平的宽度,每按一次K1,T增加1ms。高电平在1ms9ms循环改变。使用Proteus 7.5 professional和keil进行程序编写,利用ADS 和Magic ARM2200教学实验开发平台进行硬件仿真。经过软硬件调试和测试,产生了以10ms为周期的PWM波并能通过按键改变其高电平。实践不仅证明了设计方法的正确性,更增加了实践操作的经验。Abs
3、tract: due to network and communication technology development, the embedded system after nearly 20 years of development, and to enter into a new historical stage of development, that is, from the low end of general application into a high, the low end of the parallel development, and constantly imp
4、rove the low end of the application of the technical level of the era, the sign is 32 bit MCU development. LPC2000 series ARM7 micro controller contains six PWM waves produce channel; In the more shows using LED and LCD, LCD structure is in two pieces of parallel of liquid crystal glass place, two p
5、ieces of glass is among many vertical and horizontal small wire, electricity or not to control rods through crystal molecules to change direction, will light reflection out produce images; We of the curriculum design of the main works using a LPC2000 series of micro controller chip, produces T = 10
6、ms PWM wave, in the designated pin output, and the cycle, occupies emptiescompared to change in the LCD display. Use button to change the triassic-paleogene occupies emptiescompared to the width of the high level, each as a K1, T + 1 ms. High level in 1 ms 9 ms cycle changes. Use Proteus 7.5 profess
7、ional and keil for programming, and ADS and Magic ARM2200 teaching experiment development platform for hardware simulation. After the software and hardware commissioning and testing, produced with 10 ms cycle of PWM waves and can effectively change through the high level. Practice not only proved th
8、e correctness of design method, more added to practice the operation experience. 2. 关键词:LPC2000 ,周期 ,占空比,按键,PWM3 引言LPC2000系列微处理器工作频率为60MHz,采用基于ARMTDMI内核的32位RISC。LPC2000的外设接口非常丰富,包括UART、SPI、I2C、CAN、ADC、 PWM、RTC等。这一系列微控制器LPC2114/2124/2119/2129/2194、LPC2210/2212/2214、LPC2290 /2292/2294借助片上存储器加载模块实现了“零等
9、待访问”高速闪存功能,提高了指令执行的效率。在高性能低功耗的基础上提供了增强的通信功能和片上代码保护机制。由于内置了宽范围的串行通信接口,它们也非常适用于通信网关、协议转换器、嵌入式软调制解调器等。6通道的PWM更能用于复杂的马达控制应用。 LPC2000系列微控制器能够实现零等待访问的高速闪存,这主要归功于片上的存储器加速模块。图2为存储器加速模块的结构框图。128位宽度的闪存阵列通过单独的局部总线与处理器接口,每周期可为ARM内核提供四条32位指令。这使得MCU无需经过等待状态就可直接从闪存上执行指令,从而消除了一般闪存读取时的等待时间。为了解决指令序列的变化,指令和数据的不同处理带来的等
10、待时间,模块内部实现了预取缓冲器、避免数据读/写打乱地址序列的数据旁路和跳转跟踪缓冲器三个功能块的联合工作,并用两组128位宽度的存储器来进行并行访问,消除延时。存储器加速模块的作用取决于系统时钟的大小。LPC2000系列片上闪存的访问时间为50nS,对于系统时钟不高于20MHZ的应用,在1个周期内就可将闪存的内容读出,此时没必要使用存储器加速模块。时钟频率越高,当直接执行闪存中的代码时,系统性能受影响越大,此时使能存储器加速模块,可以得到接近4倍速度的加速,真正实现零等待高速闪存。由于LPC2000可直接从闪存执行指令,无需引导期间将代码传送到SRAM,这不仅省掉了耗时又耗能的系统启动步骤,
11、还节省了昂贵的SRAM。对片内闪存的编程可通过几种方法来实现:通过内置的串行JTAG 接口,通过串口进行在系统编程(ISP),或通过在应用编程(IAP)。4. 原理与总体方案4.1 GPIOLPC2000系列ARM的GPIO具有如下特性:a、 可以独立控制每个GPIO口的方向(输入/输出模式);b、 可以独立设置每个GPIO的输出状态(高/低电平);c、 所有GPIO口在复位后默认为输入状态。每个作为GPIO功能的引脚受到四个寄存器控制,分别为控制方向的IOxDIR、控制输出电平状态的IOxSET和IOxCLR、反映引脚电平状态的IOxPIN。这四个寄存器构成一组,而一组寄存器控制着一个端口(
12、P0、P1、P2或P3)。注意事项:引脚设置为输出方式时,输出状态由IOxSET和IOxCLR中最后操作的寄存器决定。LPC2000系列ARM大部分的I/O引脚为推挽方式输出,但是具有总线功能的I/O引脚为开漏输出(P0.2/3和P0.11/14)。使用这些开漏输出的引脚作为GPIO功能,并用于高电平输出或者引脚状态输入时,要接上拉电阻才能正常使用。推挽输出的I/O引脚正常拉出/灌入电流均为4mA,短时间极限值为40mA。复位后,大部分引脚默认作为GPIO功能,并且均为输入状态。但是,有部分引脚在复位后默认作为第二功能(如:P0.27P0.30在复位后默认为A/D输入引脚)。LPC2210/2
13、220/2212/2214中的P2.30和P2.31比较特殊,无论它们作为什么功能,第二功能的A/D输入始终有效,当它们连接高于3.3V的电平时,将影响其它A/D转换的结果。 在LPC2000系列中,可以直接产生PWM波,而且可以灵活的产生单边的或双边的PWM波,所谓单边,指的就是在每个周期的开始,该PWM波就升高电平,因此只需要控制下降沿的时间就可以,因此成为单边;而双边的含义是上升沿和下降沿都可以得到控制,显然,这种PWM波需要更多的控制寄存器,典型的波形如下: 在LPC2000系列中,产生这种PWM的方法如下:(1) 首先必须关闭相应的定时器,并且将定时器复位(2) 设置预分频器的数值,
14、但是一般并不需要使用预分频(3) 设置当PWM产生用到的TIMER计数达到匹配寄存器的数值后,进行何种操作,如果是连续的产生PWM波,那么一般是选择在这个时候将产生PWM波的TIMER复位,进而进行下一个周期的计数(4) 设置PWM的周期与占空比,这里注意,在LPC中,PWMMR0是控制着整个PWM产生的周期的,其余的PWMMR16都是用来控制占空比的,而非控制周期,这个寄存器与其它的并不一样(5) 对以上的设置进行锁存,就是将PWMMR0决定的周期,和其它寄存器决定的占空比进行锁存(6) 设置允许相应的PWM引脚输出PWM波,同时设置是单边PWM还是双边PWM波,值得注意的是,“允许”并不代
15、表就是启动了PWM输出,PWM的输出是随着TIMER的启动而启动的(7) 启动用于PWM波的TIMER,开始输出4.2 总体方案首先在keil软件中编写程序,应用PWM专用的标准定时器,设定相应的寄存器,并通过PWMRO来控制PWM的周期,设置所存并保证在每次案件按下的时候其占空比可以更新,通过匹配功能及一些控制电路来产生单边沿控制的PWM波,LCD1062显示周期,和高电平的宽度,通过按键查询改变高电平的宽度。应用Proteus软件仿真,仿真实现后下载程序到Magic ARM2200教学实验开发平台硬件仿真。GPIO初始化5. 软件设计 MRO匹配复位PWM定时器LCD初始化设置单边沿控制通
16、过寄存器设置周期与占空比PWM定时器端口初始化 按键按下?YESNOPWM匹配所存高电平宽度加1ms启动PWM的定时器宽度大于 9msNOH=1ms周期T=10YES 图2 PWM初始化图1 主函数流程图主函数流程如图1,首先对GPIO初始化,设置P0.20脚为GPIO功能,并设置为输入,再对LCD初始化,若用LCD1602,应对LCD所连接的引脚设置为GPIO功能。应用PWM专用的标准定时器,设定相应的寄存器,并通过PWMRO来产生PWM波,设置1ms时PWMLER更新一次占空比,按键采用查询按键方式,当没有按键时循环读P0.20的电平,由于按键接有上拉电阻,在没有按键按下的情况下读到的电平
17、状态为高,当有按键按下时通过控制定时器PWMLER寄存器来改变占空比的大小从而改变输出PWM波的高电平。定时器初始化流程图如图2所示,首先将MRO匹配复位PWM定时器,预分频计数器设置为零分频,PWM匹配控制寄存器设置为匹配复位,以输出固定周期的PWM波,由于采用0分频,输出PWM波为10ms,所以计数器上限值设置为14.000*1000000/100。部分程序如下#include config.h#define KEY1 (120) /*P0.20引脚连接KEY1*/ 函数名称: WaitKey()功能: 等待一个有效按键,延时去抖功能函数说明:当没有按键按下时,一直读P0.20的电平状态,
18、当有按键按下时,延时一段时间,再次判断P0.20的电平状态,若仍为低电平,则可确定按键按下,再读取P0.20的电平状态,等待按键弹起。*/void WaitKey(void) uint32 i; while(1) while(IO0PIN&KEY1)!=0); /等待KEY1键按下 for(i=0;iFpclk/100;i+); /延时去抖 if(IO0PIN&KEY1)=0) break; while(IO0PIN&KEY1)=0); /等待KEY1键放开 /*函数名称: PWMInit功能描述: PWM初始化代码,在需要的地方调用,根据需要改变*/void PWM_INIT(void) P
19、WMPR=0x00; /不分频,计数频率为Fpclk PWMMCR=0x02; /设置PWMMR0匹配时复位T0TC, PWMMR0=14.000*1000000/100; /设置PWM周期为10ms PWMMR5=14000; /设置PWM占空比 PWMLER=0x21; /PWMMR0,PWMMR5锁存 PWMPCR=0x2000; /允许PWM5输出,单边PWM PWMTCR=0x09; /启动定时器,PWM使能 /*名称: main()*功能: 使用PWM5输出占空比可调的PWM波形,并在LCD上面显示*/int main (void)INT8U err, *pt, i, k= 10;
20、 INT32U pwmduty; /PWM占空比控制变量 INT16U x = 0, y; INT8U (*p)63 = a;GUI_Initialize(); / 初始化LCM GUI_SetColor(BLUE, WHITE); / 设置前景色和背景色 for(err = 0; err 2; err+) GUI_LoadPic(24*err + 10, 0, *p, 24, 21); p+; Dispnum(0, 10);/显示周期默认信息 for(err = 2; err =140000) pwmduty=14000; return 0; 6. 仿真设计6.1 Proteus软件Prot
21、eus 是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。特点:用户可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。6.2 仿真电路整体仿真电路如图3,该仿真的原理图运用了一个LPC2138芯片为主体,以液晶和按键的控制
22、实现的人机交互,实现按键每按下一次,就改变一次波形的周期并显示在液晶LCD液晶显示屏上。采用LPC2138芯片作为主控器,扩展LCD接口图形液晶模块显示屏作为出设备,以输出改变的周期数,另外,示波器作为波形显示,显示出改变周期频率后的波形图。此外,系统还扩展了LCD作为字库字模数据显示芯片,将数字模拟示波器显示的字模以相应的代码放在程序里并显示。图3液晶模块电路如图4所示。采用图形液晶显示模块LCD240128作为显示设备。其内含有中、英文以及数字字库,配合字库存储芯片可以实现2424中文汉字的输入。它利用拼音输入系统软件部分来实现对数字,周期的输入。LCD的主要任务是将键盘输入的数字序列转换
23、成汉字。 它将键盘输入的数字序列转换为编码,根据编码转换为该显示所需的16进制数,之后放在程序中运行显示。该显示屏是将它的数据输入接口D0D7连接到芯片的P0.0P0.7,复位RS口,访问控制接口RW,使能端E分别连接到芯片P0.8P0.10口,以实现上述的显示功能。 图4 示波器是用于显示与触发时间相关的波形采样内容,当每次实施触发时它都会显示采样波形。图5仿真结果如图6所示,当按下按键时,示波器显示PWM波的高电平加1ms,同时LCD显示高电平加1ms,和周期10ms。图6 仿真结果7. 硬件设计硬件电路采用Magic ARM2200教学实验开发平台图7硬件电路8. 调试8.1 软件调试主
24、要运用keil软件进行软件调试,通过主函数调用子函数实验设计要求的功能,利用仿真软件观察现象。Keil软件可以通过软件窗口的模拟监测输出信号的高低电平以及单片机相关端口的变化。常用的调试按钮:Reset 相当于单片机最简,系统的复位按钮,按下后,所有的系统状态将变成初始全速运行,相当于单片机的通电执行;step into 逐语句;进入并单步执行;单步执行step over;逐过程;step out跳出。软件的调试主要是修改程序语法错误,通过观察各寄存器的变化,与输入输出口的变化也可以发现逻辑错误。语法错误可以通过下方的提示改正,而逻辑错误则需通过keil和Proteus仿真改正。读取按键值时,
25、若将程序中的变量设置为16位或8位与IO0PIN相与则不能正确读取到按键值,此处应将变量改为32位。LCD1602若不添加读忙函数,则应在LCD子函数中加入适当的延时,否则LCD的读写速度跟不上芯片的速度,特别是在写指令时,应加入较大的延时。8.2 软件电路仿真调试按照程序,在Proteus软件中连接电路,选用LPC2138芯片,P0.21连接示波器,P0.20连接按键并接上上拉电阻,选用LCD240128作LCD显示模块,将keil中生成的.HEX连接到芯片中。运行程序,观察示波器与LCD的显示结果。软件电路仿真中,LCD的所有端口都应接上上拉电阻,否则在接上示波器时,LCD不能正确显示。用
26、Proteus仿真LCD1602时,不能在程序中检测“忙”信号,否则会进入死循环。8.3 硬件仿真调试Magic ARM2200通过并口与电脑连接,用ARM Developer Suite v1.2软件编写程序,并下载到开发平台。由于开发平台应用的5.2寸的彩色液晶屏,在程序中则应添加该显示屏的底层驱动,调用相应的显示函数实现lcd显示。用示波器与开发平台的P0.21脚连接,通过按键改变PWM的占空比,观察示波器与LCD显示,并在LCD上显示周期。图8波形图图9 LCD显示8.4分析 通过设置PWM5为单边沿控制PWM输出,PWM周期由匹配寄存器0控制,当匹配寄存器0匹配时,PWM5输出高电平
27、,PWM占空比由匹配寄存器5控制,当匹配寄存器5匹配时,PWM5输出低电平。然后当检测到按键按下的时候PWM锁存器更新一次,得到改变的高电平,并显示在LCD上和示波器上,每按下一次按键高电平就改变一次,并在1ms-9ms循环改变。9.结束语 在这次三周的嵌入式课程设计中,经过我们我组成员的共同努力,并在老师的细心指导下,我们成功实现了“通过按键改变PWM波的高电平,使其在1ms-9ms之间循环改变,并在LCD上显示高电平的改变和周期值”的课程设计要求。 在这过程中,我们都收获颇丰,从上学期学习ARM嵌入式系统这门课程开始,到这学期进行嵌入式课程设计结束,我们将以往书本上的知识成功应用到实践中去了,并且我们也对keil、proteus、ADS等软件进一步熟悉,掌握得更加牢固,对LPC2000系列ARM7的芯片有所了解,并可以初步的去运用它做一些小的程序编写;同时也发现个人能力还不足,还需更加努力地学习,特别是在编程方面还需要提高和进步,希望自己能再接再厉,不断提高个人能力。10.参考文献1ARM嵌入式系统基础教程 周立功 主编 北京航空航天大学出版社2008.9251单片机典型应用开发范例大全刘坤 主编 中国铁道出版社 2011.10
链接地址:https://www.31ppt.com/p-2392424.html