|
#include<reg52.h> //頭文件
#define uint unsigned int //宏定義
#define uchar unsigned char //宏定義
sbit speaker=P1^4;//喇叭接口
uchar a,b; //定義ab變量
void check_key() //按鍵函數(shù)
{
P3=0xff;//先賦給P2組口高電平
switch(P3)//按下一個鍵
{
case 0xfe:a=0xfb;b=0xe9;EA=1;break;//根據(jù)不同按鍵ab的值不同
case 0xfd:a=0xfc;b=0x5c;EA=1;break;//注意:EA不能改為TR0
case 0xfb:a=0xfc;b=0xc1;EA=1;break;
case 0xf7:a=0xfc;b=0xef;EA=1;break;
case 0xef:a=0xfd;b=0x45;EA=1;break;
case 0xdf:a=0xfd;b=0x92;EA=1;break;
case 0xbf:a=0xfd;b=0xd0;EA=1;break;
case 0x7f:a=0xfd;b=0xee;EA=1;break;
default:EA=0;speaker=0; //沒有按鍵按下,關(guān)閉定時器和喇叭
}
}
void main()
{
TMOD=0x01; //定時器0工作方式1
TH0=a;
TL0=b; //賦初值
ET0=1;//打開定時器,但是未允許中斷
TR0=1;//打開定時器0
while(1) //主循環(huán)
{
check_key(); //掃描按鍵函數(shù)
}
}
void time0() interrupt 1//定時器0的工作函數(shù)
{
TH0=a;
TL0=b; //將ab的值做為定時器的初值
speaker=~speaker; //喇叭電平取反喇叭根據(jù)不同的頻率震動就可以發(fā)聲了
}
|
-
aa.png
(97.39 KB, 下載次數(shù): 27)
下載附件
2019-5-31 08:00 上傳
-
-
電子琴.rar
2019-5-31 08:04 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
40.59 KB, 下載次數(shù): 11, 下載積分: 黑幣 -5
|