嵌入式系统实训 (论文)说明书基于嵌入式ARM的PWM信号发生器

上传人:痛*** 文档编号:146254106 上传时间:2022-08-30 格式:DOC 页数:24 大小:231.97KB
收藏 版权申诉 举报 下载
嵌入式系统实训 (论文)说明书基于嵌入式ARM的PWM信号发生器_第1页
第1页 / 共24页
嵌入式系统实训 (论文)说明书基于嵌入式ARM的PWM信号发生器_第2页
第2页 / 共24页
嵌入式系统实训 (论文)说明书基于嵌入式ARM的PWM信号发生器_第3页
第3页 / 共24页
资源描述:

《嵌入式系统实训 (论文)说明书基于嵌入式ARM的PWM信号发生器》由会员分享,可在线阅读,更多相关《嵌入式系统实训 (论文)说明书基于嵌入式ARM的PWM信号发生器(24页珍藏版)》请在装配图网上搜索。

1、编号: _嵌入式系统 实训 (论文)说明书题 目:基于嵌入式ARM的PWM信号发生器摘 要脉宽控制技术(PWM)简称脉宽调制,是非常重要的电力电子控制技术,利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,对提高电力电子装置的性能,促进电力电子技术的发展有着巨大的推动作用。本系统主要介绍了基于LPC2132的PWM信号发生器制作系统,主要功能是对PWM输出波形的频率、占空比的连续调节,并能对运行信号参数用示波器进行实时显示。电路主要分为三个模块,核心模块采用LPC2138中央控制单元,通道选择模块,键盘控制模块采用了五个按键控制,分别调节PWM信号的占空比加和减、频率的加和减、输

2、出PWM通道选择。经测试验证,该信号发生器便于观察和调节,控制精确误差小。关键词: LPC2132;PWM;按键;占空比;频率AbstractPulse width control technology (PWM) referred to pulse width modulation, is very important power electronic control technology, the use of the microprocessor digital output to to the analog circuit to control a very effective tec

3、hnology, to improve the performance of the power electronic devices, and promote the development of the power electronic technology has a great push forward.This system mainly introduces the LPC2132 PWM signal generator based on the production system, the main function is to the output waveform, the

4、 frequency PWM occupies emptiescompared to continuous adjustment, and can run with an oscilloscope to signal parameter real-time display. Circuit can be divided into three modules, the core module LPC2138 central control unit, channel selection module, the keyboard control module adopted five key co

5、ntrol, regulate PWM signal occupies emptiescompared to add and subtract, frequency of addition and subtraction, output PWM channel selection. The results of experiment, this signal generator for observation and regulation, control precise small error.Key words: LPC2132; PWM; Button; Occupies empties

6、compared; frequency20目 录引言11 系统设计11.1 设计要求11.2 方案的选择11.3 系统设计21.4 工作原理22 硬件设计32.1 LPC2132芯片说明32.1.1LPC2132主要特性32.1.2LPC2138管脚32.2 PWM模块42.2.1PWM特性42.2.2PWM基本原理52.2.3PWM相关寄存器53 软件设计63.1 系统整体设计63.2 键盘驱动程序设计83.3 PWM输出通道的选择94 整机调试104.1 静态调试104.2 动态调试114.3 数据的测量和计算114.3.1占空比计算114.3.2信号频率误差计算115 结论12附 录15

7、引言脉冲宽度调制是现代控制技术常用的一种控制信息输出,可以有效地利用数字技术控制模拟信号的技术。PWM(Pulse Width Modulation)又称脉冲宽度调制,属于脉冲调制的一种,是应用于电子信息系统和通信领域的一种信号变换技术。随着电力电子技术被引入到电力变换领域,PWM技术广泛运用于各种工业电力传动领域乃至家电产品中。其突出特点是可以比较容易地选择最佳的脉冲调制频段,因此,被竞相开发,前景广阔。PWM控制技术以其控制简单、灵活和动态响应好的优点而成为电力电子技术最广泛应用的控制方式,也是人们研究的热点。PWM控制技术一直是变频技术的核心技术之一,由于PWM可以同时实现变频变压反抑制

