吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

單片機 | 音樂程序設計原理解析

2oON_changxuemc ? 來源:YXQ ? 2019-06-05 17:18 ? 次閱讀

我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單處機某個口線的“高”電平或低電平,則在該口線上就能產生一定頻率的矩形波,接上喇叭就能發出一定頻率的聲音,若再利用延時程序控制“高”“低”電平的持續時間,就能改變輸出頻率,從而改變音調。

例如,要產生200Hz的音頻信號,接入喇叭(若屬臨時實驗,也可將喇叭直接接在P1口線上),實驗程序為:

其中子程序DEL為延時子程序,當R3為1時,延時時間約為20us,R3中存放延時常數,對200HZ音頻,其周期為1/200秒,即5ms。這樣,當P1.4的高電平或低電平的持續時間為2.5ms,即R3的時間常數取2500/20=125(7DH)時,就能發出200HZ的音調。將上述程序鍵入學習機,并不斷修改R3的常數可以感到音調的變化。

樂曲中,每一音符對應著確定的頻率,表1給出C調時各音符頻率及其相應的時間常數。

讀者可以根據表1所提供的常數,將其16進制代碼送入R3,反復練習體會。根據表1可以奏出音符。僅這還不夠,要準確奏出一首曲子,必須準確地控制樂曲節奏,即一音符的持續時間。

音符的節拍我們可以用定時器T0來控制,送入不同的初值,就可以產生不同的定時時間。便如某歌曲的節奏為每分鐘94拍,即一拍為0.64秒。其它節拍與時間的對應關系見表2。

但時,由于T0的最大定時時間只能為131毫秒,因此不可能直接用改變T0的時間初值來實現不同節拍。我們可以用T0來產生10毫秒的時間基準,然后設置一個中斷計數器,通過判別中斷計數器的值來控制節拍時間的長短。表2中也給出了各種節拍所對應的時間常數。例如對1/4拍音符,定時時間為0.16秒,相應的時間常數為16(即10H);對3拍音符,定時時間為1.92秒,相應時間長數為192(即C0H)。

我們將每一音符的時間常數和其相應的節拍常數作為一組,按順序將樂曲中的所有常數排列成一個表,然后由查表程序依次取出,產生音符并控制節奏,就可以實現演奏效果。

此外,結束符和體止符可以分別用代碼00H和FFH來表示,若查表結果為00H,則表示曲子終了;若查表結果為FFH,則產生相應的停頓效果。

為了產生手彈的節奏感,在某些音符(例如兩個相同音符)音插入一個時間單位的頻率略有不同的音符。

程序框圖如圖2所示。

下面給出程序序請單,可直接在TD-III型學習機上演奏,對其它不同型號的學習機,只需相應地改變一下地址即可。本程序演奏的是民歌“八月桂花遍地開”,C調,節奏為94拍/分。讀者也可以自行找出一首歌,按表1和表2給定的常數,將樂曲翻譯成碼表輸入機器,而程序不變。本實驗方法簡便,即使不懂音樂的人,將一首陌生的曲子翻譯成代碼也是易事,和著機器的演奏學唱一首歌曲,其趣味無窮。

硬件連接說明:

隨便找一個仿真機或者什么單片機實驗板,只要能工作的就行,將程序輸入,運行,然后找個音箱(你計算機旁邊應當就有一對吧)撥出插頭,插頭的前端接在P1。0上,后面部分找根線接單片機的地,就應當有聲了,然后怎么改進硬件連接就是你的事了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6043

    文章

    44621

    瀏覽量

    638609
  • 程序
    +關注

    關注

    117

    文章

    3796

    瀏覽量

    81418

原文標題:單片機音樂程序的設計原理解析

