21ic电子技术开发论坛 已关闭版块 Cortex-M0助学园地 菜鸟学习第四帖:用蜂鸣器播放音乐的代码
发新帖我要提问
返回列表
打印
[菜农助学交流]

菜鸟学习第四帖:用蜂鸣器播放音乐的代码

[复制链接]
4308|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaochy1126|  楼主 | 2011-9-12 19:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 gaochy1126 于 2011-9-12 20:14 编辑

#include <stdio.h>
#include "NUC1xx.h"
#include "DrvGPIO.h"
#include "DrvSYS.h"
#include "Drvtimer.h"
unsigned char n;
unsigned char  music_tab[] ={   
0x18, 0x30, 0x1C , 0x10, //格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,   
0x20, 0x40, 0x1C , 0x10,   
0x18, 0x10, 0x20 , 0x10,   
0x1C, 0x10, 0x18 , 0x40,   
0x1C, 0x20, 0x20 , 0x20,   
0x1C, 0x20, 0x18 , 0x20,   
0x20, 0x80, 0xFF , 0x20,   
0x30, 0x1C, 0x10 , 0x18,   
0x20, 0x15, 0x20 , 0x1C,   
0x20, 0x20, 0x20 , 0x26,   
0x40, 0x20, 0x20 , 0x2B,   
0x20, 0x26, 0x20 , 0x20,   
0x20, 0x30, 0x80 , 0xFF,   
0x20, 0x20, 0x1C , 0x10,   
0x18, 0x10, 0x20 , 0x20,   
0x26, 0x20, 0x2B , 0x20,   
0x30, 0x20, 0x2B , 0x40,   
0x20, 0x20, 0x1C , 0x10,   
0x18, 0x10, 0x20 , 0x20,   
0x26, 0x20, 0x2B , 0x20,   
0x30, 0x20, 0x2B , 0x40,   
0x20, 0x30, 0x1C , 0x10,   
0x18, 0x20, 0x15 , 0x20,   
0x1C, 0x20, 0x20 , 0x20,   
0x26, 0x40, 0x20 , 0x20,   
0x2B, 0x20, 0x26 , 0x20,   
0x20, 0x20, 0x30 , 0x80,   
0x20, 0x30, 0x1C , 0x10,   
0x20, 0x10, 0x1C , 0x10,   
0x20, 0x20, 0x26 , 0x20,   
0x2B, 0x20, 0x30 , 0x20,   
0x2B, 0x40, 0x20 , 0x15,   
0x1F, 0x05, 0x20 , 0x10,   
0x1C, 0x10, 0x20 , 0x20,   
0x26, 0x20, 0x2B , 0x20,   
0x30, 0x20, 0x2B , 0x40,   
0x20, 0x30, 0x1C , 0x10,   
0x18, 0x20, 0x15 , 0x20,   
0x1C, 0x20, 0x20 , 0x20,   
0x26, 0x40, 0x20 , 0x20,   
0x2B, 0x20, 0x26 , 0x20,   
0x20, 0x20, 0x30 , 0x30,   
0x20, 0x30, 0x1C , 0x10,   
0x18, 0x40, 0x1C , 0x20,   
0x20, 0x20, 0x26 , 0x40,   
0x13, 0x60, 0x18 , 0x20,   
0x15, 0x40, 0x13 , 0x40,   
0x18, 0x80, 0x00 ,  
};
void Timer0_Callback(void)
{
n--;
}

