找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4830|回复: 0
打印 上一主题 下一主题
收起左侧

基于51单片机按键选播电子音乐

[复制链接]
跳转到指定楼层
楼主
ID:204636 发表于 2017-5-25 10:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit K1=P3^2;
sbit beep=P3^7;
uchar i;
uchar song_Index=0,Tone_Index=0;
uchar *song_Tone,*song_Time;
const LED_tab[]={
0xC0,0xF9,0xA4,0xB0,0x99,0x92,
0x82,0xF8,0x80,0x90,0x88,0x83,
0xC6,0xA1,0x86,0x8E,0xBF,0xFF};
uint code  Tone_tab[]={62018,62401,62491,62895,63184,63441,63506,
                             63773,63965,64137,64215,64360,64488,64603,
                       64654,64751,64836,64876,64948,65012,65067,65535};
uchar code song2_Tone[]={11,9,11,14,12,14,12,11,11,7,8,9,8,7,8,
                         11,9,11,14,13,12,14,11,11,7,8,9,6,7,
                         12,14,14,13,12,13,14,12,13,14,12,12,11,10,7,8,
                         11,9,11,14,13,12,14,11,11,8,9,10,6,7,0xff};
uchar code song2_Time[]={4,2,2,8,4,2,2,8,4,2,2,4,2,2,12,
                          4,2,2,4,2,4,4,8,4,2,2,4,2,12,
                          4,4,8,4,2,2,8,2,2,2,2,2,2,2,2,16,
                          4,2,2,4,2,4,4,8,4,2,2,4,2,12,0xff};
uchar code song1_Tone[]={
  7,8,9,7,7,8,9,10,11,9,10,11,
11,12,11,10,9,7,11,12,11,10,9,7,7,4,7,7,4,7,0xff};
uchar code song1_Time[]={
4,4,4,4,4,4,4,4,4,4,8,4,4,8,
2,2,2,2,4,4,2,2,2,2,4,4,4,4,8,4,4,8,0xff};
uchar code song3_Tone[]={
7,7,7,8,9,9,9,9,10,11,12,12,11,10,9,11,11,8,9,7,
7,7,7,8,11,9,9,9,10,11,12,12,11,10,9,11,11,8,9,7,0xff};
uchar code song3_Time[]={
2,2,2,2,4,2,2,2,2,4,2,2,2,2,4,2,2,2,2,4,
2,2,2,2,4,2,2,2,2,4,2,2,2,2,4,2,2,2,2,5,0xff};
uchar code song4_Tone[]={
5,9,9,9,9,8,7,8,7,6,5,12,12,12,12,12,11,
2,11,11,10,9,9,12,12,11,9,8,7,8,7,6,5,9,
2,7,7,6,5,9,8,7,6,4,12,0xff};
uchar code song4_Time[]={
2,2,2,2,2,2,2,2,2,2,8,2,2,2,2,4,2,
2,2,2,2,8,2,2,2,2,4,2,2,2,2,2,4,2,
2,2,2,2,4,2,2,2,2,8,0xff};
uchar code song5_Tone[]={
11,12,11,9,8,9,11,9,8,7,9,11,7,9,8,
11,12,11,9,8,9,11,9,8,7,8,7,8,9,7,0xff};
uchar code song5_Time[]={
4,4,8,4,4,8,4,4,4,4,2,2,2,2,8,
4,4,8,4,4,8,4,4,4,4,2,2,2,2,8,0xff};
void delayms(uint ms)
{
uchar a;
while(ms--)
{
for(a=230;a>0;a--);
}
}
void int0() interrupt 0
{
   delayms(100);
        if(INT0==0)
                {
      TR0=0;
      song_Index++;                       
    }
                if(song_Index==1)
                {
      song_Tone=song2_Tone;
                        song_Time=song2_Time;
}
                if(song_Index==2)
                        {
      song_Tone=song3_Tone;
                        song_Time=song3_Time;
}
if(song_Index==3)
        {
      song_Tone=song4_Tone;
                        song_Time=song4_Time;
}
if(song_Index==4)
        {
      song_Tone=song5_Tone;
                        song_Time=song5_Time;
}
if(song_Index==5)
        {
      song_Tone=song1_Tone;
                        song_Time=song1_Time;
                  song_Index=0;
}
TR0=1;
i=0;
}
void Timer0() interrupt 1
{
    TH0=Tone_tab[Tone_Index]/256;
          TL0=Tone_tab[Tone_Index]%256;
          beep=~beep;
}
void display(void)
{
   P0=LED_tab[song_Index];
}
void int_init(void)
{
        TMOD=0x01;
        ET0=1;
        EX0=1;
        IT0=1;
        EA=1;
        TR0=0;
}
void main(void)
{
   int_init();
         song_Tone=song1_Tone;
         song_Time=song1_Time;
        while(1)
        {
    display();
                Tone_Index=song_Tone[i];
                if(Tone_Index==0xFF)
                {
      i=0;
                        TR0=0;
}
  TR0=1;
  delayms(song_Time[Tone_Index]*60);
  TR0=0;
  i++;
  }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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