8、谐波的特点,在交流传动及至其它能量变换系统中得到广泛应用。目前实现方法为采用全数字化方案,完成优化的实时在线的PWM信号输出。由于当今科学技术的发展已经没有了学科之间的界限,结合现代控制理论思想或实现无谐振软开关技术将会成为PWM控制技术发展的主要方向之一。脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。本文主要介绍了PWM信号发生器的概念、作用及定义,分析了系统的工作原理和软硬件的设计。主要

9、是以LPC2132为核心控制单元,通过对外围电路芯片的设计实现PWM输出波形的频率、占空比的连续调节,达到产生PWM信号目的。1 系统设计本系统主要是基于LPC2132的PWM信号发生器制作系统,该电路主要分为LPC2132中央控制模块、键盘控制模块、PWM通道选择三部分。IPC2132是整个电路的核心部分,按键主要是控制界面达到友好的人机交流,最后提供三个PWM输出通道的选择。1.1 设计要求(1)输出三路及以上PWM信号(2)PWM信号频率(周期)可调。(3)PWM信号相位差可调。(4)PWM信号频率误差100HZ。1.2 方案的选择方案一:可采用传统的PWM控制电路专用集成芯片或中小规模

10、的数字集成电路来做PWM信号发生器。但是传统的集成电路频率低,可控性差,调试难度大。方案二、随着微电子技术和大规模可编程器件的发展,PWM在电机调速中的应用越来越广泛。ARM与传统 PWM控制电路中使用的用集成芯片或中小规模的数字集成电路相比而言,具有体积更小、通用性更强、响应更快、可通过编程改良其功能等优点,能达到的频率范围指标更广。所以,综合考虑后,本次设计选择LPC2132作为电路的核心部件,这样既达到题目的设计要求,也更方便检测调试。1.3 系统设计本次设计基于嵌入式ARM的PWM信号发生器。电路用USB接口为电源,程序从下载口直接接入LPC2132嵌入式核心芯片,PWM输出可选用三路

11、输出通道中的一个来显示波形,并用到PWM专用的标准定时器还有匹配器来锁存数据等,可以达到友好的人机交流界面。总的系统设计原理方框图如图1.1所示。示波器显示波形PWM通道选择按键控制产生PWM信号LPC2132核心控制芯片电源程序下载图1.1 总系统设计原理框图1.4 工作原理脉宽调制(PWM)控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。PWM信号发生器通过LPC2132对各模块和定时/计数器、锁存器的控制,其脉宽调制器建立在标准定时器之上,可在 PWM 和匹配功能当中进行选择。本次采用软件编程控制的方法,通过改变给其内

12、部计数器的写入值产生一系列幅值相等而宽度不等的脉冲,再通过一整形电路,产生规则的PWM脉冲波形,改变的计数器初值是通过程序的改变实现的,而PWM的输出通道选择,波形频率的改变以及其占空比的改变是通过按键程序实现,最后通过示波器显示相应的波形参数。2 硬件设计本系统主要由嵌入式ARM芯片LPC2132构成,PWM信号由示波器显示。2.1 LPC2132芯片说明LPC2132是PHILIPS公司生产的单片32位ARM微控制器,是基于一个支持实时仿真和跟踪的16/32位ARM7TDMI-S CPU,并带有256KB的嵌入的高速FLASH存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够

13、在最大时钟速率下运行。对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30%,而性能的损失却很小。2.1.1LPC2132主要特性(1)16/32位ARM7TDMI-S核,超小LQFP64封装。8/16/32kB的片内静态RAM和 32/64/128/256/512kB的片内Flash程序存储器。128位宽度接口/加速器可实现高达60MHz工作频率。(2)通过片内boot装载程序实现在系统编程/在应用编程(ISP/IAP)。单个Flash扇区或整片擦除时间为400ms。256字节行编程时间为1ms。(3)1个(LPC2131/32)或2个(LPC2134/36/38)8路

