通信工程專業(yè)課程設(shè)計(jì)--基于sep3203的電子琴模型_第1頁
已閱讀1頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  1、需求分析

2、

3、 </p><p><b>  1.1基本功能</b></p><p>  想法來源:例如電子琴之類的鍵盤樂器。早期電子琴的原理是:檢測鍵盤上的按鍵是否按下,若按下,則相應(yīng)的蜂鳴器發(fā)出聲音。這樣,每個(gè)電子琴需要的蜂鳴器就很多。但是

4、,這樣做很浪費(fèi)資源。所以,可以采用另一種方法,只用一個(gè)發(fā)聲設(shè)備,每個(gè)按鈕按下,對(duì)應(yīng)加入一個(gè)相應(yīng)的分量,將最終的波形輸出來。 </p><p>  實(shí)際功能描述:按不同的按鍵,發(fā)出不同的聲音。按下按鈕之后,發(fā)出中斷請(qǐng)求信號(hào),CPU響應(yīng)中斷時(shí),先檢測按下的是哪一個(gè)按鈕,然后控制發(fā)出相應(yīng)PWM波,輸出到蜂鳴器上,發(fā)出相應(yīng)的聲音。最后,CPU繼續(xù)循環(huán)執(zhí)行主程序,等候下一個(gè)中斷請(qǐng)求的到來。</p><p

5、><b>  1.2附加功能</b></p><p>  想法來源:調(diào)試過程中,需要查看按鍵的狀態(tài),需要查看是否正確檢測到了按鍵,是否能夠給出正確的鍵碼,所以增加了這一功能。</p><p>  功能描述:利用LED數(shù)碼管,顯示按下的按鍵。</p><p><b>  2、總體設(shè)計(jì)</b></p>&l

6、t;p>  2.1基本功能使用的模塊</p><p>  第一部分包括兩個(gè)主要軟件模塊和兩個(gè)外圍的硬件模塊:</p><p>  2.2加入附加功能之后的模塊組成</p><p>  加入第二部分后的框圖如下:</p><p>  增加了一個(gè)新的程序模塊和硬件模塊。</p><p>  程序運(yùn)行的流程如下:<

7、;/p><p>  第二部分是對(duì)第一部分的完善和改進(jìn),但是在程序執(zhí)行的流程中,僅僅在處理鍵碼信息步驟,增加了“根據(jù)鍵碼控制點(diǎn)亮數(shù)碼管”這一部分。</p><p><b>  3、可行性分析</b></p><p>  該系統(tǒng)包含了輸入、處理、輸出三個(gè)部分。其中,輸入即為按鍵,使用矩陣鍵盤完成,實(shí)際的電子琴鍵盤含有更多的按鍵,但由于這僅僅是模型,所以

8、,不需要使用那么多的按鍵。處理部分是基于SEP3203的程序,通過輸入的按鍵信息,修改寄存器的相應(yīng)位,使得最終能夠輸出相應(yīng)的PWM波,控制蜂鳴器響。此外,還可以根據(jù)輸入的按鍵信息,將輸入的按鍵值顯示在LED七段數(shù)碼管上。輸出即為蜂鳴器和LED數(shù)碼管,硬件電路已經(jīng)在實(shí)驗(yàn)箱上連接好。</p><p>  4、詳細(xì)設(shè)計(jì)與分工日志</p><p><b>  4.1輸入:</b&g

9、t;</p><p>  4.1.1 器件原理</p><p>  采用矩陣鍵盤,矩陣鍵盤有兩種驅(qū)動(dòng)方式:一種是行掃描法,另一種是高低電平翻轉(zhuǎn)法。這里采用了行掃描法。包括兩個(gè)步驟:</p><p>  判斷鍵盤中有無鍵按下:將全部行線Y0-Y3置低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個(gè)按

10、鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。</p><p>  判斷閉合鍵所在的位置:在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時(shí),其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。</p><p>  4.1.2 相關(guān)代碼</p

11、><p><b>  鍵盤中斷的調(diào)用:</b></p><p><b>  尋找被按下的按鍵:</b></p><p><b>  4.2發(fā)聲器件</b></p><p>  4.2.1 PWM波輸出原理</p><p>  發(fā)聲器件即為蜂鳴器,通過控制輸出

