可編程樂曲演奏器程序設(shè)計(jì).doc
約9頁DOC格式手機(jī)打開展開
可編程樂曲演奏器程序設(shè)計(jì),基于at89c51音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單處機(jī)某個(gè)口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音調(diào)。通過控制聲音頻率和發(fā)聲時(shí)間長短即可完成一般的音樂演奏。在實(shí)驗(yàn)中,通...


內(nèi)容介紹
此文檔由會(huì)員 會(huì)飛的豬 發(fā)布
基于AT89C51 音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單處機(jī)某個(gè)口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音調(diào)。
通過控制聲音頻率和發(fā)聲時(shí)間長短即可完成一般的音樂演奏。在實(shí)驗(yàn)中,通過控制輸出方波的頻率可得到不同的聲音頻率。人耳可分辨的聲音頻率在17Hz—10Hz之間。實(shí)際上,利用單片機(jī)內(nèi)部定時(shí)器,計(jì)數(shù)初值不同,即可得到不同的輸出方波頻率。由于MCS-51單片機(jī)的計(jì)算能力較弱,對應(yīng)不同音頻的計(jì)數(shù)值可事先計(jì)算好,通過查表取得。
不同聲音的發(fā)聲時(shí)間長短依樂曲而定,該值通常為0.1~1S。
通過控制定顯示器的定時(shí)時(shí)間產(chǎn)生不同頻率的方波,驅(qū)動(dòng)喇叭發(fā)出不同音階的聲音,現(xiàn)利用延時(shí)不控制發(fā)音時(shí)間的長短,即可控制節(jié)拍,把樂譜中的音符和相應(yīng)的節(jié)拍變換成定常和延時(shí)常數(shù),作為數(shù)據(jù)表格存在存貯器中。自程序查表得到定時(shí)常數(shù)和延遲常數(shù),分別用以控制定時(shí)器產(chǎn)生方波的頻率和發(fā)出該頻率方波的持續(xù)時(shí)間。當(dāng)延時(shí)時(shí)間到,再查下一個(gè)音符的定時(shí)常數(shù)和延時(shí)常數(shù)。依次進(jìn)行下去。
音符的節(jié)拍我們可以用定時(shí)器T0來控制,送入不同的初值,就可以產(chǎn)生不同的定時(shí)時(shí)間。便如某歌曲的節(jié)奏為每分鐘94拍,即一拍為0.64秒。其它節(jié)拍與時(shí)間的對應(yīng)關(guān)系下表。
但時(shí),由于T0的最大定時(shí)時(shí)間只能為131毫秒,因此不可能直接用改變T0的時(shí)間初值來實(shí)現(xiàn)不同節(jié)拍。我們可以用T0來產(chǎn)生10毫秒的時(shí)間基準(zhǔn),然后設(shè)置一個(gè)中斷計(jì)數(shù)器,通過判別中斷計(jì)數(shù)器的值來控制節(jié)拍時(shí)間的長短。表2中也給出了各種節(jié)拍所對應(yīng)的時(shí)間常數(shù)。例如對1/4拍音符,定時(shí)時(shí)間為0.16秒,相應(yīng)的時(shí)間常數(shù)為16(即10H);對3拍音符,定時(shí)時(shí)間為1.92秒,相應(yīng)時(shí)間長數(shù)為192(即C0H)。我們將每一音符的時(shí)間常數(shù)和其相應(yīng)的節(jié)拍常數(shù)作為一組,按順序?qū)非械乃谐?shù)排列成一個(gè)表,然后由查表程序依次取出,產(chǎn)生音符并控制節(jié)奏,就可以實(shí)現(xiàn)演奏效果。
此外,結(jié)束符和體止符可以分別用代碼00H和FFH來表示,若查表結(jié)果為00H,則表示曲子終了;若查表結(jié)果為FFH,則產(chǎn)生相應(yīng)的停頓效果。
為了產(chǎn)生手彈的節(jié)奏感,在某些音符(例如兩個(gè)相同音符)音插入一個(gè)時(shí)間單位的頻率略有不同的音符。
通過控制聲音頻率和發(fā)聲時(shí)間長短即可完成一般的音樂演奏。在實(shí)驗(yàn)中,通過控制輸出方波的頻率可得到不同的聲音頻率。人耳可分辨的聲音頻率在17Hz—10Hz之間。實(shí)際上,利用單片機(jī)內(nèi)部定時(shí)器,計(jì)數(shù)初值不同,即可得到不同的輸出方波頻率。由于MCS-51單片機(jī)的計(jì)算能力較弱,對應(yīng)不同音頻的計(jì)數(shù)值可事先計(jì)算好,通過查表取得。
不同聲音的發(fā)聲時(shí)間長短依樂曲而定,該值通常為0.1~1S。
通過控制定顯示器的定時(shí)時(shí)間產(chǎn)生不同頻率的方波,驅(qū)動(dòng)喇叭發(fā)出不同音階的聲音,現(xiàn)利用延時(shí)不控制發(fā)音時(shí)間的長短,即可控制節(jié)拍,把樂譜中的音符和相應(yīng)的節(jié)拍變換成定常和延時(shí)常數(shù),作為數(shù)據(jù)表格存在存貯器中。自程序查表得到定時(shí)常數(shù)和延遲常數(shù),分別用以控制定時(shí)器產(chǎn)生方波的頻率和發(fā)出該頻率方波的持續(xù)時(shí)間。當(dāng)延時(shí)時(shí)間到,再查下一個(gè)音符的定時(shí)常數(shù)和延時(shí)常數(shù)。依次進(jìn)行下去。
音符的節(jié)拍我們可以用定時(shí)器T0來控制,送入不同的初值,就可以產(chǎn)生不同的定時(shí)時(shí)間。便如某歌曲的節(jié)奏為每分鐘94拍,即一拍為0.64秒。其它節(jié)拍與時(shí)間的對應(yīng)關(guān)系下表。
但時(shí),由于T0的最大定時(shí)時(shí)間只能為131毫秒,因此不可能直接用改變T0的時(shí)間初值來實(shí)現(xiàn)不同節(jié)拍。我們可以用T0來產(chǎn)生10毫秒的時(shí)間基準(zhǔn),然后設(shè)置一個(gè)中斷計(jì)數(shù)器,通過判別中斷計(jì)數(shù)器的值來控制節(jié)拍時(shí)間的長短。表2中也給出了各種節(jié)拍所對應(yīng)的時(shí)間常數(shù)。例如對1/4拍音符,定時(shí)時(shí)間為0.16秒,相應(yīng)的時(shí)間常數(shù)為16(即10H);對3拍音符,定時(shí)時(shí)間為1.92秒,相應(yīng)時(shí)間長數(shù)為192(即C0H)。我們將每一音符的時(shí)間常數(shù)和其相應(yīng)的節(jié)拍常數(shù)作為一組,按順序?qū)非械乃谐?shù)排列成一個(gè)表,然后由查表程序依次取出,產(chǎn)生音符并控制節(jié)奏,就可以實(shí)現(xiàn)演奏效果。
此外,結(jié)束符和體止符可以分別用代碼00H和FFH來表示,若查表結(jié)果為00H,則表示曲子終了;若查表結(jié)果為FFH,則產(chǎn)生相應(yīng)的停頓效果。
為了產(chǎn)生手彈的節(jié)奏感,在某些音符(例如兩個(gè)相同音符)音插入一個(gè)時(shí)間單位的頻率略有不同的音符。
TA們正在看...
- 鄉(xiāng)鎮(zhèn)人口計(jì)生“雙誠信雙承諾”創(chuàng)建工作實(shí)施方案.doc
- 鄉(xiāng)鎮(zhèn)治安整治行動(dòng)總體方案.doc
- 鄉(xiāng)鎮(zhèn)綜合文化站半年工作總結(jié).doc
- 依托新興媒體做好社區(qū)工作.doc
- 2014第一學(xué)期五年級語文組教科研工作計(jì)劃.doc
- 2014年鄉(xiāng)鎮(zhèn)消防隊(duì)伍建設(shè)工作實(shí)施方案.doc
- 高一班主任工作計(jì)劃.doc
- 五年級班主任工作計(jì)劃.doc
- 鄉(xiāng)鎮(zhèn)2014年道路交通安全應(yīng)急預(yù)案.doc
- 鄉(xiāng)鎮(zhèn)行政事業(yè)單位股級干部競爭上崗實(shí)施方案.doc