14、10位的A/D转换器,共提供16路模拟输入,每个通道的转换时间低至2.44us。(4)1个10位的D/A转换器,可产生不同的模拟输出。(LPC2132/34/36/38)。(5)2个32位定时器/外部事件计数器(带 4 路捕获和 4 路比较通道)、PWM 单元(6 路输出)和看门狗。(6)低功耗实时时钟具有独立的电源和特定的 32kHz 时钟输入。(7)多个串行接口,包括 2 个 16C550 工业标准 UART、2 个高速 I2C 总线(400 kbit/s)、SPI 和具有 缓冲作用和数据长度可变功能的SSP。(8)向量中断控制器。可配置优先级和向量地址。(9)低功耗模式:空闲和掉电。(1

15、0)可通过个别使能/禁止外部功能和外围时钟分频来优化功耗。(11)通过外部中断或 BOD 将处理器从掉电模式中唤醒。(12)单电源,具有上电复位(POR)和掉电检测(BOD)电路:CPU 操作电压范围:3.0V3.6 V (3.3 V 10),I/O 口可承受 5V 的电压。2.1.2LPC2138管脚本次PWM设计只用到了LPC2132中的一些管脚,用于输出PWM信号,以及按键控制。其中PWM管脚汇总如下表2.1所示:表2.1 PWM管脚汇总管脚名称管脚方向管脚描述PWM 1输出PWM通道1输出PWM 2输出PWM通道2输出PWM 3输出PWM通道3输出PWM 4输出PWM通道4输出PWM

16、5输出PWM通道5输出PWM 6输出PWM通道6输出基本上PWM1 不能用作双边沿输出。而用PWM通道3 和通道5 作为双边沿PWM输出,这样会减少可用的双边沿PWM的个数,故通常不建议使用。所以本次设计的PWM的输出用到LPC2132 的P0.7,P0.8,P0.9 管脚,分别作为PWM2,PWM4,PWM6 输出通道,可得到最多个数的双边沿PWM 输出。P0.7 脉宽调制器输出2。P0.8 PWM4 脉宽调制器输出4。P0.9 PWM6 脉宽调制器输出6。2.2 PWM模块LPC2132的脉宽调制器建立在标准定时器0/1之上,应用可在PWM和匹配功能当中进行选择。PWM基于标准的定时器模块

17、并具有其所有特性。不过LPC2131/2132/2138只将其PWM 功能输出到管脚。定时器对外设时钟(pclk)进行计数,可选择产生中断或基于7个匹配寄存器,在到达指定的定时值时执行其它动作。PWM功能是一个附加特性,建立在匹配寄存器事件基础之上。2.2.1PWM特性PWM脉宽调制,是靠改变脉冲宽度来控制输出电压,通过改变周期来控制其输出频率。PWM 基于标准的定时器模块并具有其所有特性。不过LPC2131/2132/2138 只将其PWM 功能输出到管脚。定时器对外设时钟(pclk)进行计数,可选择产生中断或基于7 个匹配寄存器,在到达指定的定时值时执行其它动作。它还包括4 个捕获输入,用

18、于在输入信号发生跳变时捕获定时器值,并可选择在事件发生时产生中断。独立控制上升和下降沿位置的能力使 PWM 可以应用于更多的领域。两个匹配寄存器可用于提供单边沿控制的 PWM 输出。一个匹配寄存器(PWMMR0)通过匹配时重新设置计数值来控制PWM 周期率。另一个匹配寄存器控制PWM 边沿的位置。每个额外的单边沿控制PWM输出只需要一个匹配寄存器,因为所有PWM 输出的重复率速率是相同的。多个单边沿控制PWM 输出在每个PWM 周期的开始,当PWMMR0 发生匹配时,都有一个上升沿。使用双边沿控制 PWM 输出时,指定的匹配寄存器控制输出的上升和下降沿。这样就产生了正脉冲和负脉冲。2.2.2P

19、WM基本原理脉宽调制(PWM)控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次斜波谐波少。按一定的规则对各脉冲的宽度进行调制,即可改变逆变电路输出电压的大小,也可改变输出频率。在采样控制理论中有一个重要的结论,即冲量相等而形状不同的窄脉冲加在具有惯性的环节上,其效果基本相同。冲量既指窄脉冲的面积。这里所说的效果基本相同。是指该环节的输出响应波形基本相同。如把各输出波形用傅里叶变换分析,则它们的低频段特性非常接近,仅在高频段略有差异。

20、根据上面理论我们就可以用不同宽度的矩形波来代替正弦波,通过对矩形波的控制来模拟输出不同频率的正弦波。例如,把正弦半波波形分成N等份,就可把正弦半波看成由N个彼此相连的脉冲所组成的波形。这些脉冲宽度相等,都等于n,但幅值不等,且脉冲顶部不是水平直线,而是曲线,各脉冲的幅值按正弦规律变化。如果把上述脉冲序列用同样数量的等幅而不等宽的矩形脉冲序列代替,使矩形脉冲的中点和相应正弦等分的中点重合,且使矩形脉冲和相应正弦部分面积(即冲量)相等,就得到一组脉冲序列,这就是PWM波形。可以看出,各脉冲宽度是按正弦规律变化的。根据冲量相等效果相同的原理,PWM波形和正弦半波是等效的。对于正弦的负半周,也可以用同

