音乐盒单片机程序

#include<reg52.h>

#include<intrins.h>

#define uint unsigned int

#define uchar unsigned char

sbit fm=P3^4;

sbit key1=P3^3;

sbit huayang=P3^2;

sbit lcdrw=P2^6;

sbit lcdrs=P2^5;

sbit lcden=P2^7;

uchar count1;//歌曲标志

uchar count2;

uchar jp;

uint i,t,y=1;

uchar time1h;

uchar time1l;

uchar num;

uint temp;

uchar code yinyue[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf};

uchar code table0[]="COME TO MUSICBOX";

uchar code table1[]="The East Is Red";

uchar code table2[]="Golden BeiJing";

uchar code table3[]="Lonely Sandbank";

uchar code table4[]="Forever Love";

uchar code table5[]="Enjoy LED Style";

uchar code table6[]="Stop Play Music";

uchar code bjdjss[]={0X92,0XB2,0XC2,0XD2,0X92,0XB2,0XC2,0XC2,0X62,

0X82,0X92,0XB2,0XC4,0XC1,0XB1,0XB1,0X91,0X9F,0X94,

0X92,0XB2,0XD4,0XD2,0XC2,0XB4,0XC2,0XD2,0XC4,

0XC1,0XB1,0XB1,0X91,0X9C,0XB4,0XD4,0XC2,0XB1,

0X91,0XB4,0XC2,0XD2,0X92,0X92,0XB2,0XC2,0X94,

0X91,0X81,0X81,0X61,0X6F,0X92,0X92,0X82,0X62,

0X92,0X92,0X82,0X62,0X92,0X91,0X91,0XB2,0XD1,

0XD1,0XC2,0XC2,0XC1,0XB1,0XB1,0X91,0X9F,0XB2,0X91,

0XB1,0XC2,0XD2,0X92,0X91,0X81,0X64,0X62,0X82,

0X92,0XB2,0XC2,0XC1,0XC1,0XC2,0XD2,0X9F,0X94,

0X92,0XB2,0XD4,0XD2,0XC2,0XB4,0XC2,0XD2,0XC4,

0XC1,0XB1,0XB1,0X91,0X9C,0XB4,0XD4,0XC2,0XB1,

0X91,0XB4,0XC2,0XD2,0X92,0X92,0XB2,0XC2,0X94,

0X91,0X81,0X81,0X61,0X6F,0X92,0X92,0X82,0X62,

0X92,0X92,0X82,0X62,0X92,0X91,0X91,0XB2,0XD1,

0XD1,0XC2,0XC2,0XC1,0XB1,0XB1,0X91,0X9F,0XB2,

0X91,0XB1,0XC2,0XD2,0X92,0X91,0X81,0X64,0X62,0X82,

0X92,0XB2,0XC2,0XC1,0XC1,0XC2,0XD2,0X9F,0XC1,

0XB1,0XB1,0X91,0X92,0X92,0X92,0X02,0X04,0X04,0X0a

};

