OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3506|回复: 0

基于lpc21系列的 pwm 播放音乐

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2019-12-19
在线时间
0 小时
发表于 2019-12-19 19:00:38 | 显示全部楼层 |阅读模式
1金钱
程序
#include "config.h"                       
#define TEMPO   8
#define _4      TEMPO*4   
#define _6     TEMPO*6     
#define _2      TEMPO*2     
#define _3     TEMPO*3     
#define _1      TEMPO*1
#define _3A     TEMPO*3/2
#define _8      TEMPO*1/2
#define _8d     TEMPO*3/4
#define _16     TEMPO*1/4
#define _16d    TEMPO*3/8
#define _32     TEMPO*1/8

#define D1    262
#define D2    294
#define D3    330
#define D4    349
#define D5    392
#define D6    440
#define D7    494

#define Z1    523
#define Z2    587
#define Z3    659
#define Z4    698
#define Z5    784
#define Z6    880
#define Z7    988

#define G1    1047
#define G2    1175
#define G3    1319
#define G4    1397
#define G5    1568
#define G6    1760
#define G7    1976

/* CAI HONG MEI MEI opern */
const unsigned int HCMM[] =
{ Z6,Z5,Z3,Z5,G1,Z6,Z5,Z6,Z3,Z5,Z6,Z5,Z3,Z2,Z1,D6,Z5,Z3,Z2,Z2,Z3,Z5,Z5,Z6,Z3,Z2,Z1,Z5,Z3,Z2,Z1,D6,Z1,D5,D5
};

const unsigned int HCMM_L[] =
{ _1, _8, _1, _1, _1, _8,_8, _1, _1, _8,_8,
         _1, _8, _8, _8, _8,        _8, _8, _4, _3A,_8, _1, _8, _8,
         _3A,_8,_4,_3A,_8,_8,_8,_8,_8, _4, _4
};


void Delay(unsigned char dly)
{ unsigned int i;
   for(; dly > 0; dly--)
      for(i = 0; i < 0x3ffff; i++);
}



int  main(void)
{ unsigned char i;

//   VICIntEnClear = 0xffffffff;
   VICVectAddr = 0;
   VICIntSelect = 0;

   PINSEL0  = 0x02 << 14;                       

   /* PWM Init */
   PWMPR    =50;                                 
   PWMMCR   = 0x02;
   PWMMR0   = 1000000 / 2000;
   PWMMR2   = PWMMR0/2 ;                            
   PWMPCR   = 0x0400;                                
   PWMLER   = 0x05;                       
   PWMTCR   = 0x02;                    
   PWMTCR   = 0x01;                  

   while(1)
    {
         for(i = 0; i < sizeof(HCMM); i++)
       { PWMMR0 = 1000000 / HCMM[i];     
         PWMLER = 0x05;                           
         Delay(HCMM_L[i]);                             
       }
    }return 0;
}


proteus仿真中能正确想一会儿,然后碰碰杂音,什么原因 怎么解决

QQ浏览器截图20191219185937.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 05:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表