單片機實現(xiàn)電子琴課程設計_第1頁
單片機實現(xiàn)電子琴課程設計_第2頁
單片機實現(xiàn)電子琴課程設計_第3頁
單片機實現(xiàn)電子琴課程設計_第4頁
單片機實現(xiàn)電子琴課程設計_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第1章 引言當今社會,隨著人們物質生活的不斷提高,電子產品能夠已經走進了家家戶戶,無論是生活或學習,還是娛樂消遣幾乎樣樣離不開電子產品。單片機由于其微小的體積和極低的成本,廣泛應用于家用電器,工業(yè)控制等領域中。單片微型計算機是微型計算機的一個重要分支,也是頗具生命力的機種。單片微型計算機簡稱單片機,特別適用于控制領域,故又稱為微控制器。電子琴是高科技在音樂領域的一個代表,它是古典文化與現(xiàn)代文明的一個濃縮體。它不但可以幫助我們的音樂教師進行傳統(tǒng)音樂文化的教育教學工作,而且由于它又具備現(xiàn)代與音樂,特別是電子音樂,電腦音樂的基本結構,特征,因而是我們的教師在進行現(xiàn)代音樂、電子音樂、電腦音樂的教學時,

2、更直接、更簡便。電子琴是現(xiàn)代電子科技與與音樂結合的產物,是一種新型的鍵盤樂器。他在現(xiàn)代音樂扮演者重要的角色,單片機具有強大的控制功能和靈活的編程實現(xiàn)特性,它已經融入現(xiàn)代人們的生活中,成為不可替代的一部分。本文的主要內容是以單片機為核心控制元件,設計一個電子琴。以單片機為主控核心,與8255、鍵盤、揚聲器等模塊組成核心主控制模塊。利用定時器發(fā)出不同頻率的脈沖,經喇叭放大電路放大濾波后,發(fā)出不同的音調。每按鍵一次發(fā)出五十個脈沖,發(fā)完后繼續(xù)檢查有無鍵按下。 第2章 芯片引腳介紹 2.1 8031引腳介紹8051單片機的引腳及相關功能; 40個引腳按引腳功能大致可分為4個種類:電源、時鐘、控制和I/O

3、引腳。 電源: VCC - 芯片電源,接+5V; VSS - 接地端; 時鐘:XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。 控制線:控制線共有4根, ALE/PROG地址鎖存允許/片內EPROM編程脈沖 ALE功能:用來鎖存P0口送出的低8位地址 PROG功能:片內有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。 PSEN:外ROM讀選通信號。 RST/VPD:復位/備用電源。 RST(Reset)功能:復位信號輸入端。 VPD功能:在Vcc掉電情況下,接備用電源。 EA/Vpp:內外ROM選擇/片內EPROM編程電源。 EA功能:內外ROM選擇端。 Vpp功能:

4、片內有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。 I/O線 80C51共有4個8位并行I/O端口:P0、P1、P2、P3口,共32個引腳。 P3口還具有第二功能,用于特殊信號輸入輸出和控制信號(屬控制總線) 5. P3口第二功能 P30 RXD 串行輸入口 ,P31 TXD 串行輸出口 P32 INT0 外部中斷0(低電平有效) P33 INT1 外部中斷1(低電平有效) P34 T0 定時計數(shù)器0 ,P35 T1 定時計數(shù)器1 P36 WR 外部數(shù)據(jù)存儲器寫選通(低電平有效) P37 RD 外部數(shù)據(jù)存儲器讀選通(低電平有效) 2.2 8255引腳介紹RESET:復位輸入線,

5、當該輸入端處于高電平時,所有內部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成輸入方式。 CS:芯片選擇信號線,當這個輸入引腳為低電平時,即/CS=0時,表示芯片被選中,允許8255與CPU進行通訊;/CS=1時,8255無法與CPU做數(shù)據(jù)傳輸. RD:讀信號線,當這個輸入引腳為低電平時,即/RD=0且/CS=0時,允許8255通過數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。 WR:寫入信號,當這個輸入引腳為低電平時,即/WR=0且/CS=0時,允許CPU將數(shù)據(jù)或控制字寫入8255。 D0D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通道,當CPU 執(zhí)行輸