uchar code qnzl[]={

0x42,0x52,0x64,0xB4,0xA4,0x84,0x68,0x72,0x62,0x52,0x72,0x64,0xB4,0xA2,0xB2,0xC4,0xD8,0x08,

//前奏

0x62,0x61,0x51,0x62,0x82,0x62,0x61,0x51,0x62,0x92,

//竹林的灯火 到过的沙漠

0x62,0x61,0x51,0x62,0xB2,0xA1,0xB1,0xA1,0x81,0x62,0x52,

//七色的国度 不断飘逸风中

0x62,0x61,0x51,0x62,0x82,0x62,0x61,0x51,0x62,0x92,

//有一种神秘 灰色的旋涡

0x62,0x61,0x51,0x62,0xB3,0xB2,0xA1,0xA2,0x02,

//将我卷入了迷雾中

0x93,0xD1,0xD2,0x92,0xC2,0xB2,0x82,

//看不清的双手

0x61,0x81,0x93,0x81,0x93,0x81,0x93,0x81,0x92,0xB2,0xAC,0x02,

//一朵花传来谁经过的温柔

0x91,0xA1,0xB2,0xA1,0x92,0xD2,0xA1,0xA6,

//穿越千年的伤痛

0x91,0xA1,0xB2,0xA1,0x92,0x82,0x61,0x66,

//只为求一个结果

0x91,0xA1,0xB2,0xA1,0x92,0xD3,0xA3,0x92,0x83,

//你留下的轮廓 指引我

0x72,0x93,0xA3,0xB3,0xC1,0xC1,

//黑夜中不寂寞

0x91,0xA1,0xB2,0xA1,0x92,0x92,0xD1,0xA2,0XA4,

//穿越千年的哀愁

0x91,0xA1,0xB2,0xA1,0x92,0x82,0x61,0x66,

//是你在尽头等我

0x91,0xA1,0xB2,0xA1,0x92,0xD3,0xA3,0x92,0x83,

//最美丽的感动 会值得

0x72,0xB2,0xB8,0x02,0xA4,0xC3,0xB9,0x0a};

uchar code dfh[]={

0x84,0x82,0x92,0x58,0x44,0x42,0x22,0x58,0x84,

0x84,0x92,

0xB2,0x92,0x82,0x44,0x42,0x22,0x58,

0x84,0x54,0x44,0x32,0x22,0x14,0x84,0x54,0x62,0x52,

0x44,0x42,0x22,0x52,0x62,0x52,0

x42,0x52,

0x42,0x32,0x22,0x18,0X02,0x84,0x82,0x92,0x58,0x44,0x42,0x22,0x58,0x84,

0x84,0x92,0xB2,0x92,0x82,0x44,0x42,0x22,0x58,

0x84,0x54,0x44,0x32,0x22,0x14,0x84,0x54,0x62,0x52,

0x44,0x42,0x22,0x52,0x62,0x52,0x42,0x52,

0x42,0x32,0x22,0x18,0x0a};//结束标志

uchar code jmszl[]={ //寂寞沙洲冷

0x42,0x42,0x52,0x62,0x61,0x52,0x51,0x52,

//自你走后心憔悴

0x51,0x61,0x81,0x82,0x61,0x82,0x91,0x45,0x44,

//白色油桐风中纷飞

0x81,0x82,0x61,0x82,0x92,0x43,0x41,0x43,0x62,0x58,0x08,0x58,

//落花似人有情 这个季节

0x61,0x62,0x61,0x62,0x41,0x51,0x81,0x82,0x81,0x82,

//河畔的风放肆拼命地吹

0x81,0x81,0x61,0x62,0x61,0x62,0xB1,0xA2,0x93,

//不断拨弄离人的眼泪

0x92,0xA1,0xB1,0xA2,0x91,0x91,0x82,0x61,0x51,0x62,0x81,0x84,

//那样浓烈的爱再也无法给

0x52,0x42,0x41,0x42,0x41,0x22,0x22,0x44,0x66,0x62,0x56,

//伤感一夜一夜

0x62,0x91,0x81,0x81,0x61,0x61,0x51,0x61,0x81,0x91,0x81,0x61,0x81,

//当记忆的线缠绕过往支离破碎

0x02,0x62,0xB1,0xB1,0xB1,0xB1,0x92,0x82,0x64,

//是慌乱占据了心扉

0x61,0xB1,0xB1,0xB1,0x91,0xC1,0xB2,

//有花儿伴着蝴蝶

0x81,0x81,0x81,0x81,0x61,0x91,0x83,

//孤雁可以双飞

0x51,0x41,0x51,0x41,0x52,0x41,0x51,0x56,

//夜深人静独徘徊

0x62,0x91,0x81,0x81,0x61,0x61,0x51,0x61,0x81,0x91,0x81,0x81,0x81,0x82,

//当幸福恋人寄来红色分享喜悦

0x61,0x61,0xB1,0xB1,0xB1,0x91,0xC1,0xB1,0x91,0x61,0x86,

//闭上双眼难过头也不敢回

0x62,0x62,0xB1,0xB1,0xB1,0xB1,0xC1,0xB1,0x91,0x91,0x91,0x81,0x61,0x81,0x64,

//仍然捡尽寒枝不肯安歇微带着后悔

0x51,0x61,0x81,0x61,0x51,0x41,0x21,0x51,0x46,0x0a

//寂寞沙洲我该思念谁

};

