單片機課程設計---電子琴_第1頁
已閱讀1頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設計說明書</b></p><p>  課程設計名稱 單片機原理課程設計 </p><p>  專 業(yè) 電氣工程及其自動化 </p><p>  班 級

2、 </p><p>  學 生 姓 名 </p><p>  指 導 教 師 </p><p><b>  2013年1月7日</b></p&

3、gt;<p><b>  課程設計任務書</b></p><p>  1 設計內(nèi)容:電子琴</p><p><b>  2 任務及要求:</b></p><p>  設計一個51單片機系統(tǒng),實現(xiàn)簡易電子琴操作的電路。</p><p><b>  要求:</b>&l

4、t;/p><p>  1.設計51單片機最小系統(tǒng);</p><p>  2.設置至少10個按鍵,能發(fā)出do re mi fa sol la si do;</p><p><b>  能播放示范曲; </b></p><p>  3.能夠調節(jié)低音、高音和中音。</p><p><b>  3

5、總體設計方案:</b></p><p>  1)定時/計數(shù)器的設計和狀態(tài)字定義:</p><p>  若要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2,即為半周期的時間。利用定時器計時半周期時間,每當計時終止后就將P1.0反相,然后重復計時再反相。就可在P1.0引腳上得到此頻率的脈沖。利用AT89C51的內(nèi)部定時器使其工作計數(shù)器模式(MODE1)下,改變計

6、數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階,例如,頻率為523Hz,其周期T=1/523=1912μs,因此只要令計數(shù)器計時956μs/1μs=956,每計數(shù)956次時將I/O反相,就可得到中音DO(523Hz)。計數(shù)脈沖值與頻率的關系式是:N=fi÷2÷fr,式中,N是計數(shù)值;fi是機器頻率(晶體振蕩器為12MHz時,其頻率為1MHz);fr是想要產(chǎn)生的頻率。其計數(shù)初值T的求法如下:T=65536-N=65

7、536-fi÷2÷fr</p><p>  例如:設K=65536,fi=1MHz,求中音DO(261Hz)。T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr,中音DO的T=65536-500000/523=64580。</p><p>  單片機12MHZ晶振,

8、中音符與計數(shù)T0相關的計數(shù)值如表所示:</p><p>  采用查表程序進行查表時,可以為這個音符建立一個表格,有助于單片機通過查表的方式來獲得相應的數(shù)據(jù):低音0-19之間,中音在20-39之間,高音在40-59之間,用單片機播放音樂,或者彈奏電子琴,實際上是按照特定的頻率,輸出一連串的方波。為了輸出合適的方波,首先應該知道音符與頻率的關系。</p><p>  2)音名主要分成低音、中

9、音和高音三個區(qū)域,每個區(qū)域都有12個琴鍵。其中的白鍵,簡譜音符標為1、2、3、4、5、6、7,大家一般都讀成哆、來、咪、發(fā)、嗦、拉、西。</p><p>  3)音調數(shù)據(jù)表 單片機發(fā)出不同頻率的方波,人聽起來,就是不同的音調。上表中的頻率數(shù)值,有些過多,去掉不常用的黑鍵頻率,只是把白鍵對應的數(shù)據(jù)存放在單片機中,即可滿足絕大部分的應用需求。定義音調數(shù)據(jù)表的程序如下: DW 63628,63835,64

10、021,64103,64260,64400,64524 ;64580,低音區(qū):1 2 3 4 5 6 7 DW 64580,64671,64777,64820,64898,64968,65030 65058中音區(qū):1 2 3 4 5 6 7 DW 65058,65110,65157,65178,65217,65252,65283 65312高音區(qū):1 2 3 4 5 6 7</p><p>  把這個數(shù)據(jù)表

11、,放在程序中,需要播音的時候,就從表中取出一個數(shù)據(jù)送到定時器,當定時器溢出中斷的時候,再對輸出引腳取反,那么,在揚聲器中,即可聽到上表中頻率的聲音。</p><p>  音樂的音拍,一個節(jié)拍為單位(C調)</p><p><b>  4、系統(tǒng)硬件設計:</b></p><p><b>  1)晶振部分</b></p&

12、gt;<p>  本次采用12MHZ晶振,機器周期為1us,連接兩個30pF的電容,連接到AT89C51的XATL1,XATL2 上面,連接電路圖如下:</p><p>  2)音頻輸出  本次只是簡單的使用一個蜂鳴器連接到AT89C51的p1.0口上</p><p>  3)高、中、低及音樂播放鍵:檢測高中低是否按下,來跳轉到音階鍵上輸出不同頻率的音階音,檢測播放是否按下,

