国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

MIDI信號的解碼及實時音符顯示

發布時間:2010-11-3 12:56    發布者:eetech
關鍵詞: MIDI , 解碼 , 實時 , 信號 , 音符
MIDI是音樂設備數字接口的簡答,是各種電子音樂設備之間數據傳輸的標準接口,廣泛應用于各種電子樂器上,目前較高檔的電子琴子均帶有MIDI接口。筆者在開發用于音樂教學的產品“音樂電教板”的過程中,遇到了有關MIDI信號解碼的問題,產品要求能夠接受電子琴傳送來的MIDI信號,并將相應的音符顯示出來。經過對MIDI協議的研究,用AT89C51單片機和128段LED顯示控制芯片BC7281構成的系統完成了設計要求。  

1 MIDI信號簡介及與單片機的接口  

MIDI信號的傳輸采用異步串行方式,其速率為31.5kbps,數據格式為8個數據位、1個起始位和1個停止位。因此,完全可以采用MCS51單片機內部的硬件UART串口完成MIDI信號的接收和發送(本設計中只用到其接收部分),在硬件方面只需采取適當的電路進行電平轉換即可。  



MIDI接口采用標準的5芯DIN連接器,如圖1。傳送電纜使用屏蔽層的雙絞線電纜,因為信號的傳輸利用的是電流信號而不是電壓信號,所以其抗干擾能力比較強,盡管其速率高達31.5kbps,傳輸距離仍可以達到15m,比常見的RS-232接口的傳送距離要遠。一般的MIDI接收電路如圖2,本文采用與之相同的電路。  

其中RX接單片機的串口RX端,電路中的光耦既起到隔離的作用,又有電平轉換的作用,因為速率較高,必須選用開關速度較高的型號,這里使用的是6N136。D1是保護二極管。  

MIDI中共有16個通道(channel),一般稱之為通道1至通道16,每個通道相當于樂曲中的個聲部,使用者可以為每個通道指定一種音色。音色可以是MIDI規范中規定的128種音色中的任何一種,每一個通道只能有一種音色。也就是說,在一個標準的MIDI系統中,最多相當于可以有16種樂器同時演奏。  

按照MIDI協議的規定,傳送的數據可以分為兩類:狀態字節和數據字節。所謂狀態字節實際就是命令字,表明其后所跟數據的種類,狀態字節總是大于等于80H,而數據字節總是小于80H,因此,可以很容易地區分狀態字節和數據字節。在狀態字節中,用數據的低4位表示通道號,高4位表示不同的命令。比如,設定音色為ChH指令,其中n是通道號。  

在各種MIDI的指令中,與本機有關的只有兩種:8nH和9nH(n為通道號),兩種指令的基本格式一樣,一般由3個字節組成,格式是:  

8n(9n) aa bb  

其中,aa是音符數據,表明所演奏的音符,其范圍為0~7fH,這樣共有128個音符,足以覆蓋整個音域;bb是速度數據,表明擊鍵的速度,又稱力度數據,其范圍也是0~7fH。




第一個字節是狀態字節(指令),其具體含義說明如下:  

8nH——“音符關”指令,在多數MIDM設備中,該指令中的速度數據bb被忽略。  
9nH——“音符開”指令,如果速度數據等于0,則等同于8nH指令。在本機中,因為只需要顯示音符的開關,而不必考慮其聲音的大小,故速度數據被忽略(速度數據不等于0時)。  

MIDI中有一個特殊的通道即通道10,通道10是節奏樂器的專用通道,與其它通道不同,其它通道中不同的音符表示不同的音高,而在通道1中,不同音符表示不同的節奏樂器,因為節奏樂器是沒有音高的,一般如各種鼓等,在本機中,所要顯示的是各種旋律的音符,因此,通道10的數據要過濾掉。  

2 顯示電路  