uchar code chuzhi[]={

0xff,0xff,

0xFB,0x0A,

0xFb,0x90,

0xFC,0x0C,

0xFC,0x44,//中央C调1-7

0xFC,0xAC,

0xFD,0x09,

0xFD,0x34,

0xFD,0x82,

0xFD,0xC8,

0xFE,0x06,

0xFE,0x22, //高八度1-7

0xFE,0x56,

0xFE,0x85,

0xFE,0x9A,

0xFE,0xC1,

};

uchar code huayang1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,

0xfd,0xfb,0xf7,0xef,0xdf,0xbf};//花样1

uchar code huayang2[]={0x7f,0xfe,0xbf,0xfd,0xdf,0xfb,0xef,0xf7,

0xef,0xfb,0xdf,0xfd,0xbf,0xfe};//花样2

uchar code huayang3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x0,

0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};

char code huayang4[]={ 0x55,0xaa,0xcc,0x33,0x99,0x66,0x0f,0xf0};

void led();

void write_data(uchar);

void init();

void write_com(uchar);

void song();

void delay1(uint z);

void delay(uint z); //延时165MS,即十六分音符

void main()

{ uchar x;

t=0;

led();//led快闪

init();

for(num=0;num<16;num++)

{ write_data(table0[num]);

delay1(1);

}

delay(12);

count1=1;

count2=0;//流水灯无花样

EA=1;//开总中断

EX1=1;

EX0=1;

IT1=1;//外部中断1下降沿触发方式

IT0=1;

ET1=1;

TMOD=0x11;//定时器1工作

在方式1

TH1=0;

TL1=0;

while(1)

{

if(count2!=0)

{

switch(coun

t2)

{

case 1:

if(y==1)

{write_com(0x01);

write_com(0x80);

delay1(1);

for(num=0;num<15;num++)

{write_data(table6[num]);

delay1(1);

}

write_com(0x01);

write_com(0x80);

for(num=0;num<15;num++)

{write_data(table5[num]);

delay1(1);

}

y=0; }

for(x=0;x<14;x++)

{

P1=huayang1[x];

delay1(200);

if(count2!=1)

break;

}

break;

case 2:

for(x=0;x<14;x++)

{

P1=huayang2[x];

delay1(250);

if(count2!=2)

break;

}

break;

case 3:

for(x=0;x<16;x++)

{

P1=huayang3[x];

delay1(250);

if(count2!=3)

break;

}

break;

case 4:

for(x=0;x<8;x++)

{

P1=huayang4[x];

delay1(250);

if(count2!=4)

break;

}

break;

}

}

else

{

song();

delay1(1000);

}

}

}

void int0() interrupt 0

{

EA=0;//关总中断

delay1(1);//去抖

if(huayang==0)

{

count1=0;//不让蜂鸣器唱歌

TR1=0;

count2++;

if(count2==5)

count2=1;

y=1;

}

EA=1;//开总中断

}

void int1() interrupt 2

{ EA=0;//关总中断

delay1(1);//去抖

if(key1==0)

{

count2=0;//流水灯无花样

TR1=1;

i=0;//从头开始唱

count1++;

t=0;

}

EA=1;//开总中断

}

void t1int() interrupt 3

{

TH1=time1h;

TL1=time1l;

fm=!fm;

}

void song() //唱歌

