基于單片機的電子琴制作課程設計_第1頁
已閱讀1頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  基于單片機的電子琴制作課程設計</p><p><b>  設計指標</b></p><p>  設計一個(4×4)的鍵盤,并將16個鍵設計成16個音;</p><p>  可彈奏想要表達的音樂;</p><p>  該電子琴包含1首示例音樂,接通電源可播放示例音樂。</p>

2、<p>  設計所用實驗儀器和設備:單片機芯片、晶體振蕩器一個、電容電阻若干</p><p><b>  獨立開關十六個。</b></p><p>  設計原理  樂音實際上是有固定周期的信號。我用AT89C51的一個定時器(如T1)控制,在P3.4腳上輸出方波周期信號,產(chǎn)生樂音。根據(jù)不同的按鍵,調節(jié)T1的溢出時間,可輸出不同頻率的樂音,這樣就做出了一臺

3、微型電子琴。其中根據(jù)行列式非編碼鍵盤工作原理設計一個(4*4)的鍵盤,當按鍵按下經(jīng)過軟件的掃描電路進行掃描掃到對應的按鍵根據(jù)對應的負值將頻率所對應的負值放進對應寄存器警醒單片機p3.4引腳的頻率控制輸出,從而使不同按鍵按下中斷得到不同頻率的音樂?! ∶總€樂音的音高(頻率)是固定的,表1列出了一個8度以及其上下共16個音的音名、頻率及定時器T1初值對照(設晶體頻率為6MHz)。</p><p>  四、輸出音節(jié)與

4、單片機定時器輸出頻率關系表格如下:</p><p>  2硬件電路設計  微型電子琴的電原理圖見圖1,其中鍵盤可使用小按鍵,排成鋼琴鍵盤狀(鍵多時可分為幾排),圖中還增加了一只按鍵指示燈(D1)。</p><p><b>  圖1</b></p><p>  3軟件設計  軟件由初始化程序、主程序、定時器1中斷服務程序、鍵盤掃描程序和延時程

5、序組成。   (1)初始化程序如下: </p><p>  TMR1L EQU 30H</p><p>  TMR1H EQU 31H</p><p><b>  ORG 0000H</b></p><p>  SJMP MAIN</p><p>  ORG

6、001BH</p><p>  AJMP TMR1</p><p>  ORG 0040H</p><p>  MAIN: MOV TMOD,#10H ;T1方式1,軟件CONTROL</p><p><b>  BEGIN:</b></p><p>  MOV TCON,#00H

7、 ;關閉T1</p><p>  MOV IE,#88H ;開T1中斷</p><p>  MOV IP,#08H ;T1優(yōu)先</p><p>  CLR P3.1 ;關揚聲器</p><p>  CLR P3.2 ;點亮燈</p><p>  ACA

8、LL DELAY ;延時</p><p><b>  主程序框圖</b></p><p><b>  主程序 </b></p><p>  MAIN PROGRAM</p><p>  START:ACALL DELAY ;延時</p><p>  A

9、CALL KEYSCA ;調用鍵盤掃描子程序</p><p>  CJNE R4,#00H,PLAYKEY ;判斷有無按鍵按下</p><p>  CLR TR1 ;沒有鍵按下關閉T1</p><p>  SETB P3.2 ;無鍵按下熄滅指示燈</p><p>  SJMPSTART  ;

10、跳回開始位置PLAYKEY:CJNE R4,#20H,K0;有鍵按下由鍵值給TIMER1L和TIMER1H賦值 </p><p>  MOV TMR1L,#06H ;低音7初值</p><p>  MOV TMR1H,#0FEH</p><p>  AJMP SOUND </p><p>  SOUND: SETB TR1

11、 ;開啟T1</p><p>  CLR P3.2 ;點亮指示燈</p><p>  AJMP START ;跳回開始</p><p>  K0: CJNE R4,#30H,K1  </p><p>  MOV TMR1L,#22H ;中音1初值</p><p>  MOV

