📄 music.c
字号:
{
P_Dat1621 = High ;
}
else
{
P_Dat1621 = Low ;
}
P_Clk1621 = High ;
Data_Tmp >>= 1 ;
}
P_Cs1621 = High ;
}
/************************************************/
void Update_Disp( void )
{
uchar i;
for ( i=0;i<8;i++ )
{
WriteHt1621( (15+i*2),Disp_Buf0[i] );
Disp_Buf0[i] = 0 ;
}
}
/************************************************/
void Lcd_Initial( void)
{
Lcd_Command( Lcd_On ) ;
Lcd_Command( Sys_En ) ;
Lcd_Command( Bais_4 ) ;
Update_Disp() ;
}
/************************************************/
void Make_Flag_Data( uchar LCD_Flag )
{
Disp_Buf0[ Lcd_Flag_Tab[(LCD_Flag)][0] ] |= Lcd_Flag_Tab[(LCD_Flag)][1] ;
}
/************************************************/
void Make_Char_Data( void )
{
uchar i,Tmp;
for ( i = 0; i < 4; i++ )
{
Tmp = Disp_Char_Buf[i];
if ( i )
{
Disp_Buf0[i+1] = Char_Byte_Tab[Tmp] ;
}
else
{
Tmp <<= 1;
Disp_Buf0[0] = Char_Word_Tab[Tmp] ;
Disp_Buf0[1] = Char_Word_Tab[Tmp+1];
}
}
}
/******************************************
; Delay
******************************************/
void Delay_10us(void)
{
nop ;
nop ;
nop ;
nop ;
nop ;
nop ;
}
//-----------------------------------------
void Delay_ms(uchar count)
{
uchar i=0 ;
uchar j=0 ;
for (i=0;i<count;i++)
{
for (j=0;j<78;j++)
{
Delay_10us() ;
}
}
}
//===================================================
uchar code ZNPA_Tab[]=
{// 频率,节拍,频率,节拍,
0x26,0x20,0x20,0x20,
0x20,0x20,0x26,0x10,
0x20,0x10,0x20,0x80,
0x26,0x20,0x30,0x20,
0x30,0x20,0x39,0x10,
0x30,0x10,0x30,0x80,
0x26,0x20,0x20,0x20,
0x20,0x20,0x1c,0x20,
0x20,0x80,0x2b,0x20,
0x26,0x20,0x20,0x20,
0x2b,0x10,0x26,0x10,
0x2b,0x80,0x26,0x20,
0x30,0x20,0x30,0x20,
0x39,0x10,0x26,0x10,
0x26,0x60,0x40,0x10,
0x39,0x10,0x26,0x20,
0x30,0x20,0x30,0x20,
0x39,0x10,0x26,0x10,
0x26,0x80,0x26,0x20,
0x2b,0x10,0x2b,0x10,
0x2b,0x20,0x30,0x10,
0x39,0x10,0x26,0x10,
0x2b,0x10,0x2b,0x20,
0x2b,0x40,0x40,0x20,
0x20,0x10,0x20,0x10,
0x2b,0x10,0x26,0x30,
0x30,0x80,0x18,0x20,
0x18,0x20,0x26,0x20,
0x20,0x20,0x20,0x40,
0x26,0x20,0x2b,0x20,
0x30,0x20,0x30,0x20,
0x1c,0x20,0x20,0x20,
0x20,0x80,0x1c,0x20,
0x1c,0x20,0x1c,0x20,
0x30,0x20,0x30,0x60,
0x39,0x10,0x30,0x10,
0x20,0x20,0x2b,0x10,
0x26,0x10,0x2b,0x10,
0x26,0x10,0x26,0x10,
0x2b,0x10,0x2b,0x80,
0x18,0x20,0x18,0x20,
0x26,0x20,0x20,0x20,
0x20,0x60,0x26,0x10,
0x2b,0x20,0x30,0x20,
0x30,0x20,0x1c,0x20,
0x20,0x20,0x20,0x80,
0x26,0x20,0x30,0x10,
0x30,0x10,0x30,0x20,
0x39,0x20,0x26,0x10,
0x2b,0x10,0x2b,0x20,
0x2b,0x40,0x40,0x10,
0x40,0x10,0x20,0x10,
0x20,0x10,0x2b,0x10,
0x26,0x30,0x30,0x80,0x00,
};
uchar code BYGH_Tab[]=
{// 频率,节拍,频率,节拍,
0x18,0x30,0x1C,0x10,
0x20,0x40,0x1C,0x10,
0x18,0x10,0x20,0x10,
0x1C,0x10,0x18,0x40,
0x1C,0x20,0x20,0x20,
0x1C,0x20,0x18,0x20,
0x20,0x80,0xFF,0x20,
0x30,0x1C,0x10,0x18,
0x20,0x15,0x20,0x1C,
0x20,0x20,0x20,0x26,
0x40,0x20,0x20,0x2B,
0x20,0x26,0x20,0x20,
0x20,0x30,0x80,0xFF,
0x20,0x20,0x1C,0x10,
0x18,0x10,0x20,0x20,
0x26,0x20,0x2B,0x20,
0x30,0x20,0x2B,0x40,
0x20,0x20,0x1C,0x10,
0x18,0x10,0x20,0x20,
0x26,0x20,0x2B,0x20,
0x30,0x20,0x2B,0x40,
0x20,0x30,0x1C,0x10,
0x18,0x20,0x15,0x20,
0x1C,0x20,0x20,0x20,
0x26,0x40,0x20,0x20,
0x2B,0x20,0x26,0x20,
0x20,0x20,0x30,0x80,
0x20,0x30,0x1C,0x10,
0x20,0x10,0x1C,0x10,
0x20,0x20,0x26,0x20,
0x2B,0x20,0x30,0x20,
0x2B,0x40,0x20,0x15,
0x1F,0x05,0x20,0x10,
0x1C,0x10,0x20,0x20,
0x26,0x20,0x2B,0x20,
0x30,0x20,0x2B,0x40,
0x20,0x30,0x1C,0x10,
0x18,0x20,0x15,0x20,
0x1C,0x20,0x20,0x20,
0x26,0x40,0x20,0x20,
0x2B,0x20,0x26,0x20,
0x20,0x20,0x30,0x30,
0x20,0x30,0x1C,0x10,
0x18,0x40,0x1C,0x20,
0x20,0x20,0x26,0x40,
0x13,0x60,0x18,0x20,
0x15,0x40,0x13,0x40,
0x18,0x80,0x00
};
//===================================================
void Music_Pro( BYTE Music_Tab[] )
{
uchar i,j;
for ( i=0;Music_Tab[i]>0;i++ )
{
if ( Music_Tab[i]==0xff )
{
P_Buzz = True;
Delay_ms( 100 );
}
else
{
Music10ms_Cnt = 0;
Pulse1WideTmp = Music_Tab[i];
Pulse2WideTmp = Music_Tab[++i];
while( Music10ms_Cnt<Pulse2WideTmp )
{
P_Buzz = ~P_Buzz;
for ( j=0;j<Pulse1WideTmp;j++ )
{
nop;
}
}
}
}
P_Buzz = True ;
}
/************************************************/
void CharDisplay( void )
{
Disp_Char_Buf[0] = LCD_M ;
Disp_Char_Buf[1] = LCD_V ;
Disp_Char_Buf[2] = LCD_5 ;
Disp_Char_Buf[3] = EepLed_Mode+1 ;
Make_Char_Data();
Make_Flag_Data(F_Lcd_X1) ;
}
/*===============================================================
; Time = 100us
===============================================================*/
void T1_INT(void) interrupt T1_Seq
{
TF1 = OFF ;
TH1 = TH_10MS ;
TL1 = TL_10MS ;
Music10ms_Cnt++ ;
}
/************************************************/
void Lcd_Led( void )
{
switch (EepLed_Mode)
{
case 0:
P_RedLed = Low ;
P_GreenLed = High;
P_BlueLed = High;
break ;
case 1:
P_RedLed = Low ;
P_GreenLed = Low;
P_BlueLed = High;
break ;
case 2:
P_RedLed = High;
P_GreenLed = Low ;
P_BlueLed = High;
break ;
case 3:
P_RedLed = High;
P_GreenLed = Low ;
P_BlueLed = Low ;
break ;
case 4:
P_RedLed = High;
P_GreenLed = High;
P_BlueLed = Low ;
break ;
case 5:
P_RedLed = Low ;
P_GreenLed = High;
P_BlueLed = Low ;
break ;
case 6:
P_RedLed = Low ;
P_GreenLed = Low ;
P_BlueLed = Low ;
break ;
}
}
/************************************************/
void main( void )
{
TMOD= 0x11 ;
TH1 = TH_10MS ;
TL1 = TL_10MS ;
TR1 = ON ;
ET1 = ON ;
EA = ON ;
Lcd_Initial();
while( 1 )
{
Lcd_Led() ;
CharDisplay() ;
Update_Disp() ;
Delay_ms(250) ;
Delay_ms(250) ;
Delay_ms(250) ;
Delay_ms(250) ;
if (EepLed_Mode&0x01)
{
Music_Pro(BYGH_Tab);
}
else
{
Music_Pro(ZNPA_Tab) ;
}
++EepLed_Mode ;
if (EepLed_Mode>6)
{
EepLed_Mode=0 ;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -