您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>C/C++語(yǔ)言編程>

C語(yǔ)言程序如何讓蜂鳴器開口說(shuō)話

大?。?/span>0.1 MB 人氣: 2017-09-06 需要積分:0

簡(jiǎn)易電子琴實(shí)驗(yàn)

/* ch09-5-1.c- 簡(jiǎn)易電子琴實(shí)驗(yàn) */
#include? ???// 包含reg51.h檔??
#define LED? P1????// 定義LED位置?
#define SW_Port? P2???// 定義按鍵位置?
sbit? buzzer=P3^7;???// 聲明蜂鳴器位置?
unsigned char? keys;??// 聲明變量??
/* 聲明音階陣列 --???? ??Do?Re?Mi?Fa?So?La?Si?Do_H? */
unsigned char code tone[]= {115,?102,?91,?86,?77,?68,?61,?57 };
void sound(unsigned char);?// 聲明發(fā)聲函數(shù)?
void delay8us(unsigned char);// 聲明延遲函數(shù)?
//====主程序=====================================
main()??????// 主程序開始?
{?while (1)????// while循環(huán)???
?{?LED=SW_Port = 0xff;?// 將LED關(guān)閉,SW_Port規(guī)劃成輸入埠?
??keys=~SW_Port;??// 讀取按鍵?
??switch (keys)??// 判讀?
??{?case 0x01:sound(0);break; ?// 按下S1,發(fā)Do音?
???case 0x02:sound(1);break; ?// 按下S2,發(fā)Re音?
???case 0x04:sound(2);break; ?// 按下S3,發(fā)Mi音?
???case 0x08:sound(3);break; ?// 按下S4,發(fā)Fa音?
???case 0x10:sound(4);break; ?// 按下S5,發(fā)So音?
???case 0x20:sound(5);break; ?// 按下S6,發(fā)La音?
???case 0x40:sound(6);break; ?// 按下S7,發(fā)Si音?
???case 0x80:sound(7);break; ?// 按下S8,發(fā)高音Do音?
??} ?
?}?????????// while循環(huán)結(jié)束?
}??????????// 主程序結(jié)束?
//=====發(fā)聲函數(shù)=============================
void sound(unsigned char x)????// 發(fā)聲函數(shù)開始
{?unsigned char i;?????// 聲明變量?
?LED=SW_Port;??????// 點(diǎn)亮LED
?for (i=0;i<60;i++)?????// 執(zhí)行60次?
?{?buzzer=0; delay8us(tone[x]);?// 蜂 器動(dòng)作?
??buzzer=1; delay8us(tone[x]);}?// 蜂 器不動(dòng)作?
?LED=0xff;???????// 關(guān)閉LED
}??????????// 結(jié)束?
//======延遲函數(shù)==============================
void delay8us(unsigned char x)?// 延遲函數(shù)開始?
{?unsigned char i,j;???// 聲明變量?
?for (i=0;i ??for (j=0;j<1;j++);??// 內(nèi)循環(huán)?
}????????// 結(jié)束?

非常好我支持^.^

(1) 100%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?