6、入輸出指令時,通過它實現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過數(shù)據(jù)總線傳送。 PA0PA7:端口A輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入鎖存器。 PB0PB7:端口B輸入輸出線,一個8位的I/O鎖存器, 一個8位的輸入輸出緩沖器。 PC0PC7:端口C輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入緩沖器。端口C可以通過工作方式設定而分成2個4位的端口, 每個4位的端口包含一個4位的鎖存器,分別與端口A和端口B配合使用,可作為控制信號輸出或狀態(tài)信號輸入端口。 A1,A0:地址選擇線,用來選擇8255的PA口,PB口,PC口和控制寄存器. 當A

7、1=0,A0=0時,PA口被選擇; 當A1=0,A0=1時,PB口被選擇; 當A1=1,A0=0時,PC口被選擇; 當A1=1.A0=1時,控制寄存器被選擇.第3章 電子琴實驗1、 實驗要求利用實驗儀上提供的鍵盤,是數(shù)字鍵1、2、3、4、5、6、7作為電子琴鍵,按下即發(fā)出相應的音調。用8255的PA.0口發(fā)出音頻脈沖,驅動喇叭。二、實驗目的1、了解計算機發(fā)聲原理。2、進一步熟悉定時器編程方法。3.、進一步熟悉鍵盤掃描電路工作原理及編程方法三、實驗電路及連接鍵盤草圖如下: 喇叭發(fā)聲原理如下圖:PA0輸出脈沖驅動喇叭:連線:連線連接孔1連接孔218255-CSCS02KEY/LED-CSCS13P

8、A0喇叭脈沖輸入四、實驗說明1、 利用定時器,可以發(fā)出不同頻率的脈沖,不同頻率的脈沖經喇叭驅動電路放大濾波后,就會發(fā)出不同的音調。2、 定時器按設置定時的參數(shù)產生中斷,這一次中斷發(fā)出脈沖低電平,下一次反轉發(fā)出脈沖高電平。由于定時參數(shù)不同,就發(fā)出了不同頻率的脈沖。本實驗中按鍵一次,會發(fā)50個脈沖。發(fā)完后繼續(xù)檢測鍵盤,如果鍵還按下,繼續(xù)發(fā)音。各音階標稱頻率值:音階1234567頻率(Hz)440.00493.88554.37587.33659.26739.99830.61五、實驗框圖 主程序框圖 定時中斷程序框圖第四章 實驗程序mode equ 082hPORTA equ 08000hCTL eq

9、u 08003hOUTBIT equ 09002hIN equ 09001hPulse equ 55hPulseCNT equ 50hToneHigh equ 51hToneLow equ 52hTone equ 53hKeyBuf equ 54hSpeaker equ PORTA ljmp Start org 000bhTimer0Int: push PSW clr TR0 mov TH0, ToneHigh mov TL0, ToneLow setb TR0 mov a, Pulse mov dptr, #Speaker movx dptr,a inc Pulse dec PulseCNT

10、 pop PSW retiToneTable: dw 64578, 64686, 64778, 64821, 64898, 64968, 65029TestKey: mov dptr, #OUTBIT mov a, #0 movx dptr, a mov dptr, #IN movx a, dptr cpl a anl a, #0fh retKeyTable: db 16h, 15h, 14h, 0ffh db 13h, 12h, 11h, 10h db 0dh, 0ch, 0bh, 0ah db 0eh, 03h, 06h, 09h db 0fh, 02h, 05h, 08h db 00h,

11、 01h, 04h, 07hGetKey: mov dptr, #OUTBIT mov P2, dph mov r0, #Low(IN) mov r1, #00100000b mov r2, #6KLoop: mov a, r1 cpl a movx dptr, a cpl a rr a mov r1, a movx a, r0 cpl a anl a, #0fh jnz Goon1 djnz r2, KLoop mov r2, #0ffh sjmp ExitGoon1: mov r1, a mov a, r2 dec a rl a rl a mov r2, a ; r2 = (r2-1)*4

