資料介紹
利用單片機(或單板機)奏樂大概是無線電愛好者感興趣的問題之一。本文從單片機的基本發間實驗出發,談談音樂程序的設計原理,并給出具體實例,以供參考。單片機的基本發音實驗
我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單處機某個口線的“高”電平或低電平,則在該口線上就能產生一定頻率的矩形波,接上喇叭就能發出一定頻率的聲音,若再利用延時程序控制“高”“低”電平的持續時間,就能改變輸出頻率,從而改變音調。
例如,要產生200HZ 的音頻信號,按圖1接入喇叭(若屬臨時實驗,也可將喇叭直接接在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,則產生對應的停頓效果。為了產生手彈的節奏感,在某些音符(例如兩個相同音符)音插入一個時間單位的頻率略有不一樣的音符。
下面給出程序序清單,可直接在TD-III 型學習機上演奏,對其它不一樣型號的學習機,只需對應地改變一下地址即可。本程序演奏的是民歌“八月桂花遍地開”,C 調,節奏為94拍/分。讀者也能自行找出一首歌,按表1和表2給定的常數,將樂曲翻譯成碼表輸入機器,而程序不變。本實驗辦法簡便,即使不懂音樂的人,將一首陌生的曲子翻譯成代碼也是易事,和著機器的演奏學唱一首歌曲,其趣味無窮。
- 嵌入式設計教程之匯編語言程序設計的詳細資料說明 10次下載
- 51單片機匯編語言教程之單片機鍵盤接口程序設計的詳細資料說明 19次下載
- 51單片機匯編語言教程之單片機條件轉移指令的詳細資料說明 15次下載
- 51單片機匯編語言教程之單片機定時器與計算器的詳細資料說明 23次下載
- 51單片機匯編語言教程之單片機邏輯與或異或指令的詳細資料講解 17次下載
- 51單片機匯編語言教程之單片機數據傳遞類指令的詳細資料概述 14次下載
- 嵌入式系統原理及應用教程之ARM匯編語言程序設計的詳細資料說明 11次下載
- 單片機基礎教程之匯編語言程序設計知識的詳細資料說明 10次下載
- 51單片機教程之80C51的匯編語言程序設計資料總結 9次下載
- 80C51單片機教程之80C51的匯編語言程序設計詳細資料總結 10次下載
- 51單片機教程之MCS51單片機C程序設計的詳細資料概述 11次下載
- 51單片機教程之指令系統及程序設計的詳細資料概述 8次下載
- 單片機教程之匯編語言程序設計的詳細資料講解 16次下載
- 基于51單片機匯編語言教程:22課單片機串行口通信程序設計 25次下載
- 51單片機匯編語言教程_單片機延時程序分析 0次下載
- PIC系列單片機程序設計基礎知識詳細說明 4636次閱讀
- 51單片機的匯編程序庫 9731次閱讀
- 51單片機實現最小系統的原理和電路與編程設計說明 8867次閱讀
- pic單片機的各種匯編語言指令解析 2495次閱讀
- PIC的指令系統和匯編語言指令格式說明 3539次閱讀
- 單片機C語言有哪些優越性?如何建立一個Keil C51項目 1.2w次閱讀
- 單片機 | 基礎匯編語言編程實例 1w次閱讀
- 51單片機的匯編語言指令中英文對照 5480次閱讀
- 單片機匯編語言常見錯誤知識點分析 6641次閱讀
- C語言與匯編語言相互結合的嵌套匯編語言 3541次閱讀
- 跑馬燈實驗用匯編語言和C51語言做出的不同效果 4097次閱讀
- 分享一些單片機匯編語言常見的語法和程序錯誤 7943次閱讀
- 單片機編程之匯編語言基礎-PIC單片機匯編指令 3092次閱讀
- 單片機編程之匯編語言基礎-常用指令和程序模式 1.5w次閱讀
- 匯編語言的結構化設計及其在俄羅斯方塊中的應用 3083次閱讀
下載排行
本周
- 1錦銳科技CA51F2 SDK開發包
- 24.06 MB | 29次下載 | 1 積分
- 2錦銳CA51F005 SDK開發包
- 19.47 MB | 3次下載 | 1 積分
- 310周年文章合集白皮書
- 15.63 MB | 2次下載 | 免費
- 4世界各國&地區常見電壓/頻率/插頭/插座一覽表
- 2.36 MB | 1次下載 | 免費
- 5FS4059B、FS4059C雙節鋰電池充電應用圖
- 0.05 MB | 1次下載 | 免費
- 6MX6200語音芯片使用手冊V1.4
- 1.25 MB | 1次下載 | 免費
- 7FH155C6A30電子開關芯片中文手冊
- 0.42 MB | 次下載 | 免費
- 8XILINX XCZU67DR FPGA完整原理圖
- 18.22 MB | 次下載 | 8 積分
本月
- 1AI智能眼鏡產業鏈分析
- 4.43 MB | 354次下載 | 免費
- 2蘇泊爾電磁爐線路的電路原理圖資料合集
- 2.02 MB | 294次下載 | 5 積分
- 3貼片三極管上的印字與真實名稱的對照表詳細說明
- 0.50 MB | 93次下載 | 1 積分
- 4長虹液晶電視R-HS310B-5HF01的電源板電路原理圖
- 0.46 MB | 87次下載 | 5 積分
- 5U盤一鍵制作
- 23.84 MB | 41次下載 | 免費
- 6錦銳科技CA51F2 SDK開發包
- 24.06 MB | 29次下載 | 1 積分
- 7AO4803A雙P通道增強型場效應晶體管的數據手冊
- 0.11 MB | 28次下載 | 2 積分
- 8長虹液晶彩電LS29機芯的技術資料說明
- 3.42 MB | 16次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191388次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論