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

基于ARM+Linux的模擬電子琴設計

2020-07-04 02:15:25胡淼元何文德楊鳳年
電腦知識與技術 2020年15期

胡淼元 何文德 楊鳳年

摘要:采用以ARMCortex-A8架構的s5pv210處理器為核心的硬件平臺,以嵌入式Linux為軟件平臺,開發了一款模擬電子琴軟件。打開模擬電子琴程序后,演奏者可在液晶屏上顯示的琴鍵通過觸摸屏彈奏樂曲。此外,模擬電子琴系統中內置了數十首中外流行的樂曲,演奏者選中某首樂曲后,可在液晶屏上顯示其簡譜或五線譜,電子琴還可自動演奏所選中的樂曲。

關鍵詞:嵌入式Linux;電子琴;圖片顯示;音符發聲

中圖分類號:TP319 文獻標識碼:A

文章編號:1009-3044(2020)15-0253-02

嵌人式系統的廣泛應用令家電以及玩具產業日新月異,同時也極大提高了電子產品的設計效率和產品品質。電子琴屬于嵌入式系統產品范疇,其種類很多,通常適合5歲以上兒童以及成人的學習和演奏,價格一般在幾千元乃至數萬元。然而,對于培養和啟發兒童和青少年的音樂興趣來說,不必拘泥于價格昂貴且不太便于攜帶的電子琴,一款價格親民的具備模擬電子琴功能的平板電腦,或許就能滿足普通家庭的需求。因此,融合計算機技術和嵌入式系統技術的模擬電子琴的研究及設計開發受已受到了業界的關注。這類模擬電子琴基于便攜式的硬件平臺,能通過寓教于樂的方式培養青少年的音樂興趣、普及樂理知識,深受人們的青睞。

1系統方案設計

電子琴通常采用振蕩器和分頻器獲得音頻信號,再經過運放電路放大,最后驅動揚聲器發聲,鍵盤用于控制進入揚聲器信號的頻率,最終實現電子琴的功能。本文在實現模擬電子琴基本功能的基礎上,還增添了自動演奏和樂譜提示等功能,使其更具有趣味性和益智性。該設計由硬件和軟件兩部分組成,硬件以ARM Cortex-A8架構的s5pv210處理器為核心,結合內存和Flash存儲器組成核心板,再加上液晶屏(LCD)、觸摸屏、揚聲器等模塊構成。

模擬電子琴包含兩種工作模式:(1)彈奏模式,為電子琴的基本工作模式,依次按下鍵盤區的1-8號按鍵時,揚聲器就會依次發出Do、Re、Mi、Fa、So、La、Si、高音段的Do等8個音符。(2)播放模式,播放系統內置的音樂,用戶可以通過觸摸屏按鍵選擇樂曲進行播放,播放音樂時液晶顯示屏會顯示對應的樂曲編號和名稱。

2硬件和軟件平臺

硬件由基于ARM Cortex-A8架構的s5pv210為處理器的硬件平臺(處理器主頻為1GHz,核心板的內存為1GB DDR2、存儲器為4GB iNAND),結合帶電容觸摸功能的8.0寸800*1280、全視角IPS液晶顯示模塊,以及音頻功放模塊(含放大器和揚聲器)等主要模塊組成,用戶通過觸摸屏模塊輸入信息,核心處理器接收信息后作相應處理,然后控制液晶顯示模塊和音頻模塊對輸人信息做出響應。其硬件結構如圖1所示。

軟件平臺采用開源的Linux操作系統,經驅動程序設計和內核裁剪后移植到上述硬件平臺,模擬電子琴是基于以上軟硬件平臺的應用程序,采用c語言開發,交叉編譯環境使用arm-linux-gec。

3模擬電子琴軟件開發

3.1關鍵技術

3.1.1 LCD上顯示bmp格式圖片

Linux系統中一切操作皆作為文件處理,故Linux操作LCD模塊就是一個對LCD模塊文件的讀寫,使用mmap(1來簡化操作,這是一種內存映射文件的方法,即將一個文件或者其他對象映射到進程的地址空間,這樣進程就可以讓用戶程序直接訪問設備內存,而不必再調用readO、writeO等系統調用函數。使用完后也必須使用munmap()解除映射。

電子琴琴鍵等圖形界面是通過bmp格式圖片在LCD上顯示的實現的。首先用lseekO函數分別定位到圖片的長寬以及像素數組并讀取,然后對像素數組進行解碼,由24位變成32位,再對屏幕上每個點進行顏色賦值。源代碼的關鍵是先實現在LCD屏幕坐標為(i,j)的點上顯示指定的顏色color的函數void led_display_pointont i,int j,int color),最后實現void lcd_dis-play_bmp(char*bmpname,intx,int y)函數,其中,x、y為在LCD屏幕上圖片顯示位置的坐標,bmpname為帶路徑的bmp圖片的文件名。

3.1.2觸摸屏輸入事件處理

Linux觸摸屏驅動一般采用input子系統驅動框架實現,因此應用層接口要遵循input框架的接口。觸摸事件在文件中用結構體struct input_event來描述,其結構成員包括time(按鍵時間)、type(事件類型)、code(事件鍵值)、value(值),以此來對事件進行判斷。如果事件類型為EV_KEY,則相應的code值為按鍵狀態,1為按下,0為彈起;如果是事件類型為EV_ABS,相應code的值為對應的坐標軸x、y。按鍵事件的判斷可以設立標志位flag,先置為0,當按鍵狀態為1H.flag=0時,即為按下。然后將flag置為1;當按鍵狀態為0且flag=l時,即為彈起。然后將flag置為0,就可以實現對觸摸屏按鍵事件的判斷。

3.1.3音符發聲

madplay是一個開源mp3解碼庫,對mp3解碼算法做了很多優化,本文基于madplay庫實現音符發聲。當用戶按下一個琴鍵后,主進程創建一個子進程來使用madplay播放相應的音頻文件,設置“分離屬性”,讓子進程在madplay播完后,實現資源自我回收。若madplay尚未播放完,又有按鍵事件發生,就又會產生一個新進程,而此時播放器正在被上一個madplay進程占用,使得新進程進入阻塞態等待狀態。因此,當按鍵事件結束后,仍在發聲。為此,可以在進程函數中,加入killall系統命令來終止上一個madplay,然后再播放本音符。

3.2軟件總體設計

模擬電子琴程序是Linux的應用程序,它啟動后先進行LCD液晶顯示屏和觸摸屏初始化,隨后進入程序主界面,提醒用戶選擇工作模式,用戶可以選擇彈奏模式或自動演奏模式。在這兩種模式下,用戶都可將從樂曲庫中選擇的樂曲的簡譜或五線譜顯示在LCD上,并在主界面設有退出按鈕,系統根據用戶的選擇進入工作模式切換或退出程序,程序除主界面外的其他界面都設有返回按鈕,以方便用戶操作。其活動圖如圖2所示。

4總結

為了培養青少年的音樂興趣,本文采用以ARM Cortex-A8架構的s5pv210為處理器的硬件平臺,嵌入式Linux作為軟件平臺,用C語言開發了一款模擬電子琴,對其硬件架構和軟件設計進行了闡述,重點闡述了其軟件設計方法,對嵌入式系統初學者有一定的參考價值。該模擬電子琴具有彈奏和自動演奏兩種工作模式,可以提高青少年的音樂興趣,加深他們對樂理知識的理解和認知。在后續的工作中團隊將著重在軟件方面做出改進,使模擬電子琴發聲的音色種類更加豐富、聲音更加悅耳,令其用戶體驗更出色。

主站蜘蛛池模板: 日韩高清无码免费| 18禁高潮出水呻吟娇喘蜜芽| 精品国产黑色丝袜高跟鞋| 波多野结衣中文字幕久久| 性激烈欧美三级在线播放| 免费欧美一级| 国产二级毛片| 欧美综合中文字幕久久| 无码一区18禁| 综合社区亚洲熟妇p| 久久精品视频亚洲| 嫩草国产在线| 日本一本正道综合久久dvd| 国产迷奸在线看| 老司国产精品视频91| 国产青青草视频| 深爱婷婷激情网| 欧美人人干| 国产在线一二三区| 亚洲欧美精品在线| 丁香亚洲综合五月天婷婷| 免费看一级毛片波多结衣| 国产一级α片| 免费国产高清视频| 亚洲成肉网| 在线看片中文字幕| 啪啪国产视频| 亚洲成年人网| 九色91在线视频| 伦精品一区二区三区视频| 综合色婷婷| 九色91在线视频| 欧美第二区| 亚洲一区二区在线无码| 久久国产精品夜色| 爱色欧美亚洲综合图区| 蜜臀AV在线播放| 亚洲欧美国产五月天综合| 无码'专区第一页| 香蕉视频在线精品| 免费高清a毛片| 亚洲天堂视频网| 色偷偷一区二区三区| 久久精品国产精品国产一区| 亚洲香蕉久久| 中文字幕 91| 国产亚洲美日韩AV中文字幕无码成人| 婷婷99视频精品全部在线观看 | 激情六月丁香婷婷四房播| 精品国产欧美精品v| 亚亚洲乱码一二三四区| 亚洲电影天堂在线国语对白| 欧美性久久久久| 欧美一区二区精品久久久| 日韩视频福利| 国产一区二区精品福利| 亚洲精品福利视频| 女人18毛片一级毛片在线 | 久操线在视频在线观看| 嫩草影院在线观看精品视频| 亚洲精品无码av中文字幕| 欧美亚洲国产日韩电影在线| 亚洲性一区| 亚洲天堂视频在线观看| 国产激情无码一区二区免费| 找国产毛片看| 中文字幕日韩丝袜一区| 国产鲁鲁视频在线观看| 日本高清有码人妻| 国产噜噜噜| 亚洲va欧美va国产综合下载| 91香蕉国产亚洲一二三区| 亚洲综合天堂网| 久久情精品国产品免费| 欧美精品三级在线| 亚洲伦理一区二区| 亚洲成人免费在线| 亚洲视频在线青青| 精品国产香蕉在线播出| 天堂成人在线视频| 高清精品美女在线播放| 亚洲全网成人资源在线观看|