1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉
標題:
基于51單片機的電子琴課設
[打印本頁]
作者:
hh4480
時間:
2017-3-3 15:42
標題:
基于51單片機的電子琴課設
基于51單片機的電子琴課設
0.png
(32.89 KB, 下載次數: 70)
下載附件
2017-3-3 21:49 上傳
0.png
(62.05 KB, 下載次數: 50)
下載附件
2017-3-3 21:48 上傳
下載:
電子琴.zip
(16.84 KB, 下載次數: 41)
2017-3-3 15:41 上傳
點擊文件名下載附件
電子琴課設
下載積分: 黑幣 -5
#include <AT89X51.H>
unsigned char temp;
unsigned char key;
unsigned char i,j;
unsigned char STH0;
unsigned char STL0;
unsigned int code tab[]= //音符表
{64021,64103,64260,64400,
64524,64580,64684,64777,
64820,64898,64968,65030,
65058,65110,65157,65178};
void main(void){ //主程序
TMOD=0x01;
ET0=1;
EA=1;
while(1){
P3=0xff;
P3_4=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f) { //從第一行開始掃描鍵盤
for(i=50;i>0;i--) //延時,反彈跳
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f){
temp=P3;
temp=temp & 0x0f;
switch(temp){ //讀取按鍵值
case 0x0e:
key=0;
break;
case 0x0d:
key=1;
break;
case 0x0b:
key=2;
break;
case 0x07:
key=3;
break;
}
temp=P3;
P1_0=~P1_0;
STH0=tab[key]/256; //計算音符對應的定時器計數值
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f){
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}
P3=0xff;
P3_5=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f){ //掃描鍵盤第二行
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f){
temp=P3;
temp=temp & 0x0f;
switch(temp){
case 0x0e:
key=4;
break;
case 0x0d:
key=5;
break;
case 0x0b:
key=6;
break;
case 0x07:
key=7;
break;
}
temp=P3;
P1_0=~P1_0;
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f){
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}
P3=0xff;
P3_6=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f){ //掃描鍵盤第三行
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f){
temp=P3;
temp=temp & 0x0f;
switch(temp){
case 0x0e:
key=8;
break;
case 0x0d:
key=9;
break;
case 0x0b:
key=10;
break;
case 0x07:
key=11;
break;
}
temp=P3;
P1_0=~P1_0;
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f){
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}
P3=0xff;
P3_7=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f){ //掃描鍵盤第四行
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f){
temp=P3;
temp=temp & 0x0f;
switch(temp){
case 0x0e:
key=12;
break;
case 0x0d:
key=13;
break;
case 0x0b:
key=14;
break;
case 0x07:
key=15;
break;
}
temp=P3;
P1_0=~P1_0;
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f){
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}
}
}
void t0(void) interrupt 1 using 0 { //定時器T0中斷服務函數
TH0=STH0;
TL0=STL0;
P1_0=~P1_0; //產生方波
}
復制代碼
作者:
641520932
時間:
2018-9-20 14:41
666666666666666
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1