{ i=0;

while(1)

{

if(count1==0)

break;

if(count1==5)

count1=1;

if(count1==1)

{temp=dfh[i];

if(t==0)

{ TR1=0;

fm=1;

write_com(0x01);

write_com(0x80);

for(num=0;num<15;num++)

{write_data(table1[num]);

delay1(1);

}

t=1;TR1=1;

delay(1);

}

}

if(count1==2)

{temp=bjdjss[i];

if(t==0)

{ TR1=0;

fm=1;

write_com(0x01);

write_com(0x80);

for(num=0;num<15;num++)

{write_data(table2[num]);

delay1(1);

}

t=1;TR1=1;

delay(1);

}

}

if(count1==3)

{temp=jmszl[i];

if(t==0)

{ TR1=0;

fm=1;

write_com(0x01);

write_com(0x80);

for(num=0;num<15;num++)

{write_data(table3[num]);

delay1(1);

}

t=1;TR1=1;

delay(1);

}

}

if(count1==4)

{temp=qnzl[i];

if(t==0)

{ TR1=0;

fm=1;

write_com(0x01);

write_com(0x80);

for(num=0;num<12;num++)

{write_data(table4[num]);

delay1(1);

}

t=1;TR1=1;

delay(1);

}

}

jp=temp/16;

P1=yinyue[jp];

if(jp!=0)

{time1h=chuzhi[jp*2];

time1l=chuzhi[jp*2+1];

}

else

{TR1=0;

fm=1;

}

delay(temp%16);

TR1=0;

fm=1;

delay1(10);

TR1=1;

i++;

if(temp==

0x0a)

break;

}

TR1=0;

fm=1;

}

void init()//液晶初始化

{

write_com(0x38);

lcdrw=0;

write_com(0x01);

write_com(0x0f);

write_com(0x06);

write_com(0x80);//第一行首位

}

void write_com(uchar com)//写指令

{lcdrs=0;

P0=com;

delay1(50);

lcden=1;

delay1(50);

lcden=0;

}

void write_data(uchar dat)//写数据

{lcdrs=1;

P0=dat;

delay1(50);

lcden=1;

delay1(50);

lcden=0;

}

void delay(uint z) //延时2(165MS,即十六分音符)

{ uint x,y;

for(x=z;x>0;x--)

for(y=20000;y>0;y--);

}

void delay1(uint z) //延时1

{uint x,y;

for(x=z;x>0;x--)

for(y=112;y>0;y--);

}

void led() //led快闪

{ i=0;

num=0xfe;

P1=num;

while(i<7)

{delay1(100);

num=_crol_(num,1);

P1=num;

i++;

}

delay1(100);

i=0;

while(i<7)

{delay1(100);

num=_cror_(num,1);

P1=num;

i++;

}

}

#include<reg52.h>

#include<intrins.h>

#define uint unsigned int

#define uchar unsigned char

sbit fm=P3^4;

sbit key1=P3^3;

sbit huayang=P3^2;

sbit lcdrw=P2^6;

sbit lcdrs=P2^5;

sbit lcden=P2^7;

uchar count1;//歌曲标志

uchar count2;

uchar jp;

uint i,t,y=1;

uchar time1h;

uchar time1l;

uchar num;

uint temp;

uchar code yinyue[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf};

uchar code table0[]="COME TO MUSICBOX";

uchar code table1[]="The East Is Red";

uchar code table2[]="Golden BeiJing";

uchar code table3[]="Lonely Sandbank";

uchar code table4[]="Forever Love";

uchar code table5[]="Enjoy LED Style";

uchar code table6[]="Stop Play Music";

uchar code bjdjss[]={0X92,0XB2,0XC2,0XD2,0X92,0XB2,0XC2,0XC2,0X62,

0X82,0X92,0XB2,0XC4,0XC1,0XB1,0XB1,0X91,0X9F,0X94,

0X92,0XB2,0XD4,0XD2,0XC2,0XB4,0XC2,0XD2,0XC4,

0XC1,0XB1,0XB1,0X91,0X9C,0XB4,0XD4,0XC2,0XB1,

0X91,0XB4,0XC2,0XD2,0X92,0X92,0XB2,0XC2,0X94,

0X91,0X81,0X81,0X61,0X6F,0X92,0X92,0X82,0X62,

0X92,0X92,0X82,0X62,0X92,0X91,0X91,0XB2,0XD1,

0XD1,0XC2,0XC2,0XC1,0XB1,0XB1,0X91,0X9F,0XB2,0X91,

0XB1,0XC2,0XD2,0X92,0X91,0X81,0X64,0X62,0X82,

0X92,0XB2,0XC2,0XC1,0XC1,0XC2,0XD2,0X9F,0X94,

0X92,0XB2,0XD4,0XD2,0XC2,0XB4,0XC2,0XD2,0XC4,

0XC1,0XB1,0XB1,0X91,0X9C,0XB4,0XD4,0XC2,0XB1,

0X91,0XB4,0XC2,0XD2,0X92,0X92,0XB2,0XC2,0X94,

0X91,0X81,0X81,0X61,0X6F,0X92,0X92,0X82,0X62,

0X92,0X92,0X82,0X62,0X92,0X91,0X91,0XB2,0XD1,

0XD1,0XC2,0XC2,0XC1,0XB1,0XB1,0X91,0X9F,0XB2,

0X91,0XB1,0XC2,0XD2,0X92,0X91,0X81,0X64,0X62,0X82,

0X92,0XB2,0XC2,0XC1,0XC1,0XC2,0XD2,0X9F,0XC1,

0XB1,0XB1,0X91,0X92,0X92,0X92,0X02,0X04,0X04,0X0a

};

uchar code qnzl[]={

0x42,0x52,0x64,0xB4,0xA4,0x84,0x68,0x72,0x62,0x52,0x72,0x64,0xB4,0xA2,0xB2,0xC4,0xD8,0x08,

//前奏

0x62,0x61,0x51,0x62,0x82,0x62,0x61,0x51,0x62,0x92,

//竹林的灯火 到过的沙漠

0x62,0x61,0x51,0x62,0xB2,0xA1,0xB1,0xA1,0x81,0x62,0x52,

//七色的国度 不断飘逸风中

0x62,0x61,0x51,0x62,0x82,0x62,0x61,0x51,0x62,0x92,

//有一种神秘 灰色的旋涡

0x62,0x61,0x51,0x62,0xB3,0xB2,0xA1,0xA2,0x02,

//将我卷入了迷雾中

0x93,0xD1,0xD2,0x92,0xC2,0xB2,0x82,

//看不清的双手

0x61,0x81,0x93,0x81,0x93,0x81,0x93,0x81,0x92,0xB2,0xAC,0x02,

//一朵花传来谁经过的温柔

0x91,0xA1,0xB2,0xA1,0x92,0xD2,0xA1,0xA6,

//穿越千年的伤痛

0x91,0xA1,0xB2,0xA1,0x92,0x82,0x61,0x66,

//只为求一个结果

0x91,0xA1,0xB2,0xA1,0x92,0xD3,0xA3,0x92,0x83,

//你留下的轮廓 指引我

0x72,0x93,0xA3,0xB3,0xC1,0xC1,

//黑夜中不寂寞

0x91,0xA1,0xB2,0xA1,0x92,0x92,0xD1,0xA2,0XA4,

//穿越千年的哀愁

0x91,0xA1,0xB2,0xA1,0x92,0x82,0x61,0x66,

//是你在尽头等我

0x91,0xA1,0xB2,0xA1,0x92,0xD3,0xA3,0x92,0x83,

//最美丽的感动 会值得

0x72,0xB2,0xB8,0x02,0xA4,0xC3,0xB9,0x0a};

