999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于嵌入式開發板Mini6410的電子琴設計

2014-02-03 03:14:08高俊濤嚴周穎孫悅妍楊廣權
實驗室研究與探索 2014年1期
關鍵詞:音樂設計

王 杰, 高俊濤, 嚴周穎, 孫悅妍, 楊廣權

(廣州大學 機械與電氣工程學院,廣東 廣州 510006)

0 引 言

電子琴是現代電子科技與音樂結合的產物,是一種新型的鍵盤樂器。電子琴設計的方法有很多,由于嵌入式開發板具有強大的控制功能和靈活的編程實現特性,在電子琴設計中應用比較廣泛[1]。基于此,本設計采用嵌入式開發板FriendlyArm Mini6410為核心控制元件,通過Qtopia軟件編寫了電子琴面板模擬界面和控制代碼,通過觸摸式按鍵實現了電子琴演奏和播放功能。

1 設計原理

一首音樂是由許多不同的音階組成的,而每個音階對應著不同的頻率,通過不同的頻率組合,可得到不同的音樂。對于嵌入式來說,產生不同的頻率非常簡單[2-3],可以利用嵌入式開發板上的定時/計數器T0來產生這樣方波頻率信號,從而使蜂鳴器發出聲音。因此,如果可以獲得一首歌曲的音符的頻率、升降調、每個音符的演奏長度、連音和頓音的時間長度,可利用Mini6410的定時/計數器Timer來產生這樣方波頻率信號,從而在開發板上彈奏或播放出這首歌,實現電子琴的功能[4-5]。

2 設計方案

在Mini6410開發板上的芯片S3C6410X中有5個定時器,這些定時器產生內部中斷。其中,Timer0和Timer1具有PWM功能,而Timer2,3,4沒有此功能。PWM具有兩種操作模式:自動裝載模式,一次觸發模式。為實現PWM功能,芯片提供了16個功能寄存器。這些功能寄存器都連接APB總線。

由于本設計利用蜂鳴器產生聲音,所以采用Timer0定時器產生PWM信號。首先編寫PWM驅動程序pwm.c腳本文件,并生產pwm.o和pwm.ko文件,把pwm.ko文件通過ftp方式發送到Windows的超級終端,再通過超級終端把PWM驅動程序燒寫進Linux內核[6-8],再編寫QT應用程序,根據程序功能的需要調入PWM驅動程序,蜂鳴器發出聲音,實現系統的音樂播放功能。

2.1 系統圖

本電子琴包含了虛擬鍵盤輸入,s3c6410芯片處理輸入指令并產生相應的PWM波至蜂鳴器,使蜂鳴器發出聲音,并且伴隨著LED燈的閃爍[9]。圖1為電子琴設計的系統圖。

圖1 系統結構圖

2.2 硬件設計

2.2.1Mini6410介紹

Mini6410SDK是采用Mini6410核心板的一款參考設計底板[10],它具有三個LCD接口、4線電阻觸摸屏接口、100M標準網絡接口、標準DB9五線串口、Mini USB 2.0接口、USB Host 1.1、3.5 mm音頻輸入輸出口、標準TV-OUT接口、SD卡座、Mini PCIe接口、電容屏接口等;另外還引出4路TTL串口,另1路TV-OUT、SDIO2接口(可接SD WiFi)接口等;在板的還有蜂鳴器、I2C-EEPROM、備份電池、AD可調電阻、8個中斷式按鍵等。

Mini6410采用2.0 mm間距的雙排插針,總共引出4組:P1,P2,CON1,CON2。其中P1和P2各為60 Pin;CON1和CON2各為30Pin,總共引出180 Pin。Mini6410在板引出10 Pin Jtag接口,如其布局說明見表1。

表1 Mini6410引腳

2.2.2蜂鳴器

Mini6410開發板的蜂鳴器Buzzer 是通過 PWM 控制的,蜂鳴器驅動電路原理圖如圖2所示,其中PWM0端信號為開發板上的計數器timer產生的方波頻率信號,可通過引腳GPF14測量,該引腳可通過軟件設置為 PWM 輸出,也可以作為普通的GPIO使用。

