《基于at89s52單片機的多音階電子琴設(shè)計 答辯(ppt)》由會員分享,可在線閱讀,更多相關(guān)《基于at89s52單片機的多音階電子琴設(shè)計 答辯(ppt)(18頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、專業(yè)班級: 孫越崎09-1班 組 長: 蔡 凱 學(xué)號04091699 組 員: 張 雪 學(xué)號03091109 組 員: 姜子健 學(xué)號03091023 鑒于單片機強大的控制功能和靈活的編程實現(xiàn)特性,本設(shè)計以AT89S52單片機為核心控制元件,設(shè)計一個由4 X 4組成16個按鍵矩陣,構(gòu)成16個音階,可以隨意彈奏想要表達的音樂的多音階電子琴。 目錄:1、首先將介紹基于單片機電子琴統(tǒng)硬件組成。2、分析電路原理圖3、元器件作用的簡單介紹4、軟件設(shè)計5、硬件及軟件的調(diào)試6、總結(jié) 多音階電子琴的主要電路主要由4 X 4按鍵矩陣電路、功率放大電路、揚聲器、復(fù)位電路、晶振電路、電源電路幾部分組成。單片機的P1.
2、0端口的輸出做音頻放大電路的輸入,P3.0P3.7端口分別做4 X 4按鍵矩陣電路的行掃描和列掃描。AT89S51 是一個低功耗,高性能CMOS 8 位單片機,片內(nèi)含 4kB的可擦 除的Flash ROM,兼容標(biāo)準(zhǔn) MCS-51 指令系統(tǒng)及 80C51引腳結(jié)構(gòu),功能強大的微型計算AT89S51 可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價比的解決方案。 AT89S51 具有如下特點:40 個引腳,4kB Flash 片內(nèi)程序存儲器,128B的隨機存取數(shù)據(jù)存儲器,32個外部I/O口,5個中斷優(yōu)先級,2 層中斷嵌套中斷,2 個16 位可編程定時計數(shù)器,2 個全雙工串行通信口,片內(nèi)時鐘振蕩器。 VCC:供電
3、電壓 GND:接地 P0 口: P0 能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH 編程時,P0 口作為原碼輸入口,當(dāng)FIASH 進行校驗時,P0 輸出原碼,此時P0 外部必須被拉高。 P1 口: P1 口管腳寫入1 后,被內(nèi)部上拉為高,可用作輸入,P1 口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH 編程和校驗時,P1 口作為第八位地址接收。 P2 口: 當(dāng)P2 口被寫1時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。 P2 口當(dāng)用于外部程序存儲器或16 位地址外部數(shù)據(jù)存儲器進行存取時,P2 口輸出地址的高八位。P2 口在 FLASH 編程和
4、校驗時接收高八位地址信號和控制信號。 P3 口:P3 口管腳是8 個帶內(nèi)部上拉電阻的雙向I/O 口,可接收輸出4 個TTL 門電流。當(dāng)P3 口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3 口將輸出電流(ILL)這是由于上拉的緣故。 程序設(shè)計框圖主要分成兩部分:(1)4X4行列式鍵盤識別; 鍵盤只簡單地提供按鍵開關(guān)的行列矩陣。有關(guān)按鍵的識別、鍵碼的確定與輸入、去抖動等功能均有軟件完成。 每個按鍵有它的行列值,行值和列值的組合就是識別這個按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和CPU通信。每個按鍵的狀態(tài)同樣需要變成數(shù)字量0和1,開關(guān)的一端 (列線)
5、通過電阻接VCC,而接地是通過程序輸出數(shù)字0實現(xiàn)的。鍵盤處理程序的任務(wù)是:確定有無鍵按下,判斷哪一個鍵按下,鍵的功能是什么;還要消除按鍵在閉合或斷開時的抖動。在兩個并行口中,一個輸出掃描碼,使按鍵逐行動態(tài)接地;另一個并行口輸入按鍵狀態(tài),由行掃描值和回饋信號共同行成鍵編碼而識別按鍵,通過軟件查表,查處該案件的功能。一首音樂是許多不同的音階組成的,而每個音階對應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對于單片機來說產(chǎn)生不同的頻率非常方便,我們可以利用單片機的定時/計數(shù)器T0來產(chǎn)生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應(yīng)頻率關(guān)系弄正確即可。 要產(chǎn)
6、生音頻脈沖,只要算出某一音頻的周期(1/ 頻率),然后將此周期除以2,即為半周期的時間,然后利用計時器計時此半周期時間,每當(dāng)計時到后來就將輸出脈沖的I/O反相,然后重復(fù)計時此半周期時間再對I/O反相,如此就可以在I/O腳上得到此頻率的脈沖。 利用AT89S52單片機內(nèi)部計時器讓其工作在計數(shù)模式MODE1下,改變計數(shù)值TH0及TL0以產(chǎn)生不同的頻率。基于前面所分析,通過改變定時/計數(shù)器的頻率,程序代碼在這個程序中用到了兩個定時/計數(shù)器來完成的。其中T0用來產(chǎn)生音符頻率,T1用來產(chǎn)生音拍。本設(shè)計的軟件系統(tǒng)主要分為主程序、定時計數(shù)中斷程序、時間調(diào)整或定鬧設(shè)置程序三大模塊。在程序設(shè)計過程中,加強了部分
7、軟件抗干擾措施在具體程序這里就不贅述,可見報告。硬件的調(diào)試主要是把電路各種參數(shù)調(diào)整到符合設(shè)計要求。具體步驟如下:(1)先排除硬件電路故障,包括設(shè)計性錯誤和工藝性故障。一般原則是先靜態(tài)后動態(tài)。(2)利用萬用表或邏輯測試儀器,檢查電路中的各器件以及引腳是否連接正確,是否有短路故障。(3)先要將單片機AT89S52芯片取下,對電路板進行通電檢查,通過觀察看是否有異常,然后用萬用表測試各電源電壓,若這些都沒有問題,則接上仿真機進行聯(lián)機調(diào)試觀察各接口線路是否正常。 軟件調(diào)試是利用仿真工具進行在線仿真調(diào)試,除發(fā)現(xiàn)和解決程序錯誤外也可以發(fā)現(xiàn)硬件故障。 單片機AT89S52是系統(tǒng)的核心,利用萬用表檢測單片機電
8、源VCC是否為(40腳)+5V、晶振是否正常工作(可用示波器測試,用萬用表檢測時,兩引腳一般為1.82.3V之間)、復(fù)位引腳RST是否正常(復(fù)位時為高電平,工作時為低電平)、EA是否為高電平,檢查無誤后單片機就能正常工作了。在這短暫而又充實的幾周電子設(shè)計過程中,我們感到平時我們學(xué)習(xí)的理論知識,一旦應(yīng)用到實際,才發(fā)現(xiàn)自己領(lǐng)悟了其實并不多。這次我們主要的設(shè)計是一個簡易型的電子琴,采用 16 個按鍵分別代表 16 個音,通過對按鍵的隨意按擊從而產(chǎn)生不同的音樂,主要是通過每個按鍵所產(chǎn)生的頻率不同來使得發(fā)出的各個音不同,從而產(chǎn)生音樂,雖然顯得很單一,但是至少我們懂得了設(shè)計的思想。這次主要參考了網(wǎng)上的一個
9、實例,再加上了自己的一些補充。我們主要針對這個設(shè)計的原理和程序進行編寫,從而來更好的學(xué)習(xí)設(shè)計的方法和創(chuàng)新。雖然我們現(xiàn)在并不能完全創(chuàng)新,程序也很長,我們也不可能完全靠自己編出來,但是我們以弄懂原理為基礎(chǔ),根據(jù)每個程序的功能各不相同來使程序簡化。確實在此過程中,我們對已學(xué)過知識進行了鞏固,也學(xué)會了探究和把理論運用到實際中去的能力。確實在此過程中,我們對已學(xué)過知識進行了鞏固,也學(xué)會了探究問題的能力和把理論運用到實際中去的能力,三個人的合作也讓我們學(xué)會了妥協(xié)與謙讓,是一次意義非凡的鍛煉。俗話說讀萬卷書不如行萬里路。整個過程我們也犯了一些低級的錯誤,但是很快我們從錯誤中走出來,并開辟出一條清晰的道路,獲益匪淺。