找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机音乐播放,交流贴

[复制链接]
跳转到指定楼层
楼主
ID:347544 发表于 2018-6-8 13:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>
#include <intrins.h>
#include <yinyue.h>
#define uchar unsigned char
#define uint unsigned int
sbit beep=P2^0;
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
uchar code led[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
uchar code led1[]={0x01,0x83,0xc7,0xef,0xff};
uchar tone_H, tone_L, times, i=0, j, temp, x;
uchar beat_H=(65536-62500)/256;
uchar beat_L=(65536-62500)%256;
bit flag,flag1;
void play(uchar *song,uchar *beat);
void display_led();
void delay(uint m)
{
while(--m);
}
void init()
{
  flag1=1;
  beep=0;
  EA=1;
  ET0=1;
  ET1=1;
  TMOD=0x11;
}
void main()
{
        init();
        while(1)
        {
                if(flag1)
                        {
                                if(key1==0)
                                {
                                        delay(3000);
                                        play(song1,beat1);
                                }else
                                        if(key2==0)
                                        {
                                                delay(3000);
                                                play(song2,beat2);
                                        }else       
                                                if(key3==0)
                                                {
                                                        delay(3000);
                                                       play(song3,beat3);
                                               }
                }else
                        display_led();
          }
        }
        void play(uchar  *song,uchar  *beat)
         {
                while(song[i]!=15)
                 {
                          P0=0xff;
                          times=beat[i];   
                        flag=0;                                               
                        tone_H=(65536-tone[song[i]]-6)/256;
                        tone_L=(65536-tone[song[i]]-6)%256;
                        TH0=tone_H;   
                        TL0=tone_L;
                        TH1=beat_H;   
                        TL1=beat_L;
                          TR0=1;   
                        TR1=1;
                        while(flag==0);
                        i++;
                        TR0=0;
                        TR1=1;
                        flag1=0;
                }
        }
        void display_led()
        {
                for(x=0;x<2;x++)
                {
                        for(j=0;j<8;j++)
                        {
                                P1=led[j];
                                delay(50000);
                        }
                        delay(5000);
                        for(j=0;j<5;j++)
                        {
                                P1=led1[j];
                                delay(50000);
                        }
                        delay(5000);
                        for(j=0;j<5;j++)
                        {
                                P1=led1[4-j];
                                delay(50000);
                        }
                        delay(10000);
                        for(j=0;j<6;j++)
                        {
                                P1=0x00;
                                delay(20000);
                                P1=0xff;
                                delay(20000);
                        }
                }
                P1=0x00;
                delay(50000);
                flag1=1;
        }
        void timer0() interrupt 1
        {
                TH0=tone_H;
                TL0=tone_L;
                if(flag==1)
                        TR0=0;
                else
                        beep=~beep;
        }
        void timer1() interrupt 3
        {
                TH1=beat_H;
                TL1=beat_L;
                if(times==0)
                {
                        flag=1;
                        TR1=0;
                }
                times--;
        }

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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