标题:
如何使用STC15f系列单片机的两个定时器来播放音乐,求可用的源代码
[打印本页]
作者:
2646402530
时间:
2017-7-31 18:45
标题:
如何使用STC15f系列单片机的两个定时器来播放音乐,求可用的源代码
如何使用STC15f系列单片机的两个定时器来播放音乐,求可用的源代码
一个定时器用于控制音调
一个用于控制节拍
中间不使用delay延时
网上找了好久没找到
作者:
cjjcjj1
时间:
2017-7-31 22:01
提示:
作者被禁止或删除 内容自动屏蔽
作者:
HC6800-ES-V2.0
时间:
2017-8-1 08:08
我这个程序是STC89C52RC的,你可以试试,应该可以直接用的。#include <reg51.h>
sbit voice=P1^5;//蜂鸣器
unsigned char code sound[]={0xff,
0x26,0x20,0x2b,0x20,0x26,0x80,0xff,0x20,0x2b,0x20,0x26,0x20,0x26,0x10,//两只蝴蝶
0x2b,0x10,0x30,0x80,0xff,0x40,0x39,0x20,0x30,0x20,0x2b,0x40,0x2b,0x20,
0x26,0x20,0x2b,0x20,0x30,0x20,0x39,0x20,0x39,0x10,0x30,0x10,0x40,0x80,
0x40,0x80,0x26,0x20,0x2b,0x20,0x26,0x80,0xff,0x20,0x2b,0x20,0x26,0x20,
0x26,0x10,0x2b,0x10,0x30,0x80,0xff,0x40,0x39,0x20,0x30,0x20,0x2b,0x40,
0x2b,0x20,0x26,0x20,0x2b,0x20,0x30,0x20,0x39,0x20,0x30,0x20,0x2b,0xc0,
0x26,0x20,0x2b,0x20,0x26,0x80,0xff,0x20,0x2b,0x20,0x26,0x20,0x26,0x10,
0x2b,0x10,0x30,0xc0,0x39,0x20,0x30,0x20,0x2b,0x40,0x2b,0x20,0x26,0x20,
0x2b,0x20,0x30,0x20,0x39,0x20,0x39,0x10,0x30,0x10,0x40,0xc0,0x26,0x20,
0x20,0x20,0x20,0x80,0xff,0x20,0x20,0x20,0x1c,0x20,0x20,0x20,0x26,0xc0,
0x2b,0x20,0x2b,0x20,0x2b,0x60,0x2b,0x20,0x26,0x20,0x2b,0x20,0x30,0x20,
0x39,0x20,0x39,0x20,0x30,0x20,0x30,0x20,0x30,0xc0,0xff,0x40,0xff,0x40,
0xff,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,0x18,0x20,0x19,0x20,0x19,0x20,
0x1c,0x20,0x26,0x20,0x2b,0x20,0x2b,0x20,0x26,0x20,0x26,0x80,0xff,0x20,
0x26,0x20,0x26,0x20,0x20,0x20,0x1c,0x40,0x1c,0x40,0xff,0x20,0x39,0x20,
0x26,0x20,0x2b,0x20,0x2b,0xc0,0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x20,
0x20,0x40,0xff,0x20,0x18,0x40,0x19,0x20,0x1c,0x20,0x1c,0x10,0x19,0x10,
0x26,0x40,0xff,0x20,0x1c,0x20,0x1c,0x20,0x19,0x20,0x1c,0x20,0x20,0x20,
0x26,0x20,0x2b,0x20,0xff,0x20,0x26,0x20,0x2b,0x20,0x26,0x20,0x20,0x80,
0xff,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,0x18,0x20,0x19,0x20,0x19,0x20,
0x1c,0x20,0x26,0x20,0x2b,0x20,0x2b,0x20,0x26,0x20,0x26,0x80,0xff,0x20,
0x26,0x20,0x26,0x20,0x20,0x20,0x1c,0x40,0x1c,0x40,0xff,0x20,0x39,0x20,
0x26,0x20,0x2b,0x20,0x2b,0xc0,0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x20,
0x20,0x40,0xff,0x20,0x18,0x40,0x19,0x20,0x1c,0x20,0x1c,0x10,0x19,0x10,
0x26,0x40,0xff,0x20,0x1c,0x20,0x1c,0x20,0x19,0x20,0x1c,0x20,0x20,0x20,
0x26,0x20,0x2b,0x20,0xff,0x20,0x40,0x40,0x39,0x20,0x30,0xc0,0xff,0xc0,
0x00
};//音乐数据,0xff为起始数据,0x00为终止数据,以后数据两两一组,前者为音阶,后者为节拍
unsigned char zdjs=0,jp;
void del(yj);
void main(void)
{
unsigned int dpjs=0;
unsigned char yj;
TMOD=0x01;
IE=0x82;
TH0=0xd8;
TL0=0xf0;
TR0=1;
while(1)
{
zdjs=0;
dpjs++;
yj=sound[dpjs];
dpjs++;
jp=sound[dpjs];
while(zdjs!=jp)
{
if(yj!=0xff)
{
if(yj!=0)
{
voice=!voice;
del(yj);
}
else
{
dpjs=0;
break;
}
}
else
{
voice=1;
del(jp);
}
}
}
}
time0() interrupt 1 using 1//定时器中断,记录时间
{
TH0=0xd8;
TL0=0xf0;
zdjs++;
}
void del(yj)
{
unsigned char yj2=2;
while(yj!=0)
{
while(yj2!=0)
{
yj2--;
}
yj2=2;
yj--;
}
}
只用了一个定时器。
作者:
zl2168
时间:
2017-8-1 10:58
本帖最后由 zl2168 于 2017-8-1 10:59 编辑
实例75 定时器控制播放生日快乐歌
先
Proteus
仿真一下,确认有效。
实例75 定时器控制播放生日快乐歌.rar
(26.96 KB, 下载次数: 15)
2017-8-1 10:59 上传
点击文件名下载附件
实例76 定时器控制播放世上只有妈妈好歌曲.rar
(27.15 KB, 下载次数: 5)
2017-8-1 10:59 上传
点击文件名下载附件
生日快乐歌.jpg
(101.98 KB, 下载次数: 31)
下载附件
2017-8-1 10:59 上传
以上摘自张志良编著《
80C51
单片机仿真设计实例教程——基于
Keil C
和
Proteus
》清华大学出版社
ISBN 978-7-302-41682-1
,
内有常用的单片机应用
100
案例,用于仿真实验操作,
电路与程序真实可靠可信可行
。
书中电路和程序设计有详细说明,程序语句条条有注解。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1