亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
51單片機8個按鍵的電子琴程序+電路
[打印本頁]
作者:
云為衣兮風飄飄
時間:
2019-6-5 22:09
標題:
51單片機8個按鍵的電子琴程序+電路
一.結構
芯片是STC89C,晶振用的11.0592M的Hz的,8個按鍵開關可以使蜂鳴器發出8個聲調:
dol re mi fa sol la xi dol(RST3~RST10),蜂鳴器為有源的,也可以換成0.5W的大喇叭,由于我是在單片機上做的實驗,沒有做出成品,所以沒有實物圖。
51單片機電子琴.png
(100.3 KB, 下載次數: 52)
下載附件
2019-6-5 21:57 上傳
二.代碼
代碼比較簡單,沒有用的中斷,也沒有用延時,全由if,for,while語句外加兩個數組所組成的。
三.或許其中還存在一些問題,希望大佬們能夠指出,我也是第一次發帖,謝謝大家!
單片機源程序如下:
#include<reg52.h>
#define unchar unsigned char
#define unint unsigned int
unchar code SONG_TONE[]={212,190,169,159,142,126,119,106};//音調
unchar code SONG_LONG[]={12,12,12,12,21,12,12,12};//各個音調的時間
sbit BEEP = P1^4;
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;
sbit key5=P3^4;
sbit key6=P3^5;
sbit key7=P3^6;
sbit key8=P3^7;
void main(void)
{
unint a,b,c,n;
if(key1 == 0)//判斷按鍵按下
{
a = 0;
while(SONG_LONG[a]!=0||SONG_TONE[a]!=0)
{
for(b=0;b<SONG_LONG[a]*20;b++)
{
for(n=0;n<10;n++)
{
BEEP=~BEEP;//蜂鳴器開始響
for(c=0;c<SONG_TONE[a]/4;c++);
}
break;
}
break;
}
BEEP=1;//使蜂鳴器停止響
}
if(key2 == 0)
{
a = 1;
while(SONG_LONG[a]!=0||SONG_TONE[a]!=0)
{
for(b=0;b<SONG_LONG[a]*20;b++)
{
for(n=0;n<10;n++)
{
BEEP=~BEEP;
for(c=0;c<SONG_TONE[a]/4;c++);
}
break;
}
break;
}
BEEP=1;
}
if(key3 == 0)
{
a = 2;
while(SONG_LONG[a]!=0||SONG_TONE[a]!=0)
{
for(b=0;b<SONG_LONG[a]*20;b++)
{
for(n=0;n<10;n++)
{
BEEP=~BEEP;
for(c=0;c<SONG_TONE[a]/4;c++);
}
break;
}
break;
}
BEEP=1;
}
if(key4 == 0)
{
a = 3;
while(SONG_LONG[a]!=0||SONG_TONE[a]!=0)
{
for(b=0;b<SONG_LONG[a]*20;b++)
{
for(n=0;n<10;n++)
{
BEEP=~BEEP;
for(c=0;c<SONG_TONE[a]/4;c++);
}
break;
}
break;
}
BEEP=1;
}
if(key5 == 0)
{
a = 4;
while(SONG_LONG[a]!=0||SONG_TONE[a]!=0)
{
for(b=0;b<SONG_LONG[a]*20;b++)
{
for(n=0;n<10;n++)
{
BEEP=~BEEP;
for(c=0;c<SONG_TONE[a]/4;c++);
}
break;
}
break;
}
BEEP=1;
}
if(key6 == 0)
{
a = 5;
while(SONG_LONG[a]!=0||SONG_TONE[a]!=0)
{
for(b=0;b<SONG_LONG[a]*20;b++)
{
for(n=0;n<10;n++)
{
BEEP=~BEEP;
for(c=0;c<SONG_TONE[a]/4;c++);
}
break;
}
break;
}
BEEP=1;
}
if(key7 == 0)
{
a = 6;
while(SONG_LONG[a]!=0||SONG_TONE[a]!=0)
{
for(b=0;b<SONG_LONG[a]*20;b++)
{
for(n=0;n<10;n++)
{
BEEP=~BEEP;
for(c=0;c<SONG_TONE[a]/4;c++);
}
break;
}
break;
}
BEEP=1;
}
if(key8 == 0)
{
a = 7;
while(SONG_LONG[a]!=0||SONG_TONE[a]!=0)
{
for(b=0;b<SONG_LONG[a]*20;b++)
{
for(n=0;n<10;n++)
{
BEEP=~BEEP;
for(c=0;c<SONG_TONE[a]/4;c++);
}
break;
}
break;
}
BEEP=1;
}
}
復制代碼
全部資料51hei下載地址:
電子琴.zip
(722 Bytes, 下載次數: 41)
2019-6-5 22:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
Jane_Xu
時間:
2019-6-12 23:29
我想請教樓主:while(SONG_LONG[a]!=0||SONG_TONE[a]!=0)
for(b=0;b<SONG_LONG[a]*20;b++)什么意思,沒怎么看懂
作者:
Jane_Xu
時間:
2019-6-12 23:33
c基礎整的不是很好,請樓主賜教!
作者:
abc111111
時間:
2019-6-13 01:57
學到了
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1