12、的PWM波的波形來控制發(fā)出的聲音。PWM波包括兩個(gè)參數(shù):頻率和占空比??刂祁l率,可以控制發(fā)出聲音的頻率;控制占空比,可以控制聲音的響度。</p><p>  在所用開發(fā)板GE01中,PWM 模塊中包含了2 個(gè)PWM 通道,彼此相互獨(dú)立。</p><p><b>  相關(guān)寄存器: </b></p><p>  4.2.2控制寄存器(PWMC):&

13、lt;/p><p><b>  高16位為保留位</b></p><p>  bit15——中斷請(qǐng)求狀態(tài)(0 = FIFO 滿、1 = FIFO 不滿)</p><p>  bit14——中斷請(qǐng)求使能 (0 = 不使能(缺?。? = PWM 中斷使能)</p><p>  bit 13——FIFO 有效狀態(tài)(0 = FIF

14、O 滿、1 = FIFO 不滿)</p><p>  bit 12 —— PWM 使能 (0 = PWM 不使能、1 = PWM 使能)</p><p>  bit 11-10 ——選擇playback 模式下采樣被重放的次數(shù)(00 = 沒重復(fù),01 = 播放兩次、10 = 重復(fù)3 次(播放4次)、11 = 重復(fù)7 次(播放8次))</p><p>  bit 9-

15、0 (PRESCALER)——用來提供分頻因子的(prescaler+1),對(duì)系統(tǒng)時(shí)鐘進(jìn)行分頻。缺省值是0。1 = 2 分頻、2 = 4 分頻…</p><p>  4.2.3采樣寄存器(PWMS): </p><p><b>  高16位為保留位</b></p><p>  Bit 15-0 ——PWMS 采樣值 PWM 采樣寄存器是FIF

16、O 的輸入。此值和一個(gè)自由計(jì)數(shù)的計(jì)數(shù)器比較。當(dāng)大于計(jì)數(shù)器值時(shí)PWM 輸出為高,反之輸出為低。</p><p>  4.2.4周期寄存器(PWMP):</p><p><b>  高16位為保留位</b></p><p>  bit15-0—— Period 值/定時(shí)值 在tone 模式時(shí),其用于設(shè)置計(jì)數(shù)器的復(fù)位值。計(jì)數(shù)器計(jì)數(shù)到此值就復(fù)位一次,P

17、WM 輸出也相應(yīng)翻轉(zhuǎn)一次。</p><p>  4.2.5計(jì)數(shù)器寄存器(PWMCNT):</p><p><b>  高16位為保留位</b></p><p>  bit15-0 ——當(dāng)前的計(jì)數(shù)值 它保存著自由計(jì)數(shù)的計(jì)數(shù)器的當(dāng)前值。</p><p>  依據(jù)上述寄存器各位的功能,通過合適的賦值便可以實(shí)現(xiàn)本實(shí)驗(yàn)所要求的基本

18、功能。</p><p>  4.2.6相關(guān)代碼:</p><p><b>  主函數(shù):</b></p><p>  STATUS模塊初始化</p><p><b>  4.3 LED顯示</b></p><p>  4.3.1 動(dòng)態(tài)顯示原理</p><p&

19、gt;  圖 十二動(dòng)態(tài)顯示LED的連接</p><p>  由圖,六個(gè)數(shù)碼管每個(gè)都有一個(gè)選擇信號(hào),當(dāng)置“1”時(shí),該數(shù)碼管的相關(guān)段亮。對(duì)于此動(dòng)態(tài)顯示電路,有六個(gè)數(shù)碼管,使用的頻率由定時(shí)器產(chǎn)生,為500Hz,即周期為2ms。此外,將每個(gè)數(shù)碼管相同的段連在一起到段數(shù)據(jù)線上。在第一個(gè)2ms,第一個(gè)數(shù)碼管允許點(diǎn)亮,同時(shí),需要點(diǎn)亮的段置“1”,在這2ms內(nèi),只有第一個(gè)數(shù)碼管亮。在第二個(gè)2ms,第二個(gè)數(shù)碼管允許點(diǎn)亮,同時(shí),需要

20、點(diǎn)亮的段置“1”,在這2ms內(nèi),只有第二個(gè)數(shù)碼管亮……如此,每個(gè)2ms只有一個(gè)數(shù)碼管亮,所以,不會(huì)相互影響,導(dǎo)致顯示不清。而且,由于每個(gè)數(shù)碼管刷新的周期非常小,本實(shí)驗(yàn)中為12ms,小于人眼的分辨時(shí)間。所以,看起來,好像同時(shí)亮了。</p><p>  4.3.2 定時(shí)器輸出</p><p>  如圖,定時(shí)器用到的IO端口位置如下:</p><p>  TIMER 是片

21、內(nèi)集成的 32bit 定時(shí)器,該模塊共包括4個(gè)通道,每個(gè)通道包括一個(gè) 32 位計(jì)數(shù)器,以及一個(gè)加載計(jì)數(shù)寄存器。計(jì)數(shù)器的重新加載、計(jì)數(shù)使能以及中斷的產(chǎn)生受到控制寄存器的各個(gè)控制位的控制。定時(shí)器的工作原理是:首先要設(shè)定定時(shí)器的初值,然后啟動(dòng)定時(shí)器。一旦啟動(dòng),定時(shí)器就從初值開始累計(jì)增加或減?。ㄔ趯?shí)驗(yàn)所用的芯片中是遞減)。每增加或減小一個(gè)數(shù)需要特定的時(shí)間,這個(gè)特定的時(shí)間是累加指令的機(jī)器周期,是由處理器的晶振的頻率(本實(shí)驗(yàn)中晶振的頻率是75MHz

22、)決定的。計(jì)數(shù)值從初值計(jì)至 0 時(shí),TIMER 模塊發(fā)出中斷,然后計(jì)數(shù)器跳至用戶配置的值,重復(fù)遞增或遞減過程。在中斷寄存器允許的情況下處理器響應(yīng)中斷,通過中斷服務(wù)程序執(zhí)行特定的任務(wù)。</p><p>  TIMER中的一個(gè)通道的功能結(jié)構(gòu)如下圖:</p><p>  TIMER 有兩種工作模式: </p><p><b>  正常工作模式 </b>