12、 TMR1H,#0FEH</p><p>  AJMP SOUND</p><p>  K1: CJNE R4,#50H,K2  </p><p>  MOV TMR1L,#3DH ;中音1初值</p><p>  MOV TMR1H,#0FEH</p><p>  AJMP SOUND&

13、lt;/p><p>  K2: CJNE R4,#90H,K3  </p><p>  MOV TMR1L,#56H ;中音2初值</p><p>  MOV TMR1H,#0FEH</p><p>  AJMP SOUND</p><p>  K3: CJNE R4,#21H,K4

14、0; </p><p>  MOV TMR1L,#6EH ;中音2初值</p><p>  MOV TMR1H,#0FEH</p><p>  AJMP SOUND</p><p>  K4: CJNE R4,#31H,K5  </p><p>  MOV TMR1L,#85H ;中音3

15、初值</p><p>  MOV TMR1H,#0FEH</p><p>  AJMP SOUND</p><p>  K5: CJNE R4,#51H,K6  </p><p>  MOV TMR1L,#9AH ;中音1初值</p><p>  MOV TMR1H,#0FEH</p&

16、gt;<p>  AJMP SOUND</p><p>  K6: CJNE R4,#91H,K7  </p><p>  MOV TMR1L,#0AEH ;中音4初值</p><p>  MOV TMR1H,#0FEH</p><p>  AJMP SOUND</p><p>

17、;  K7: CJNE R4,#23H,K8 </p><p>  MOV TMR1L,#0C1H ;中音5初值</p><p>  MOV TMR1H,#0FEH</p><p>  AJMP SOUND</p><p>  K8: CJNE R4,#33H,K9</p><p>  MOV

18、TMR1L,#0D3H ;中音#5初值</p><p>  MOV TMR1H,#0FEH</p><p>  AJMP SOUND</p><p>  K9: CJNE R4,#53H,K10  </p><p>  MOV TMR1L,#0E4H ;中音6初值</p><p>  MO

19、V TMR1H,#0FEH</p><p>  AJMP SOUND</p><p>  K10: CJNE R4,#93H,K11  </p><p>  MOV TMR1L,#0F4H ;中音#6初值</p><p>  MOV TMR1H,#0FEH</p><p>  AJMP S

20、OUND</p><p>  K11: CJNE R4,#27H,K12 </p><p>  MOV TMR1L,#03H ;中音7初值</p><p>  MOV TMR1H,#0FEH</p><p>  AJMP SOUND</p><p>  K12: CJNE R4,#37H,K13&

21、#160; </p><p>  MOV TMR1L,#11H ;高音1初值</p><p>  MOV TMR1H,#0FFH</p><p>  AJMP SOUND</p><p>  K13: CJNE R4,#57H,K114  </p><p>  MOV TMR1L,#1FH

22、 ;高音2初值</p><p>  MOV TMR1H,#0FFH</p><p>  AJMP SOUND</p><p>  K14: CJNE R4,#97H,K15  </p><p>  MOV TMR1L,#02BH ;高音2初值</p><p>  MOV TMR1H,#0F

23、FH</p><p>  AJMP SOUND</p><p>  K15: NOP</p><p>  (3)定時器中斷服務程序框圖</p><p>  定時器中斷服務程序:</p><p>  ;TIMER1 INTERRUPTION SERVICE</p><p>  TMR1:MO

24、V TL1,TMR1L ;將初值給T1</p><p>  MOV TH1,TMR1H </p><p><b>  CPL P3.4</b></p><p><b>  RETI</b></p><p>  (4) 鍵盤掃描程序框圖</p><p><b&g

25、t;  鍵盤掃描程序:</b></p><p> ??;KEY BOARD SCAN</p><p>  KEYSCA: MOV R4,#00H ;初值(無按鍵)賦給R4</p><p>  MOV P1,#0F0H ;全鍵盤掃描</p><p>  MOV A ,P1 ;讀取掃描結果</p><