uchar code dfh[]={

0x84,0x82,0x92,0x58,0x44,0x42,0x22,0x58,0x84,

0x84,0x92,

0xB2,0x92,0x82,0x44,0x42,0x22,0x58,

0x84,0x54,0x44,0x32,0x22,0x14,0x84,0x54,0x62,0x52,

0x44,0x42,0x22,0x52,0x62,0x52,0

x42,0x52,

0x42,0x32,0x22,0x18,0X02,0x84,0x82,0x92,0x58,0x44,0x42,0x22,0x58,0x84,

0x84,0x92,0xB2,0x92,0x82,0x44,0x42,0x22,0x58,

0x84,0x54,0x44,0x32,0x22,0x14,0x84,0x54,0x62,0x52,

0x44,0x42,0x22,0x52,0x62,0x52,0x42,0x52,

0x42,0x32,0x22,0x18,0x0a};//结束标志

uchar code jmszl[]={ //寂寞沙洲冷

0x42,0x42,0x52,0x62,0x61,0x52,0x51,0x52,

//自你走后心憔悴

0x51,0x61,0x81,0x82,0x61,0x82,0x91,0x45,0x44,

//白色油桐风中纷飞

0x81,0x82,0x61,0x82,0x92,0x43,0x41,0x43,0x62,0x58,0x08,0x58,

//落花似人有情 这个季节

0x61,0x62,0x61,0x62,0x41,0x51,0x81,0x82,0x81,0x82,

//河畔的风放肆拼命地吹

0x81,0x81,0x61,0x62,0x61,0x62,0xB1,0xA2,0x93,

//不断拨弄离人的眼泪

0x92,0xA1,0xB1,0xA2,0x91,0x91,0x82,0x61,0x51,0x62,0x81,0x84,

//那样浓烈的爱再也无法给

0x52,0x42,0x41,0x42,0x41,0x22,0x22,0x44,0x66,0x62,0x56,

//伤感一夜一夜

0x62,0x91,0x81,0x81,0x61,0x61,0x51,0x61,0x81,0x91,0x81,0x61,0x81,

//当记忆的线缠绕过往支离破碎

0x02,0x62,0xB1,0xB1,0xB1,0xB1,0x92,0x82,0x64,

//是慌乱占据了心扉

0x61,0xB1,0xB1,0xB1,0x91,0xC1,0xB2,

//有花儿伴着蝴蝶

0x81,0x81,0x81,0x81,0x61,0x91,0x83,

//孤雁可以双飞

0x51,0x41,0x51,0x41,0x52,0x41,0x51,0x56,

//夜深人静独徘徊

0x62,0x91,0x81,0x81,0x61,0x61,0x51,0x61,0x81,0x91,0x81,0x81,0x81,0x82,

//当幸福恋人寄来红色分享喜悦

0x61,0x61,0xB1,0xB1,0xB1,0x91,0xC1,0xB1,0x91,0x61,0x86,

//闭上双眼难过头也不敢回

0x62,0x62,0xB1,0xB1,0xB1,0xB1,0xC1,0xB1,0x91,0x91,0x91,0x81,0x61,0x81,0x64,

//仍然捡尽寒枝不肯安歇微带着后悔

0x51,0x61,0x81,0x61,0x51,0x41,0x21,0x51,0x46,0x0a

//寂寞沙洲我该思念谁

};

uchar code chuzhi[]={

0xff,0xff,

0xFB,0x0A,

0xFb,0x90,

0xFC,0x0C,

0xFC,0x44,//中央C调1-7

0xFC,0xAC,

0xFD,0x09,

0xFD,0x34,

0xFD,0x82,

0xFD,0xC8,

0xFE,0x06,

0xFE,0x22, //高八度1-7

0xFE,0x56,

0xFE,0x85,

0xFE,0x9A,

0xFE,0xC1,

};

uchar code huayang1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,

0xfd,0xfb,0xf7,0xef,0xdf,0xbf};//花样1

uchar code huayang2[]={0x7f,0xfe,0xbf,0xfd,0xdf,0xfb,0xef,0xf7,

0xef,0xfb,0xdf,0xfd,0xbf,0xfe};//花样2

uchar code huayang3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x0,

0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};