int main (void)
{
unsigned char p,m,flag;   //m为频率常数变量   
  unsigned char i=0;
UNLOCKREG();               
    SYSCLK->;PWRCON.XTL12M_EN = 1;         
    DrvSYS_Delay(5000);              

DrvTIMER_Init();

/*定时器初始化函数*/

DrvSYS_SelectIPClockSource(E_SYS_TMR0_CLKSRC,0);

/*TIMER0 时钟源选择:000 =外部12MHz 晶振 、001 =外部 32KHz 晶振 、010 = HCLK 、011 = 外部触发时钟 、1xx =内部 22MHz 振荡器 */

DrvTIMER_Open(E_TMR0,100,E_PERIODIC_MODE);

/*设定定时器 tick 周期并且启动定时器:定时器通道 TMR0 每秒1次 周期模式*/

DrvTIMER_SetTimerEvent(E_TMR0,1,(TIMER_CALLBACK) Timer0_Callback,0);

/* 隔1个tick执行事件,parameter3-事件处理函数指针,4-传递参数*/

DrvTIMER_EnableInt(E_TMR0); //使能定时器中断

DrvTIMER_Start(E_TMR0); //启动定时器



DrvGPIO_Open(E_GPB, 10, E_IO_OUTPUT);         //  设置GPB10端口为输出模式
// DrvGPIO_ClrBit(E_GPB, 10);            //  清GPB10端口  蜂鸣器不叫唤

play:   
   while(1)   
    {   
    a: p=music_tab;   
       if(p==0x00)       { i=0;DrvSYS_Delay(1000000); goto play;}     
       else if(p==0xff)  { i=i+1;DrvSYS_Delay(100000);DrvTIMER_DisableInt(E_TMR0); goto a;}      
            else         {m=music_tab[i++];n=music_tab[i++];}      
    DrvTIMER_EnableInt(E_TMR0); //使能定时器中断
DrvTIMER_Start(E_TMR0); //启动定时器
     while(n!=0)
     {
     if (flag) DrvGPIO_ClrBit(E_GPB, 10);
     else
     DrvGPIO_SetBit(E_GPB, 10);
     DrvSYS_Delay(3*m);
      flag=~flag;
     }
  DrvTIMER_DisableInt(E_TMR0);                          
    }      
               
  

}

大家可以试试效果如何,好的话给接力下!
第二个例程--音乐.zip (2.5 MB)

相关帖子

沙发
gaochy1126|  楼主 | 2011-9-12 19:16 | 只看该作者
自己做沙发

使用特权

评论回复
板凳
mcsgy| | 2011-9-12 20:45 | 只看该作者
哇,这个不错
顶一下

使用特权

评论回复
地板
hotpower| | 2011-9-12 21:08 | 只看该作者
非常好!!!

记得俺用AVR时做过

使用特权

评论回复
5
gaochy1126|  楼主 | 2011-9-12 21:53 | 只看该作者
我用过51单片机做过,AVR不经常用! 4# hotpower

使用特权

评论回复
6
hotpower| | 2011-9-13 09:13 | 只看该作者
挺好玩的

使用特权

评论回复
7
nixianmin| | 2011-9-13 10:23 | 只看该作者
顶,下来玩玩

使用特权

评论回复
8
gogogobomb| | 2011-9-13 11:15 | 只看该作者
哎呀我顶!

使用特权

评论回复
9
d0001| | 2011-9-13 14:04 | 只看该作者
学无止境

使用特权

评论回复
10
白雨的印记| | 2011-9-13 16:20 | 只看该作者
有意思 很好

使用特权

评论回复
11
lixiaoxu2meng| | 2011-9-13 16:47 | 只看该作者

使用特权

评论回复
12
毅如靳往| | 2011-9-13 19:22 | 只看该作者
俺用PIC做过  看看楼主的啥效果

使用特权

评论回复
13
asdx147258| | 2011-9-13 23:19 | 只看该作者
谢谢,很好

使用特权

评论回复
14
gaochy1126|  楼主 | 2011-9-14 21:28 | 只看该作者
大家喜欢就行啊!

使用特权

评论回复
15
zzyaizll| | 2011-9-14 22:42 | 只看该作者
俺用51做过

使用特权

评论回复
16
yaoyyie2003| | 2011-9-16 21:31 | 只看该作者
听不出来什么调子

使用特权

评论回复
17
gaochy1126|  楼主 | 2011-9-19 12:28 | 只看该作者
能听出来的

使用特权

评论回复
18
冰茶爽爽| | 2012-9-1 19:51 | 只看该作者
做来听听,谢谢楼主!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1025

主题

11271

帖子

25

粉丝
关闭 热门推荐
快速回复 在线客服 返回列表 返回顶部