23、;</p><p>  TIMER 在正常工作模式時(shí),當(dāng)通道使能后計(jì)數(shù)器鎖存加載計(jì)數(shù)寄存器的值,然后在系統(tǒng)時(shí)鐘的驅(qū)動(dòng)下遞減計(jì)數(shù)。當(dāng)計(jì)數(shù)到零時(shí),產(chǎn)生一個(gè)計(jì)數(shù)到零的標(biāo)志用于設(shè)置相應(yīng)的中斷標(biāo)志位,若中斷未被屏蔽則產(chǎn)生中斷;同時(shí),計(jì)數(shù)器重新鎖存加載計(jì)數(shù)寄存器的值開始一個(gè)新的計(jì)數(shù)周期。 </p><p><b>  自由工作模式 </b></p><p>

24、;  TIMER 在自由工作模式時(shí),當(dāng)通道使能后計(jì)數(shù)器鎖存加載計(jì)數(shù)寄存器的值,然后在系統(tǒng)時(shí)鐘的驅(qū)動(dòng)下遞減計(jì)數(shù)。當(dāng)計(jì)數(shù)到零時(shí),產(chǎn)生一個(gè)計(jì)數(shù)到零的標(biāo)志用于設(shè)置相應(yīng)的中斷標(biāo)志位,若中斷未被屏蔽則產(chǎn)生中斷;同時(shí),計(jì)數(shù)器加載數(shù)據(jù) 32’H FFFFFFFF 開始一個(gè)新的計(jì)數(shù)周期。</p><p>  TIMER 中四個(gè)通道的中斷都可以通過各自的控制寄存器屏蔽。任意一個(gè)通道計(jì)數(shù)完畢都會(huì)產(chǎn)生一個(gè)中斷。TIMER 的中斷輸出是四

