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