⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 music.c

📁 电子琴的模拟程序
💻 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 + -