電子琴.PNG (59.85 KB, 下載次數: 29)
下載附件
2019-7-7 12:47 上傳
0.jpg (57.63 KB, 下載次數: 25)
下載附件
2019-7-8 19:50 上傳
0.jpg (94.16 KB, 下載次數: 25)
下載附件
2019-7-8 19:50 上傳
單片機源程序如下:
- #include<reg52.h> //頭文件
- #define uint unsigned int //宏定義
- #define uchar unsigned char //宏定義
- sbit speaker=P1^4;//喇叭接口
- uchar a,b; //定義ab變量
- void check_key() //按鍵函數
- {
- P3=0xff;//先賦給P2組口高電平
- switch(P3)//按下一個鍵
- {
- case 0xfe:a=0xfb;b=0xe9;EA=1;break;//根據不同按鍵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; //沒有按鍵按下,關閉定時器和喇叭
- }
- }
- void main()
- {
- TMOD=0x01; //定時器0工作方式1
- TH0=a;
- TL0=b; //賦初值
- ET0=1;//打開定時器,但是未允許中斷
- TR0=1;//打開定時器0
- while(1) //主循環
- {
- check_key(); //掃描按鍵函數
- }
- }
- void time0() interrupt 1//定時器0的工作函數
- {
- TH0=a;
- TL0=b; //將ab的值做為定時器的初值
- speaker=~speaker; //喇叭電平取反喇叭根據不同的頻率震動就可以發聲了
- }
復制代碼
設計報告.PNG (136.75 KB, 下載次數: 30)
下載附件
2019-7-7 12:48 上傳
所有資料51hei提供下載:
電子琴.7z
(5.31 MB, 下載次數: 49)
2019-7-8 19:51 上傳
點擊文件名下載附件
包含仿真 報告 源文件等 下載積分: 黑幣 -5
|