音符的顯示,通過一個鋼琴鍵盤的面板,在鍵盤的每個鍵上,都有一個LED指示燈,用LED的亮和滅代表音符的開和關。一個完整的鋼琴鍵盤,83個鍵,再加上系統中用于指示工作狀態的指示燈等,本機需要顯示LED達100多個。因此,選用了16位數碼管(128位LED)及64鍵鍵盤接口芯片BC7281,該芯片可以驅動128個獨立的LED,同時還可以提供鍵盤管理,筆者設計的系統中16個按鍵,完全可以滿足要求。而其本身僅為18腳DIP封裝,體積小巧。



該芯片與MCU之間采用串行通信,只需要3根引線,為簡單起見,這里只給出本系統中鍵盤、顯示部分的電路框圖如圖3。  

BC7281中有16位顯示寄存器,其每一數據位都對應著顯示矩陣中的一個LED,每個數據位都有一個位地址,用以做尋址,樣每一個LED的開關都可以單獨控制,其地址范圍是07FH。將地址0~52H的LED作為音符顯示用,69H~7FH的地址作為系統狀態指示用,共余LED顯示不用。  

3 程序設計  

因為MIDI數據的傳送速率較高,因此,決定采用中斷的方式來處理MIDI數據。對于顯示部分,則在數據區中設立一個特定的緩沖區,處理MIDI數據的中斷程序只負責對緩沖區內的數據進行更新,而不直接完成對顯示芯片的操作,這樣可以提高中斷處理速度。顯示的刷新,則放在程序的主循環中來完成。  

用于處理MIDI數據的串口中斷程序,必須完成以下工作:  

(1)根據狀態字節,過濾掉不必要的數據;  
(2)根據保留下的“音符開”和“音符關”數據,更新顯示數據緩沖區。




因為設計要求所有旋律通道的音符都要顯示出來,也就是說,除第10通道外,每個通道的音符都要顯示出來。這樣就存在著音符重疊的問題,比如第一通道中的C音和第二通道中的C音同時演奏,這時如果單片機收到一個“音符關”指令,則必須判斷其它通道中有沒有相同的音符處在“開”的狀態,如果有,則相應的音符指示燈就不能關閉。為了到達這個目的,將音符顯示的緩沖區設置為一個128單元的數組,數組單元和MIDI的128個音符一一對應(雖然只需要顯示其中的8個音符),但是為了簡化程序及日后升級的方便,仍將數組設為128單元,只在主程序中顯示刷新的部分才將多余的數據忽略),每當收到一個“音符開”指令時,相應的數組單元就加一,而收到“音符關”指令時,則減一,在顯示時,只要數組單元不等于零,對應的音符指示LED就點亮,而只有在數組單元等于零時,才將已經點亮的LED關閉,“音符關”指令不直接控制LED,這樣就很好地解決了省符重疊的問題。  

AT89C51串口中斷處理程序流程圖如圖4。  

目前該產品已經批量生產,并已成功進入市場銷售一年有余,實踐證明該設計方案是合理和可靠的。
本文地址:http://m.qingdxww.cn/thread-35999-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩在线视频播放 | 视频一区欧美 | 两个人免费完整高清视频中国 | 日本高清在线观看 | 日韩一区二区三区四区区区 | 亚洲男人的天堂网站 | 久久久精品日本一区二区三区 | 日日免费视频 | 日本不卡中文字幕 | 免费可以直接观看的毛片 | 色综合天天综合给合国产 | 欧美亚洲一区二区三区四 | 香蕉视频在线观看男女 | 日本一区二区三区精品国产 | 国产精品久久久久久影视 | 亚洲youjizz| 国产资源站 | 国产精品入口麻豆高清在线 | 免费观看黄页 | 视频一区 中文字幕 | 日韩无 | 欧美日本亚洲 | 久久99热这里只有精品高清 | 免费国产之a视频 | 91天堂一区二区 | 在线视频日韩欧美 | 成黄动漫免费在线看 | 亚洲色图在线视频 | 国产香蕉一区二区在线网站 | 久久精品成人一区二区三区 | 色一色综合 | 成人一级视频 | 精品一区二区三区亚洲 | 在线a国产| 嫩草影院地址一地址二 | 久久九九久精品国产 | 亚洲精品资源在线 | xx肥妇人爽妇网 | 九九热视频精品在线观看 | 国产只有精品 | 自拍偷拍图 |