13、跳轉到示范曲目播放</p><p><b>  4)AT89C51</b></p><p>  AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀

14、存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,。AT89C單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。 </p><p>  1.主要特性:·與MCS-51 兼容 

15、83;4K字節(jié)可編程閃爍存儲器 ·壽命:1000寫/擦循環(huán)·數(shù)據(jù)保留時間:10年·全靜態(tài)工作:0Hz-24Hz·三級程序存儲器鎖定·128*8位內(nèi)部RAM·32可編程I/O線·兩個16位定時器/計數(shù)器·5個中斷源 ·可編程串行通道·低功耗的閑置和掉電模式·片內(nèi)振蕩器和時鐘電路 </p><

16、;p><b>  5)音階鍵部分</b></p><p><b>  設計電路總體圖樣</b></p><p>  5、 系統(tǒng)軟件設計:</p><p><b>  1)音階鍵識別</b></p><p><b>  N</b></p>

17、<p><b>  Y</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><

18、p>  Y N</p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  N </b></p><

19、p><b>  N</b></p><p><b>  Y</b></p><p><b>  返回</b></p><p><b>  6、程序清單:</b></p><p>  KEYBUF EQU 30H </p><p&g

20、t;  STH0 EQU 31H </p><p>  STL0 EQU 32H </p><p>  DELY EQU 33H</p><p>  NUM EQU 34H </p><p><b>  ORG 0000H</b></p><p>  AJMP MAIN ;跳轉到主函數(shù)<

21、/p><p><b>  ORG 000BH</b></p><p>  LJMP INT_T0 ;音樂輸出口</p><p><b>  ORG 0040H</b></p><p>  MAIN: MOV TMOD,#01H ;寫出計時器控制字,T0方式計時</p><p>

22、  SETB EA ;開中斷總開關</p><p>  SETB ET0 ;允許T0中斷</p><p>  MOV NUM,#01H;;num置1</p><p>  MOV R1,#00H</p><p>  TEST: ;低音檢測</p><p>  ANL TH0,#00H ;高位清

23、零</p><p>  ANL TL0,#00H ;低位清零</p><p>  MOV A,P2 ;P2進入</p><p>  CJNE A,#0FEH,TEST1 ;檢測P2.0口低音鍵是否按下</p><p>  MOV DPTR,#TABLE1 ;低音鍵按下,進入低音表地址</p><p>  A

24、JMP WAIT ;跳轉到音階檢測</p><p>  TEST1: ;中音檢測</p><p>  CJNE A,#0FDH,TEST2 ;檢測P2.0中音鍵是否按下</p><p>  MOV DPTR,#TABLE2 ;中音鍵按下,進入中音表地址</p><p>  AJMP WAIT </p>

25、<p>  TEST2: ;高音檢測</p><p>  CJNE A,#0FBH,TEST3 ;檢測P2.0口高音鍵是否按下</p><p>  MOV DPTR,#TABLE3 ;高音鍵按下,進入高音表地址</p><p>  AJMP WAIT </p><p>  TEST3: ;音樂播放檢

26、測</p><p>  CJNE A,#0F7H,TEST4 ;檢測音樂播放鍵是否按下 若有按下則轉至EXIT</p><p>  LCALL DELAY10MS ;軟件延時消抖</p><p><b>  MOV A,P2</b></p><p>  CJNE A,#0F7H,TEST4 ;檢測播放鍵是否再次按

27、下</p><p><b>  MOV A,NUM</b></p><p>  CJNE A,#01H,EXIT ;檢測高低中是否再次按下</p><p>  MOV NUM,#00H</p><p>  MOV DPTR,#TABLE4 ;進入音樂播放表</p><p>  AJMP WA

28、IT1 ;跳轉至音樂播放入口</p><p>  EXIT:CLR TR0 ;計數(shù)器停止,音樂播放結束</p><p>  MOV R1,#00H ;清零</p><p>  MOV NUM,#01H</p><p>  TEST4: MOV A,NUM</p><p>  CJNE A,#01H,W

29、AIT2 </p><p>  LJMP TEST ;跳轉至TEST重新檢測</p><p>  WAIT2:LJMP WAIT1 ;跳轉至音樂播放入口</p><p>  WAIT: CLR TR0 </p><p>  MOV NUM,#01H</p><p>  SCAN1:

30、MOV P3,#0F0H;音階按鍵檢測程序入口</p><p><b>  CLR TR0</b></p><p><b>  MOV A,P3;</b></p><p>  ANL A,#0F0H</p><p>  CJNE A,#0F0H,TEE1</p><p>

