好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

ARM的PWM输出实验报告.doc

6页
  • 卖家[上传人]:cn****1
  • 文档编号:425833054
  • 上传时间:2023-04-18
  • 文档格式:DOC
  • 文档大小:155KB
  • / 6 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 微机原理实验报告实验名称: PWM输出实验 院 系:物理与机电工程学院 专业班级: 08电子信息工程 学 号: 学生姓名: 指导教师: 完成时间: 2011-5-10 报告成绩: 一、 实验目的1、 掌握LPC2131的脉宽调制器PWM2、 掌握脉宽调制器的特性3、 了解其引脚的连接设置及结构4、 知道其寄存器功能的描述及其基本操作二、 实验设备EasyARM2131开发板、PC机、ADS1.2软件等三、 实验原理通过改变PWMMR0的值,可以改变PWM 输出的频率实验设定PWM输出单边沿PWM方波,控制蜂鸣器BEEP发声,改变PWM的频率,蜂鸣器放出不同的频率的声音,甚至可以播放音乐进行PWM音乐输出实验,需要了解一些简谱和频率的关系,在文件music.h中可以得到部分信息流程图如下:四、 实验内容及清单PWM 音乐输出实验程序:#include "config.h"#include "music.h"#define HC595_CS (1 << 29) // P0.29口为74HC595的片选const uint32 LEDS8 = (0xFF << 18); // P1[25:18]控制LED8~LED1,低电平点亮 uint8 rcv_data; /* 歌曲曲谱 - 虹彩妹妹*/const uint32 HCMM[] ={ _LA, _SO, _MI, _LA, _SO, _MI, _LA, _LA, _SO, _LA, _LA, _SO, _MI, _LA, _SO, _MI, _RE, _RE, _DO, _RE, _MI, _MI, _SO, _LA, _DO1, _LA, _SO, _MI, _MI, _SO, _DO, _MI, _MI, _MI, _MI, _MI, _1LA,_1LA,_1SO,_1LA,};/* 歌曲节拍 */const uint32 HCMM_L[] ={ _4, _8, _8, _4, _8, _8, _8, _4, _8, _2, _4, _8, _8, _4, _8, _8, _8, _4, _8, _2, _4, _8, _8, _8, _8, _8, _8, _8, _4, _8, _2, _4, _4, _4, _8, _8, _8, _4, _8, _2,};const uint32 LED_TBL[] = { 0x20,0x10,0x04,0x20,0x10,0x04, 0x20,0x20,0x10,0x20, 0x20,0x10,0x04,0x20,0x10,0x04, 0x02,0x02,0x01,0x02, 0x04,0x04,0x10,0x20,0x01,0x20,0x10, 0x04,0x04,0x10,0x10, 0x04,0x04,0x04,0x04,0x04, 0xA0,0xA0,0x90,0xA0, };const uint32 SMG_TBL[] = {0x82,0x92,0xB0,0x82,0x92,0xB0,0x82,0x82,0x92,0x82,0x82,0x92,0xB0,0x82,0x92,0xB0,0xA4,0xA4,0xF9,0xA4,0xB0,0xB0,0x92,0x82,0xF9,0x82,0x92,0xB0,0xB0,0x92,0xF9,0xB0,0xB0,0xB0,0xB0,0xB0,0xA1,0xA1, 0xC6,0xA1};void Delay(uint8 dly){ uint32 i; for(; dly > 0; dly--) for(i = 0; i < 0x7FFFF; i++);}void MSPI_Init(void){ //PINSEL0 = (PINSEL0 & 0xFFFF00FF) | 0x00005500; // 设置管脚连接SPI PINSEL0 = (PINSEL0 & (~(0xFF << 8))) | (0x55 << 8) ; SPI_SPCCR = 0x52; // 设置SPI时钟分频 SPI_SPCR = (0 << 3) | // CPHA = 0, 数据在SCK 的第一个时钟沿采样 (1 << 4) | // CPOL = 1, SCK 为低有效 (1 << 5) | // MSTR = 1, SPI 处于主模式 (0 << 6) | // LSBF = 0, SPI 数据传输MSB (位7)在先 (0 << 7); // SPIE = 0, SPI 中断被禁止}/********************************************************************************************************** 函数名称:MSPI_SendData()** 函数功能:向SPI总线发送数据。

      入口参数:data 待发送的数据** 出口参数:返回值为读取的数据********************************************************************************************************/uint8 MSPI_SendData(uint8 data){ IOCLR = HC595_CS; // 片选74HC595 SPI_SPDR = data; while( (SPI_SPSR & 0x80 ==0 )); // 等待SPIF置位,即等待数据发送完毕 IOSET = HC595_CS; return(SPI_SPDR);}/************************************************************************************************************ 函数名称 :main()** 函数功能 :PWM音乐输出实验 调试说明 :需要将music.h包含进来。

      /int main (void){ uint8 i; // IO1DIR = LEDS8; // 设置LED1控制口为输出 PINSEL0 = (0x02 << 18)|(0x55<<8); // P0.9选择PWM6功能 // 设置SPI管脚连接 PINSEL2 = PINSEL2 & (~0x08);// P1[25:16]连接GPIO IO1DIR = LEDS8; // 设置LED1控制口为输出 IO0DIR = HC595_CS; MSPI_Init(); /* PWM初始化 */ PWMPR = 0x00; // 不分频,计数频率为Fpclk PWMMCR = 0x02; // 设置PWMMR0匹配时复位PWMTC PWMPCR = 0x4000; // 允许PWM6输出,单边PWM PWMMR0 = Fpclk / 1000; PWMMR6 = PWMMR0 / 2; // 50%占空比 PWMLER = 0x41; // PWM0和PWM6匹配锁存 PWMTCR = 0x02; // 复位PWMTC PWMTCR = 0x09; // 启动PWM输出 while(1) { for(i = 0; i < 40; i++) { rcv_data=MSPI_SendData(SMG_TBL[i]); Delay(HCMM_L[i/3]); // 延时,控制播放速度 PWMMR0 = Fpclk / HCMM[i]; // 设置输出频率 PWMLER = 0x41; // 更新匹配值后,必须锁存 IO1CLR = ((LED_TBL[i]) << 18); Delay(HCMM_L[i/3]); // 延时,控制播放速度 IO1SET = ~((LED_TBL[i]) << 18); Delay(HCMM_L[i]/3); // 延时,控制播放速度*/ } } return 0;}五、 实验心得与体会通过这次实验我了解了脉宽调制器,掌握了其特性。

      了解了其引脚连接设置知道其寄存器的功能通过与数码管显示,led灯的闪烁实验结合,令我温故知新,对综合知识的运用很大的促进。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.