圖2 PWM電路

2.2.3發光二級管

Mini6410開發板具有4個用戶可編程LED,它們位于核心板上,直接與CPU的GPIO相連接,實現在演奏時有節奏閃爍的功能,增加電子琴的娛樂性。LED電路和IO口如圖3所示。

圖3 LEDIO口

2.3 軟件編程設計

軟件編程設計采用Qtopia進行演奏和播放功能的軟件設計。

2.3.1界面設計

利用Qtopia設計了電子琴面板模擬界面。如圖4所示。其中1~7分別對應音符“do、re、mi、fa、so、la、ti”頻率的聲音[11-12]并且在按下時LED會有節奏閃爍;當點擊按鍵“同一首歌”, 會播放預置的曲子,按停止鍵時蜂鳴器停止發聲,按開始鍵蜂鳴器繼續發聲。拖動滑動變頻條,蜂鳴器的頻率也會隨之改變。

圖4 模擬界面

2.3.2音樂演奏

音樂演奏功能通過按鍵1-7及1+,以及滑動條來實現。以按鍵1為例,按下時,將觸發相應的代碼:

void PwmWidget::on_noe_clicked() //設定1鍵為“do”

{

ioctl(fd, PWM_IOCTL_SET_FREQ, 523);

}

從而發出對應頻率的音符“do”。結合滑動條來調整音調,就可以演奏任何音調的歌曲。

滑動條所對應的代碼為:

void PwmWidget::changefreq() //設定一個滑動變頻條