26、p>  ANL,A,#0F0H ;屏蔽行信號,取出列信號</p><p>  CJNE A,#0F0H,PRSD1 ;判斷有無按鍵</p><p>  SJMP DONE ;無按鍵退出</p><p>  PRSD1: ACALL DELAY ;有按鍵延時后再掃描</p><p>  MOV A,P1 ;讀取掃描結果&

27、lt;/p><p>  ANL A,#0F0H ;屏蔽行信號,取出列信號</p><p>  CJNE A,#0F0H,PRSD2 ;判斷有無按鍵</p><p>  SJMP DONE </p><p>  PRSD2: MOV R2,#04H ;有按鍵逐行掃描</p><p>  MOV R3,

28、#01H ;行初值</p><p>  SCAN :MOV A ,R3 ;行初值送入A </p><p>  CPL A ;形成行掃描信號</p><p>  MOV P1,A ;輸出行掃描信號</p><p>  MOV A,P1 ;讀取掃描結果</p><p>  ANL A,#0F0H

29、 ;屏蔽行信號,讀取列信號</p><p>  CJNE A,#0F0H,FIND ;判斷有無按鍵</p><p>  MOV A,R3 ;無按鍵繼續(xù)掃描,調整行信號</p><p>  RL A ;調整行信號</p><p>  MOV R3,A ;保存行信號</

30、p><p>  DJNZ R2,SCAN ;判斷是否掃描玩4行</p><p>  SJMP DONE ;掃描四行結束</p><p>  FIND: CPL A ;找到按鍵計算鍵值</p><p>  ADD A,R3 ;將行列值相加</p><p>

31、;  MOV R4,A ;鍵值R4</p><p>  DONE:RET ; 返回</p><p><b>  ; DELAY</b></p><p>  DELAY: MOV R5,#20H ;延時</p><p>  BB: MOV R6,#0FFH</p&g

32、t;<p>  AA: DJNZ R6,AA</p><p>  DJNZ R5,BB </p><p><b>  RET</b></p><p>  TABLE1:     DW FE06H,FE22H,FE56H,FE9AH</p><p>  DW F

33、E56H, FED3H,FEAEH,FE6E</p><p>  DW FED3H,FE9AH,FFF4H,FF03H</p><p>  DW FF2BH ,FF1FH,FEAEH,FECEH</p><p><b>  END</b></p><p><b>  總結:</b></p>

34、;<p>  這次設計雖然說在總體上并不是很難,但是我們兩個人的能力畢竟還是有限有很多的地方還是沒有弄得很明白,在進行程序設計的過程中還是參考了很多資料和課本上的知識。這次設計歷經(jīng)將近一個月,我們從中學到了很多東西知道了只有通過自己親手做一些東西才能使自己真正的得到和領悟到知識的精華。</p><p>  下面我就對我的軟件設計和硬件設計中遇到的一些問題做一些總結:首先軟件,對于我們兩人來說對軟件的

35、學習是初學者在開始的設計中借用了其它書上和參考資料上的些程序模塊我們對其中的一些指令和參數(shù)作了一部分的修改我們把這個程序大概分為三部分,第一、是主程序的設計,這一部分相對需要總括整個程序對各個子程序需要很熟悉并且進行調用。第二,是對程序掃描軟件程序部分的設計,因為這些程序在課本有很多學習經(jīng)過對書本的研究還是沒有用多少力氣就編寫出來了,可是我們對鍵盤進行行掃描還是列掃描進行了討論結果我們還是比較保守的選擇了列掃描方式進行鍵盤掃描。第三、是

36、對定時程序的設計這一部分也是比較簡單這里就不贅述,我要強調的是對定時器的功能設置上我們還是需要參考書本對位設置我們無法記住每一位是什么。關于第二大項的硬件方面我是用protues進行的電路仿真,做的過程中也并不是很順利,畢竟是第一次用這樣一個軟件在做的過程中有很多地方不明白需要翻書,查資料什么的。因此造成這一部分進度很慢不過還好在我們兩個人的共同努力下終于解決了這個問題。雖然我們做的仿真并不是很完美但是還是花費了我們一定的心血,看著自己

溫馨提示

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

評論

0/150

提交評論