标题:
求大神帮新手修改下程序,使其能在按下一个键时能唱一首歌,并显示其歌曲名,再按...
[打印本页]
作者:
a7332900
时间:
2016-4-13 15:37
标题:
求大神帮新手修改下程序,使其能在按下一个键时能唱一首歌,并显示其歌曲名,再按...
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit fm=P2^3;
sbit b1=P1^0;
sbit b2=P1^1;
sbit b3=P1^2;//蜂鸣器连续的IO口
uchar count2;//歌曲标志
uchar timeh,timel,i;
uchar count=0;
//---------------------------简谱--------------------------------------- //编程规则:字节高位是简谱,低位是持续时间, //代表多少个十六分音符 //1-7代表中央C调,8-E代表高八度,0代表停顿 //最后的0是结束标志
uchar code qnzl[]={ //千年之恋
0x12,0x22,0x34,0x84,0x74,0x54,0x38,0x42,0x32,0x22,0x42,0x34,0x84,0x72,0x82,0x94,0xA8,0x08, //前奏
0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62, //竹林的灯火 到过的沙漠
0x32,0x31,0x21,0x32,0x82,0x71,0x81,0x71,0x51,0x32,0x22, //七色的国度 不断飘逸风中
0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62, //有一种神秘 灰色的旋涡
0x32,0x31,0x21,0x32,0x83,0x82,0x71,0x72,0x02, //将我卷入了迷雾中
0x63,0xA1,0xA2,0x62,0x92,0x82,0x52, //看不清的双手
0x31,0x51,0x63,0x51,0x63,0x51,0x63,0x51,0x62,0x82,0x7C,0x02, //一朵花传来谁经过的温柔
0x61,0x71,0x82,0x71,0x62,0xA2,0x71,0x76, //穿越千年的伤痛
0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36, //只为求一个结果
0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53, //你留下的轮廓 指引我
0x42,0x63,0x83,0x83,0x91,0x91, //黑夜中不寂寞
0x61,0x71,0x82,0x71,0x62,0x0A2,0x71,0x76, //穿越千年的哀愁
0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36, //是你在尽头等我
0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53, //最美丽的感动 会值得
0x42,0x82,0x88,0x02,0x74,0x93,0x89,0xff//结束标志 //用一生守候
};
uchar code jmszl[]={ //寂寞沙洲冷
0x12,0x12,0x22,0x32,0x31,0x22,0x21,0x22, //自你走后心憔悴
0x21,0x31,0x51,0x52,0x31,0x52,0x61,0x15,0x14, //白色油桐风中纷飞
0x51,0x52,0x31,0x52,0x62,0x13,0x11,0x13,0x32,0x28,0x08,0x28, //落花似人有情 这个季节
0x31,0x32,0x31,0x32,0x11,0x21,0x51,0x52,0x51,0x52, //河畔的风放肆拼命地吹
0x51,0x51,0x31,0x32,0x31,0x32,0x81,0x72,0x63, //不断拨弄离人的眼泪
0x62,0x71,0x81,0x72,0x61,0x61,0x52,0x31,0x21,0x32,0x51,0x54, //那样浓烈的爱再也无法给
0x22,0x12,0x11,0x12,0x11,0x12,0x12,0x14,0x26,0x32,0x26, //伤感一夜一夜
0x32,0x61,0x51,0x51,0x31,0x31,0x21,0x31,0x51,0x61,0x51,0x31,0x51, //当记忆的线缠绕过往支离破碎
0x02,0x32,0x81,0x81,0x81,0x81,0x62,0x52,0x34, //是慌乱占据了心扉
0x31,0x81,0x81,0x81,0x61,0x91,0x82, //有花儿伴着蝴蝶
0x51,0x51,0x51,0x51,0x31,0x61,0x53, //孤雁可以双飞
0x21,0x11,0x21,0x11,0x22,0x11,0x21,0x26, //夜深人静独徘徊
0x32,0x61,0x51,0x51,0x31,0x31,0x21,0x31,0x51,0x61,0x51,0x31,0x51,0x52, //当幸福恋人寄来红色分享喜悦
0x31,0x31,0x81,0x81,0x81,0x61,0x91,0x81,0x61,0x31,0x56, //闭上双眼难过头也不敢回
0x32,0x32,0x81,0x81,0x81,0x81,0x91,0x81,0x61,0x81,0x61,0x51,0x31,0x51,0x34, //仍然捡尽寒枝不肯安歇微带着后悔
0x21,0x31,0x51,0x31,0x21,0x11,0x61,0x21,0x16, //寂寞沙洲我该思念谁
0xff};
uchar code sszy[]={//世上只有妈妈好
0x96,0x82,0x64,0x84,0xb4,0x92,0x82,0x94,0x04,0x64,0x82,0x92, 0x84,0x62,0x52,0x42,0x22,0x72,0x62,0x54,0x04,0x56,0x62, 0x84,0x82,0x92,0x66,0x52,0x44,0x04,0x86,0x62,0x54,0x42,0x22,0x42,0x14,0x04,0xff
};
uchar code zimo[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//----------------------------简谱音调对应的定时器初值--------------------------- //适合11.0592M的晶振
uchar code cuzhi[]=
{
0xff,0xff,//占位
0xFC,0x8E,//中央C调1-7
0xFC,0xED,
0xFD,0x43,
0xFD,0x6A,
0xFD,0xB3,
0xFD,0xF3,
0xFE,0x2D,
0xFE,0x47, //高八度1-7
0xFE,0x76,
0xFE,0xA1,
0xFE,0xC7,
0xFE,0xD9,
0xFE,0xF9,
0xFF,0x16
};
void delay1(uint z); //延时1MS
void delay(uint z); //延时165MS,即十六分音符
void song();
main()
{
P0=zimo[0];//改值可变换歌曲(1-3)
EA=1;//开总中断
TMOD=0x01;//定时器0工作在方式1
TH0=0;
TL0=0;
ET0=1;
while(1)
{
switch(P1)
{
case 0xfe:count2=1;break;
case 0xfd:count2=2;break;
case 0xfb:count2=3;break;
}
P0=zimo[count2];
song();
delay1(1000);
}
}
void timer0() interrupt 1 //用于产生各种音调
{
TH0=timeh;
TL0=timel;
fm=~fm;
}
void song()
{
uint temp;
uchar jp;//jp是简谱
i=0;
while(1)
{
if(count2==0)
{
break;
}
if(count2==1) //选曲
temp=qnzl[i];
if(count2==2)
temp=jmszl[i];
if(count2==3)
temp=sszy[i];
if(temp==0xff)
break;
jp=temp/16; //取数的高4位
if(jp!=0)
{
timeh=cuzhi[jp*2];
timel=cuzhi[jp*2+1];
}
else
{
TR0=0;
fm=1;//关蜂鸣器
}
delay(temp%16); //取数的低4位
TR0=0; //唱完一个音停10MS
fm=1;
delay1(10);
TR0=1;
i++;
}
TR0=0;
fm=1;
}
void delay(uint z) //延时165MS,即十六分音符
{
uint x,y;
for(x=z;x>0;x--)
for(y=19000;y>0;y--);
}
void delay1(uint z) //延时1MS
{
uint x,y;
for(x=z;x>0;x--)
for(y=112;y>0;y--);
}
求大神帮我修改下程序,使其能在按下一个键时能唱一首歌,并显示其歌曲名,再按下别的键正在唱的歌停下去唱别的歌
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1