您的位置:網(wǎng)站首頁(yè) > 電器維修資料網(wǎng) > 正文 >
淺談單片機(jī)唱歌匯編程序
來(lái)源: 日期:2013-11-5 23:27:18 人氣:標(biāo)簽:
一、單片機(jī)演奏音樂(lè)的方法
1.單片機(jī)發(fā)聲原理
聲音的頻譜范圍大約在幾十赫茲到幾千赫茲.若用程序控制單片機(jī)的i/o口,使其輸出一定頻率的的矩形波,經(jīng)放大電路放大,就可以驅(qū)動(dòng)喇叭或蜂鳴器發(fā)出一定頻率的聲音。具體地說(shuō)要產(chǎn)生音頻脈沖,只要知道某一音頻的頻率,就可以算出其周期f頻率的倒數(shù)),除以2得到半周期。利用單片機(jī)的定時(shí)器計(jì)時(shí)這半個(gè)周期的時(shí)間,計(jì)時(shí)到后將脈沖倒相后從i/o口輸出,然后重復(fù)計(jì)時(shí)此半個(gè)周期時(shí)間,再對(duì)i/o倒相,就可以在i/o口上得到此頻率的脈沖。51單片機(jī)內(nèi)部定肘,計(jì)數(shù)器計(jì)數(shù),工作于模式1. 大計(jì)數(shù)次數(shù)為65536.所以要選擇模式1.改變t值.在i/o腳得到不同頻率的脈沖。
2.t值計(jì)算方法如下:
t=65536-fi÷2÷fr注:fi:因單片機(jī)晶振,頻率為12mhz,計(jì)時(shí)一次為lus,所以fi=1000000hz;若單片機(jī)晶振為6mhz,計(jì)時(shí)一次為2us,所以fi為500000hz;fr為要產(chǎn)生的頻率:例如單片機(jī)晶振為12mhz,c調(diào)的低音l頻率為262hz,根據(jù)上述t值的計(jì)算公式可求得t=63628,轉(zhuǎn)換為16進(jìn)制是f88ch。
3.如何得到不同音調(diào)下音符的t值
根據(jù)音樂(lè)知識(shí)知道,十二平均律以八度為一個(gè)倍頻程,在一個(gè)八度中分出十二個(gè)等程半音,鋼琴鍵盤(pán)的大字組音調(diào)從低到高依次是c、#c(bd調(diào)與#c調(diào)音高相同,就是bd調(diào)與#c調(diào)的相同音符頻率相同,下周)、d、#d(bd調(diào)與*d調(diào)音高相同)、e、f、#f(bg調(diào)與#f調(diào)音高相同)、g、#g(ba調(diào)與#g調(diào)音高相同)、a、#a(bb調(diào)與#a調(diào)音高相同)、b.每個(gè)等程半音的音程是2的12次方=1.0593631.即相鄰兩個(gè)音調(diào)的相同音符的頻率關(guān)系是:音調(diào)高的是低的2的12次方倍。這個(gè)規(guī)律適用于鋼琴的所有鍵盤(pán),即適合所有音調(diào)。鋼琴鍵盤(pán)(88個(gè))自左向右(頻率逐漸升高)依次是!
大字二組:a2、#a2、b2;大字一組:,排列規(guī)律同大字組.從ci到b1共12位;大字組:c、#c、d、#d、e、f、#f、g、#g、a、#a、b:小字組:排列規(guī)律同大字組,從c到b共12位:小字一組:排列規(guī)律同大字組,從cl到bl共12位:小字二組:排列規(guī)律同大字組,從c2到b2共12位:小字三組:排列規(guī)雄同大字組,從c3到b3共12位:小字四組:排列規(guī)律同大字組,從c4到b4共12位;小字五組:只有c5。
【看看這篇文章在百度的收錄情況】
相關(guān)文章
- 上一篇: 何謂”點(diǎn)屏“
- 下一篇: 幾款常用的電源相序測(cè)試法