找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 577|回复: 0
收起左侧

单片机蜂鸣器唱歌

[复制链接]
ID:455665 发表于 2018-12-26 17:08 | 显示全部楼层 |阅读模式
使蜂鸣器发出音乐


程序
#include <reg52.h>   
#define uchar unsigned char
#define uint unsigned int
uchar Count;   
sbit BEEP =P1^3 ;           
   
uchar code SONG[] ={      //zhu ni pin an   
0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,   
0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,   
0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,   
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,   
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,   
0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,   
0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,   
0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,   
0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,   
0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,   
0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,   
0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,   
0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,   
0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,   
                                  //lu bian yan hua bu yao cai  
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 Time0_Init()   
{   
    TMOD = 0x01;   
    IE   = 0x82;   
    TH0  = 0xD8;   
    TL0  = 0xEF;        //12MZ,10ms   
}   
   
void Time0_Int() interrupt 1   
{   
    TH0 = 0xD8;   
    TL0 = 0xEF;   
    Count++;   
}   
   
/*-------------------------------------------------  
delay  
-------------------------------------------------*/   
void delay(uint x)   
{   
    uint j;
    while(x--)   
    {   
        for( j=0;j<3;j++ );   
    }   
}   
   
/*-------------------------------------------------  
paly_song function
-------------------------------------------------*/   
void Play_Song(unsigned char i)   
{   
    unsigned char Temp1,Temp2;   
    unsigned int Addr;   
    Count = 0;                      //   
    Addr = i * 217;   
    while(1)   
    {   
        Temp1 = SONG[Addr++];   
        if ( Temp1 == 0xFF )          //xiu zhi   
        {   
            TR0 = 0;   
            delay(100);   
        }   
        else if ( Temp1 == 0x00 )     //stop   
        {   
            return;   
        }   
        else   
        {   
            Temp2 = SONG[Addr++];   
            TR0 = 1;   
            while(1)   
            {   
                BEEP = ~BEEP;   
                delay(Temp1);   
                if ( Temp2 == Count )   
                {   
                    Count = 0;   
                    break;   
                }   
            }   
        }   
    }   
}   
/*-------------------------------------------------  
main function
-------------------------------------------------*/   
void main()   
{   
    Time0_Init();            
    while(1)   
    {   
        Play_Song(0);         
    }   
}


回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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