找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机用定时器的音乐播放器,但是出不来声音,求大神帮忙看一下程序

[复制链接]
跳转到指定楼层
楼主

做的是利用定时器的音乐播放器,但是出不来声音,求大神帮忙看一下程序

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit song=P1^0;
sbit start=P3^6;
sbit stop=P3^7;
bit  flag=0;

uchar code newyear[]={0xFE,0x25,4,0xFE,0x25,4,0xFE,0x25,8,
                             0xFD,0x80,8,0xFE,0x84,4,0xFE,0x84,4,
                                    0xFE,0x84,8,0xFE,0x25,8,0x0FE,0x25,4,
                                           0xFE,0x84,4,0x0FE,0x0C0,8,0xFE,0xC0,8,
                                    0xFE,0x98,4,0xFE,0x84,4,0xFE,0x57,8,
                            0xFF,0xFF};  
uchar code tiger[]={0xfe,0x25,4,0xfe,0x57,4,0xfe,0x84,4,
                                        0xfe,0x25,4,0xfe,0x25,4,0xfe,0x57,4,
                                        0xfe,0x84,4,0xfe,0x25,4,0xfe,0x84,4,
                                        0xfe,0x98,4,0xfe,0xc0,8,0xfe,0x84,4,
                                        0xfe,0x98,4,0xfe,0xc0,8,0xfe,0xc0,2,
                                        0xfe,0xe3,2,0xfe,0xc0,2, 0xfe,0x98,2,
                                        0xfe,0x84,4,0xfe,0x25,4,0xfe,0xc0,2,
                                        0xfe,0xe3,2,0xfe,0xc0,2, 0xfe,0x98,2,
                                        0xfe,0x84,4,0xfe,0x25,4,0xfe,0x25,4,
                                        0xfd,0x80,4,0xfe,0x25,8,0xfe,0x25,4,
                                        0xfd,0x80,4,0xfe,0x25,8,0xff,0xff};
void delay(uchar time);
void chushi();
void key();
void play(uchar  melody[]);
int H=-3,L=-2,T=-1,a,b,c,d;

void main()
{
while(1)
{if(d==1)
        {play(newyear);}
if(d==2)
         {play(tiger);}
if(d==3)
         TR1=0;
                                                           

}
}
void test() interrupt 3
{
TH1=a;
TL1=b;
song=~song;  
}

void delay(uchar time)
{
  uint i;
  for(i=0;i<time*2000;i++);
                          
}
void chushi()
{
         TMOD=0x10;
         ET1=1;
         EA=1;
         TR1=1;
        IT0=1;
        EX0=1;
}
void key() interrupt 0
{
        chushi();
        flag=1;
        d=0;
        if(start==0)
        {
                d++;
                if(d==3)
                        d=1;
        }
        if(stop==0)
                d=3;
}
void play(uchar melody[])
{
chushi();
while(1)
  {
  a=melody[H];
  b=melody[L];
  c=melody[T];
  H=H+3;
  L=L+3;
  T=T+3;
  delay(c);
  TR1=0;
  delay(1);
  TR1=1;
  if(melody[H]==0xff){TR1=0;H=-3;L=-2;T=-1;}}
}        

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

使用道具 举报

沙发
ID:1 发表于 2016-6-23 23:53 | 只看该作者
你把仿真工程文件打包上传一下 我本地调试看看
回复

使用道具 举报

板凳
ID:111634 发表于 2016-6-24 21:43 | 只看该作者
本帖最后由 zl2168 于 2016-6-24 21:45 编辑

实例75  定时器控制播放生日快乐歌


Proteus仿真一下,确认有效。
实例75 定时器控制播放生日快乐歌.rar (26.96 KB, 下载次数: 55)



以上摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版

书中电路和程序设计有详细说明,程序语句条条有注解。





回复

使用道具 举报

地板
ID:111634 发表于 2016-6-24 21:45 | 只看该作者
实例76  定时器控制播放世上只有妈妈好歌曲


Proteus仿真一下,确认有效。

实例76 定时器控制播放世上只有妈妈好歌曲.rar (27.15 KB, 下载次数: 37)


以上摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版

书中电路和程序设计有详细说明,程序语句条条有注解。





回复

使用道具 举报

5#
ID:656139 发表于 2019-12-4 21:30 来自手机 | 只看该作者
zl2168 发表于 2016-6-24 21:45
实例76  定时器控制播放世上只有妈妈好歌曲



请问这个的代码是怎么编写的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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