25、個(gè)中斷源的線或。 </p><p>  查詢中斷源有兩種方法:</p><p> ?。ㄒ唬┎樵兏鱾€(gè)通道的中斷屏蔽狀態(tài)寄存器是否被置 1;</p><p>  (二)查詢 TIMER中斷屏蔽狀態(tài)寄存器,看各個(gè)通道相應(yīng)位是否被置 1。 </p><p>  清除中斷的方法也有兩種:</p><p> ?。ㄒ唬┳x各個(gè)通道的中

26、斷狀態(tài)清除寄存器,相應(yīng)通道的中斷會(huì)被清除;</p><p> ?。ǘ┳x TIMER 中斷狀態(tài)清除寄存器,所有通道的中斷都會(huì)被清除。 </p><p>  查詢到中斷源后,如果不重新配置加載計(jì)數(shù)寄存器,計(jì)數(shù)器會(huì)按照原來的配置繼續(xù)計(jì)數(shù),直到計(jì)數(shù)完畢再發(fā)出中斷。如果要重新配置,清完中斷后應(yīng)該先將計(jì)數(shù)器關(guān)閉(disable) ,然后配置新的計(jì)數(shù)值,再將計(jì)數(shù)器打開(enable)。</p&g

27、t;<p>  4.3.3 相關(guān)寄存器</p><p>  4.3.4相關(guān)代碼:</p><p><b>  調(diào)用LED顯示:</b></p><p><b>  LED顯示模塊:</b></p><p><b>  LED顯示程序:</b></p>

28、<p><b>  翻譯碼值</b></p><p><b>  LED輸出</b></p><p>  74HC595鎖存鎖存輸出,即led顯示使能</p><p><b>  分工日志:</b></p><p>  9月20日(周二):各組員熟悉ADS界面環(huán)境,

29、練習(xí)基本操作。組長確定選題,完成需求分析,進(jìn)行總體設(shè)計(jì)并論證可行性和可完成性。</p><p>  9月22日(周四):黃哲忱和殷杰選取各模塊可供參考的代碼,并將代碼在實(shí)驗(yàn)箱上測試。學(xué)習(xí)、熟悉各段代碼的含義。將代碼的接口給出。交由毛彥和費(fèi)馳同學(xué)。</p><p>  9月26日(周一):毛彥和費(fèi)馳完成第一部分的程序和調(diào)試。調(diào)試過程中,使用了LED數(shù)碼管。</p><p&

30、gt;  9月28日(周三):將調(diào)試過程中使用的LED數(shù)碼管程序段改寫成第二部分的模塊,并完成調(diào)試。</p><p>  9月30日(周五):整體功能測試,組長慢慢寫論文。</p><p><b>  5、測試</b></p><p>  使用LED數(shù)碼管檢測從矩陣鍵盤輸入的按鍵時(shí),發(fā)現(xiàn)段碼表有問題,與實(shí)際的不對(duì)應(yīng),所以給控制哪個(gè)段點(diǎn)亮的變量依

31、次賦值為0x01、0x02、0x04、0x08、0x10、0x20、0x40、0x80。即分別點(diǎn)亮一個(gè)段,以確定每一位對(duì)應(yīng)段。</p><p>  其次在LED顯示和PWM輸出合一的時(shí)候,發(fā)現(xiàn)程序運(yùn)行出錯(cuò)。后來發(fā)現(xiàn)是調(diào)用了同一個(gè)變量,導(dǎo)致了沖突。</p><p>  最后一個(gè)問題是,解決了上面的問題后,按下7、8、9三個(gè)按鍵的時(shí)候,會(huì)死機(jī)。后來發(fā)現(xiàn)是顯示的短碼表有問題。</p>

32、<p><b>  6、結(jié)論</b></p><p>  最后,能夠?qū)崿F(xiàn)這樣一個(gè)效果:按下某個(gè)按鍵,然后在LED數(shù)碼管上顯示同一個(gè)數(shù)字,同時(shí),蜂鳴器發(fā)出一個(gè)聲音。</p><p>  我們想到了但是沒有做到的一些改進(jìn)有:數(shù)碼管上顯示現(xiàn)在按下的和之前按下的按鍵,移位顯示;使用觸摸屏,把鍵盤放在觸摸屏上;同時(shí)按下兩個(gè)按鍵的時(shí)候,通過處理,使之輸出的是兩個(gè)頻率

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論