📄 电子琴.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 + -