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

下載本文檔

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

文檔簡介

1、<p>  單片機原理課程設計報告</p><p><b>  題目:</b></p><p>  用protues實現(xiàn)硬件實驗25 電子琴</p><p><b>  要求:</b></p><p><b>  2.1設計任務 </b></p><

2、;p>  a.設計一個4X6的24個按鍵矩陣,并且1---7鍵每個鍵對應一個音。</p><p>  b.用AT80C51將鍵盤連接設計成為電子琴。</p><p>  c.編寫電子琴的程序,要達到可以隨意彈奏想要表達的音樂的目的。</p><p>  d.程序的分析與調(diào)試。</p><p><b>  2.2設計要求<

3、/b></p><p>  a.用匯編語言編程實現(xiàn)程序設計。</p><p>  b.利用查表,中斷等方式實現(xiàn)目的。</p><p>  c.系統(tǒng)的各個功能模塊要清楚,有序。</p><p><b>  2.3設計說明</b></p><p>  a、利用定時器,可以發(fā)出不同頻率的脈沖,不同

4、頻率的脈沖經(jīng)</p><p>  喇叭驅動電路放大濾波后,就會發(fā)出不同的音調(diào).</p><p>  b、定時器按設置的定時參數(shù)產(chǎn)生中斷,這一次中斷發(fā)出脈沖低電平,下一次反轉發(fā)出脈沖高電平.由于定時參數(shù)不同,就發(fā)出了不同頻率的脈沖. 本實驗中按鍵一次,會發(fā)50個脈沖.發(fā)完后繼續(xù)檢測鍵盤,如果鍵還按下,繼續(xù)發(fā)音。</p><p><b>  各音階標稱頻率值:

5、</b></p><p><b>  2.4課設目的</b></p><p>  a. 了解計算機發(fā)聲原理。</p><p>  b. 進一步熟悉定時器編程方法.</p><p>  c. 進一步熟悉鍵盤掃描電路工作原理及編程方法</p><p><b>  三.總體說明:&

6、lt;/b></p><p>  本系統(tǒng)采用單片機AT80C51為電子琴的控制核心,系統(tǒng)主要包括播放模塊、按鍵控制模塊。下面對各模塊的設計逐一進行論證比較。</p><p><b>  3.1 播放模塊</b></p><p>  播放模塊是喇叭構成。它幾乎不存在噪聲,音響效果較好。而且由于所需驅動功率較小,且價格低廉,所以,被廣泛應用

7、。 </p><p>  3.2按鍵控制顯示模塊</p><p>  電子琴設有24個按鍵,其中7個作為音符輸入。7個按鍵分別代表7個音符,包括中音段的全部音符。當按下剩余的17個按鍵時,實現(xiàn)數(shù)碼管顯示全為8.8.8.8.8.8.</p><p>  3.3總體硬件組成框圖</p><p><b>  硬件設計:</b>

8、</p><p><b>  4.1鍵盤顯示電路</b></p><p><b>  數(shù)碼顯示電路</b></p><p><b>  鍵盤按鍵電路</b></p><p>  鍵盤采用編程掃描方式,顯示譯碼管采用動態(tài)顯示方式,左端74LS374和74LS245的輸入端接分別接

9、地址鎖存器74LS373的輸入端。</p><p>  4.2片選(74ls138)</p><p>  4.3地址鎖存器(74ls373)</p><p>  輸入端接單片機P0口,輸出分別為A0—A7</p><p>  4.4單片機(80c51)</p><p>  4.5 音頻輸出及8255</p>

10、<p>  輸入端D0—D7分別接入單片機P0口,A0A1接入地址鎖存器輸出端A0A1</p><p>  單片機工作于12MHZ時鐘頻率,使用其定時/計數(shù)器T0,工作模式為1,改變計數(shù)值TH0和TL0可以產(chǎn)生不同頻率的脈沖信號,在此情況下,C調(diào)的各音符頻率與計數(shù)值T的對照如下表:</p><p><b>  五.軟件設計</b></p>

11、<p><b>  5.1程序框圖</b></p><p><b>  5.2 源程序</b></p><p>  mode equ 082h</p><p>  PORTA equ 08000h</p><p>  CTL equ 08003h</p><

12、p>  OUTBIT equ 09002h</p><p>  IN equ 09001h</p><p>  Pulse equ 55h</p><p>  PulseCNT equ 50h</p><p>  ToneHigh equ 51h</p><p>  ToneLow equ

13、 52h</p><p>  Tone equ 53h</p><p>  KeyBuf equ 54h</p><p>  Speaker equ PORTA</p><p>  ljmp Start</p><p>  org 000bh</p><p>  Timer0

14、Int: ;設置中斷0</p><p><b>  push PSW</b></p><p><b>  clr TR0</b></p><p>  mov TH0, ToneHigh</p><p>  mov TL0, ToneLow</p

15、><p><b>  setb TR0</b></p><p>  mov a, Pulse</p><p>  mov dptr, #Speaker</p><p>  movx @dptr,a</p><p>  inc Pulse</p><p>  de

16、c PulseCNT</p><p><b>  pop PSW</b></p><p><b>  reti</b></p><p>  ToneTable: ;設置7個音節(jié)的頻率</p><p>  dw 64578, 64686, 6477

17、8, 64821, 64898, 64968, 65029</p><p>  TestKey: ;檢測鍵輸入</p><p>  mov dptr, #OUTBIT</p><p>  mov a, #0</p><p>  movx @dptr, a</p><p>

18、;  mov dptr, #IN</p><p>  movx a, @dptr</p><p><b>  cpl a</b></p><p>  anl a, #0fh</p><p><b>  ret</b></p><p><b>  Key

19、Table:</b></p><p>  db 16h, 15h, 14h, 0ffh</p><p>  db 13h, 12h, 11h, 10h</p><p>  db 0dh, 0ch, 0bh, 0ah</p><p>  db 0eh, 03h, 06h, 09h</p><

20、;p>  db 0fh, 02h, 05h, 08h</p><p>  db 00h, 01h, 04h, 07h</p><p>  GetKey: 讀入鍵值</p><p>  mov dptr, #OUTBIT</p><p>  mov P2, dph<

21、;/p><p>  mov r0, #Low(IN)</p><p>  mov r1, #00100000b</p><p>  mov r2, #6</p><p><b>  KLoop:</b></p><p>  mov a, r1</p><p>&

22、lt;b>  cpl a</b></p><p>  movx @dptr, a</p><p><b>  cpl a</b></p><p><b>  rr a</b></p><p>  mov r1, a</p><p>  m

23、ovx a, @r0</p><p><b>  cpl a</b></p><p>  anl a, #0fh</p><p>  jnz Goon1</p><p>  djnz r2, KLoop</p><p>  mov r2, #0ffh</p>&l

24、t;p>  sjmp Exit</p><p><b>  Goon1:</b></p><p>  mov r1, a</p><p>  mov a, r2</p><p><b>  dec a</b></p><p><b>  rl

25、 a</b></p><p><b>  rl a</b></p><p>  mov r2, a ; r2 = (r2-1)*4</p><p>  mov a, r1</p><p>  mov r1, #4</p><p><b

26、>  LoopC:</b></p><p><b>  rrc a</b></p><p>  jc Exit</p><p><b>  inc r2</b></p><p>  djnz r1, LoopC</p><p><b&g

27、t;  Exit:</b></p><p>  mov dptr, #OUTBIT</p><p><b>  clr a</b></p><p>  movx @dptr, a</p><p>  mov a, r2</p><p>  mov dptr, #Key

28、Table</p><p>  movc a, @a+dptr</p><p><b>  ret</b></p><p><b>  Start:</b></p><p>  mov sp, #70h</p><p>  mov a, #mode</p>

29、<p>  mov dptr,#CTL</p><p>  movx @dptr,a</p><p>  mov TMOD, #01 ; Timer</p><p>  mov IE, #82h ; EA=1, IT0 = 1</p><p>  mov Tone,#0</p>

30、<p><b>  MLoop:</b></p><p>  call TestKey</p><p>  jz MLoop</p><p>  call GetKey</p><p><b>  mov b, a</b></p><p>  jz M

31、Loop ; = 0, < 1</p><p>  anl a, #!7</p><p>  jnz MLoop ; > 7</p><p><b>  dec b</b></p><p><b>  mov a, b</b><

32、;/p><p>  rl a ; a = a*2</p><p><b>  mov b, a</b></p><p>  mov dptr, #ToneTable</p><p>  movc a, @a+dptr</p><p>  mov ToneHi

33、gh, a</p><p>  mov TH0, a</p><p><b>  mov a, b</b></p><p><b>  inc a</b></p><p>  movc a, @a+dptr</p><p>  mov ToneLow, a</p

34、><p>  mov TL0, a</p><p><b>  setb TR0</b></p><p>  mov PulseCNT, #100</p><p><b>  Wait:</b></p><p>  mov a,PulseCNT</p><

35、;p><b>  jnz Wait</b></p><p><b>  clr TR0</b></p><p>  ljmp MLoop</p><p><b>  end</b></p><p><b>  六.使用說明</b></p&g

36、t;<p>  開啟仿真模式,單片機處于工作模式,當按下鍵盤的1—7鍵時,會分別發(fā)出音調(diào)為DO RI MI FA SO LA TI七個音,但按下其他鍵時,顯示譯碼管會始終顯示8.8.8.8.8.8.</p><p><b>  七.心得體會</b></p><p>  首先通過此次單片機課程設計,我明白更加深了了解了許多單片機知識,并且將這些學習的東西通

37、過課設體現(xiàn)在了實實在在的電路當中。在以往的學習中,都是學習的一些理論上的知識,而真正怎樣運用到實踐中并沒有認真想過。課本上的知識畢竟是死的,而實踐過程中往往會發(fā)生很多狀況,該如何發(fā)現(xiàn)問題,解決問題,是需要我們來認真思考的。這種能力也是我們亟待培養(yǎng)的。我覺得這次的課設,就是一次小小的鍛煉,在課設過程中找到問題,分析問題,并找出方法來解決它,這個過程就是理論與實際的結合過程,既鍛煉了我們的動手能力,又鞏固了我們的理論知識,兩全其美。<

38、/p><p>  在者通過兩人的合作,讓我明白了團結協(xié)作的重要性,兩人相互團結互相努力,會使工作變得簡單而又有趣,更可以激發(fā)對方的潛力,互相督促,共同進步,增加友誼。</p><p>  并且,這次課設不僅教會了我很多知識增進了友誼,同時也磨練了我的意志。告訴我們只要堅持就一定會成功。不管電路圖、程序如何復雜,只要細心去連就一定會實現(xiàn)預定的目標。</p><p>  總

溫馨提示

  • 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

提交評論