31、  AJMP TEST ;跳轉至TEST重新檢測</p><p>  TEE1:LCALL DELAY10MS ;軟件延時消抖</p><p>  CJNE A,#0F0H,TEE2</p><p><b>  AJMP TEST</b></p><p>  TEE2:MOV A,#0FEH<

32、/p><p>  SCAN2:MOV P3,A</p><p><b>  MOV A,P3</b></p><p><b>  MOV B,A</b></p><p>  ANL A,#0F0H</p><p>  CJNE A,#0F0H,CARRY</p>

33、<p><b>  MOV A,B</b></p><p><b>  RL A</b></p><p>  CJNE A,#0BFH,SCAN2</p><p>  LJMP SCAN1</p><p>  CARRY: ANL B,#0FH ;鍵值處理</p>

34、<p><b>  ORL A,B</b></p><p>  CJNE A,#0EEH,KEY1 ;檢測音符鍵1是否按下</p><p>  MOV KEYBUF,#00H ;賦予鍵值</p><p>  LJMP WAI ;調至按鍵處理程序</p><p>  KEY1:CJ

35、NE A,#0EDH,KEY2 ;檢測音符鍵2是否按下</p><p>  MOV KEYBUF,#02H ;賦予鍵值 </p><p>  LJMP WAI ;調至按鍵處理程序 </p><p>  KEY2: CJNE A,#0EBH,KEY3 ;檢測音符鍵3是否按下</p><p>  MOV K

36、EYBUF,#04H ;賦予鍵值</p><p>  LJMP WAI ;調至按鍵處理程序 </p><p>  KEY3: CJNE A,#0E7H,KEY4 ;檢測音符鍵4是否按下</p><p>  MOV KEYBUF,#06H ;賦予鍵值</p><p>  LJMP WAI

37、 ;調至按鍵處理程序</p><p>  KEY4:CJNE A,#0DEH,KEY5 ;檢測音符鍵5是否按下</p><p>  MOV KEYBUF,#08H ;賦予鍵值</p><p>  LJMP WAI ;調至按鍵處理程序</p><p>  KEY5:CJNE A,#0DDH,KEY6 ;檢

38、測音符鍵5是否按下</p><p>  MOV KEYBUF,#0AH ;賦予鍵值</p><p>  LJMP WAI ;調至按鍵處理程序</p><p>  KEY6: CJNE A,#0DBH,KEY7 ;檢測音符鍵6是否按下</p><p>  MOV KEYBUF,#0CH ;賦予鍵值</p&

39、gt;<p>  LJMP WAI ;調至按鍵處理程序</p><p>  KEY7:CJNE A,#0D7H,SCAN1 </p><p>  MOV KEYBUF,#0EH ;賦予鍵值 </p><p>  LJMP WAI ;調至按鍵處理程序 </p><p>  WAI:MOV A,

40、KEYBUF ;按鍵處理程序入口</p><p>  MOVC A,@A+DPTR</p><p>  MOV STH0 , A</p><p>  INC KEYBUF</p><p>  MOV A,KEYBUF</p><p>  MOVC A,@A+DPTR</p><p>  M

41、OV STL0, A</p><p>  MOV TH0,STH0</p><p>  MOV TL0,STL0</p><p><b>  SETB TR0</b></p><p>  LCALL DELAY100MS</p><p>  LJMP SCAN1</p><p&

42、gt;  WAIT1:CJNE R1,#00H,LOOP ;播放音樂程序入口</p><p>  LOOP:MOV A,R1</p><p>  MOVC A,@A+DPTR</p><p>  MOV STH0,A</p><p><b>  INC R1</b></p><p&

43、gt;<b>  MOV A,R1</b></p><p>  MOVC A,@A+DPTR</p><p>  CJNE A,#0FEH,NEXT1 </p><p>  MOV R1,#00H</p><p><b>  LJMP LOOP</b></p><p>  N

44、EXT1:MOV STL0,A</p><p><b>  INC R1</b></p><p><b>  MOV A,R1</b></p><p>  MOVC A,@A+DPTR</p><p>  MOV DELY,A</p><p>  MOV TH0,STH0&l

45、t;/p><p>  MOV TL0,STL0</p><p>  SETB TR0 </p><p>  NEXT2: LJMP DELAY187MS ;節(jié)拍延時控制</p><p>  NEXT3: DJNZ DELY,NEXT2 </p><p><b>  INC R1</b><