21、样的方法得到PWM波形。在PWM波形中,各脉冲的幅值是相等的,要改变等效输出正弦波的幅值时,只要按同一比例系数改变各脉冲的宽度即可,因此在交直交变频器中,整流电路采用不可控的二极管电路即可,PWM逆变电路输出的脉冲电压就是直流侧电压的幅值。2.2.3PWM相关寄存器寄存器的功能理解:1. IODIR当对应的位设置为1,为输出,否则为输入2. IOSET当引脚作为输出时,相应的位为1,则输出高电平;写0无效3. IOCLR当引脚作为输出时,相应的位为1,则输出低电平;写0无效4. IOPIN用于检测GPIO的引脚的电平状态软件设计PWM使用方法总结: 配置相应的引脚工作于PWM模式下,相关寄存器

22、为PINSEL0和PINSEL1; 初始化PWM的定时器相关寄存器,用于产生PWM周期以及PWM的占空比;相关寄存器为:1. PWMPR、PWMPC用于PWM定时器的预分频配置2. PWMTC用于PWM定时器的计数3. PWMMR0用于配置PWM的周期4. PWMMR1PWMMR6用于配置PWM的占空比5. PWMMCR用于控制PWMMR0PWMMR6的操作6. PWMTCR用于PWM定时器的使能和PWM的使能 配置PWM的输出方式和引脚使能输出,相关寄存器为PWMPCR; 通过PWMLER使能PWMMR0PWMMR6的值设置有效;系统的主程序主要完成输出3路PWM信号,并由按键来控制调节。当

23、 PWM 匹配寄存器用于产生PWM 时,PWM 锁存使能寄存器用于控制PWM 匹配寄存器的更新。当定时器处于PWM 模式时如果软件对PWM 匹配寄存器位置执行写操作,写入的值将保存在一个映像寄存器中。当PWM 匹配0 事件发生时(在PWM 模式下,通常也会复位定时器),如果对应的锁存使能寄存器位已经置位,那么映像寄存器的内容将传送到实际的匹配寄存器中。此时,新的值将生效并决定下一个PWM周期。当发生新值传送时,LER 中的所有位都自动清零。在PWMLER 中相应位置位和PWM 匹配0 事件发生之前,任何写入PWM 匹配寄存器的值都不会影响PWM 操作。3 软件设计3.1 系统整体设计电路输出三

24、路PWM信号,分别从LPC2138的P0.7、P0.8、P0.9管脚输出。按键S1-S5分别控制PWM信号的周期,占空比以及是哪一路PWM信号输出。由设计要求,可分析得出程序设计一共有以下几个模块:(1)初始化程序设计,即初始化LPC2132芯片,设置P0.7、P0.8、P0.9为输出管脚。(2)PWM信号发生设计,初始化LPC2132后,要开启PWM的专用定时器,通过它的匹配功能来产生PWM信号。(3)变量控制,产生PWM信号后,要通过按键来调节PWM信号的周期和占空比。(4)屏幕显示,产生PWM信号,送至示波器显示。总体软件设计流程图如图3.1所示。扫描按键选择PWM2信号输出通道选择PW

25、M4信号输出通选择PWM6信号输出通开始程序初始化设置PWM寄存器产生PWM信号扫描按键S1?按下1次S1?按下2次S1?按下3次S1?S2?S3?S4?S5?信号周期增大信号周期减小信号占空减小信号占空增大示波器显示 N Y N N N N Y Y Y Y图3.1总体软件设计流程图总结:1 修改匹配寄存器之后,必须设置锁存使能寄存器中的相应位,否则匹配寄存器的值不能生效。2 第一次使能之后还要等到匹配才能装入MR0和MR1所以要出现连续的波形,必须使用两次3.2 初始化程序流程图3.2 键盘驱动程序设计图3.2 PWM信号发生器按键功能各按键功能如下:1. 开启电源,各模块初始化。将示波器的

