📄 music.c
字号:
#include<reg51.h>
#define uchar unsigned char
uchar e; uchar *f;
sbit P30=P3^0;
sbit P31=P3^1;
sbit P32=P3^2;
sbit P33=P3^3;
sbit P34=P3^4;
sbit P35=P3^5;
sbit P36=P3^6;
sbit P37=P3^7;
sbit P10=P1^0;
void delay_100ms(uchar e)
{ uchar i,j,b;
for(b=0;b<e;b++)
{
for(j=0;j<244;j++)
for (i=0;i<140;i++) ;
} }
void delay_20us(uchar m)
{ uchar time0,i;
for(i=0;i<m;i++){
for (time0=0;time0<8;time0++) ; }
}
uchar code freq[]={
0xA9,0xEF,//00220HZ ,1 gao zai hou
0x73,0xF1,//00247HZ ,2
0x07,0xF3,//00277HZ ,3
0xC8,0xF3,//00294HZ ,4
0x1E,0xF5,//00330HZ ,5
0x4C,0xF6,//00370HZ ,6
0x5A,0xF7,//00415HZ ,7
0xD8,0xF7,//00440HZ 1
0xBD,0xF8,//00494HZ 2
0x87,0xF9,//00554HZ 3
0xE4,0xF9,//00587HZ 4
0x90,0xFA,//00659HZ 5
0x29,0xFB,//00740HZ 6
0xB1,0xFB,//00831HZ 7
0xEF,0xFB,//00880HZ `1
0x62,0xFC,//00988HZ `2
0xC7,0xFC,//01109HZ `3
0xF6,0xFC,//01175HZ `4
0x4B,0xFD,//01318HZ `5
0x98,0xFD,//01480HZ `6
0xDC,0xFD,//01661HZ `7
};
uchar code tab[]={ 0x00,0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,
0x07 ,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
uchar display(void)
{ uchar hang,lie;
uchar *p;
P0=0x00;
p=tab;
P10=0;
while(1)
{
P3=0xf0;
if(P30==1)hang=1;
if(P31==1)hang=2;
if(P32==1)hang=3;
if(P33==1)hang=4;
P3=0x0f;
if(P34==1)lie=1;
if(P35==1)lie=2;
if(P36==1)lie=3;
if(P37==1)lie=4;
if((hang==1)&&(lie==1)){P0=tab[1]; return(1) ; }
if((hang==1)&&(lie==2)){P0=tab[2]; return(2) ; }
if((hang==1)&&(lie==3)) {P0=tab[3]; return(3) ; }
if((hang==1)&&(lie==4)){P0=tab[4]; return(4) ; }
if((hang==2)&&(lie==1)) {P0=tab[5];return(5) ; }
if((hang==2)&&(lie==2)){P0=tab[6]; return(6) ; }
if((hang==2)&&(lie==3)) {P0=tab[7];return(7) ; }
if((hang==2)&&(lie==4)){P0=tab[8]; return(8) ; }
if((hang==3)&&(lie==1)) {P0=tab[9];return(9) ; }
if((hang==3)&&(lie==2)) {P0=tab[10]; return(10) ; }
if((hang==3)&&(lie==3)) {P0=tab[11]; return(11); }
if((hang==3)&&(lie==4)){P0=tab[12]; return(12) ; }
if((hang==4)&&(lie==1)) {P0=tab[13]; return(13) ; }
if((hang==4)&&(lie==2)) {P0=tab[14];return(14) ; }
if((hang==4)&&(lie==3)) {P0=tab[15]; return(15) ; }
if((hang==4)&&(lie==4)) {P0=tab[16]; return(16) ; }
}
}
void timer0() interrupt 1
{
TH0=freq[e+1];TL0=freq[e];P10=~P10;
}
void main()
{
TMOD=0x01;
TH0=0x00;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
while(1){ e=display(); delay_100ms(5);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -