微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于51单片机的 点阵+音乐=祝你生日快乐

基于51单片机的 点阵+音乐=祝你生日快乐

时间:08-30 来源:互联网 点击:

//==========按键==========================================
void kk()
{
if(!k1){delay500();if(++flag>1)flag=0;else {a=72;a2=0;}sta=1;}
if(!k2){delay500();if(++mdflag>1)mdflag=0;sta=1;}
}
//=========延时===========================================
void delay(uint m)
{
uint i,j;
for(i=0;im;i++)
{
for(j=0;j300;j++)
{kk();if(sta){sta=0;goto abc;}}
}
abc:;
}
//------按键消拉动用----------------
void delay500()
{
uint i1;
P0=0XFF;
P1=0X0F;
P2=0X00;
for(i1=0;i132000;i1++);
}
//=========定时器T0用于频率产生和显示======================
void time0() interrupt 1
{
P0=0XFF;
P1=0X0F;
P2=0X00;
TH0=mius>>8;
TL0=mius0xff;
YY=~YY;
switch(flag)
{
case 0:{ //笑脸
P0=tabfas[a];
P1=tabfas[a+24];
P2=tabfas[a+48];
if(++disfla1700){if(++a>11)a=0;}
if(disfla1>=700){if(++a>23)a=11;}
if(disfla1>800){a=0;disfla1=0;}
}break;
case 1:{ //汉字
P0=tabfas[a];
P1=tabfas[a+192];
P2=tabfas[a+348];
if(++disfla1500){if(++a>(a2+83))a=(a2+72);}
else{if(++a>(a2+83))a=(a2+72);}
if(disfla1>1000){a2+=12;disfla1=0;}
if(a2>144){a2=0;}
}break;
default:break;
}
}
//========定时器T1只用于显示================================
void time1() interrupt 3
{
P0=0XFF;
P1=0X0F;
P2=0X00;
TH1=0xf8;
TL1=0x30;
switch(flag)
{
case 0:{ //笑脸
P0=tabfas[a];
P1=tabfas[a+24];
P2=tabfas[a+48];
if(++disfla1700){if(++a>11)a=0;}
if(disfla1>=700){if(++a>23)a=11;}
if(disfla1>800){a=0;disfla1=0;}
}break;
case 1:{ //汉字
P0=tabfas[a];
P1=tabfas[a+192];
P2=tabfas[a+348];
if(++disfla1500){if(++a>(a2+83))a=(a2+72);}
else{if(++a>(a2+83))a=(a2+72);}
if(disfla1>1000){a2+=12;disfla1=0;}
if(a2>144){a2=0;}
}break;
default:break;
}
}
/////////////////////////////////////////////////////////////
//=========================================================//
//----------------主程序-----------------------------------//
//=========================================================//
/////////////////////////////////////////////////////////////
void main()
{
P0=0XFF;
P1=0X0F;
P2=0X00;
P3=0XFD;
TMOD=0X11;
TH0=mius>>8;
TL0=mius0xff;
TH1=0xf8;
TL1=0x30;
TR0=1;
ET0=1;
TR1=0;
ET1=1;
EA=1;
while(1)
{
switch(mdflag)
{
case 0:{//音乐暂停
TR0=0;TR1=1;kk();sta=0;
}break;
case 1:{ //音乐继续
TR0=0;
delay(1);
TR0=1;
mius=miusdata[a1];
if(mius==0){TR0=0;TR1=1;}
else {TR1=0;TR0=1;}
delay(miustime[a1]);
if(++a1>=104)a1=0;
}break;
default:break;
}
}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top