26、探头接到芯片P0.7、P0.8、P0.9其中一路输出上,可以分别看到P0.7、P0.8和P0.9管脚的三路信号,表示电路工作正常。2. 按下S1键1次,则按键修改功能作用于P0.7管脚输出的PWM信号,即第1路PWM信号,再按S1键1次,则按键修改功能作用于P0.8管脚输出的PWM信号,即第2路PWM信号。按下第3次按键,则按键修改功能作用于P0.9管脚输出的PWM信号,即第3路PWM信号。3. 按下S2键,可以看到示波器上显示的PWM信号占周期增大。4. 按下S3键,可以看到示波器上显示的PWM信号占周期减小。5. 按下S4键,可以看到示波器上显示的PWM信号的占空减小。6. 按下S5键,可

27、以看到示波器上显示的PWM信号的占空增加。按键的程序如下所示:1. 周期加减if(IO0PIN & (1 SW_2) = 0) /周期+ delayns(100);if(IO0PIN & (1 SW_2) = 0)cycletime+;while(IO0PIN & (1 SW_2)=0); if(IO0PIN & (1 SW_3) = 0) / 周期- delayns(100); if(IO0PIN & (1 SW_3) = 0)cycletime-; while(IO0PIN & (1 SW_3)=0);2. 占空加减if(IO0PIN & (1 SW_5) = 0)&(mr1pleve=c

28、ycletime) /占空+ delayns(100);if(IO0PIN & (1 SW_5) = 0)&(mr1pleve=cycletime)mr1pleve+; while(IO0PIN & (1 SW_5)=0); else if(IO0PIN & (1 =1) /占空- delayns(100);if(IO0PIN & (1 =1)mr1pleve-;while(IO0PIN & (1 SW_4)=0);break;3.3 PWM输出通道的选择图3.3 PWM输出通道的选择本次设计可以输出三路PWM信号,分别从LPC2138的P0.7、P0.8、P0.9管脚选择输出。当选择相应的输

29、出时,对应的LED灯就会发亮,证明电路已接通,可以用示波器测试相应输出通道的波形。程序如下所示:void key_scan(void) if(IO0PIN & (1 SW_1) = 0)delayns(100); if(IO0PIN & (1 =4)channelcount=1; while(IO0PIN & (1 SW_1)=0); 4 整机调试整机调试分为静态调试和动态调试,动态调试中还包括对软件的调试,即对程序的修改。调试完成后,进行数据的记录。4.1 静态调试静态调试即不装上单片机芯片的调试,一块电路板做好后首先要进行静态调试。静态调试即不装上芯片的调试,将制作好的PCB板,按照装配图

30、或原理图进行器件装配,装配好之后进行电路的调试。一块电路板做好后首先要进行静态调试。(1)电路板的检查首先用万用表检查电路板有无虚焊点、断路或短路。在装配焊接过程中,在焊点接近的地方,很容易出现连焊或者残留焊锡而造成的短路情况。如发现上述情况,应马上解决,以免影响调试。本次对电路板的检查没有发现大问题,焊点无虚焊,无短路。(2)元件装配的检查在组装电路板时,很可能出现元件错装的情况,特别是芯片,很容易装反,调试前要对照原理图反复核对。未通电前要对芯片以及一些元器件进行检测。这次设计中用到的LED灯因为用前未检测,导致后面调试过程中lED灯一直不亮,最后发现LED灯是坏的,浪费了调试时间。(3)

31、通电检查以上两项准备工作完成后,可以进行通电检查。方法是先将万用表电流档串联在电源和所测电路板之间,观察电路总静态电流的大小。若发现电流过大,说明电路可能有短路;电流过小或无电流,表示电路存在断路。遇到上述情况,必须要先排除故障,才能进行调试。通电后注意在各点上是否都加上了所需要的电压,特别是芯片的电压,因为如果加在芯片上的电压低了,就会达不到理想的效果,如果高了就很容易烧掉芯片。若接线正确,则电路板上的芯片不会发热,且能在示波器上显示基本波形。上电以后一旦发现芯片发热,马上断开电源,停止供电。4.2 动态调试软件的调试主要是围绕着其所要求的功能来做的,要对程序的流程和算法做调整。变量的定义,

32、子函数的声明和主程序的执行等都要认真的进行检查修改。软件的调试相当重要且繁琐,这花费了很多的时间。调试程序,主要是管脚的定义有问题。本次设计在装上芯片并从电脑烧录程序到2132中就开始进行功能检测,并将程序下载到2132中。调试过程中遇到的基本问题的波形能够出来但不是稳定。通过对程序的重新认识,发现程序中的某个地方发生死循环了,使得波形频率的加减不能改变。最后经过对方案的考虑后,对程序做了一定的修改,最终将题目要求中的基本功能实现了。当大体上完成了功能的编程以后,最后就是对算法的细节处理上进行调整和优化。软件调好后,动态调试就结束了。按照这个方法,调试其他路的PWM信号。至此,PWM信号发生器

33、的调试完毕。4.3 数据的测量和计算4.3.1占空比计算例如,选择第1路PWM信号进行测量。可以通过软件编译设置初始值,如周期MR0=100,低电平MR1=20,高电平MR2=60,则其占空比为:观看示波器上的方波,测量数值,可得周期T=8,12us,高电平=4.9us,则由此可以看出,输出的波形是正确的,且误差不大。4.3.2信号频率误差计算LPC2138PWM的晶振频率,软件设定,则理论PWM的输出频率为: 观察示波器,屏幕显示实际频率f1=1.0009KHZ,则误差 = f - f1 = 90HZ误差在100HZ以内,符合题目要求。5 结论通过两个星期的学习和努力,我终于完成了本次实训课

34、题基于嵌入式PWM信号发生器的制作。总结本次嵌入式系统设计实训,我受益匪浅。首先是选题,当拿到题目的时候确实不知道选什么。嵌入式是本学期才开设的一门课程,之前我都没有接触过,虽然如此,嵌入式编程也是运用C语言,跟单片机类似,只是芯片不同,对管脚的定义运用不一样。本次实训题目有三种类型,对于嵌入式不是很懂的我,本想选择C类,但为了给自己一些挑战增加学习的机会,我最终选择了B类题目。对于PWM的设计,印象中ARM嵌入式课本中有学习到,所以选定了这个题目。选好题目后我开始查阅资料,了解2132的应用,通过查阅资料并向那些参赛同学咨询相关问题了解到了这方面的知识,最终我也弄明白了PWM信号产生的原理。

35、在调试电路的时候,遇到的问题很多。刚开始的时候,我首先把ARM中的指令看懂。至于按键这一部分比较容易的,主要是逻辑思维要清晰,不要现在死循环中就可以了。由于我是第一次嵌入式芯片,刚开始调试都是从电路的最前面一点一点测试工作点的电压值,以及当输入电压变化的时候每块芯片的输入输出端应有的变化,每一部分电路都应实现自己的功能,才能得出最终的结果,达到目标。电路板做好后就把程序下载进去。仿真毕竟和实物是有区别的,所以程序下载进去后有波形输出,但是按键控制不了。接下来就是检查电路,确定硬件没问题后就开始调试程序。这期间花费了不少时间。一个模块一个模块的检查程序,最后在其他同学的帮助下发现时程序按键部分陷

36、入死循环了,经过修改后,最终获得了成功。这次嵌入式实训我还是学到了很多东西的,更重要的是学会了程序出问题时调试的方法,并养成了遇到困难主动独立寻找解决方案的信心和技巧。关于ARM的指令系统我更是了解颇多,知道了如何设置相应的IO口为GPIO口,如何设置相应管脚为输出、输入口,IO的位定义如何实现等等。通过这次课程设计使我懂得了理论与实际相结合是很重要的,要提高自己的实际动手能力和独立思考的能力。无论我选择什么题目,无论题目是难事易,只要我能从中得到知识,就应该大胆的去做,遇到不懂的地方就要大胆的去问问题,只有勤学好问,才能学到东西。尽管翻阅数据的过程是痛苦的,尽管求学的历程是艰辛的,只要我努力

37、了,就一定会有回报!总体来说,本次实训是通过自己的努力做出的电路板,经过一次次调试,最后能够达到设计的要求,我觉得只要肯用心,有付出就会有收获的。谢 辞时间过得真快,两个星期的实训即将过去,本次实训为基于ARM嵌入式实训,这次实训得以顺利完成首先要感谢实训中给予我悉心指导和帮助的各位老师。在调试过程中遇到问题时,老师提出了宝贵的解决方法,感谢老师们孜孜不倦的教导。老师们严谨的工作作风、渊博的知识和务实的工作态度,都使我们受益匪浅。在这里我们无法用准确生动的语言来淋漓尽致地描述自己的真实感受,只想说一声:老师,你们辛苦了!与此同时,我还得到了身边同学们的真心帮助,他们在我遇到问题的时候总是耐心给

38、我讲解,在我们调试的时候解决了很多问题,在此,我对他们表示由衷的感谢!同时也要感谢学院给我们提供了那么好的一次动手机会,使我受益匪浅,从中使我在很短的时间里学到了很多书本上没有的知识,而且让我对以前学过的知识有了更深刻的印象,同时也发现自己所学知识中存在的一些缺陷,并在我们实训过程中为我们提供了动手的场地与器材,是它们让我有了更多的空间去学习,让我们有了更多锻炼的机会,学到了更多的知识。因而我还要感谢学校,感谢学校安排实训这个课程,感谢学校为了让每个同学在实训中能够学有所成动有所得而做的努力。最后再次感谢所有在整个实训期间对我提供过帮助和鼓励的老师,同学们,在这里请接受我诚挚的谢意!参考文献1

39、 崔更申 孙安青.ARM嵌入式系统开发与实践M.北京:中国电力出版社,20082 欧阳禹.ARM7嵌入式系统实训教程.北京:清华大学出版社,2008. 3 何加铭.嵌入式32位微处理器系统设计与应用M.北京:电子工业出版社,20064 杨宗德.嵌入式ARM系统原理与实例开发M.北京:北京大学出版社,2007 5 刘天时.ARM7嵌入式开发基础实验M.北京:北京航空航天大学出版社,20076 张绮文.ARM 嵌入式常用模块与综合系统设计实例精讲.北京:电子工业出版社,2007.附 录附录一 电路原理图附录二 部分源程序代码#include #define SW_1 (17)#define SW_

40、2 (16)#define SW_3 (14)#define SW_4 (30)#define SW_5 (15)#define led1 (2)#define led2 (4)#define led3 (6)#define led1_on IO0SET |= (1 led1)#define led2_on IO0SET |= (1 led2)#define led3_on IO0SET |= (1 led3)#define led1_off IO0CLR |= (1 led1)#define led2_off IO0CLR |= (1 led2)#define led3_off IO0CLR

41、 |= (1 led3 )unsigned int cycletime=150,mr1pleve=25,mr2nleve=75,mr3pleve=20,mr4nleve=80,mr5pleve=15,mr6nleve=85;unsigned int channelcount=1;void delayns (long t) while(t-); void key() char temp; temp=cycletime; if(IO0PIN & (1 SW_2) = 0)temp+; while(IO0PIN & (1 SW_2)=0);if(IO0PIN & (1 SW_5) = 0) temp

42、-; while(IO0PIN & (1 SW_5)=0); cycletime=temp; void key_scan(void) if(IO0PIN & (1 SW_1) = 0)delayns(100); if(IO0PIN & (1 =4)channelcount=1; while(IO0PIN & (1 SW_1)=0); if(IO0PIN & (1 SW_2) = 0) /周期+ delayns(100);if(IO0PIN & (1 SW_2) = 0)cycletime+;while(IO0PIN & (1 SW_2)=0); if(IO0PIN & (1 SW_3) = 0

43、) / 周期- delayns(100); if(IO0PIN & (1 SW_3) = 0)cycletime-; while(IO0PIN & (1 SW_3)=0);switch(channelcount) case 1: if(IO0PIN & (1 SW_5) = 0)&(mr1pleve=cycletime) delayns(100);if(IO0PIN & (1 SW_5) = 0)&(mr1pleve=cycletime)mr1pleve+; while(IO0PIN & (1 SW_5)=0); else if(IO0PIN & (1 =1) delayns(100);if(

44、IO0PIN & (1 =1)mr1pleve-;while(IO0PIN & (1 SW_4)=0);break; case 2: if(IO0PIN & (1 SW_5) = 0)&(mr3pleve=cycletime) delayns(100); if(IO0PIN & (1 SW_5) = 0)&(mr3pleve=cycletime)mr3pleve+;while(IO0PIN & (1 SW_5)=0);else if(IO0PIN & (1 =1) delayns(100); if(IO0PIN & (1 =1)mr3pleve-;while(IO0PIN & (1 SW_4)

45、=0);break; case 3: if(IO0PIN & (1 SW_5) = 0)&(mr5pleve=cycletime)delayns(100); if(IO0PIN & (1 SW_5) = 0)&(mr5pleve=cycletime) mr5pleve+;while(IO0PIN & (1 SW_5)=0); else if(IO0PIN & (1 =1) delayns(100); if(IO0PIN & (1 =1)mr5pleve-;while(IO0PIN & (1 SW_4)=0);break; int main(void)channelcount=1;IO0DIR

46、&= (0 SW_1);IO0DIR &= (0 SW_2);IO0DIR &= (0 SW_3);IO0DIR &= (0 SW_4);IO0DIR &= (0 SW_5);IO0DIR |=(1led1);IO0DIR |=(1led2);IO0DIR |=(1led3);IO0SET |= (1 SW_1);IO0SET |= (1 SW_2);IO0SET |= (1 SW_3);IO0SET |= (1 SW_4);IO0SET |= (1 SW_5);IO0CLR |= (1 led1);IO0CLR |= (1 led2);IO0CLR |= (1 led3);PINSEL0 |

47、= 0x000A8000;/设置P0.7、P0.8、P0.9为三路PWM信号输出管脚 PWMPR = 0x00000001;/Load prescalerPWM 预分频器 2分频系统时钟 PWMPCR = 0x0005454;/开启PWM2、PWM4、PWM6双边沿通道 PWM控制寄存器 为了得到最多的双边沿PWM 只能选择2 4 6PWMMCR = 0x00000002;/匹配控制寄存器 使用PWMMR0的值作为周期 使计数器匹配复位 PWMMR0 = cycletime; /设置周期作为变量/下面为设置匹配寄存器PWMMR1 = 0x00000080;/PWM2的上升沿控制通道MR1PWM

48、MR2 = 0x00000080;/PWM2的下降沿控制通道MR2PWMMR3 = 0x00000080;/PWM2的下降沿控制通道MR3PWMMR4 = 0x00000080;/PWM2的下降沿控制通道MR4PWMMR5 = 0x00000080;/PWM2的下降沿控制通道MR5PWMMR6 = 0x00000080;/PWM2的下降沿控制通道MR6PWMLER = 0x0000007f;/enable shadow latch for match 0 - 2 PWMTCR = 0x00000002;/计数器复位 PWMTCR = 0x00000009;/ 1001 计数器使能 PWM使能P

49、WMTCR = 0x00000009;/ 1001 计数器使能 PWM使能PWMTCR = 0x00000009;/ 1001 计数器使能 PWM使能/*总结: 1 修改匹配寄存器之后,必须设置锁存使能寄存器中的相应位,否则匹配寄存器的值不能生效。 2 第一次使能之后还要等到匹配才能装入MR0和MR1所以要出现连续的波形,必须使用两次。*/ mr1pleve=0;/ led1_on;/ led2_on;/ led3_on;while(1) switch (channelcount) case 1:led1_on; led2_off;led3_off;delayns(10);break;case

50、 2: led2_on; led1_off;led3_off;delayns(10);break; case 3:led3_on; led2_off;led1_off;delayns(10);break;default:break; / key(); key_scan(); / delayns(20);/重新赋值给PWM相关寄存器 使改变的参数得以在下一个周期实现改变 PWMMR0 = cycletime; / 注意PWM的使能和PWM数据的锁存 否则波形会丢失重新将改变值赋给PWM0作为周期PWMLER = 0x00000001;/锁存数据给下一个PWM的参数PWMMR1 = mr1plev

51、e;PWMLER = 0x00000003;PWMMR2 = mr2nleve;PWMLER = 0x00000005;PWMMR3 = mr3pleve;PWMLER = 0x00000009;PWMMR4 = mr4nleve;PWMLER = 0x00000011;PWMMR5 = mr5pleve; /Modulate PWMPWMLER = 0x00000021;/锁存数据给下一个PWM的参数PWMMR6 = mr6nleve;PWMLER = 0x00000041;PWMPCR = 0x0005454; PWMTCR = 0x00000009;/重新使能PWM 确保开启PWM输出波形 PWMTCR = 0x00000009;/enable counter and PWM PWMLER = 0x0000007f;/锁存数据给下一个PWM的参数

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!