文章出處:【微信號:changxuemcu,微信公眾號:暢學單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于51單片機的遙控音樂系統仿真

    ”,表示播放,按下接收器的停止按鍵后停止播放音樂;(4)按下復位按鍵后回到初始狀態。仿真演示視頻:基于51單片機的遙控音樂系統仿真-仿真視頻設計介紹51單片機簡介51
    的頭像 發表于 10-22 14:12 ?218次閱讀
    基于51<b class='flag-5'>單片機</b>的遙控<b class='flag-5'>音樂</b>系統仿真

    基于51單片機的多模式音樂跑馬燈

    音樂至少有3首,并可以對其進行切換。 設計介紹 51單片機簡介 51單片是一種低功耗、高性能CMOS-8位微控制器,擁有靈巧的8位CPU和可編程Flash,使得51單片機為眾多嵌入式
    的頭像 發表于 10-22 14:10 ?510次閱讀
    基于51<b class='flag-5'>單片機</b>的多模式<b class='flag-5'>音樂</b>跑馬燈

    單片機怎么寫入程序

    程序通常涉及以下幾個步驟: 選擇單片機和開發環境 : 確定項目需求,選擇合適的單片機型號。 安裝相應的開發環境,如Keil、IAR、MPLAB等。 硬件連接 : 將單片機連接到開發板或
    的頭像 發表于 10-21 11:21 ?935次閱讀

    keil可以讀出單片機程序

    Keil是一款廣泛應用于單片機程序開發的軟件,它提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案。然而,關于Keil是否能直接“讀出”單片機程序
    的頭像 發表于 09-02 10:32 ?1249次閱讀

    單片機燒錄程序用什么軟件

    單片機燒錄程序單片機開發過程中的一個重要環節,涉及到將編寫好的程序代碼通過燒錄器寫入單片機的ROM中,以實現對
    的頭像 發表于 09-02 10:05 ?1660次閱讀

    單片機燒錄程序可以重新燒嗎

    單片機(Microcontroller Unit, MCU)是一種集成電路芯片,它將計算機的CPU、存儲器、輸入/輸出接口等集成在一塊芯片上,用于控制各種電子設備。單片機燒錄程序是指將編寫
    的頭像 發表于 09-02 10:04 ?1552次閱讀

    單片機燒錄程序的線比單片機上的少還能燒錄嗎

    單片機燒錄原理 單片機燒錄是指將編寫好的程序代碼通過一定的方式傳輸到單片機的存儲器中,使其能夠按照程序的指令運行。這個過程通常需要使用燒錄器
    的頭像 發表于 09-02 09:54 ?613次閱讀

    單片機燒錄程序的基本步驟是什么

    單片機燒錄程序單片機開發過程中非常重要的一步,它涉及到將編寫好的程序代碼通過一定的方式傳輸到單片機內部的存儲器中,使
    的頭像 發表于 09-02 09:47 ?1439次閱讀

    stm32單片機燒錄程序會擦除原來的程序

    在STM32單片機燒錄程序的過程中, 通常情況下會擦除原來的程序 ,并將新程序寫入單片機的閃存(Flash)中。這一過程是通過燒錄工具(如S
    的頭像 發表于 09-02 09:42 ?2523次閱讀

    基于51單片機兩路紅黃綠交通燈電路圖及程序

    本資源內容概要:? ? ? ?這是基于51單片機兩路紅黃綠交通燈電路圖及程序設計包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(keil軟件打開)。本資源適合人群
    發表于 06-24 17:32 ?2次下載

    基于51單片機矩陣鍵盤音樂電子琴電路圖proteus仿真及程序

    本資源內容概要:? ? ? ?這是基于51單片機矩陣鍵盤音樂電子琴電路圖proteus仿真及程序設計包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(kei
    發表于 06-21 14:32 ?4次下載

    基于51單片機分立器件超聲波測距電路圖及程序元件清單

    本資源內容概要:? ? ? ?這是基于51單片機分立器件超聲波測距電路圖及程序設計包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(keil軟件打開)、元件清單
    發表于 06-20 16:17 ?0次下載

    基于51單片機直流電機驅動測速電路圖及程序及元件清單

    本資源內容概要:? ? ? ?這是基于51單片機直流電機驅動測速電路圖及程序設計包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(keil軟件打開)、元件清單(excel
    發表于 06-20 16:16 ?1次下載

    基于51單片機8路搶答器電路圖proteus仿真及程序

    本資源內容概要:? ? ? ?這是基于51單片機8路搶答器電路圖proteus仿真及程序設計包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(keil軟件打開
    發表于 06-19 14:15 ?1次下載

    基于51單片機16路搶答器電路圖及程序元件清單

    本資源內容概要:? ? ? ?這是基于51單片機16路搶答器電路圖及程序設計包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(keil軟件打開)、元件清單(excel表格
    發表于 06-19 11:38 ?2次下載
    青鹏棋牌游戏大厅v3.0| 百家乐官网平玩法可以吗| 百家乐庄牌| 优博在线娱乐城| 百家乐平台信誉排名| 赢波娱乐| 百家乐线上真人游戏| 水城县| 真人百家乐蓝盾娱乐网| 澳门百家乐官网博彩能做到不输吗| 百家乐电子路单谁| 在线百家乐官网3d| 澳门太阳城娱乐城| 怎么玩百家乐官网的玩法技巧和规则 | 百家乐官网怎么押钱| 百樂坊百家乐的玩法技巧和规则| 百家乐官网桌布| 大发888体育场下载| 云赢百家乐官网分析| 芝加哥百家乐的玩法技巧和规则 | 天天百家乐的玩法技巧和规则| 百家乐官网赌博破解方法| 威尼斯人娱乐场28gxpjwnsr | 百家乐官网开户导航| TT娱乐城投注,| 南宁百家乐赌机| 百家乐官网讲谈| 永利网上娱乐| 百家乐注册送免费金| 视频百家乐官网平台出租| 大发888娱乐城 qq服务| 百家乐怎么压对子| 百家乐官网投注之对冲投注| bet365备用器| 百家乐一起多少张牌| 单机百家乐官网小游戏| 广西| 新太阳城娱乐| 百家乐一代龙虎机| 阿克| 大发888下载网站|