51单片机用无源蜂鸣器播放凤凰传奇神曲

#include"Buzzer_music.h"
 //左边发射极
uchar time_h,time_l;
sbit BUZZER = P2^3;
 
void main()
{
    uchar i,j;
    P2M1 = 0X00;
    P2M0 = 0XFF;
    TMOD = 0x01;
    ET0 = 1;
    EA = 1;
//  TR0 = 1;
    i = 0;
    j = 0;
    while(1)
    {
        while(display[i][1] != 0xff)
        {
//          if(display[i][0] == 0xff)
//          {
//              TR0 = 0;
//              Delay_ms(100);
//          }
//          else
//          {
                time_h = m_note[display[i][0]][0];
                time_l = m_note[display[i][0]][1];
                TH0 = time_h;
                TL0 = time_l;
                ET0 = 1;
                TR0 = 1;
                Delay_ms(1000);
                TR0 = 0;
                ET0 = 0;
                BUZZER = 0;
//          }
            Delay(display[i][1]);
            i++;
        }
        i = 0;
    }
}
 
void Timer0() interrupt 1
{
    TR0 = 0;
    TH0 = time_h;
    TL0 = time_l;
    BUZZER = ~BUZZER;
    TR0 = 1;
}

#include<12C5A60S2.h>
#define uchar unsigned char
#define uint  unsigned int
#define REST    36          //休止符
#define A       0          //低音1
#define AB      1          //低音1.5
#define B       2          //低音2
#define BC      3          //低音2.5
#define C       4          //低音3
#define D       5          //低音4
#define DE      6          //低音4.5
#define E       7          //低音5
#define EF      8          //低音5.5
#define F       9          //低音6
#define FG      10          //低音6.5
#define G       11          //低音7
#define L       12          //中音1
#define LM      13          //中音1.5
#define M       14          //中音2
#define MN      15          //中音2.5
#define N       16         //中音3
#define O       17          //中音4
#define OP      18          //中音4.5
#define P       19          //中音5
#define PQ      20          //中音5.5
#define Q       21          //中音6
#define QR      22          //中音6.5
#define R       23          //中音7
#define S       24          //高音1
#define SU      25          //高音1.5
#define U       26          //高音2
#define UV      27          //高音2.5
#define V       28          //高音3
#define W       29          //高音4
#define WX      30          //高音4.5
#define X       31          //高音5
#define XY      32          //高音5.5
#define Y       33          //高音6
#define YZ      34          //高音6.5
#define Z       35          //高音7
 
 
//乐谱(最炫民族风)
uchar code display[][2] = {
{N,8},{F,4},{F,4},{L,8},{N,8},{M,4},{M,2},{N,2},{M,4},{L,4},
{M,4},{L,4},{F,8},{N,8},{F,4},{F,4},{L,8},{N,8},
{P,4},{M,2},{N,2},{M,4},{L,4},{M,4},{L,4},{G,4},{E,4},
{N,8},{F,4},{F,4},{L,8},{N,8},{M,4},{M,2},{N,2},{M,4},{L,4},
{M,4},{L,4},{F,4},{E,4},{N,8},{F,4},{F,4},{L,8},{N,8},
{P,4},{N,4},{0xff,24},//前奏
{F,8},{F,4},{E,4},{F,8},{F,4},{L,4},{L,8},{M,4},{L,4},{F,8},
{0xff,8},{L,8},{L,4},{E,4},{L,4},{M,4},{N,4},{P,4},{P,4},{N,4},
{M,8},{N,8},{0xff,8},{Q,4},{Q,4},{Q,4},{E,4},{N,4},{N,8},{L,4},
{F,4},{F,4},{F,4},{N,4},{M,8},{0xff,8},{N,4},{N,4},{P,4},{N,4},
{M,4},{N,4},{M,4},{L,4},{F,8},{E,8},{F,8},{0xff,8},
{F,8},{F,4},{E,4},{F,8},{F,4},{L,4},{L,8},{M,4},{L,4},{F,8},
{0xff,8},{L,8},{L,4},{E,4},{L,4},{M,4},{N,4},{P,4},{P,4},{N,4},
{M,8},{N,8},{0xff,8},{Q,4},{Q,4},{Q,4},{E,4},{N,4},{N,8},{L,4},
{F,4},{F,4},{F,4},{N,4},{M,8},{0xff,8},{N,4},{N,4},{P,4},{N,4},
{M,4},{N,4},{M,4},{L,4},{F,8},{E,8},{F,8},{0xff,8},
{N,4},{N,4},{P,4},{N,4},{N,4},{P,4},{P,4},{Q,4},{S,4},{Q,4},
{P,8},{Q,8},{0xff,8}, //此处有变调
{F,8},{F,4},{E,4},{F,8},{L,8},{M,4},{N,2},{M,2},{L,4},{M,4},
{M,8},{0xff,8},{F,4},{Q,4},{Q,4},{P,4},{M,4},{N,2},{M,2},
{L,4},{M,4},{M,8},{0xff,8},{0xff,16},{L,4},{F,4},{F,4},{L,4},
{M,8},{E,4},{E,4},{N,4},{P,4},{N,4},{M,4},{L,8},{0xff,8},
{F,4},{L,4},{M,4},{N,4},{M,4},{L,4},{E,4},{C,4},{F,8},{0xff,8},{0xff,16},//
{F,8},{F,4},{E,4},{F,8},{L,8},{M,4},{N,2},{M,2},{L,4},{M,4},
{M,8},{0xff,8},{F,4},{Q,4},{Q,4},{P,4},{M,4},{N,2},{M,2},
{L,4},{M,4},{M,8},{0xff,8},{0xff,16},{L,4},{F,4},{F,4},{L,4},
{M,8},{E,4},{E,4},{N,4},{P,4},{N,4},{M,4},{L,12},{L,4},
{F,4},{L,4},{M,4},{N,4},{P,4},{N,4},{N,4},{P,4},{Q,8},{0xff,8},{Q,8},{0xff,8},
{0,0xff},
};
 
//音阶
uchar code m_note[][2] = {
{248,136},{248,243},{249,88},{249,184},{250,18},{250,103},{250,184},{251,3},{251,75},
{251,143},{251,206},{252,11},{252,67},{252,121},{252,172},{252,219},{253,9},{253,51},
{253,91},{253,129},{253,165},{253,199},{253,231},{254,5},{254,33},{254,60},{254,85},
{254,109},{254,132},{254,153},{254,173},{254,192},{254,210},{254,227},{254,243},{255,2},
{0,0},
};
 
//音符(1对应三十二分音符,32对应全音符)
void Delay(uchar x)
{
    uint i,j;
    for(i = 0;i < x;i++)
        for(j = 0;j < 10000;j++);
}
 
void Delay_ms(uint x)
{
    uint i,j;
    for(i = 0;i < x;i++)
        for(j = 0;j < 120;j++);
}


  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值