12、 mov a, r1 mov r1, #4LoopC: rrc a jc Exit inc r2 djnz r1, LoopCExit: mov dptr, #OUTBIT clr a movx dptr, a mov a, r2 mov dptr, #KeyTable movc a, a+dptr retStart: mov sp, #70h mov a, #mode mov dptr,#CTL movx dptr,a mov TMOD, #01 ; Timer mov IE, #82h ; EA=1, IT0 = 1 mov Tone,#0MLoop: call TestKey jz ML

13、oop call GetKey mov b, a jz MLoop ; = 0, 7 dec b mov a, b rl a ; a = a*2 mov b, a mov dptr, #ToneTable movc a, a+dptr mov ToneHigh, a mov TH0, a mov a, b inc a movc a, a+dptr mov ToneLow, a mov TL0, a setb TR0 mov PulseCNT, #100Wait: mov a,PulseCNT jnz Wait clr TR0 ljmp MLoop end第5章 原理電路圖 總電路圖: 單片機外

14、部電路:數(shù)據(jù)存儲器擴展:程序存儲器與數(shù)據(jù)存儲器基本相似第六章 修改程序將七個鍵發(fā)其中音調改為十五個鍵發(fā)十五個音調。延長發(fā)音時間,即將沒按鍵一次發(fā)五十個脈沖改為沒按鍵一次發(fā)一百個脈沖。(修改部分為大號加粗字體)修改后程序如下:mode equ 082h PORTA equ 08000h CTL equ 08003hOUTBIT equ 09002hIN equ 09001hPulse equ 55h PulseCNT equ 50hToneHigh equ 51hToneLow equ 52hTone equ 53h KeyBuf equ 54hSpeaker equ PORTA ljmp St

15、art org 000bhTimer0Int: push PSW clr TR0 mov TH0, ToneHigh mov TL0, ToneLow setb TR0 mov a, Pulse mov dptr, #Speaker movx dptr,a inc Pulse dec PulseCNT pop PSW retiToneTable: dw 64578, 64686, 64778, 64821, 64898, 64968, 65029 dw 65058, 65110, 65157, 65178, 65217, 65252,65283,65301TestKey: mov dptr,

16、#OUTBIT mov a, #0 movx dptr, a mov dptr, #IN movx a, dptr cpl a anl a, #0fh retKeyTable: db 16h, 15h, 14h, 0ffh db 13h, 12h, 11h, 10h db 0dh, 0ch, 0bh, 0ah db 0eh, 03h, 06h, 09h db 0fh, 02h, 05h, 08h db 00h, 01h, 04h, 07hGetKey: mov dptr, #OUTBIT mov P2, dph mov r0, #Low(IN) mov r1, #00100000b mov r

17、2, #6KLoop: mov a, r1 cpl a movx dptr, a cpl a rr a mov r1, a movx a, r0 cpl a anl a, #0fh jnz Goon1 djnz r2, KLoop mov r2, #0ffh sjmp ExitGoon1: mov r1, a mov a, r2 dec a rl a rl a mov r2, a ; r2 = (r2-1)*4 mov a, r1 mov r1, #4LoopC: rrc a jc Exit inc r2 djnz r1, LoopCExit: mov dptr, #OUTBIT clr a

18、movx dptr, a mov a, r2 mov dptr, #KeyTable movc a, a+dptr retStart: mov sp, #70h mov a, #mode mov dptr,#CTL movx dptr,a mov TMOD, #01 ; Timer mov IE, #82h ; EA=1, IT0 = 1 mov Tone,#0MLoop: call TestKey jz MLoop call GetKey mov b, a jz MLoop ; = 0, 9 dec b mov a, b rl a ; a = a*2 mov b, a mov dptr, #ToneTable movc a, a+dptr mov ToneHigh, a mov TH0, a mov a, b inc a movc a, a+dptr mov ToneLow, a mov TL0, a setb TR0 mov PulseCNT, #200Wait: mov a,PulseCNT jnz Wait clr TR0 ljmp MLoop end第7章 心得體會一周的課程設計結束了。在這次課程設計的過程中,我不僅加深了對單片機的理解,將理論很好的應用于實踐中去,而且學會了應用偉福軟件,繪圖軟件。剛開始拿到程序的時候是

溫馨提示

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

評論

0/150

提交評論