




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、嵌入式系統(tǒng)原理與應(yīng)用綜合設(shè)計(jì)簡易電子琴系統(tǒng)設(shè)計(jì)系 部:電子與信息工程系專業(yè)班級:電子信息工程09秋2班姓 名:學(xué) 號:小組成員:指導(dǎo)教師:完 成 日 期 2012年 6月目錄1 前言11.1電子琴介紹11.2嵌入式電子琴發(fā)展趨勢21.3實(shí)現(xiàn)目標(biāo)22 總體設(shè)計(jì)32.1利用實(shí)驗(yàn)資源實(shí)現(xiàn)簡易電子琴的功能。32.2主要技術(shù)指標(biāo)33 硬件設(shè)計(jì)43.1 lm3s2110芯片43.1.1 lm3s2110特性概述43.1.2 lm3s2110中斷功能概述53.1.3 lm3s2110的gpio特性53.2 鍵盤模塊63.2.1 矩陣鍵盤模塊63.2.2 獨(dú)立按鍵模塊73.3 lcd顯示模塊73.3.1 16
2、02介紹73.3.2編輯本段管腳功能73.4蜂鳴器模塊設(shè)計(jì)84 系統(tǒng)軟件設(shè)計(jì)94.1 音樂控制104.4.1 音樂的相關(guān)知識(shí)104.4.2 如何用嵌入式實(shí)現(xiàn)音樂節(jié)拍104.4.3 如何用嵌入式產(chǎn)生音頻脈沖104.2 軟件初始化114.2.1 lcd初始化114.2.2 輸入輸出初始化124.2.3 按鍵、蜂鳴器、led初始化134.2.4 定時(shí)器的初始化134.3總設(shè)計(jì)流程圖145調(diào)試155.1音調(diào)調(diào)試155.2按鍵控制音樂停止調(diào)試155.3 led顯示音頻效果調(diào)試156結(jié)束語157參考文獻(xiàn)16附錄一 lm3s2110原理電路圖17附錄二 程序清單171 buzzer.c程序清單172 mus
3、ic.c程序183 systeminit.c程序204主程序清單201 前言1.1電子琴介紹電子琴又稱作電子鍵盤,屬于(區(qū)別于電聲),發(fā)音音量可以自由調(diào)節(jié)。較寬,和聲豐富,甚至可以演奏出一個(gè)的效果,表現(xiàn)力極其豐富。采用半導(dǎo)體集成電路,對樂音信號進(jìn)行放大,通過揚(yáng)聲器產(chǎn)生音響?,F(xiàn)在的電子琴一般使用pcm或awm采樣音源。所謂采樣就是錄制樂器的聲音,將其數(shù)字化后存入rom里,然后按下鍵時(shí)cpu回放該音。甚至有一些高級編曲鍵盤可以使用外置采樣(比如tyros 3的硬盤音色)。圖1-1電子琴原理框圖電子琴使用二分頻電路是音階規(guī)律的需要。音樂中的基本音階的頻率是按照一定規(guī)律排列的,以c調(diào)為例,音階中各音之
4、間的頻率(單位為赫茲)關(guān)系是:說明一個(gè)音的頻率剛好是比它低八度音的頻率的兩倍。所以,只要把一個(gè)音的頻率除以2就得到比它低八度的一個(gè)音的頻率。實(shí)現(xiàn)這一點(diǎn)就需要使用二分頻電路。這樣,只要振蕩器產(chǎn)生一個(gè)標(biāo)準(zhǔn)音的頻率信號,如高音“1”的信號,通過二分頻就產(chǎn)生中音“2”的頻率,再一次二分頻就產(chǎn)生低音“1”的頻率了。如果按照鍵盤上最高音組的頻率制作七個(gè)振蕩器,并將得到的七個(gè)音階信號分別二分頻,便可得到低八度的一組音階信號;再次二分頻,就可得到再低八度的一組音階信號。依此類推,最后,就能得到鍵盤上所有的音階信號了。不過,實(shí)際上需要制作12個(gè)振蕩器和更多的分頻器,因?yàn)橐唤M鍵盤中還有五支黑鍵。1.2嵌入式電子琴
5、發(fā)展趨勢嵌入式技術(shù)在電子琴方面的設(shè)計(jì)應(yīng)用是其發(fā)展的一個(gè)方向,同時(shí)也是一種必然趨勢。嵌入式設(shè)備能夠促使宿主設(shè)備更加智能、高效。設(shè)計(jì)的過程更加靈活,整個(gè)系統(tǒng)的操作更加簡單方便,嵌入式電子琴設(shè)計(jì)過程能夠保證電子琴的開發(fā)成本趨于合理性、功能更加完善,嵌入式電子琴具有功能全面、結(jié)構(gòu)緊湊、可靠性強(qiáng)、實(shí)時(shí)性強(qiáng)等特點(diǎn)。嵌入式電子琴系統(tǒng)是技術(shù)過程的具體體現(xiàn),具有核心處理程序設(shè)計(jì)功能,能夠保證電子琴滿足新時(shí)期的要求,從鍵盤設(shè)計(jì)、輸入輸出模塊設(shè)計(jì)、音色音調(diào)控制、電路設(shè)計(jì)等方面發(fā)揮重要的作用。能夠與現(xiàn)實(shí)環(huán)境進(jìn)行有效的結(jié)合,保證交互式信息系統(tǒng)的實(shí)現(xiàn),嵌入式電子琴設(shè)計(jì)可以把半導(dǎo)體技術(shù)、計(jì)算機(jī)技術(shù)與行業(yè)具體應(yīng)用緊密結(jié)合起來
6、,最終保證嵌入式電子琴處于資金密集、技術(shù)密集、高度分散、不斷創(chuàng)新的環(huán)境下。隨著edi的推廣、dsp技術(shù)的發(fā)展,嵌入式電子琴技術(shù)作為核心技術(shù)應(yīng)用越來越廣泛,在某一個(gè)芯片上實(shí)現(xiàn)一個(gè)核心技術(shù)的時(shí)代已經(jīng)來臨,用戶設(shè)計(jì)過程中可以根據(jù)實(shí)際需要,按照嵌入式電路的要求,設(shè)計(jì)出功能各異的系統(tǒng)結(jié)構(gòu)。仿真設(shè)計(jì)完成后可以通過半導(dǎo)體制作形成需要的產(chǎn)品,整個(gè)嵌入式系統(tǒng)可以很好的集中到一塊或者幾塊芯片上,很好的解決了電子琴設(shè)計(jì)電路分散的狀況。應(yīng)用系統(tǒng)集中到某一個(gè)芯片上保證系統(tǒng)更加簡潔,功能更加完善。1.3實(shí)現(xiàn)目標(biāo)本次制作電子琴除了可正常彈奏外,lcd液晶屏顯示音階,led燈帶展現(xiàn)音頻效果。具有較強(qiáng)的感官體驗(yàn),增加生活樂趣。
7、本系統(tǒng)運(yùn)行穩(wěn)定,其優(yōu)點(diǎn)是硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,性價(jià)比較高等,具有一定的實(shí)用和參考價(jià)值。2 總體設(shè)計(jì)2.1利用實(shí)驗(yàn)資源實(shí)現(xiàn)簡易電子琴的功能。(1) 用蜂鳴器發(fā)出不同聲音;(2) 使用lcd顯示器來顯示音階輸入的相關(guān)信息;(3) 當(dāng)按下鍵盤組相對按鍵,蜂鳴器會(huì)發(fā)出相對音階單音,共有兩個(gè)8度音階;(4) 可以輸入16個(gè)單音,可以一起演奏出來;(5) 演奏時(shí)可以按鍵中斷;(6) 可以實(shí)時(shí)顯示目前演奏的單音碼;(7) 不同音階對應(yīng)不同燈亮,具有音頻效果。2.2主要技術(shù)指標(biāo)(1) 充分利用自己設(shè)計(jì)的開發(fā)板的硬件的資源進(jìn)行設(shè)計(jì);(2) 通過調(diào)整pwm的周期,改變占空比生產(chǎn)不同頻率的信號;
8、(3) 實(shí)現(xiàn)按鍵發(fā)出相對音階單音;(4) 外擴(kuò)實(shí)現(xiàn)音頻效果。圖2-1 總設(shè)計(jì)框圖3 硬件設(shè)計(jì)本次用到的硬件有:lm3s2110開發(fā)板中包含的一塊lm3s2110微控制器和4個(gè)獨(dú)立鍵盤。另外可以外接的有1個(gè)4x4矩陣鍵盤模塊、 1個(gè)lcd液晶顯示屏、1個(gè)蜂鳴器和1個(gè)led音頻模塊。3.1 lm3s2110芯片3.1.1 lm3s2110特性概述lm3s2110 微控制器是針對工業(yè)應(yīng)用方案而設(shè)計(jì)的,包括遠(yuǎn)程監(jiān)控、電子販?zhǔn)蹤C(jī)、測試和測量設(shè)備、網(wǎng)絡(luò)設(shè)備和交換機(jī)、工廠自動(dòng)化、hvac和建筑控制、游戲設(shè)備、運(yùn)動(dòng)控制、醫(yī)療器械、以及火警安防。除此之外,該lm3s2110微控制器的優(yōu)勢還在于能夠方便的運(yùn)用多種
9、arm的開發(fā)工具和片上系統(tǒng)(soc)的底層ip應(yīng)用方案,以及廣大的用戶群體。 另外,該微控制器使用了兼容arm的thumb指令集的thumb2指令集來減少存儲(chǔ)容量的需求,并以此達(dá)到降低成本的目的。lm3s2110微控制器與stellaris系列的所有成員是代碼兼容的,這為用戶提供了靈活性,能夠適應(yīng)各種精確的需求5。與此同時(shí),它還提供出色的計(jì)算性能和優(yōu)越的系統(tǒng)中斷響應(yīng)能力。總的來說,其特性包括:1、具有十分緊湊的內(nèi)部核心。2、從 arm7 處理器系列中移植過來,以獲得更好的性能和電源效率。3、存儲(chǔ)器保護(hù)單元(mpu)為復(fù)雜的應(yīng)用提供特權(quán)操作模式。4、中斷處理能力優(yōu)秀非常,通過執(zhí)行寄存器操作來實(shí)現(xiàn)
10、,這些寄存器操作在處理硬件中斷時(shí)使用。5、通過harvard結(jié)構(gòu)執(zhí)行快速的應(yīng)用,以獨(dú)立指令以及數(shù)據(jù)總線為其十分突出的特征。6、在通常與8位和16位設(shè)備相關(guān)的存儲(chǔ)容量中的thumb-2指令集,特別是在微控制器級應(yīng)用的幾千字節(jié)存儲(chǔ)量中,提供arm內(nèi)核所期望的高性能。7、調(diào)試的解決方案應(yīng)有盡有:儀表跟蹤宏單元(itm),用于支持printf 型調(diào)試;flash 修補(bǔ)和斷點(diǎn)(fpb)單元,用于實(shí)現(xiàn)斷點(diǎn)操作;數(shù)據(jù)觀察點(diǎn)和觸發(fā)(dwt)單元,用于執(zhí)行觀察點(diǎn)、觸發(fā)源和系統(tǒng)性能分析;串行線jtag調(diào)試端口(swj-dp);跟蹤端口接口單元(tpiu)用作跟蹤端口分析儀的橋接。3.1.2 lm3s2110中斷功
11、能概述arm cortex-m3 處理器和嵌套向量中斷控制器(nvic)將區(qū)別所有問題的優(yōu)先等級并對其進(jìn)行相應(yīng)的處理。所有存在的異常都會(huì)在處理器模式中被予以處理。當(dāng)出現(xiàn)異常時(shí),處理器的狀態(tài)將被自動(dòng)存儲(chǔ)到堆棧中,并在中斷服務(wù)程序(isr)結(jié)束時(shí)自動(dòng)從堆棧中恢復(fù)。取出向量和保存狀態(tài)是同時(shí)進(jìn)行的,這樣可以提高進(jìn)入中斷的效率。處理器還支持末尾連鎖(tail-chaining),這使處理器無需保存和恢復(fù)狀態(tài)便可執(zhí)行連續(xù)的(back-to-back)中斷。用戶可設(shè)置的最高優(yōu)先級0在內(nèi)部看作是優(yōu)先級4,僅次于復(fù)位、nmi以及硬件故障。值得注意的是:0是所有可調(diào)整優(yōu)先級的默認(rèn)優(yōu)先級。如果你將兩個(gè)或更多的中斷指
12、定為相同的優(yōu)先級,那么它們的硬件優(yōu)先級(位置編號越高優(yōu)先級越低)就決定了處理器激活中斷的順序。例如,如果gpio端口b和gpio端口a都為優(yōu)先級1,那么gpio端口a的優(yōu)先級更高6。系統(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個(gè)物理gpio 模塊組成,每個(gè)對應(yīng)一個(gè)獨(dú)立的gpio端口(端口a, 端口b, 端口c, 端口d, 端口e, 端口f, 端口g, 和端口h)。gpio模塊
13、遵循firm規(guī)范,并且支持11-40 個(gè)可編程的輸入/輸出管腳,具體取決于正在使用的外設(shè)7。gpio模塊具有以下的特性:1、可編程控制gpio中斷:屏蔽中斷發(fā)生;邊沿觸發(fā)(上升沿,下降沿,上升、下降沿);(高或低)電平觸發(fā)。2、輸入/輸出可承受5v電壓。3、在讀和寫操作中通過地址線進(jìn)行位屏蔽。4、可編程控制gpio引腳配置。本次設(shè)計(jì)使用的開發(fā)板上的微控制器lm3s2110上可使用的引腳有pa2pa6(5個(gè))、pb0pb6(7個(gè))、pc4pc7(4個(gè))、pd0pd7(8個(gè))、pe0、pe1、pf0、pf1、pf2、pg0、pg1、ph0、ph1。其中pf0和pf1可以直接用來脈寬調(diào)制(pmw),
14、輸出方波信號。3.2 鍵盤模塊3.2.1 矩陣鍵盤模塊采取4*4鍵盤結(jié)構(gòu)構(gòu)造可以保證電子琴鍵盤趨于合理性,多功能電子琴設(shè)計(jì)過程中需要設(shè)計(jì)多種模式的按鍵,一般情況下,因?yàn)橐存I輸入16個(gè)音階,從低音區(qū)的so到高音區(qū)的si。鍵盤設(shè)計(jì)模塊主要負(fù)責(zé)對輸入設(shè)備進(jìn)行掃描,掃描的方法采取并列式法,具體定義過程中,每個(gè)按鍵的功能都可以看成其他模塊的控制信號。3.1矩陣鍵盤原理圖電子琴鍵盤設(shè)計(jì)過程中,通過鍵盤控制lm3s2110芯片內(nèi)部頻率實(shí)現(xiàn),從而產(chǎn)生不同類型的音符,按鍵設(shè)計(jì)過程中接法起到一定的作用。在矩陣式鍵盤設(shè)計(jì)過程中,垂直線和水平線交互出不能直接進(jìn)行連通設(shè)計(jì),具體通過一個(gè)按鍵設(shè)計(jì)較好,按照此模式一個(gè)端口
15、可以產(chǎn)生一個(gè)4*4=16的按鍵。圖3.2 矩陣鍵盤音頻為分部3.2.2 獨(dú)立按鍵模塊開發(fā)板上具有4個(gè)獨(dú)立按鍵,本次試驗(yàn)除了控制16個(gè)音階外,外加了播放3首音樂與停止功能,設(shè)計(jì)更加合理化,使初學(xué)者可通過聽音樂判斷自己的程度。開發(fā)板從左到右key1為停止鍵,key2-key4各播放一首曲目。3.3 lcd顯示模塊3.3.1 1602介紹1602液晶也叫1602字符型液晶它是一種專門用來顯示字母、數(shù)字、符號等的型液晶模塊它有若干個(gè)5x7或者5x11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符。每位之間有一個(gè)點(diǎn)距的間隔每行之間也有間隔起到了字符間距和行間距的作用。1602lcd是指顯示的內(nèi)容為1
16、6x2,即可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。 3.3.2管腳功能1602采用標(biāo)準(zhǔn)的16腳接口,其中: 第1腳:vss為電源地 第2腳:vdd接5v電源正極 第3腳:v0為液晶顯示器對比度調(diào)整端,接正電源時(shí)對比度最弱,接地電源時(shí)對比度最高(對比度過高時(shí)會(huì) 產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10k的電位器調(diào)整對比度)。 第4腳:rs為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。 第5腳:rw為讀寫信號線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫操作。 第6腳:e(或en)端為使能(enable)端。 第714腳:d0d7為8位雙向數(shù)據(jù)端。 第1516腳
17、:空腳或背燈電源。15腳背光正極,16腳背光負(fù)極。本次試驗(yàn)為讀模式,所以rw常置1,與vcc相連。圖3.3 本次試驗(yàn)用到的lcd液晶顯示屏3.4蜂鳴器模塊設(shè)計(jì)在簡易電子琴的設(shè)計(jì)過程中,音樂蜂鳴器電路模塊設(shè)計(jì)顯的非常重要。系統(tǒng)應(yīng)用過程中,必須利用音樂蜂鳴器必須根據(jù)音頻相應(yīng)不同音階,與音樂。具體工作中包括按鍵按下、工作結(jié)束、開始工作等。本次試驗(yàn)采取的是試驗(yàn)箱上的功放模塊。只要選擇2110的gpio中的一個(gè)i/o口與功放模塊(含功放模塊、觸發(fā)音樂發(fā)聲、分立元件otl功放電路、集成電路功放電路。)中蜂鳴器輸入的管腳相連(并共地),給予蜂鳴器一個(gè)信號,不同音調(diào)的控制,其原理圖如圖3.4功放模塊原理圖所示
18、。圖3.4試驗(yàn)箱功放模塊原理圖圖3.4試驗(yàn)箱功放模塊實(shí)物圖4 系統(tǒng)軟件設(shè)計(jì)本軟件設(shè)計(jì)關(guān)鍵是要實(shí)現(xiàn)一種由嵌入式控制的簡單音樂發(fā)生器,它由16個(gè)音節(jié)組成的的鍵盤,用戶可以根據(jù)樂譜在鍵盤上進(jìn)行演奏,音樂發(fā)生器會(huì)根據(jù)用戶的彈奏,通過揚(yáng)聲器將音樂播放出來。也可根據(jù)選擇播放出喜愛的音樂來。4.1 音樂控制4.4.1 音樂的相關(guān)知識(shí)樂音聽起來有的高,有的低,這就叫音高,音高是由發(fā)音物體振動(dòng)頻率的高低決定的,頻率高聲音就高,頻率低聲音就低,不同音商的樂音是用c、d、e、f、g、a、b表示的,這7個(gè)字母就是樂音的音名,它們一般依次唱成do、re、mi、fa、so、la、si,這是唱曲時(shí)樂音的發(fā)音,所以叫唱名。音
19、持續(xù)時(shí)間的長短即時(shí)值,一般用拍數(shù)表示,休止符表示暫停發(fā)音。一首音樂是由許多不同的音符組成的,而每個(gè)音符對應(yīng)著不同的頻率,這樣就可以利用不同頻率的組合,加以與拍數(shù)對應(yīng)的延時(shí),構(gòu)成音樂。4.4.2 如何用嵌入式實(shí)現(xiàn)音樂節(jié)拍除了音符以外,節(jié)拍也是音樂的關(guān)鍵組成部分。節(jié)拍實(shí)際上就是音持續(xù)時(shí)間的長短,在嵌入式系統(tǒng)中可以用延時(shí)來實(shí)現(xiàn),如果1/4拍的延時(shí)是t/16秒,則1拍的延時(shí)是t/4秒,只要知道1/4拍的延時(shí)時(shí)間,其余的節(jié)拍延時(shí)時(shí)間就是它的陪數(shù)(t=3600ms)。如果芯片要自己播放音樂,那么必須在程序設(shè)計(jì)中考慮到節(jié)拍的設(shè)置,由于本例實(shí)現(xiàn)的音樂發(fā)生器是由用戶通過鍵盤輸入彈奏樂曲的,所以節(jié)拍由用戶掌握,不
20、由程序控制。4.4.3 如何用嵌入式產(chǎn)生音頻脈沖了解音樂的一些基本知識(shí)后可知,產(chǎn)生不同頻率的音頻脈沖即能產(chǎn)生音樂,對于嵌入式而言,產(chǎn)生不同頻率有脈沖非常方便,可以利用它的定時(shí)/計(jì)數(shù)器來產(chǎn)生這樣的方波頻率信號,因此,需要弄清楚音樂中的音符和對應(yīng)的頻率,以及嵌入式定時(shí)計(jì)數(shù)的關(guān)系。在本實(shí)驗(yàn)中,芯片工作于6mhz時(shí)鐘頻率, c調(diào)的各音符頻率與計(jì)數(shù)值t的對照如下表:表3.1 c調(diào)的各音符頻率音調(diào)頻率(hz)音調(diào)頻率(hz)音調(diào)頻率(hz)l1262m1523h11047l2294m2587h21175l3330m3659h31319l4349m4698h41397l5392m5784h51568l644
21、0m6880h61760l7494m7988h719764.2 軟件初始化初始化對于軟件或者系統(tǒng)來說是十分重要的。所謂初始化就是把其中的某些參數(shù)或者數(shù)值變?yōu)槟J(rèn)值,或者將控件調(diào)整為默認(rèn)狀態(tài)。系統(tǒng)進(jìn)行將系統(tǒng)的所有狀態(tài)和設(shè)置還原到最后備份時(shí)的樣子就是初始化的過程,將軟件的一些功能和設(shè)置還原到最原始的設(shè)置就是對其的初始化。因此只有將初始化做好,才能談軟件設(shè)計(jì),本設(shè)計(jì)主要涉及的初始化除了基本的初始化步驟之外,還有輸入輸出、定時(shí)器、按鍵、lcd液晶顯示、和蜂鳴器的初始化。值得一提的是在軟件開發(fā)的過程中也要不斷完善初始化這個(gè)步驟。4.2.1 lcd初始化首先在lcd初始化的程序中要先通過數(shù)據(jù)寫入和命令寫入
22、的方式以及相關(guān)的操作來初始化與其相互通訊的硬件。然后編寫lcd清屏的程序和其余的子程序。最終在自己的設(shè)計(jì)中合理添加這些子程序。這樣一來就完成了對于lcd液晶顯示屏的初始化。初始化液晶屏?xí)r,先對寄存器的高八位和低八位分別進(jìn)行設(shè)置,再設(shè)置液晶屏的顯示模式,包括:顏色、坐標(biāo)、圖形大小等。lcd液晶屏初始化流程圖如圖4.1所示。圖4.1 lcd_init()子程序流程首先在lcd初始化的開始需要給rst引腳一個(gè)脈沖。 其次通過調(diào)用lcd_write_cmd()函數(shù),lcd_write_data()函數(shù)初始化液晶屏的寄存器,使其滿足功能需求。如下圖4.2 lcd_write_cmd()函數(shù)的時(shí)序圖所示,
23、可以寫出函數(shù)lcd_write_cmd()的子程序。首先拉低cs和rs,通過gpiod來傳輸數(shù)據(jù)位的高八位,wr經(jīng)過一個(gè)上升沿,使數(shù)據(jù)的高八位寫入lcd寄存器;同樣在下一個(gè)時(shí)序中寫入數(shù)據(jù)位的低八位,最后拉高cs和rs,整個(gè)過程即為一個(gè)16位命令子程序的編寫。圖4.2 lcd_write_cmd()函數(shù)的時(shí)序圖驅(qū)動(dòng)lcd是其初始化的第一個(gè)步驟。顯示驅(qū)動(dòng)程序是用來允許圖形庫和特點(diǎn)的顯示連接用以處理包括與顯示控制器通訊和傳輸顯示控制器所需的指令等的細(xì)節(jié)問題。顯示驅(qū)動(dòng)程序必須提供要設(shè)定的與顯示相關(guān)的操作。顯示相關(guān)的操作包括初始化程序、背光控制和對比度控制等內(nèi)容。tdisplay結(jié)構(gòu)體包含一些的函數(shù)指針
24、以及屏幕的寬度和高度。這種結(jié)構(gòu)體由顯示驅(qū)動(dòng)程序提供,并同時(shí)在一個(gè)顯示驅(qū)動(dòng)程序特定的頭文件中提供結(jié)構(gòu)體的原型。以上內(nèi)容的具體程序清單詳見附錄中的lcdfunc.c的部分。4.2.2 輸入輸出初始化對于不同端口的輸入輸出引腳,都要分別進(jìn)行初始化的設(shè)置。這里提供以下最基本的gpio初始化步驟:首先使能端口,然后設(shè)置引腳的輸入或輸出狀態(tài),其次設(shè)置引腳的上升沿或下降沿觸發(fā)的狀態(tài),再是設(shè)置引腳的中斷使能,最后是設(shè)置端口的中斷使能。stellaris(德州儀器公司提供)的外設(shè)驅(qū)動(dòng)庫中,詳細(xì)地描述了lm3s2110的輸入輸出特性,并給出了其api函數(shù)的使用方式,這些api函數(shù)按其功能可以分成三個(gè)組別:處理中斷
25、的api函數(shù),配置gpio引腳功能的api函數(shù)和訪問gpio引腳值的api函數(shù)。4.2.3 按鍵、蜂鳴器、led初始化要初始化按鍵、蜂鳴器,首先應(yīng)該使能和配置其所對應(yīng)的微控制器lm3s2110上的引腳,其中將兩個(gè)按鍵所對應(yīng)的引腳(本次設(shè)計(jì)用pb4和pb5等)設(shè)置為輸入狀態(tài),將蜂鳴器所對應(yīng)的引腳(ccp2/pb1)與led所對應(yīng)的腳(pa4等)設(shè)置為輸出狀態(tài),使能和配置完成后將蜂鳴器(ccp2/pb1)賦初值,因它們均為低電平時(shí)能,故將初值賦為全1。賦值也就是將值寫入到該引腳,賦值所使用的函數(shù)是gpiopinwrite(ulport,ucpins,ucval),如將全1賦值給pb3,其編寫方法為
26、:gpiopinwrite(gpio_portb_base,gpio_pin_3,0xff)。4.2.4 定時(shí)器的初始化定時(shí)器的使用是本次設(shè)計(jì)的重中之重,所以對于它的初始化顯得尤為關(guān)鍵。在使用通用定時(shí)器時(shí),外設(shè)時(shí)鐘必須使能,該操作通過將rcgc1寄存器中的timer0、timer1和timer2位置位來實(shí)現(xiàn)。lm3s2110對于16位單次觸發(fā)/周期定時(shí)器,timer可以被拆分為兩個(gè)單獨(dú)運(yùn)行的16位定時(shí)/計(jì)數(shù)器,都可以被配置成帶8位預(yù)分頻(可選)的16位遞減計(jì)數(shù)器。如果使用8位預(yù)分頻功能,則相當(dāng)于24位定時(shí)器。具體用法跟32位單次觸發(fā)/周期定時(shí)器類似,只不過對timera和timerb的操作是分
27、別獨(dú)立進(jìn)行的。對于16位輸入邊沿計(jì)數(shù)捕獲,在該模式中,timera或timerb被配置為能夠捕獲外部輸入脈沖邊沿事件的遞減計(jì)數(shù)器。共有3種邊沿事件類型:正邊沿、負(fù)邊沿、雙邊沿。該模式的工作過程是:設(shè)置裝載值,并預(yù)設(shè)一個(gè)匹配值(應(yīng)當(dāng)小于裝載值);計(jì)數(shù)使能后,在特定的ccp管腳每輸入1個(gè)脈沖(正邊沿、負(fù)邊沿或雙邊沿有效),計(jì)數(shù)值就減1;當(dāng)計(jì)數(shù)值與匹配值相等時(shí),停止運(yùn)行,并觸發(fā)中斷(如果中斷已被使能)。如果需要再次捕獲外部脈沖,則要重新進(jìn)行配置。根據(jù)我在本次設(shè)計(jì)中的感悟?qū)τ诙〞r(shí)器的初始化,具體來說主要要進(jìn)行以下幾個(gè)步驟:首先使能定時(shí)器的gpio端口(sysctlperienable),然后配置定時(shí)器
28、功能(timerconfigure),再然后是設(shè)置定時(shí)器的預(yù)分頻值(timerprescaleset),再次是設(shè)置定時(shí)器的裝載值(timerloadset),再是使能定時(shí)器捕獲匹配中斷(timerintenable),隨后是使能定時(shí)器中斷(intenable),再次是使能處理器中斷(intmasterenable),最后便是使能定時(shí)器(timerenable)。具體的函數(shù)使用方式和程序編寫方式可以參見附錄一程序清單中的main.c部分。4.3總設(shè)計(jì)流程圖4.3簡易電子琴總流程圖5調(diào)試5.1音調(diào)調(diào)試打開“音樂播放化蝶”的程序,燒入開發(fā)板中,連接好音樂蜂鳴器模塊,測試。調(diào)節(jié)模塊上音量旋鈕可調(diào)節(jié)音樂
29、聲音大小。燒入矩陣鍵盤控制音頻程序,剛開始矩陣鍵盤不按鍵時(shí)存在底音,之后調(diào)節(jié)模塊上的電位器,可消除底音。5.2按鍵控制音樂停止調(diào)試問題:播放一段音樂一定要播放完畢才能跳出。不同文件中的程序無法調(diào)用。解決方法:將關(guān)于停止按鍵的任何定義程序都放入音樂播放文件中。音樂播放文件是通過掃描數(shù)組播放音樂的,在每次掃描數(shù)組前加入停止按鍵的掃描即可。5.3 led顯示音頻效果調(diào)試不同的頻率顯示不懂的燈數(shù),制造音頻效果,8個(gè)led燈顯示16個(gè)音頻(在彈琴模塊中將兩個(gè)音頻分為一組,我們采用按鍵控制燈數(shù),16個(gè)鍵,每兩個(gè)鍵控制一個(gè)燈)。當(dāng)播放音樂的時(shí)候,在每個(gè)音樂子程序中,監(jiān)測音頻控制燈的亮度。從而達(dá)到led燈隨音
30、樂跳動(dòng)的效果。6結(jié)束語通過這個(gè)月的arm課程設(shè)計(jì),我學(xué)到了不少課本上沒有的知識(shí),也鍛煉了自己的動(dòng)手能力,將以前學(xué)過的零散的知識(shí)串到一起。首先在課程設(shè)計(jì)剛開始的調(diào)研階段,我學(xué)會(huì)了怎么通過各種方式查詢相關(guān)的資料。通過對這些資料的學(xué)習(xí),我大致了解了arm的發(fā)展現(xiàn)狀以及未來的發(fā)展趨勢,認(rèn)識(shí)到目前arm方面的各種各樣的發(fā)展,和它們之間的競爭。了解了arm方面的先進(jìn)技術(shù),這些都為我的未來的學(xué)習(xí)指明了方向。我的課程設(shè)計(jì)主要涉及硬件和軟件兩方面的內(nèi)容,通過這些我的硬件和軟件開發(fā)能力都獲得了提高。首先硬件方面,基本了解了電子產(chǎn)品的開發(fā)流程和所要做的工作。通過開發(fā)板的設(shè)計(jì)和硬件搭建的過程,使我arm2110實(shí)驗(yàn)板
31、的接口有了更深層次的理解,熟悉了一些arm常用的外圍電路引腳和連接方法,如led數(shù)碼管,鍵盤等。在軟件方面,通過調(diào)試工具的開發(fā),使我加深了對累封裝的理解,熟悉了arm2110內(nèi)部的寄存器和編程規(guī)則,以及如何控制外圍電路。 最后,感謝上海師范大學(xué)天華學(xué)院徐振老師、王永明老師、陶亞雄老師的精心指導(dǎo),使我能夠完成這次課程設(shè)計(jì)。7參考文獻(xiàn)1 周立功.arm嵌入式系統(tǒng)基礎(chǔ)教程(第2版)m.北京:北京航空航天大學(xué)出版社, 20082 姚文詳.arm cortex-m3權(quán)威指南m.北京:北京航空航天大學(xué)出版社,20093 陳明熒.8051單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)教材m.北京:清華大學(xué)出版社,20084 魏洪興,周
32、亦敏.嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)實(shí)驗(yàn)教材iim.北京:清華大學(xué)出版社,20075 江力.單片機(jī)原理與應(yīng)用技術(shù)m.北京:清華大學(xué)出版社,20076 張義和,王敏男,許宏昌等.例說51單片機(jī)(c語言版)m北京:人民郵電出版社, 20087 luminary micro公司.lm3s1138微控制器數(shù)據(jù)手冊m.2008/20108 王福瑞等.單片微機(jī)測控系統(tǒng)設(shè)計(jì)大全m.北京:北京航空航天大學(xué)出版社,20079 趙星寒.從51到arm:32位嵌入式系統(tǒng)入門m.北京:北京航空航天大學(xué)出版社,200810 彭偉等.單片機(jī)典型系統(tǒng)設(shè)計(jì)實(shí)例精講m.北京:清華大學(xué)出版社,200911 百度百科lcd1602 12
33、論文基于arm2110的多功能可視化電子琴設(shè)計(jì) 孔佳(作)13論文單片機(jī)16音階電子琴 周彪平(作)附錄一 lm3s2110原理電路圖附錄二 程序清單1buzzer.c程序清單#include buzzer.h#include #include #include #include #include #define part_lm3s2110#include #define sysctlperienable sysctlperipheralenable#define gpiopintypeout gpiopintypegpiooutput/ 聲明全局的系統(tǒng)時(shí)鐘變量extern unsigned
34、long thesysclock;/ 蜂鳴器初始化void buzzerinit(void) sysctlperienable(sysctl_periph_timer1); / 使能timer1模塊 sysctlperienable(ccp2_periph); / 使能ccp3所在的gpio端口 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ā)出指
35、定頻率的聲音/ usfreq是發(fā)聲頻率,取值 (系統(tǒng)時(shí)鐘/65536)+1 20000,單位:hzvoid buzzersound(unsigned short usfreq) unsigned long ulval; if (usfreq 20000) buzzerquiet(); else gpiopintypetimer(ccp2_port, ccp2_pin); / 設(shè)置相關(guān)管腳為timer功能 ulval = thesysclock / usfreq; timerloadset(timer1_base, timer_a, ulval); / 設(shè)置timerb初值 timermatch
36、set(timer1_base, timer_a, ulval / 2); / 設(shè)置timerb匹配值 timerenable(timer1_base, timer_a); / 使能timerb計(jì)數(shù) / 蜂鳴器停止發(fā)聲void buzzerquiet(void)timerdisable(timer1_base, timer_a); / 禁止timerb計(jì)數(shù) gpiopintypeout(ccp2_port, ccp2_pin); / 配置ccp3管腳為gpio輸出 gpiopinwrite(ccp2_port, ccp2_pin,0x00); / 使ccp3管腳輸出低電平2 music.c程序
37、#include music.h#include buzzer.h#include systeminit.h#define key_periph1 sysctl_periph_gpioh#define key_port1 gpio_porth_base#define key_pin1 gpio_pin_1/ 定義led#define led1_periph sysctl_periph_gpioa#define led1_port gpio_porta_base#define led1_pin gpio_pin_4#define led2_periph sysctl_periph_gpioa#d
38、efine led2_port gpio_porta_base#define led2_pin gpio_pin_5#define led3_periph sysctl_periph_gpioa#define led3_port gpio_porta_base#define led3_pin gpio_pin_6#define led4_periph sysctl_periph_gpiog#define led4_port gpio_portg_base#define led4_pin gpio_pin_0#define led5_periph sysctl_periph_gpiof#defi
39、ne led5_port gpio_portf_base#define led5_pin gpio_pin_2#define led6_periph sysctl_periph_gpiog#define led6_port gpio_portg_base#define led6_pin gpio_pin_1#define led7_periph sysctl_periph_gpioe#define led7_port gpio_porte_base#define led7_pin gpio_pin_0#define led8_periph sysctl_periph_gpioe#define
40、led8_port gpio_porte_base#define led8_pin gpio_pin_1const tnote myscore = l5, t/10, l6, 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 tno
41、te myscore2 =m5,t/8,0,0;const tnote myscore3 =m5,t/16,0,0;void musicplay(int i) buzzersound(myscorei.mname); sysctldelay(myscorei.mtime * (thesysclock / 3000); sysctldelay(10 * (thesysclock / 3000);void musicplayy(void) sysctlperienable(key_periph1); / 使能key所在的gpio端口 gpiopintypein(key_port1, key_pin
42、1); / 設(shè)置key所在管腳為輸入 short i = 0; for (;) if ( gpiopinread(key_port1, key_pin1) = 0x00) / 如果按下key1 break; else if (myscore1i.mtime = 0) break; else if(myscore2i.mname = m1) / 點(diǎn)亮1個(gè)led gpiopinwrite(led1_port, led1_pin, 0x00); gpiopinwrite(led2_port, led2_pin, 0xff); gpiopinwrite(led3_port, led3_pin, 0xf
43、f); 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, 0xff); / 點(diǎn)亮7個(gè)led gpiopinwrite(led1_port, led1_pin, 0x00); / 點(diǎn)亮led gpiopinwrite(led2_port, led2_pin
44、, 0x00); / 點(diǎn)亮led gpiopinwrite(led3_port, led3_pin, 0x00); / 點(diǎn)亮led gpiopinwrite(led4_port, led4_pin, 0x00); / 點(diǎn)亮led gpiopinwrite(led5_port, led5_pin, 0x00); / 點(diǎn)亮led gpiopinwrite(led6_port, led6_pin, 0x00); / 點(diǎn)亮led gpiopinwrite(led7_port, led7_pin, 0x00); / 點(diǎn)亮led gpiopinwrite(led8_port, led8_pin, 0xff
45、); / 熄滅led buzzersound(myscore1i.mname); sysctldelay(myscore1i.mtime * (thesysclock / 3000); i+; buzzerquiet(); sysctldelay(10 * (thesysclock / 3000); 3 systeminit.c程序#include systeminit.h/ 定義全局的系統(tǒng)時(shí)鐘變量unsigned long thesysclock = 12000000ul;/ 系統(tǒng)時(shí)鐘初始化void clockinit(void) sysctlldoset(sysctl_ldo_2_50v)
46、; / 設(shè)置ldo輸出電壓 sysctlclockset(sysctl_use_osc | / 系統(tǒng)時(shí)鐘設(shè)置 sysctl_osc_main | / 采用主振蕩器 sysctl_xtal_6mhz | / 外接6mhz晶振 sysctl_sysdiv_1); / 不分頻 thesysclock = sysctlclockget(); / 獲取當(dāng)前的系統(tǒng)時(shí)鐘頻率4主程序清單#include systeminit.h#include buzzer.h#include music.h#include systeminit.h#define lcden gpio_pin_0 /pb0;#define
47、lcdrs gpio_pin_2 /pb2;/ 定義led#define led1_periph sysctl_periph_gpioa#define led1_port gpio_porta_base#define led1_pin gpio_pin_4#define led2_periph sysctl_periph_gpioa#define led2_port gpio_porta_base#define led2_pin gpio_pin_5#define led3_periph sysctl_periph_gpioa#define led3_port gpio_porta_base#
48、define led3_pin gpio_pin_6#define led4_periph sysctl_periph_gpiog#define led4_port gpio_portg_base#define led4_pin gpio_pin_0#define led5_periph sysctl_periph_gpiof#define led5_port gpio_portf_base#define led5_pin gpio_pin_2#define led6_periph sysctl_periph_gpiog#define led6_port gpio_portg_base#define led6_pin gpio_pin_1#define led7_periph sysctl_periph_gpioe#define led7_port gpio_porte_base#define led7_pin gpio_pin_0#define led8_periph sysctl_periph_gpioe#define led8_port gpio_porte_base#define led8_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025銀行從業(yè)資格考試知識(shí)理解深度研究試題及答案
- 精確解析畜牧師職稱考試試題及答案
- 銀行金融法規(guī)與合規(guī)試題及答案2025年分析
- 2024年網(wǎng)絡(luò)編輯師考試中必須掌握的試題及答案
- 銀行財(cái)務(wù)報(bào)表分析技巧試題及答案
- 吉林省四平市鐵西區(qū)2023-2024學(xué)年六年級下學(xué)期語文期末考試試卷(含答案)
- 知識(shí)點(diǎn)回歸2025年國際金融理財(cái)師試題及答案
- 財(cái)務(wù)比率國際金融理財(cái)師試題及答案
- 提升競爭力的網(wǎng)絡(luò)編輯師考試試題與答案
- 網(wǎng)絡(luò)編輯師考試基本素養(yǎng)提升試題及答案
- FZ/T 54098-2017聚乳酸牽伸絲
- Oracle-EBS生產(chǎn)制造解決方案
- 植物生理學(xué)第十三章植物的逆境生理課件
- 宮頸癌護(hù)理查房
- 施工單位人員退場制度
- 漢譯巴利三藏相應(yīng)部3-蘊(yùn)篇
- 建筑外窗抗風(fēng)壓性能計(jì)算書
- 年產(chǎn)萬噸酒精發(fā)酵車間設(shè)計(jì)
- 生物化學(xué)與分子生物學(xué)人衛(wèi)版教材全集
- 照片里的故事
- 土木工程畢業(yè)設(shè)計(jì)框架結(jié)構(gòu)教學(xué)樓計(jì)算書
評論
0/150
提交評論