版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、嵌入式系統(tǒng)原理與應(yīng)用綜合設(shè)計簡易電子琴系統(tǒng)設(shè)計系 部:電子與信息工程系專業(yè)班級:電子信息工程09秋2班姓 名:學 號:小組成員:指導教師:完成日期2012年6月目錄目錄前言1.1電子琴介紹1.2嵌入式電子琴發(fā)展趨勢1.3實現(xiàn)目標總體設(shè)計2.1利用實驗資源實現(xiàn)簡易電子琴的功能。 2.2主要技術(shù)指標硬件設(shè)計 3.1 LM3S2110 芯片特性概述中斷功能概述.的 GPIO 特性.33.1.1 LM3S21103.1.2 LM3S21103.2 鍵盤模塊3.2.1 矩陣鍵盤模塊獨立按鍵模塊3.3 LCD顯示模塊3.3.1 1602 介紹.管腳功能3.4蜂鳴器模塊設(shè)計.系統(tǒng)軟件設(shè)計 4.1454.2音
2、樂控制音樂的相關(guān)知識如何用嵌入式實現(xiàn)音樂節(jié)拍 如何用嵌入式產(chǎn)生音頻脈沖 軟件初始化4.2.1 LCD初始化.91010總設(shè)計流程圖輸入輸出初始化 按鍵、蜂鳴器、LED初始化 定時器的初始化114.3調(diào)試.5.1音調(diào)調(diào)試5.2按鍵控制音樂停止調(diào)試5.3 LED顯示音頻效果調(diào)試 6結(jié)束語7參考文獻附錄一 LM3S2110 附錄二程序清單1buzzer.c2 music.c1212程序清單程序13141414原理電路system Init.c 程序194主程序清單191前言1.1電子琴介紹電子琴又稱作電子鍵盤,屬于(區(qū)別于電聲),發(fā)音音量可以自由調(diào)節(jié)。較寬,和聲豐富,甚至可
3、以演奏出一個的效果,表現(xiàn)力極其豐富。 采用半導體集成電路,對樂音信號進行放大,通過揚聲器產(chǎn)生音響?,F(xiàn)在的電子琴一般使用 PCM或AWM采樣音源。所謂采樣就是錄制樂 器的聲音,將其數(shù)字化后存入 ROM里,然后按下鍵時CPU回放該音。甚至有一些高級編曲鍵盤可以使用外置采樣(比如Tyros 3的硬盤音色)。圖1-1電子琴原理框圖電子琴使用二分頻電路是音階規(guī)律的需要。音樂中的基本音階的頻率是按照一定規(guī)律排列的,以C調(diào)為例,音階中各音之間的頻率 (單位為赫茲)關(guān)系是:f 12冗 J LC說明一個音的頻率剛好是比它低八度音的頻率的兩倍。所以,只要把一個音的頻率除以2就得到比它低八度的一個音的頻率。實現(xiàn)這一
4、點就需要使用二分頻電路。這樣,只要振蕩器產(chǎn)生一個標準音的頻率信號,如高音 “ 1的信號,通過二分頻就產(chǎn)生中音“ 2的頻率,再一次二分頻就產(chǎn)生低音“ 1的頻率了。如果按照鍵盤上最高音組的頻率制作七個振蕩器,并將得到的七個音階信號分別二分頻,便可得到低八度的一組音階信號;再次二分頻,就可得到再低八度的一組音階信號。依此類推,最后,就能得到鍵盤上所有的音階信號了。不過,實際上需要制作 12個振蕩器和更多的分頻器,因為一組鍵 盤中還有五支黑鍵。1.2嵌入式電子琴發(fā)展趨勢嵌入式技術(shù)在電子琴方面的設(shè)計應(yīng)用是其發(fā)展的一個方向,同時也是 一種必然趨勢。嵌入式設(shè)備能夠促使宿主設(shè)備更加智能、高效。設(shè)計的過 程更加
5、靈活,整個系統(tǒng)的操作更加簡單方便,嵌入式電子琴設(shè)計過程能夠 保證電子琴的開發(fā)成本趨于合理性、功能更加完善,嵌入式電子琴具有功 能全面、結(jié)構(gòu)緊湊、可靠性強、實時性強等特點。嵌入式電子琴系統(tǒng)是技 術(shù)過程的具體體現(xiàn),具有核心處理程序設(shè)計功能,能夠保證電子琴滿足新 時期的要求,從鍵盤設(shè)計、輸入輸出模塊設(shè)計、音色音調(diào)控制、電路設(shè)計 等方面發(fā)揮重要的作用。能夠與現(xiàn)實環(huán)境進行有效的結(jié)合,保證交互式信 息系統(tǒng)的實現(xiàn),嵌入式電子琴設(shè)計可以把半導體技術(shù)、計算機技術(shù)與行業(yè) 具體應(yīng)用緊密結(jié)合起來,最終保證嵌入式電子琴處于資金密集、技術(shù)密集、 高度分散、不斷創(chuàng)新的環(huán)境下。隨著EDI的推廣、Dsp技術(shù)的發(fā)展,嵌入式電子琴
6、技術(shù)作為核心技術(shù)應(yīng) 用越來越廣泛,在某一個芯片上實現(xiàn)一個核心技術(shù)的時代已經(jīng)來臨,用戶 設(shè)計過程中可以根據(jù)實際需要,按照嵌入式電路的要求,設(shè)計出功能各異 的系統(tǒng)結(jié)構(gòu)。仿真設(shè)計完成后可以通過半導體制作形成需要的產(chǎn)品,整個 嵌入式系統(tǒng)可以很好的集中到一塊或者幾塊芯片上,很好的解決了電子琴 設(shè)計電路分散的狀況。應(yīng)用系統(tǒng)集中到某一個芯片上保證系統(tǒng)更加簡潔, 功能更加完善。1.3實現(xiàn)目標本次制作電子琴除了可正常彈奏外,LCD液晶屏顯示音階,LED燈帶展現(xiàn)音頻效果。具有較強的感官體驗,增加生活樂趣。本系統(tǒng)運行 穩(wěn)定,其優(yōu)點是硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,性價比較 高等,具有一定的實用和參考價值。
7、2總體設(shè)計2.1利用實驗資源實現(xiàn)簡易電子琴的功能。(1) 用蜂鳴器發(fā)出不同聲音;(2) 使用LCD顯示器來顯示音階輸入的相關(guān)信息;(3) 當按下鍵盤組相對按鍵,蜂鳴器會發(fā)出相對音階單音,共有 兩個8度音階;(4) 可以輸入16個單音,可以一起演奏出來;(5) 演奏時可以按鍵中斷;(6) 可以實時顯示目前演奏的單音碼;(7) 不同音階對應(yīng)不同燈亮,具有音頻效果。2.2主要技術(shù)指標(1) 充分利用自己設(shè)計的開發(fā)板的硬件的資源進行設(shè)計;(2) 通過調(diào)整PWM的周期,改變占空比生產(chǎn)不同頻率的信號;(3) 實現(xiàn)按鍵發(fā)出相對音階單音;(4) 外擴實現(xiàn)音頻效果。圖2-1總設(shè)計框圖3硬件設(shè)計本次用到的硬件有:
8、LM3S211C開發(fā)板中包含的一塊LM3S2110微控制器 和4個獨立鍵盤。另外可以外接的有 1個4X4矩陣鍵盤模塊、1個LCD液 晶顯示屏、1個蜂鳴器和1個LED音頻模塊。3.1 LM3S2110 芯片3.1.1 LM3S2110 特性概述LM3S2110微控制器是針對工業(yè)應(yīng)用方案而設(shè)計的,包括遠程監(jiān)控、電 子販售機、測試和測量設(shè)備、網(wǎng)絡(luò)設(shè)備和交換機、工廠自動化、HVAC和建筑控制、游戲設(shè)備、運動控制、醫(yī)療器械、以及火警安防。除此之外,該LM3S2110微控制器的優(yōu)勢還在于能夠方便的運用多種 ARM勺開發(fā)工具和片上系統(tǒng)(SoC的底層IP應(yīng)用方案,以及廣大的用戶群 體。另外,該微控制器使用了兼
9、容 ARM的 Thumb指令集的Thumb2指令集 來減少存儲容量的需求,并以此達到降低成本的目的。LM3S2110微控制器與Stellaris 系列的所有成員是代碼兼容的,這為用戶提供了靈活性,能 夠適應(yīng)各種精確的需求5。與此同時,它還提供出色的計算性能和優(yōu)越的系 統(tǒng)中斷響應(yīng)能力??偟膩碚f,其特性包括:1、具有十分緊湊的內(nèi)部核心。2、從ARM7?處理器系列中移植過來,以獲得更好的性能和電源效率。3、存儲器保護單元(MPU為復雜的應(yīng)用提供特權(quán)操作模式。4、中斷處理能力優(yōu)秀非常,通過執(zhí)行寄存器操作來實現(xiàn),這些寄存器 操作在處理硬件中斷時使用。5、通過Harvard結(jié)構(gòu)執(zhí)行快速的應(yīng)用,以獨立指令以
10、及數(shù)據(jù)總線為其 十分突出的特征。6在通常與8位和16位設(shè)備相關(guān)的存儲容量中的 Thumb-2指令集, 特別是在微控制器級應(yīng)用的幾千字節(jié)存儲量中,提供 ARM內(nèi)核所期望的高 性能。7、調(diào)試的解決方案應(yīng)有盡有:儀表跟蹤宏單元(ITM),用于支持printf 型調(diào)試;Flash修補和斷點(FPB單元,用于實現(xiàn)斷點操作;數(shù)據(jù)觀察點 和觸發(fā)(DWT單元,用于執(zhí)行觀察點、觸發(fā)源和系統(tǒng)性能分析;串行線JTAG 調(diào)試端口( SWJ-DP;跟蹤端口接口單元(TPIU)用作跟蹤端口分析儀的橋 接。3.1.2 LM3S2110中斷功能概述ARM Cortex-M3處理器和嵌套向量中斷控制器(NVIC)將區(qū)別所有問題
11、 的優(yōu)先等級并對其進行相應(yīng)的處理。所有存在的異常都會在處理器模式中 被予以處理。當出現(xiàn)異常時,處理器的狀態(tài)將被自動存儲到堆棧中,并在 中斷服務(wù)程序(ISR)結(jié)束時自動從堆棧中恢復。取出向量和保存狀態(tài)是同時 進行的,這樣可以提高進入中斷的效率。處理器還支持末尾連鎖(tail-cha ining),這使處理器無需保存和恢復狀態(tài)便可執(zhí)行連續(xù)的(back-to-back) 中斷。用戶可設(shè)置的最高優(yōu)先級0在內(nèi)部看作是優(yōu)先級4,僅次于復位、NMI 以及硬件故障。值得注意的是:0是所有可調(diào)整優(yōu)先級的默認優(yōu)先級。 如果 你將兩個或更多的中斷指定為相同的優(yōu)先級,那么它們的硬件優(yōu)先級(位 置編號越高優(yōu)先級越低)就
12、決定了處理器激活中斷的順序。例如,如果GPIO 端口 B和GPIO端口 A都為優(yōu)先級1,那么GPIO端口 A的優(yōu)先級更高。系統(tǒng)通過NVIC系統(tǒng)處理程序優(yōu)先級寄存器來設(shè)置處理程序的優(yōu)先級。 通過NVIC中斷設(shè)置使能寄存器來使能中斷,并由NVIC中斷優(yōu)先級寄存器來區(qū)分其中的優(yōu)先等級。你還可以把優(yōu)先級劃分為占先優(yōu)先級和次要優(yōu)先 級兩組。3.1.3 LM3S2110 的 GPIO 特性GPIO模塊由8個物理GPIO模塊組成,每個對應(yīng)一個獨立的GPIO端口 (端口 A,端口 B,端口 C,端口 D,端口 E,端口 F,端口 G,和端口 H)。GPIO模塊遵循FiRM規(guī)范,并且支持11-40個可編程的輸入
13、/輸出管腳, 具體取決于正在使用的外設(shè) 。GPIO模塊具有以下的特性:1、可編程控制GPIO中斷:屏蔽中斷發(fā)生;邊沿觸發(fā)(上升沿,下降 沿,上升、下降沿);(高或低)電平觸發(fā)。2、輸入/輸出可承受5V電壓。3、在讀和寫操作中通過地址線進行位屏蔽。4、可編程控制GPIO引腳配置。本次設(shè)計使用的開發(fā)板上的微控制器LM3S2110上可使用的引腳有PAA PA6(5 個)、PBLPB6( 7 個)、PC/PC7(4 個)、PDAPD7(8 個)、PE0 PE1 PF0 PF1、PF2、PG0 PG1 PH0 PHt 其中 PF0和 PF1 可以直 接用來脈寬調(diào)制(PMWV輸出方波信號。3.2鍵盤模塊3
14、.2.1矩陣鍵盤模塊采取4*4鍵盤結(jié)構(gòu)構(gòu)造可以保證電子琴鍵盤趨于合理性,多功能電子琴設(shè)計過程中需要設(shè)計多種模式的按鍵,一般情況下,因為要按鍵輸入16個音階,從低音區(qū)的SO到高音區(qū)的SI。鍵盤設(shè)計模塊主要負責對輸入設(shè)備進行掃描,掃描的方法采取并列式法,具體定義過程中,每個按鍵的功能都可以看成其他模塊的控制信號。K1 K2 K3SW-PBSW-PBK5gw-pBSW-PB4K6 W-PBK7W-PBK4W-PBPB3K8SW-PIPB4;W-PB_PB5SW-P4SW-PBPB6KEYSCAN0KETSCAN1KEYSCAN2KEYSCAN33.1矩陣鍵盤原理圖電子琴鍵盤設(shè)計過程中,通過鍵盤控制L
15、M3S2110芯片內(nèi)部頻率實現(xiàn), 從而產(chǎn)生不同類型的音符,按鍵設(shè)計過程中接法起到一定的作用。在矩陣 式鍵盤設(shè)計過程中,垂直線和水平線交互出不能直接進行連通設(shè)計,具體通過一個按鍵設(shè)計較好,按照此模式一個端口可以產(chǎn)生一個4*4=16的按鍵。M1/M2M3M4M5M6M7L5H1H2H3H4H5H6L6L7圖3.2矩陣鍵盤音頻為分部獨立按鍵模塊開發(fā)板上具有4個獨立按鍵,本次試驗除了控制16個音階外,外加了 播放3首音樂與停止功能,設(shè)計更加合理化,使初學者可通過聽音樂判斷 自己的程度。開發(fā)板從左到右KEY1為停止鍵,KEY2-KEY4各播放一首曲目。3.3 LCD顯示模塊1602 介紹1602液晶也叫
16、1602字符型液晶它是一種專門用來顯示字母、數(shù)字、符號等的型液晶模塊它有若干個 5X7或者5X11等點陣字符位組成,每個點 陣字符位都可以顯示一個字符。每位之間有一個點距的間隔每行之間也有 間隔起到了字符間距和行間距的作用。1602LCD是指顯示的內(nèi)容為16X2, 即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。管腳功能1602采用標準的16腳接口,其中:第1腳:VSS為電源地第2腳:VDD接5V電源正極第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接 地電源時對比度最高(對比度過高時會 產(chǎn)生 鬼影”使用時可以通過一個 10K的電位器調(diào)整對比度)。第4腳:RS為寄存器選
17、擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時 選擇指令寄存器。第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進 行寫操作。第6腳:E(或EN)端為使能(enable)端。第714腳:D0D7為8位雙向數(shù)據(jù)端。第1516腳:空腳或背燈電源。15腳背光正極,16腳背光負極。本次試驗為讀模式,所以RW常置1,與vcc相連。圖3.3本次試驗用到的LCD液晶顯示屏3.4蜂鳴器模塊設(shè)計在簡易電子琴的設(shè)計過程中,音樂蜂鳴器電路模塊設(shè)計顯的非常重要。 系統(tǒng)應(yīng)用過程中,必須利用音樂蜂鳴器必須根據(jù)音頻相應(yīng)不同音階,與音 樂。具體工作中包括按鍵按下、工作結(jié)束、開始工作等。本次試驗采取的是試驗箱上的功
18、放模塊。只要選擇 2110的GPIO中的一 個I/O 口與功放模塊(含功放模塊、觸發(fā)音樂發(fā)聲、分立元件OTL功放電路、 /集成電路功放電路。)中蜂鳴器輸入的管腳相連(并共地),給予蜂鳴器一 個信號,不同音調(diào)的控制,其原理圖如圖 3.4功放模塊原理圖所示。圖3.4試驗箱功放模塊原理圖圖3.4試驗箱功放模塊實物圖4 系統(tǒng)軟件設(shè)計本軟件設(shè)計關(guān)鍵是要實現(xiàn)一種由嵌入式控制的簡單音樂發(fā)生器,它由16個音節(jié)組成的的鍵盤,用戶可以根據(jù)樂譜在鍵盤上進行演奏,音樂發(fā)生 器會根據(jù)用戶的彈奏,通過揚聲器將音樂播放出來。也可根據(jù)選擇播放出 喜愛的音樂來。4.1音樂控制音樂的相關(guān)知識樂音聽起來有的高,有的低,這就叫音高,
19、音高是由發(fā)音物體振動頻 率的高低決定的,頻率高聲音就高,頻率低聲音就低,不同音商的樂音是 用C、D E、F、G A、B表示的,這7個字母就是樂音的音名,它們一般 依次唱成DO RE Ml、FA SO LA、SI,這是唱曲時樂音的發(fā)音,所以叫 唱名。音持續(xù)時間的長短即時值,一般用拍數(shù)表示,休止符表示暫停發(fā)音。一首音樂是由許多不同的音符組成的,而每個音符對應(yīng)著不同的頻率,這樣就可以利用不同頻率的組合,加以與拍數(shù)對應(yīng)的延時,構(gòu)成音樂。如何用嵌入式實現(xiàn)音樂節(jié)拍除了音符以外,節(jié)拍也是音樂的關(guān)鍵組成部分。節(jié)拍實際上就是音持 續(xù)時間的長短,在嵌入式系統(tǒng)中可以用延時來實現(xiàn),如果1/4拍的延時是T/16秒,貝U
20、 1拍的延時是T/4秒,只要知道1/4拍的延時時間,其余的節(jié) 拍延時時間就是它的陪數(shù)(T=3600ms)。如果芯片要自己播放音樂,那么必 須在程序設(shè)計中考慮到節(jié)拍的設(shè)置,由于本例實現(xiàn)的音樂發(fā)生器是由用戶 通過鍵盤輸入彈奏樂曲的,所以節(jié)拍由用戶掌握,不由程序控制。如何用嵌入式產(chǎn)生音頻脈沖了解音樂的一些基本知識后可知,產(chǎn)生不同頻率的音頻脈沖即能產(chǎn)生 音樂,對于嵌入式而言,產(chǎn)生不同頻率有脈沖非常方便,可以利用它的定 時/計數(shù)器來產(chǎn)生這樣的方波頻率信號,因此,需要弄清楚音樂中的音符和 對應(yīng)的頻率,以及嵌入式定時計數(shù)的關(guān)系。在本實驗中,芯片工作于6MHZ寸鐘頻率,C調(diào)的各音符頻率與計數(shù)值 T的對照如下表
21、:表3.1 C調(diào)的各音符頻率音調(diào)頻率(HZ)音調(diào)頻率(HZ)音調(diào)頻率(HZ)L1262M1 /、523H11047L2294M2587H21175L3330M3659 H31319L4349M4698H41397L5/392M5784H51568L6 /440M6880H6 1760L7494M7988H719764.2 軟件初始化初始化對于軟件或者系統(tǒng)來說是十分重要的。所謂初始化就是把其中 的某些參數(shù)或者數(shù)值變?yōu)槟J值,或者將控件調(diào)整為默認狀態(tài)。系統(tǒng)進行將系統(tǒng)的所有狀態(tài)和設(shè)置還原到最后備份時的樣子就是初始 化的過程,將軟件的一些功能和設(shè)置還原到最原始的設(shè)置就是對其的初始 化。因此只有將初始化
22、做好,才能談軟件設(shè)計,本設(shè)計主要涉及的初始化 除了基本的初始化步驟之外,還有輸入輸出、定時器、按鍵、LCD液晶顯示、 和蜂鳴器的初始化。值得一提的是在軟件開發(fā)的過程中也要不斷完善初始 化這個步驟。初始化首先在LCD初始化的程序中要先通過數(shù)據(jù)寫入和命令寫入的方式以及 相關(guān)的操作來初始化與其相互通訊的硬件。然后編寫LCD清屏的程序和其余的子程序。最終在自己的設(shè)計中合理添加這些子程序。這樣一來就完成 了對于LCD液晶顯示屏的初始化。初始化液晶屏時,先對寄存器的高八位和低八位分別進行設(shè)置,再設(shè)置液晶屏的顯示模式,包括:顏色、坐標、圖形大小等。LCD液晶屏初始化流程圖如圖4.1所示。圖4.1 LCDni
23、t()子程序流程首先在LCD初始化的開始需要給RST引腳一個脈沖。其次通過調(diào)用 LCD_WRITE_CMD()函數(shù),LCD_WRITE_DATA()函數(shù) 初始化液晶屏的寄存器,使其滿足功能需求。如下圖4.2 LCD_WRITE_CMD()函數(shù)的時序圖所示,可以寫出函數(shù) LCD_WRITE_CMD()的子程序。首先拉低 CS和RS,通過GPIOD來傳輸 數(shù)據(jù)位的高八位,WR經(jīng)過一個上升沿,使數(shù)據(jù)的高八位寫入LCD寄存器; 同樣在下一個時序中寫入數(shù)據(jù)位的低八位,最后拉高CS和RS,整個過程即為一個16位命令子程序的編寫。CSRDRS數(shù)據(jù)%么匕%DataHighDataLow圖4.2 LCD_WRI
24、TE_CMD()函數(shù)的時序圖驅(qū)動LCD是其初始化的第一個步驟。顯示驅(qū)動程序是用來允許圖形庫 和特點的顯示連接用以處理包括與顯示控制器通訊和傳輸顯示控制器所需 的指令等的細節(jié)問題。顯示驅(qū)動程序必須提供要設(shè)定的與顯示相關(guān)的操作。 顯示相關(guān)的操作包括初始化程序、背光控制和對比度控制等內(nèi)容。tDisplay 結(jié)構(gòu)體包含一些的函數(shù)指針以及屏幕的寬度和高度。這種結(jié)構(gòu)體由顯示驅(qū) 動程序提供,并同時在一個顯示驅(qū)動程序特定的頭文件中提供結(jié)構(gòu)體的原 型。以上內(nèi)容的具體程序清單詳見附錄中的LCDFu nc.c的部分。輸入輸出初始化對于不同端口的輸入輸出引腳,都要分別進行初始化的設(shè)置。這里提 供以下最基本的GPIO初
25、始化步驟:首先使能端口,然后設(shè)置引腳的輸入或輸出狀態(tài),其次設(shè)置引腳的上 升沿或下降沿觸發(fā)的狀態(tài),再是設(shè)置引腳的中斷使能,最后是設(shè)置端口的 中斷使能。Stellaris( 德州儀器公司提供)的外設(shè)驅(qū)動庫中,詳細 地描述了 LM3S2110勺輸入輸出特性,并給出了其 API函數(shù)的使用方式,這些 API函 數(shù)按其功能可以分成三個組別:處理中斷的 API函數(shù),配置GPI0引腳功能 的API函數(shù)和訪問GPIO引腳值的API函數(shù)。按鍵、蜂鳴器、LED初始化要初始化按鍵、蜂鳴器,首先應(yīng)該使能和配置其所對應(yīng)的微控制器 LM3S2110t的引腳,其中將兩個按鍵所對應(yīng)的引腳(本次設(shè)計用PB4和PB5 等)設(shè)置為輸
26、入狀態(tài),將蜂鳴器所對應(yīng)的引腳(CCP2/PB1與LED所對應(yīng) 的腳(PA4等)設(shè)置為輸出狀態(tài),使能和配置完成后將蜂鳴器(CCP2/PB1賦初值,因它們均為低電平時能,故將初值賦為全1。賦值也就是將值寫入到該引腳,賦值所使用的函數(shù)是GPIOP in Write(ulPort,ucPins,ucVal) ,如將全1賦值給 PB3,其 編寫方 法為: GPIOPi nWrite(GPIO_PORTB_BASE,GPIO_PIN_3,Oxff)定時器的初始化定時器的使用是本次設(shè)計的重中之重,所以對于它的初始化顯得尤為關(guān)鍵。在使用通用定時器時,外設(shè)時鐘必須使能,該操作通過將RCGC寄存器中的TIMER0
27、 TIMER1和 TIMER2位置位來實現(xiàn)。LM3S211(對于16位單 次觸發(fā)/周期定時器,Timer可以被拆分為兩個單獨運行的16位定時/計數(shù) 器,都可以被配置成帶8位預分頻(可選)的16位遞減計數(shù)器。如果使用 8位預分頻功能,則相當于24位定時器。具體用法跟32位單次觸發(fā)/周期 定時器類似,只不過對 TimerA和TimerB的操作是分別獨立進行的。對于 16位輸入邊沿計數(shù)捕獲,在該模式中,TimerA或TimerB被配置為能夠捕 獲外部輸入脈沖邊沿事件的遞減計數(shù)器。共有 3種邊沿事件類型:正邊沿、 負邊沿、雙邊沿。該模式的工作過程是:設(shè)置裝載值,并預設(shè)一個匹配值(應(yīng)當小于裝載值);計數(shù)
28、使能后,在特定的CCP管腳每輸入1個脈沖(正 邊沿、負邊沿或雙邊沿有效),計數(shù)值就減1;當計數(shù)值與匹配值相等時, 停止運行,并觸發(fā)中斷(如果中斷已被使能)。如果需要再次捕獲外部脈沖, 則要重新進行配置。根據(jù)我在本次設(shè)計中的感悟?qū)τ诙〞r器的初始化,具體來說主要要進行以下幾個步驟:首先使能定時器的GPIO端口( SysCtIPeriEnable),然后配置定時器功能(TimerConfigure ),再然后是設(shè)置定時器的預分頻值(TimerPrescaleSet ),再次是設(shè)置定時器的裝載值(TimerLoadSet),再 是使能定時器捕獲匹配中斷(TimerIntEnable ),隨后是使能定時
29、器中斷(IntEnable ),再次是使能處理器中斷(IntMasterEnable ),最后便是使 能定時器(TimerEnable)。具體的函數(shù)使用方式和程序編寫方式可以參見附錄一程序清單中的main.c 咅E分。4.3總設(shè)計流程圖初始化case:0-15播放顯示 對應(yīng)音階LED下排 名字顯示播放顯示 對應(yīng)歌曲/case:16-18按鍵掃描.否停止鍵? Or是-歌曲結(jié)束? 4.3簡易電子琴總流程圖5調(diào)試5.1音調(diào)調(diào)試打開“音樂播放化蝶”的程序,燒入開發(fā)板中,連接好音樂蜂鳴器模 塊,測試。調(diào)節(jié)模塊上音量旋鈕可調(diào)節(jié)音樂聲音大小。燒入矩陣鍵盤控制 音頻程序,剛開始矩陣鍵盤不按鍵時存在底音,之后調(diào)
30、節(jié)模塊上的電位器, 可消除底音。5.2按鍵控制音樂停止調(diào)試問題:播放一段音樂一定要播放完畢才能跳出。不同文件中的程序無 法調(diào)用。解決方法:將關(guān)于停止按鍵的任何定義程序都放入音樂播放文件中。 音樂播放文件是通過掃描數(shù)組播放音樂的,在每次掃描數(shù)組前加入停止按 鍵的掃描即可。5.3 LED顯示音頻效果調(diào)試不同的頻率顯示不懂的燈數(shù),制造音頻效果,8個LED燈顯示16個音 頻(在彈琴模塊中將兩個音頻分為一組,我們采用按鍵控制燈數(shù),16個鍵, 每兩個鍵控制一個燈)。當播放音樂的時候,在每個音樂子程序中,監(jiān)測音 頻控制燈的亮度。從而達到 LED燈隨音樂跳動的效果。6結(jié)束語/通過這個月的ARM課程設(shè)計,我學到
31、了不少課本上沒有的知識,也鍛 煉了自己的動手能力,將以前學過的零散的知識串到一起。首先在課程設(shè)計剛開始的調(diào)研階段,我學會了怎么通過各種方式查詢 相關(guān)的資料。通過對這些資料的學習,我大致了解了ARM的發(fā)展現(xiàn)狀以及未來的發(fā)展趨勢,認識到目前 ARM方面的各種各樣的發(fā)展,和它們之間的 競爭。了解了 ARM面的先進技術(shù),這些都為我的未來的學習指明了方向。我的課程設(shè)計主要涉及硬件和軟件兩方面的內(nèi)容,通過這些我的硬件 和軟件開發(fā)能力都獲得了提高。首先硬件方面,基本了解了電子產(chǎn)品的開 發(fā)流程和所要做的工作。通過開發(fā)板的設(shè)計和硬件搭建的過程,使我 ARM211實驗板的接口有了更深層次的理解,熟悉了一些ARM常
32、用的外圍電 路引腳和連接方法,如LED數(shù)碼管,鍵盤等。在軟件方面,通過調(diào)試工具的開發(fā),使我加深了對累封裝的理解,熟 悉了 ARM211C內(nèi)部的寄存器和編程規(guī)則,以及如何控制外圍電路。最后,感謝上海師范大學天華學院徐振老師、王永明老師、陶亞雄老 師的精心指導,使我能夠完成這次課程設(shè)計。7參考文獻1 周立功.ARM嵌入式系統(tǒng)基礎(chǔ)教程(第2版)M.北京:北京航空航天大學出版社,20082 姚文詳.ARM Cortex-M3 權(quán)威指南M.北京:北京航空航天大學出版社 ,20093 陳明熒.8051單片機課程設(shè)計實訓教材M.北京:清華大學出版社,20084 魏洪興,周亦敏.嵌入式系統(tǒng)設(shè)計與實例開發(fā)實驗教
33、材IIM.北京:清華大學出版社,20075 江力單片機原理與應(yīng)用技術(shù)M.北京:清華大學出版社,2007 張義和,王敏男,許宏昌等例說51單片機(C語言版)M北京:人民郵電出版社,20087 Luminary Micro 公司丄M3S1138 微控制器數(shù)據(jù)手冊 M.2008/20108 王福瑞等單片微機測控系統(tǒng)設(shè)計大全 M.北京:北京航空航天大學出版社,20079 趙星寒從51至U ARM:32位嵌入式系統(tǒng)入門M.北京:北京航空航天大學出版社,200810 彭偉等單片機典型系統(tǒng)設(shè)計實例精講M.北京:清華大學出版社,200911 百度百科LCD160212 論文基于ARM2110的多功能可視化電子
34、琴設(shè)計 孔佳(作)13 論文單片機16音階電子琴 周彪平(作)附錄一 LM3S2110原理電路圖-一一蘭=#|一 二-號二冷芒k r: I - 4;4J fl U-亠宀亠心亠用L.nr-1厲nr-l貶 一r:4:f;-LrT4-;口直L-IK3工r笙 H43 口皀二裕盂e忑墨圧總等豈豈豈豈樂豈負無二務(wù)J:B芫U*T:2.iiiirL_32JiHydti. rd亍匚乍蓼一竝H:lH:l0:I 勺jllk m 耳m一 Hf丑= JLr注 峠ci-dic.h n 収一出帶-打囂亠題-IflrFIF 亠4-工tl蠱堆JJm L L - =J -Jh kii_7rlr*屋宅進朋磁T_Tr 目二Vmrn
35、yrrlH sis ss附錄二程序清單Ibuzzer.c程序清單SysCtlPeriEnableGPIOPinTypeOut#include buzzer.h#include #include #include #include #include #define PART LM3S2110 #include #defineSysCtIPeripheralEnable#define/蜂鳴器停止發(fā)聲void buzzerQuiet(void)TimerDisable(TIMER1_BASE,/ 禁止TimerB計數(shù)GPIOPinTypeOut(CCP2_PORT,/ 配置CCP3管腳為GPIO輸出
36、GPIOPinWrite(CCP2_PORT,CCP2_PIN,0x00);/CCP3管腳輸出低電平2 music.c 程序#include music.h#include buzzer.h#include systemInit.h#defineSYSCTL_PERIPH_GPIOH#defineGPIO_PORTH_BASE#defineGPIO_PIN_1/ 定義LED#defineSYSCTL_PERIPH_GPIOA#defineGPIO_PORTA_BASE#defineGPIO_PIN_4#defineSYSCTL_PERIPH_GPIOA#defineGPIO_PORTA_BAS
37、E#defineGPIO_PIN_5#defineSYSCTL_PERIPH_GPIOA#defineGPIO_PORTA_BASE#defineGPIO_PIN_6#defineSYSCTL_PERIPH_GPIOGTIMER_A);CCP2_PIN);使KEY_PERIPH1KEY_PORT1KEY_PIN1LED1_PERIPHLED1_PORTLED1_PINLED2_PERIPHLED2_PORTLED2_PINLED3_PERIPHLED3_PORTLED3_PINLED4_PERIPHGPIOPinTypeGPIOOutput/聲明全局的系統(tǒng)時鐘變量extern unsigned
38、 long TheSysClock;/蜂鳴器初始化void buzzerlnit(void)SysCtlPeriEnable(SYSCTL_PERIPH_TIMER1);/ 使能TIMER1模塊SysCtlPeriEnable(CCP2_PERIPH);/ 使能CCP3所在的GPI0端口GPIOPinTypeTimer(CCP2_PORT, CCP2_PIN);/設(shè)置相關(guān)管腳為Timer功能TimerConfigure (TIMER1_BASE, TIMER_CFG_16_BIT_PAIR |/ 配置TimerB 為 16 位 PWM TIMER_CFG_A_PWM);/蜂鳴器發(fā)岀指定頻率的聲
39、音/ usFreq是發(fā)聲頻率,取值(系統(tǒng)時鐘/65536)+120000,單位:Hzvoid buzzerSound(unsigned short usFreq)unsigned long ulVal;if (usFreq 20000)buzzerQuiet();elseGPIOPinTypeTimer(CCP2_PORT, CCP2_PIN);/設(shè)置相關(guān)管腳為Timer功能ulVal = TheSysClock / usFreq;TimerLoadSet(TIMER1_BASE, TIMER_A, ulVal); /設(shè)置 TimerB 初值TimerMatchSet(TIMER1_BASE,
40、TIMER_A, ulVal / 2);/設(shè)置 TimerB匹配值TimerEnable (T IMER1_BASE,TIMER_A);/ 使能TimerB計數(shù)LED4_PORTLED4_PINLED5_PERIPHLED5_PORTLED5_PINLED6_PERIPHLED6_PORTLED6_PINLED7_PERIPHLED7_PORTLED7_PINLED8_PERIPHLED8_PORTLED8_PIN0,0;void musicPlay(int i)buzzerSound(MyScorei.mName);SysCtlDelay(MyScorei.mTime*(TlheSysClo
41、ck / 3000);SysCtlDelay(10* 仃 heSysClock/3000);void musicPlayy(void)SysCtlPeriEnable(KEY_PERIPH1);/ 使能KEY所在的GPIO端口GPIOPinTypeln(KEY_PORT1, KEY_PIN1);/ 設(shè)置KEY所在管腳為輸入short i = 0;for (;)if ( GPIOPinRead(KEY_PORT1KEY_PIN1) =0x00)/如果按下 KEY1break;else if (MyScore1i.mTime = 0)#defineGPIO_PORTG_BASE#defineGPI
42、O_PIN_0#defineSYSCTL_PERIPH_GPIOF#defineGPIO_PORTF_BASE#defineGPIO_PIN_2#define SYSCTL_PERIPH_GPIOG #defineGPIO_PORTG_BASE#defineGPIO_PIN_1#defineSYSCTL_PERIPH_GPIOE#defineGPIO_PORTE_BASE#defineGPIO_PIN_0#defineSYSCTL_PERIPH_GPIOE#defineGPIO_PORTE_BASE#defineGPIO_PIN_1const tNote MyScore=L5, T/10,L6
43、, T/10,L7, T/10,M1, T/10,M2, T/10,M3, T/10,M4, T/10,M5, T/10,M6, T/10,M7, T/10,H1, T/10,H2, T/10,H3, T/10,H4, T/10,H5, T/10,H6, T/10,H7, T/10, 0, 0/結(jié)束;const tNote MyScore1=L3, T/4, 0, 0;const tNote MyScore2=M5,T/8,0,0;const tNote MyScore3=M5,T/16,break;elseif(MyScore2i.mName=M1)/ 點亮1個LEDGPI0PinWrite
44、(LED1_P0RT, LED1_PIN, 0x00);GPIOPinWrite(LED2_PORT, LED2_PIN, 0xFF);GPIOPinWrite(LED3_PORT, LED3_PIN, 0xFF);GPIOPinWrite(LED4_PORT, LED4_PIN, 0xFF);GPIOPinWrite(LED5_PORT, LED5_PIN, 0xFF);GPIOPinWrite(LED6_PORT, LED6_PIN, 0xFF);GPIOPinWrite(LED7_PORT, LED7_PIN, 0xFF);GPIOPinWrite(LED8_PORT, LED8_PIN
45、, 0xFF); / 點亮7個LEDGPIOPinWrite(LED1_PORT,LED1_PIN, 0x00);/點亮 LEDGPIOPinWrite(LED2_PORT,LED2_PIN, 0x00);/點亮 LEDGPIOPinWrite(LED3_PORT,LED3_PIN, 0x00);/點亮 LEDGPIOPinWrite(LED4_PORT,LED4_PIN, 0x00);/點亮 LEDGPIOPinWrite(LED5_PORT,LED5_PIN, 0x00);/點亮 LEDGPIOPinWrite(LED6_PORT,LED6_PIN, 0x00);/點亮 LEDGPIOPi
46、nWrite(LED7_PORT,LED7_PIN, 0x00);/點亮 LEDGPIOPinWrite(LED8_PORT,LED8_PIN, 0xFF);/熄滅 LEDbuzzerSound(MyScore1i.mName);SysCtlDelay(MyScore1i.mTime*(TlheSysClock / 3000);i+;buzzerQuiet();SysCtlDelay(10* 仃 heSysClock /3000);3 systemInit.c 程序#include systemInit.h/定義全局的系統(tǒng)時鐘變量unsigned long TheSysClock = 1200
47、0000UL;/系統(tǒng)時鐘初始化void clockInit(void)SysCtlLDOSet(SYSCTL_LDO_2_50V);/ 設(shè)置LDO輸岀電壓SysCtlClockSet(SYSCTL_USE_OSC|/系統(tǒng)時鐘設(shè)置SYSCTL_OSC_MAIN|/采用主振蕩器SYSCTL_XTAL_6MHZ |/ 外接6MHz晶振SYSCTL_SYSDIV_1);/ 不分頻TheSysClock= SysCtlClockGet();/獲取當前的系統(tǒng)時鐘頻率4主程序清單 #include systemInit.h#include buzzer.h#include music.h#include s
48、ystemInit.h#define lcden GPIO_PIN_0 /PB0;#define lcdrs GPIO_PIN_2 /PB2;/定義LED#defineLED1_PERIPHSYSCTL_PERIPH_GPIOA#defineLED1_PORTGPIO_PORTA_BASE#defineLED1_PINGPIO_PIN_4#defineLED2 PERIPHSYSCTL_PERIPH_GPIOA#defineLED2 PORTGPIO_PORTA_BASE#defineGPIO_PIN_5#defineSYSCTL_PERIPH_GPIOA#defineGPIO_PORTA_B
49、ASE#defineGPIO_PIN_6#defineSYSCTL_PERIPH_GPIOG#defineGPIO_PORTG_BASE#defineGPIO_PIN_0#defineSYSCTL_PERIPH_GPIOF#defineGPIO_PORTF_BASE#defineGPIO_PIN_2#defineSYSCTL_PERIPH_GPIOG#defineGPIO_PORTG_BASE#defineGPIO_PIN_1#defineSYSCTL_PERIPH_GPIOE#defineGPIO_PORTE_BASE#defineGPIO_PIN_0#defineSYSCTL_PERIPH
50、_GPIOE#defineGPIO_PORTE_BASE#defineGPIO_PIN_1/ 定義KEY#defineSYSCTL_PERIPH_GPIOB#defineLED2_PINLED3_PERIPHLED3_PORTLED3_PINLED4_PERIPHLED4_PORTLED4_PINLED5_PERIPHLED5_PORTLED5_PINLED6_PERIPHLED6_PORTLED6_PINLED7_PERIPHLED7_PORTLED7_PINLED8_PERIPHLED8_PORTLED8_PINKEY_PERIPH2KEY_PORT2GPIO_PORTB_BASE#def
51、ineKEY_PIN2GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_4 /連接方式矩陣鍵盤的行線接 PC47列線接PA03unsigned char data;unsigned char num;/PD0-PD7;int guan;int jian;int numm;/lcd顯示模塊技術(shù)/lcd 模塊void write_com(unsigned char com) /寫命令GPI0PinWrite(GPI0_P0RTB_BASE,lcdrs,0x00);/ lcdrs=0;GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_0|GPIO_PIN_1|G
52、PIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,com);/PD=com;SysCtlDelay(5 * (TheSysClock / 4000);/ 延時5msGPIOPinWrite(GPIO_PORTB_BASE,lcden,0xFF); / lcden=1;SysCtlDelay(5 *仃 heSysClock/4000);GPIOPinWrite(GPIO_PORTB_BASE,lcden,0x00); / lcden=0;void write_data(unsigned char date)GPIOPinWrite(GPIO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度倉儲物流倉儲場地租賃合同6篇
- 二零二五年度技術(shù)開發(fā)合同:人工智能助手定制開發(fā)服務(wù)3篇
- 2025年度LED燈具安裝與節(jié)能效果評估合同3篇
- 二零二五年度展覽館租賃合同交接與展覽服務(wù)標準協(xié)議3篇
- 二零二五年度文化產(chǎn)業(yè)園區(qū)開發(fā)合作協(xié)議3篇
- 二零二五年度人工智能領(lǐng)域股東合作協(xié)議書模板3篇
- 海南職業(yè)技術(shù)學院《數(shù)控加工力學和動力學》2023-2024學年第一學期期末試卷
- 海南衛(wèi)生健康職業(yè)學院《中小學音樂教學實訓》2023-2024學年第一學期期末試卷
- 課程設(shè)計洗瓶器
- 護理博士課程設(shè)計
- 新疆塔城地區(qū)(2024年-2025年小學六年級語文)部編版期末考試(下學期)試卷及答案
- 四人合伙投資協(xié)議書范本
- 反射療法師3級考試題庫(含答案)
- 汽車供應(yīng)商審核培訓
- 山東省濟南市2023-2024學年高二上學期期末考試地理試題 附答案
- 期末復習試題1(試題)-2024-2025學年二年級上冊數(shù)學北師大版
- 1《地球的表面》說課稿-2024-2025學年科學五年級上冊教科版
- 汽車以租代購合同完整版完整版
- 音樂制作基礎(chǔ)知識單選題100道及答案解析
- 2024至2030年大型儲油罐項目投資價值分析報告
- GB/T 44764-2024石油、石化和天然氣工業(yè)腐蝕性石油煉制環(huán)境中抗硫化物應(yīng)力開裂的金屬材料
評論
0/150
提交評論