char code huayang4[]={ 0x55,0xaa,0xcc,0x33,0x99,0x66,0x0f,0xf0};

void led();

void write_data(uchar);

void init();

void write_com(uchar);

void song();

void delay1(uint z);

void delay(uint z); //延时165MS,即十六分音符

void main()

{ uchar x;

t=0;

led();//led快闪

init();

for(num=0;num<16;num++)

{ write_data(table0[num]);

delay1(1);

}

delay(12);

count1=1;

count2=0;//流水灯无花样

EA=1;//开总中断

EX1=1;

EX0=1;

IT1=1;//外部中断1下降沿触发方式

IT0=1;

ET1=1;

TMOD=0x11;//定时器1工作

在方式1

TH1=0;

TL1=0;

while(1)

{

if(count2!=0)

{

switch(coun

t2)

{

case 1:

if(y==1)

{write_com(0x01);

write_com(0x80);

delay1(1);

for(num=0;num<15;num++)

{write_data(table6[num]);

delay1(1);

}

write_com(0x01);

write_com(0x80);

for(num=0;num<15;num++)

{write_data(table5[num]);

delay1(1);

}

y=0; }

for(x=0;x<14;x++)

{

P1=huayang1[x];

delay1(200);

if(count2!=1)

break;

}

break;

case 2:

for(x=0;x<14;x++)

{

P1=huayang2[x];

delay1(250);

if(count2!=2)

break;

}

break;

case 3:

for(x=0;x<16;x++)

{

P1=huayang3[x];

delay1(250);

if(count2!=3)

break;

}

break;

case 4:

for(x=0;x<8;x++)

{

P1=huayang4[x];

delay1(250);

if(count2!=4)

break;

}

break;

}

}

else

{

song();

delay1(1000);

}

}

}

void int0() interrupt 0

{

EA=0;//关总中断

delay1(1);//去抖

if(huayang==0)

{

count1=0;//不让蜂鸣器唱歌

TR1=0;

count2++;

if(count2==5)

count2=1;

y=1;

}

EA=1;//开总中断

}

void int1() interrupt 2

{ EA=0;//关总中断

delay1(1);//去抖

if(key1==0)

{

count2=0;//流水灯无花样

TR1=1;

i=0;//从头开始唱

count1++;

t=0;

}

EA=1;//开总中断

}

void t1int() interrupt 3

{

TH1=time1h;

TL1=time1l;

fm=!fm;

}

void song() //唱歌

{ i=0;

while(1)

{

if(count1==0)

break;

if(count1==5)

count1=1;

if(count1==1)

{temp=dfh[i];

if(t==0)

{ TR1=0;

fm=1;

write_com(0x01);

write_com(0x80);

for(num=0;num<15;num++)

{write_data(table1[num]);

delay1(1);

}

t=1;TR1=1;

delay(1);

}

}

if(count1==2)

{temp=bjdjss[i];

if(t==0)

{ TR1=0;

fm=1;

write_com(0x01);

write_com(0x80);

for(num=0;num<15;num++)

{write_data(table2[num]);

delay1(1);

}

t=1;TR1=1;

delay(1);

}

}

if(count1==3)

{temp=jmszl[i];

if(t==0)

{ TR1=0;

fm=1;

write_com(0x01);

write_com(0x80);

for(num=0;num<15;num++)

{write_data(table3[num]);

delay1(1);

}

t=1;TR1=1;

delay(1);

}

}

if(count1==4)

{temp=qnzl[i];

if(t==0)

{ TR1=0;

fm=1;

write_com(0x01);

write_com(0x80);

for(num=0;num<12;num++)

{write_data(table4[num]);

delay1(1);

}

t=1;TR1=1;

delay(1);

}

}

jp=temp/16;

P1=yinyue[jp];

if(jp!=0)

{time1h=chuzhi[jp*2];

time1l=chuzhi[jp*2+1];

}

else

{TR1=0;

fm=1;

}

delay(temp%16);

TR1=0;

fm=1;

delay1(10);

TR1=1;

i++;

if(temp==

0x0a)

break;

}

TR1=0;

fm=1;

}

void init()//液晶初始化

{

write_com(0x38);

lcdrw=0;

write_com(0x01);

write_com(0x0f);

write_com(0x06);

write_com(0x80);//第一行首位

}

void write_com(uchar com)//写指令

{lcdrs=0;

P0=com;

delay1(50);

lcden=1;

delay1(50);

lcden=0;

}

void write_data(uchar dat)//写数据

{lcdrs=1;

P0=dat;

delay1(50);

lcden=1;

delay1(50);

lcden=0;

}

void delay(uint z) //延时2(165MS,即十六分音符)

{ uint x,y;

for(x=z;x>0;x--)

for(y=20000;y>0;y--);

}

void delay1(uint z) //延时1

{uint x,y;

for(x=z;x>0;x--)

for(y=112;y>0;y--);

}

void led() //led快闪

{ i=0;

num=0xfe;

P1=num;

while(i<7)

{delay1(100);

num=_crol_(num,1);

P1=num;

i++;

}

delay1(100);

i=0;

while(i<7)

{delay1(100);

num=_cror_(num,1);

P1=num;

i++;

}

}


    相关文章

    音乐喷泉毕业设计

    目录 第一章.绪论······················································1 1.1.本课题研究的意义·········································1 ...

    基于51单片机的音乐播放器制作

    摘要 摘 要 本次课程设计是基于AT89C51单片机设计一个音乐播放器.通过单片机音乐播放器系统设计和研究,对于切实掌握单片机相关知识具有重要的理论和实际意义. 这次课程设计的音乐播放器是软件和硬件的结合,乐曲中不同的音符,实质就是不同频率 ...

    电子琴课程设计

    摘要 随着电子技术的发展,电子技术正在逐渐改善着人们的学习.生活.工作,电子技术与音乐的结合正在不断加深.因此开发本系统希望能够给人们多带来一点生活上的乐趣.电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器.本文的主要内容是用AT ...

    音乐播放器设计

    目 录 前 言 .................................................................... 1 1. 设计目的 ................................. ...

    基于单片机的电子音乐门铃设计

    微机控制系统应用方向学年设计任务书 微机控制系统应用方向学年设计说明书 学院名称: 计算机与信息工程学院 班级名称: 计科101 学生姓名: 祖 杰. 赵雷. 周来宇. 朱路平. 张毅苗 学 号:2010211154.2010211150. ...

    单片机音乐盒课程设计

    姓名:蔡晓锋 学号学院:计算机与信息工程学院 专业班级:自动化3班 论文题目:基于单片机的音乐盒设计 任课老师:赵伟志 [摘要]本设计是一个基于STC 12c5608ad 系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译 ...

    电子琴实验报告

    电子琴实验报告 一, 实验目的 1.进一步巩固和加深理论课基本知识的理解,提高综合运用所学知识的能力. 2.能根据需要选择参考书,查阅资料,通过独立思考,深入钻研有关问题. 3.学会自己独立分析问题.解决问题. 4.学习按键扫描及蜂鸣器应用 ...

    基于51单片机简易电子琴的设计

    电子琴的设计 1 课题背景 单片微型计算机室大规模集成电路技术发展的产物,属于第四代电子计算机它具有高性能.高速度.体积小.价格低廉.稳定可靠.应用广泛的特点.他的应用必定导致传统的控制技术从根本上发生变革.因此,单片机的开发应用已成为高科 ...

    电子时钟设计报告

    目 录 1题目设计的要求................................................1 2 系统硬件设计...............................................1-5 ...

    自动控制升降旗系统

    <现代电子技术>2007年第11期总第250期 测试・测量・自动化 自动控制升降旗系统 张 超1, 谭静芳1, 高秀美2, 赵 健1 (1. 泰山学院 山东泰安 271000;2. 泰安市岱岳区技工学校 山东泰安 271000) ...