46、/p><p><b>  LJMP TEST</b></p><p>  NOKEY:LJMP TEST ;重新檢測</p><p>  DELAY10MS: MOV R6,#10 ;10ms延時</p><p>  D1:MOV R7,#248</p><p><b>  DJNZ

47、 R7,$</b></p><p>  DJNZ R6,D1</p><p>  RET ;子程序返回</p><p>  DELAY100MS: MOV R5,#06EH;100ms延時</p><p>  DL0:MOV R4,#0CFH</p><p><b>  DJNZ R4,

48、$</b></p><p>  DJNZ R5,DL0</p><p>  RET;子程序返回</p><p>  DELAY187MS: MOV R3,#187 ;187ms延時 ,用于節(jié)拍控制</p><p>  DL1:MOV R2,#248</p><p><b>  DJN

49、Z R2,$</b></p><p>  DJNZ R3,DL1</p><p>  LJMP NEXT3</p><p>  INT_T0:MOV TH0,STH0;高8為輸入</p><p>  MOV TL0,STL0;低8位輸入</p><p>  CPL P1.0;音樂輸出口啟用&l

50、t;/p><p>  RETI;中斷返回</p><p>  TABLE1:DB 0f8h,094h, 0f9h,05ch, 0fah,01Ah, 0FAH,06AH;低音調表值</p><p>  DB 0FBH,00H, 0FBH,08CH, 0FCH,0EH, 0FCH,044H; </p><p>  TABLE2:DB

51、0FCH,04AH, 0FCH,0AEH, 0FDH,008H, 0FDH,030H;中音調表值</p><p>  DB 0FDH,080H, 0FDH,0C6H, 0FEH,02H, 0FEH,022H;</p><p>  TABLE3:DB 0FEH,02AH, 0FEH,05CH, 0FEH,084H, 0FEH,098H;高音調表值</p><p>

52、;  DB 0FEH,0C0H, 0FEH,0E8H, 0FFH,006H, 0FFH,029H;</p><p>  SONG1: ; 化蝶</p><p>  .DB -3, 04H, -5, 03H, -6, 01H, 1, 03H, 2, 01H, -6, 01H, 1, 01H, -5, 02H</p><p> 

53、 .DB 5, 03H, +1, 01H, 6, 01H, 5, 01H, 3, 01H, 5, 01H, 2, 08H</p><p>  .DB 2, 02H, 2, 01H, 3, 01H, -7, 02H, -6, 02H, -5, 03H, -6, 01H, 1, 02H, 2, 02H</p><p>  .DB -3, 02H, 1, 02H, -6, 01H,

54、-5, 01H, -6, 01H, 1, 01H, -5, 08H</p><p>  .DB 3, 03H, 5, 01H, -7, 03H, 2, 01H, -6, 01H, 1, 01H, 5, 05H</p><p>  .DB -3, 02H, -5, 01H, -3, 01H, -5, 01H, -6, 01H, -7, 01H, 2, 01H, -6, 06H, -5

55、, 01H, -6, 01H</p><p>  .DB 1, 03H, 2, 01H, 5, 02H, 3, 02H, 2, 02H, 3, 01H, 2, 01H, 1, 02H, -6,</p><p>  系統(tǒng)工作過程:采用16個鍵分別代表16個音,通過對按鍵的隨意按鍵從而產(chǎn)生不同的音樂,主要是通過每個按鍵所產(chǎn)生的頻率不同來使得發(fā)出的各個音不同,從而產(chǎn)生音樂,根據(jù)程序首先對低音

56、,中音,高音進行檢測;運用延時、循環(huán)、跳轉等設計實驗;然后通過對音符鍵的控制發(fā)出do re mi fa sol la si do</p><p>  功能實現(xiàn)分析:這次設計的是一個游戲型的電子琴,通過對程序的改進和利用單片機的功能特性,最后通過仿真,我們實現(xiàn)了電子琴的功能,所以這個設計是可行的。</p><p><b>  設計心得:</b></p

57、><p>  通過這次課程設計,系統(tǒng)而比較全面地檢查了我所學的專業(yè)知識,補充了我未學的專業(yè)知識,對一個產(chǎn)品的開發(fā)的步驟有一定的認識?!安槁┭a缺”的同時進一步鞏固了專業(yè)知識,鍛煉了自己,讓我深刻的意識到理論學習和實踐相結合的重要性,在這次課程設計中,查閱了大量的資料,并在此基礎上加以了改進并進行了創(chuàng)新,同時對延時,循環(huán)等設計方法有了更深的了解。提高了我們學習分析和解決問題的能力,只要我們不因為困難而害怕困難,最后我們就

溫馨提示

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

評論

0/150

提交評論