{

ioctl(fd, PWM_IOCTL_SET_FREQ, 10*m_ui.chfreq->value());

初始化時,滑動條位于正中間,此時按下1對應C調的多,523hz;升調演奏時,先按下1+,再按1。也可通過拉動滑動條或上下按鈕來調整音調升降。

2.3.3音樂播放

在程序段定義變量處,事先定義了所需點歌的頻率表,例如,“同一首歌”的頻率表事先放在unsigned char Music_Girl[]數組中。

當點擊“同一首歌”按鈕時,音樂點歌按鈕程序啟動,PWM波形在延時10ms后開始輸出,音樂開始播放。程序如下所示:

void PwmWidget::on_tongyishouge_clicked()

{

timer->start(10);//延時啟動10ms

}

音樂開始后,即開始輸出PWM波形之后,開始根據頻率表計算音符、高低音、頓音、不發音等演奏長度等,并循環運行。程序如下所示[13],由于“同一首歌”頻率表里有212個原始頻率,當歌曲演奏完成標志flg=0時,調用PWM驅動中的ioctl()和getfreq(),程序按音符索引lenup所指的頻率設置輸出的PWM波形的頻率,并調用getyinchang()函數計算出對應的蜂鳴時間和停頓時間輸出PWM波形,音樂開始演奏。當lenup小于212時,按順序輸出對應的頻率,順序播放音樂;當lenup自加到數組Music_Girl[]的尾部時,音樂完整播放完畢,為了重新播放音樂,把音符索引lenup復位到0,并標識音樂播放完畢標志flg賦值1;則程序退出if(flg==0)的程序段,但在隨后的else里對標志flg賦值為0,并關掉Pwm信號輸出,使其重新回到if(flg==0)的程序段中執行,音樂得以連續播放。

從Music_Girl[]中獲得原始頻率后,根據調號及升降八度來生成新的頻率表,并計算出高低音、升降調和對應音符的頻率等參數。

unsigned int NewFreTab[12]; //新的頻率表

for(m=0;m<12;m++) // 根據調號及升降八度來生成新的頻率表

SL=i%10; //計算出音符

SM=i/10%10; //計算出高低音

SH=i/100; //計算出是否升半

CurrentFre = NewFreTab[SignTab[SL-1]+SH]; //查出對應音符的頻率

if (SM==1) CurrentFre >>= 2; //低音

if (SM==3) CurrentFre <<= 2; //高音

根據上面算出的音符的頻率和升降調,計算每個音符的演奏長度、連音和頓音的時間長度,進而改變PWM波形的輸出,使得蜂鳴器最終跟隨給定的頻率表來播放音樂。

2.3.4led部分

按下鍵“1”時,對應ARM板[14-15]上的LED1燈被點亮,延時2 s熄滅;當按下鍵“2”時,對應ARM板上的LED2燈被點亮,延時2 s熄滅;當按下鍵“3”時,對應ARM板上的LED3燈被點亮,延時2 s熄滅;當按下鍵“4”時,對應ARM板上的LED4燈被點亮,延時2 s熄滅;當按下鍵“5”時,對應ARM板上的4個LED燈全部被點亮,延時0.5 s全部熄滅,即全部閃爍一次;當按下鍵“6”時,對應ARM板上的4個LED燈全部被點亮,延時2 s;當按下鍵“7”時,對應ARM板上的4個LED燈全部被熄滅,延時2 s。

按鍵“1”,LED1被點亮,延時2秒熄滅,按鍵2,3,4與按鍵1原理類似,所以按鍵“1”為例,代碼如下:

void PwmWidget::on_one_clicked()

{

fd=-1;//if not add it,led will fail

led(1,1);

usleep(2000*1000);

led(1,0);

ioctl(fd, 0);

}

按下按鍵“5”時LED1、2、3、4全被點亮,延時0.5 s全部熄滅。按鍵“5,6,7,8”以按鍵“5”為例,其代碼如下:

void PwmWidget::on_five_clicked()

{

fd=-1;//if not add it,led will fail

int j=0;

for(j=1;j<=4;j++)

{

led(j,1);

usleep(500*1000);

}

for(j=4;j>=1;j--)

{

led(j,0);

usleep(500*1000);

}

ioctl(fd, 0);

}

3 結 語

本設計基于Mini6310開發板使用Qtopia軟件對演奏界面和演奏代碼進行編程,完成了一個電子琴功能,實現了通過按鍵控制PWM波形來演奏及播放歌曲,并能伴隨LED燈有節奏的閃爍。此設計所涉及的系統功能易于拓展和升級,在QT界面中加入下拉框,加入一些各式名曲,并在程序體中多存儲這些歌曲的頻率表,這樣通過選擇不同的曲目,就能播放不同的音樂。

[1] 熊 杰. 簡易電子琴設計[J].企業技術開發,2009(5):33-34.

XIONG Jie. Design of Simple Keyboard [J]. Technological Development of Enterprise,2009(5):33-34.

[2] 苗忠良. Qtopia編程之道[M].北京:清華大學出版社,2005.

[3] 劉樂喜. Mini6410 Qt4和Qtopia編程開發指南[M].武漢:華中科技大學出版社,2005.

[4] 霍福翠.基于FPGA的電子琴設計[J].科學理論,2011(6):350-351.

HUO Fu-Cui. Design of Electronic Piano Based on FPGA [J]. Scientific Theories,2011(6):350-351.

[5] 黃 鑫.基于CPLD的電子琴研究與設計[J].科技廣場,2007(5):232-233.

HUANG Xin. Based on CPLD Electric Piano Research and Design [J]. Technology Square,2007(5):232-233.

[6] 李 曉.Ubuntu Linux從入門到精通[M].北京:科學出版社,2009.

[7] 何曉龍.Ubuntu實戰技巧精粹[M].北京:人民郵電出版社,2009.

[8] 王大亮.Ubuntu標準教程 [M]. 北京:人民郵電出版社,2008.

[9] 王建平. 數字音樂盒設計[J].產品開發與設計,2011(38):65-67.

WANG Jian-Ping. Digital Music Box Design [J].Industrial Design Exploitation,2011(38):65-67.

[10] Mini6410用戶手冊[EB/OL].2012.11.http://www.arm9.net/mini6410-um.asp.

[11] 劉永志.基于VB的MIDI電子琴[J].微型電腦應用,2008(6):61-63.

LIU Yong-Zhi. VB-Based MIDI Electronic Organs [J]. Microcomputer Applications,2008(6):61-63.

[12] 單 丹.基于AT89C51單片機電子琴的設計[J].中國高新技術企業,2010(36):6-7.

SHAN Dan. Design Simple Electronic Organ Based on AT89C51 Single Computer [J]. China High Technology Enterprises,2010(36):6-7.

[13] 馬志強. 基于STM32的PWM音樂播放器應用設計[J].單片機與嵌入式系統應用,2010(20):5626-5627.

MA Zhi-Qiang. Application Design of PWM Music Player Based on STM32[J].Microcontroller & Embedded Systems.2010(20):5626-5627.

[14] 周立功.ARM嵌入式系統基礎教程[M].北京:北京航空航天大學出版社, 2008.

[15] 斯洛斯.ARM嵌入式系統開發:軟件設計與優化[M].北京:北京航空航天大學出版社,2005.

猜你喜歡
音樂設計
奇妙的“自然音樂”
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
瞞天過?!律O計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
音樂從哪里來?
藝術啟蒙(2018年7期)2018-08-23 09:14:16
圣誕音樂路
兒童繪本(2017年24期)2018-01-07 15:51:37
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
音樂
音樂
主站蜘蛛池模板: 亚洲色图欧美一区| 欧美日韩导航| 免费午夜无码18禁无码影院| 欧美激情视频一区| 四虎成人精品| 久久性妇女精品免费| 日本午夜网站| 第九色区aⅴ天堂久久香| 亚洲成人播放| 色综合久久综合网| 欧美三级视频在线播放| 久久精品亚洲中文字幕乱码| 日韩人妻少妇一区二区| 国产丝袜丝视频在线观看| 成人在线观看不卡| 国产视频自拍一区| 亚洲欧洲日韩综合| 国产精品对白刺激| 日韩人妻精品一区| 欧美福利在线播放| 福利一区三区| 99久久国产精品无码| 亚洲精品国产日韩无码AV永久免费网 | 亚洲国产成人久久精品软件| 国产精品久久久久久久伊一| 国产午夜人做人免费视频中文 | 久久婷婷人人澡人人爱91| 制服丝袜 91视频| 亚洲精品视频免费| 毛片网站在线看| 中文字幕乱码二三区免费| 国产精品真实对白精彩久久| AV天堂资源福利在线观看| 日韩天堂网| 亚洲欧美综合精品久久成人网| 在线精品视频成人网| 成人在线观看一区| 国产香蕉在线| 欧美色99| 亚洲人网站| 狠狠色丁香婷婷| 国产女人18水真多毛片18精品 | 天天躁日日躁狠狠躁中文字幕| 亚洲综合精品香蕉久久网| 国产午夜无码专区喷水| 亚洲无码四虎黄色网站| 五月丁香伊人啪啪手机免费观看| 成年人免费国产视频| 日本在线国产| 日本a∨在线观看| 香蕉视频国产精品人| 欧美a在线看| 日韩欧美一区在线观看| av在线手机播放| 亚洲大尺度在线| 欧美亚洲国产一区| 亚洲色图欧美视频| 国产91蝌蚪窝| 国产一级小视频| 亚洲综合九九| 亚洲国产亚综合在线区| 国产精品成人第一区| 国产成人精品亚洲日本对白优播| 国产综合日韩另类一区二区| 日韩欧美高清视频| 亚洲最大福利视频网| 亚洲黄色视频在线观看一区| 精品国产乱码久久久久久一区二区| 91av国产在线| 97av视频在线观看| 成人午夜网址| 欧美一级一级做性视频| 澳门av无码| av一区二区三区在线观看| 日本高清免费一本在线观看| 国产精品污视频| 狠狠操夜夜爽| 欧美在线综合视频| 91精品专区国产盗摄| 丰满少妇αⅴ无码区| 久无码久无码av无码| 国产成人精品一区二区三区|