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

📄 电子琴.txt

📁 电子琴程序,硬件 p2.6经过两个三极管9013放大 接上一块小喇叭
💻 TXT
字号:
 

硬件 p2.6经过两个三极管9013放大 接上一块小喇叭 




键盘接头 clk脚接p3.3 DATA脚接P1.0




程序如下




/*时钟频率传递给P3.3 数据传递给P1.0*/
#include<reg51.h>
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
sbit P33=P3^3;
sbit P26=P2^6;
unsigned char code table[]={3,243,37,13,153,73,65,31,1,9,2,242,36,12,152,72,65,30,0,8,255};
unsigned int code m[]={63628,63835,64021,64103,64260,64400,64524,64580,64684,64777
       ,64820,64898,64968,65030,65058,65110,65157,65178,65217,65252,65283};
unsigned char key=0,count,i,count1;
void delay()
{
unsigned char i1,i2;
for (i1=0;i1<15;i1++)
{
  for(i2=0;i2<15;i2++)
  {
  }
}
}
void screen(unsigned char w,unsigned char v) /*数码管的显示程序*/
{
switch (w)
{
  case 1:P2=P2&0xf1;P2=P2|1;break;
  case 2:P2=P2&0xf2;P2=P2|2;break;
  case 3:P2=P2&0xf4;P2=P2|4;break;
  case 4:P2=P2&0xf8;P2=P2|8;break;
}
P0=table[v];
delay();
}




main()
{ 
EA=1;
EX1=1; /*开中断*/
ET0=1;
P2=00;
TMOD=0x11;
while(1) /*显示按键循环*/
{  
  screen(3,key/100);
  screen(2,(key%100)/10);
  screen(1,key%10);
  if(++count1==120)
  {
   TR0=0;
   key=0;
   P26=0;
  }
  if(++count==15)
  { 
   count=0;
   switch (key)
   {
       
    case 168:i=0;TR0=1;break;
    case 184:i=1;TR0=1;break;
    case 36:i=2;TR0=1;break;
    case 180:i=3;TR0=1;break;
    case 52:i=4;TR0=1;break;
    case 172:i=5;TR0=1;break;
    case 60:i=6;TR0=1;break;
    case 56:i=7;TR0=1;break;
    case 216:i=8;TR0=1;break;
    case 196:i=9;TR0=1;break;
    case 212:i=10;TR0=1;break;
    case 44:i=11;TR0=1;break;
    case 204:i=12;TR0=1;break;
    case 220:i=13;TR0=1;break;
    case 88:i=14;TR0=1;break;
    case 68:i=15;TR0=1;break;
    case 132:i=16;TR0=1;break;
    case 84:i=17;TR0=1;break;
    case 76:i=18;TR0=1;break;
    case 140:i=19;TR0=1;break;
    case 92:i=20;TR0=1;break;
    default: TR0=0;break;
    
   }
  }
}
}




void keyrupt() interrupt 2 using 2 /*使用外部中断1*/
{ 
unsigned char i1,i2=0;
TF1=0;
while(P33==0);
for(i1=0;i1<8;i1++)
{ TH1=250;
  TR1=1;
  while(P33==1 && TF1==0);
  if(TF1==1)
  {return;}
  i2<<=1;
  if(P10==0)
  {
   i2=i2&254;
  }
  else
  {
   i2=i2|01;
  }
  while(P33==0);
}
for(i1=0;i1<2;i1++)
{ TH1=250;
  TR1=1;
  while(P33==1 && TF1==0);
  if(TF1==1)
  {break;}
}
key=i2;
count1=0;
return;
}
void time() interrupt 1 using 1
{
TH0=m/256;
TL0=m%256;
P26=~P26;
return;
}

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -