基于單片機(jī)電子琴設(shè)計(jì)說明_第1頁
基于單片機(jī)電子琴設(shè)計(jì)說明_第2頁
基于單片機(jī)電子琴設(shè)計(jì)說明_第3頁
基于單片機(jī)電子琴設(shè)計(jì)說明_第4頁
基于單片機(jī)電子琴設(shè)計(jì)說明_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

./理工大學(xué)《單片機(jī)應(yīng)用與仿真訓(xùn)練》設(shè)計(jì)報(bào)告基于AT89S52單片機(jī)簡易電子琴設(shè)計(jì)姓名:學(xué)號(hào):專業(yè)班級(jí):電信08—2班指導(dǎo)老師:胡治國巍所在學(xué)院:電氣工程與自動(dòng)化學(xué)院20XX11月22日摘要設(shè)計(jì)的主要容是用AT89S52單片機(jī)為核心控制元件,通過脈沖觸發(fā)產(chǎn)生出電子音調(diào),設(shè)計(jì)一個(gè)簡易的電子琴。以單片機(jī)作為主控核心,與鍵盤、蜂鳴器等模塊組成控制模塊。該系統(tǒng)運(yùn)行穩(wěn)定,其優(yōu)點(diǎn)是硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,性價(jià)比較高等,具有一定的實(shí)用與參考價(jià)值。關(guān)鍵詞:AT89S52;單片機(jī);脈沖觸發(fā);電子琴設(shè)計(jì)目錄1概述21.1功能簡介21.2功能的實(shí)現(xiàn)21.3音樂產(chǎn)生原理32系統(tǒng)總體方案及硬件設(shè)計(jì)42.1總體方案42.2硬件部分42.2.1矩陣鍵盤部分42.2.2揚(yáng)聲器接口電路部分53軟件設(shè)計(jì)64Proteus軟件仿真85課程設(shè)計(jì)體會(huì)9參考文獻(xiàn)10附錄1源程序代碼10附錄2系統(tǒng)原理圖181概述1.1功能簡介電子琴是現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,是一種新型的鍵盤樂器。它在現(xiàn)代音樂扮演著重要的角色,單片機(jī)具有強(qiáng)大的控制功能和靈活的編程實(shí)現(xiàn)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代的一部分。本簡易電子琴的設(shè)計(jì)可實(shí)現(xiàn)的功能如下:程序中預(yù)存了一首音樂《月亮代表我的心》,通過一個(gè)獨(dú)立鍵盤可以實(shí)現(xiàn)對(duì)該音樂的播放和停止操作的控制。4*4矩陣鍵盤的16個(gè)按鍵分別對(duì)應(yīng)著16個(gè)不同的音符,分為高、低兩個(gè)八度,當(dāng)按下某一按鍵,會(huì)發(fā)出相應(yīng)的音調(diào)。按下按鍵時(shí),揚(yáng)聲器會(huì)發(fā)出聲音,松開按鍵后,揚(yáng)聲器停止發(fā)聲,按鍵的時(shí)間越長,發(fā)聲時(shí)間越久。連續(xù)按下不同的按鍵,可以實(shí)現(xiàn)樂曲的演奏。1.2功能的實(shí)現(xiàn)功能的實(shí)現(xiàn)部分分為軟件和硬件兩部分來簡介。1.3音樂產(chǎn)生原理一首音樂是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對(duì)于單片機(jī)來產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來產(chǎn)生這樣方波頻率信號(hào),因此,只需將一首歌的音階和頻率相對(duì)應(yīng)即可。若要產(chǎn)生音頻脈沖,只要算出某一音頻的周期〔1/頻率,再將此周期除以2,即為半周期的時(shí)間。利用定時(shí)器計(jì)時(shí)半周期時(shí)間,每當(dāng)計(jì)時(shí)終止后就將P1.0反相,然后重復(fù)計(jì)時(shí)再反相。就可在P1.0引腳上得到此頻率的脈沖。利用AT89S52的部定時(shí)器使其工作計(jì)數(shù)器模式〔MODE1下,改變計(jì)數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階,例如,頻率為523Hz,其周期T=1/523=1912μs,因此只要令計(jì)數(shù)器計(jì)時(shí)956μs/1μs=956,每計(jì)數(shù)956次時(shí)將I/O反相,就可得到中音DO〔523Hz。計(jì)數(shù)脈沖值與頻率的關(guān)系式<如式2-1所示>是:N=fi÷2÷fr2-1式中,N是計(jì)數(shù)值;fi是機(jī)器頻率〔晶體振蕩器為12MHz時(shí),其頻率為1MHz;fr是想要產(chǎn)生的頻率。其計(jì)數(shù)初值T的求法如下:T=65536-N=65536-fi÷2÷fr2-2例如:設(shè)K=65536,fi=1MHz,求低音DO〔261Hz、中音DO〔523Hz、高音DO〔1046Hz的計(jì)數(shù)值。T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr低音DO的T=65536-500000/262=63627中音DO的T=65536-500000/523=64580高音DO的T=65536-500000/1046=65059我們要為這個(gè)音符建立一個(gè)表格,單片機(jī)通過查表的方式來獲得相應(yīng)的數(shù)據(jù),音符表見附錄一。音樂的音拍,一個(gè)節(jié)拍為單位〔C調(diào)〔如表2-1所示表2-1曲調(diào)值表曲調(diào)值DELAY曲調(diào)值DELAY調(diào)4/4125ms調(diào)4/462ms調(diào)3/4187ms調(diào)3/494ms調(diào)2/4250ms調(diào)2/4125ms對(duì)于不同的曲調(diào)我們也可以用單片機(jī)的定時(shí)/計(jì)數(shù)器來完成。程序流程圖如圖2.5。2系統(tǒng)總體方案及硬件設(shè)計(jì)2.1總體方案本設(shè)計(jì)采用4*4鍵盤控制通過程序產(chǎn)生高八度和低八度音律,要考慮到軟件和硬件的匹配以及硬件電路焊接時(shí)的排版問題,否則建會(huì)帶來不必要的焊接麻煩,在編程序時(shí)要注意仿真與實(shí)際電路中可能的不符,2.2硬件部分本設(shè)計(jì)硬件電路共由以下幾部分構(gòu)成:矩陣鍵盤部分;揚(yáng)聲器部分;AT89S52主控電路部分;獨(dú)立按鍵部分。2.2.1矩陣鍵盤部分設(shè)計(jì)中采用AT89S51的并行口P3接4×4矩陣鍵盤,以P3.0-P3.3作輸入線,以P3.4-P3.7作輸出線。每個(gè)按鍵有它的行值和列值,行值和列值的組合就是識(shí)別這個(gè)按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和CPU通信。每個(gè)按鍵的狀態(tài)同樣需變成數(shù)字量"0"和"1",開關(guān)的一端〔列線通過電阻接VCC,而接地是通過程序輸出數(shù)字"0"實(shí)現(xiàn)的。鍵盤處理程序的任務(wù)是:確定有無鍵按下,判斷哪一個(gè)鍵按下,鍵的功能是什么;還要消除按鍵在閉合或斷開時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼,使按鍵逐行動(dòng)態(tài)接地,另一個(gè)并行口輸入按鍵狀態(tài),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按鍵,通過軟件查表,查出該鍵的功能,在本程序中,當(dāng)程序檢測(cè)到有鍵按下時(shí),將查表使按鍵值與預(yù)存數(shù)據(jù)表中數(shù)據(jù)對(duì)應(yīng),并調(diào)用發(fā)聲程序。圖2.1矩陣鍵盤的連接2.2.2揚(yáng)聲器接口電路部分仿真中的揚(yáng)聲器一段接CPU的P2^4口,另一端接高電平。當(dāng)P2^4口有電平變化時(shí),揚(yáng)聲器被驅(qū)動(dòng)發(fā)聲。而在實(shí)物制作中,這樣是難以實(shí)現(xiàn)功能的,需要增加模擬電路以除去多余的干擾信號(hào)。也可選用集成芯片LM386作為揚(yáng)聲器的驅(qū)動(dòng)芯片。若使用LM386驅(qū)動(dòng)揚(yáng)聲器,通過相應(yīng)的模擬電路的設(shè)計(jì),還可以實(shí)現(xiàn)音量的調(diào)節(jié)。不過,在平時(shí)做實(shí)物時(shí),我們一般用一個(gè)三極管作為放大器,這次我采用的是8050圖2.2揚(yáng)聲器接口電路3軟件設(shè)計(jì)本設(shè)計(jì)使用Protues仿真軟件進(jìn)行仿真,在程序設(shè)計(jì)部分,包括鍵盤掃描程序,音樂發(fā)聲程序。程序見附錄1。4*4矩陣鍵盤是由CPU控制I/O口來實(shí)現(xiàn)掃描的。具體程序見附錄二主程序鍵盤掃描部分。鍵盤掃描程序流程圖如圖2.4。程序首先給P3口賦值,然后讀取P3的狀態(tài),將讀取的狀態(tài)值同所賦值相比較,如果二者不相同,則說明有鍵按下,子程序?qū)存I值返回主程序;否則,說明沒有鍵按下,程序繼續(xù)進(jìn)行下一次掃描。本系統(tǒng)的軟件流程圖如下圖2.3系統(tǒng)主程序流程鍵盤掃描程序流程圖圖2.4鍵盤掃描程序流程圖音樂發(fā)聲程序圖2.5音樂發(fā)聲程序流程圖4Proteus軟件仿真仿真電路圖5課程設(shè)計(jì)體會(huì)將程序燒入芯片,調(diào)試成功后,可任意彈奏自己想要的旋律。本設(shè)計(jì)通過制作電子琴,將幾個(gè)模塊很好的融合,對(duì)使用單片機(jī)設(shè)計(jì)簡易電子琴進(jìn)行了分析,并了解了基于單片機(jī)電子琴統(tǒng)硬件組成。利用單片機(jī)產(chǎn)生不同頻率來獲得我們要求的音階,最終可隨意彈奏想要表達(dá)的音樂。說明一首音樂是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,于是我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來產(chǎn)生這樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系弄正確即可,然后我們利用功放電路來將音樂聲音放大。遇到的問題:在剛剛焊接好后,程序燒入芯片后,發(fā)現(xiàn)并不發(fā)聲,經(jīng)檢查才發(fā)現(xiàn)是對(duì)鍵盤沒看清楚,將鍵盤接亂了,另外,在硬件電路修改好后,發(fā)現(xiàn)每次按鍵時(shí)會(huì)引起蜂鳴器一直響,再按鍵時(shí)有可能會(huì)消失,經(jīng)檢查后知道是再每按鍵件程序后蜂鳴器對(duì)應(yīng)參值沒有直接置零??傊?這是一次動(dòng)手能力的鍛煉,也是一次單片機(jī)知識(shí)的再回顧,還是對(duì)自己細(xì)心以及耐心能力的考察。參考文獻(xiàn)[1]賈立新、王涌.電子系統(tǒng)設(shè)計(jì)與實(shí)踐[M],清華大學(xué),20XX2月版;

[2]春鳴、享成、甕嘉民.單片機(jī)使用技術(shù)[M],人民郵電,20XX4月版;

[3]余發(fā)山.單片機(jī)原理及應(yīng)用技術(shù)[M],中國礦業(yè)大學(xué),20XX12月版;

[4]光飛.單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo)[M],航空航天大學(xué),20XX9月版;

[5]余永權(quán).ATMEL89系列單片機(jī)[M],航空航天大學(xué),20XX4月版;

[6]胡宴如,耿燕.模擬電子技術(shù)[M],高等教育,20XX12月版;

[7]潤林,迎輝.單片機(jī)原理與應(yīng)用教程[M],大學(xué),20XX1月版;

[8]馬淑華、王鳳文.單片機(jī)原理與接口技術(shù)[M],郵電大學(xué),20XX10月版;

[9]建忠.單片機(jī)原理及應(yīng)用[M],電子科技大學(xué),2002年5月版;

[10]子文.單片機(jī)原理及應(yīng)用[M],電子科技大學(xué),2006年4月版

附錄1源程序代碼#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintuintkey,i,j,time,m,k;uchartemp;ucharSTH0,STL0,STH1,STL1;sbitsw=P2^7;sbitspeaker=P2^4;sbitP37=P3^7;sbitP36=P3^6;sbitP35=P3^5;sbitP34=P3^4;//月亮代表我的心數(shù)據(jù)表codeunsignedcharsszymmh[]={0,2,1,5,1,1,1,2,3,3,2,1,5,2,3,1,2,1,7,1,3,3,2,1,5,2,2,0,2,1,5,2,1,6,2,1,7,2,2,1,3,3, 6,2,1,6,2,1,5,2,1,5,2,5,3,2,1,2,2,1,1,2,3, 1,2,1,1,2,2,3,2,1,2,2,1,1,2,3,1,2,1,1,2,2, 2,2,1,3,2,1,2,2,2,1,2,1,6,1,2,2,2,1,3,2,1,2,2,5,};//音階頻率表高八位codeunsignedcharFREQH[]={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC,//1,2,3,4,5,6,7,8,i0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,};//音階頻率表低八位codeunsignedcharFREQL[]={0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F,//1,2,3,4,5,6,7,8,i0xEE,0x44,0x6B,0xB4,0xF4,0x2D,0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,};unsignedintcodetab[]={64103,64260,64400,64524,64580,64684,64777, 64820,64898,64968,65030,65058,65110,65157,65178,65217};voidkey_music<>{unsignedchartmp; P3=0xff; P34=0; temp=P3; temp=temp&0x0f; tmp=temp; if<temp!=0x0f> { for<i=50;i>0;i--> for<j=200;j>0;j-->; temp=P3; temp=temp&0x0f; //<temp!=0x0f> if<temp==tmp> { temp=P3; temp=temp&0x0f; switch<temp> { case0x0e:key=0;break; case0x0d:key=1;break; case0x0b:key=2;break; case0x07:key=3;break; } //speaker=~speaker; STH1=tab[key]/256; STL1=tab[key]%256; temp=P3; temp=temp&0x0f; while<temp!=0x0f>{TR0=1;temp=P3;temp=temp&0x0f;} TR0=0; speaker=0; } } P3=0xff; P35=0; temp=P3; temp=temp&0x0f; tmp=temp; if<temp!=0x0f> { for<i=50;i>0;i--> for<j=200;j>0;j-->; temp=P3; temp=temp&0x0f; //<temp!=0x0f> if<temp==tmp> { temp=P3; temp=temp&0x0f; switch<temp> { case0x0e:key=4;break; case0x0d:key=5;break; case0x0b:key=6;break; case0x07:key=7;break; } //speaker=~speaker; STH1=tab[key]/256; STL1=tab[key]%256; temp=P3; temp=temp&0x0f; while<temp!=0x0f>{TR0=1;temp=P3;temp=temp&0x0f;} TR0=0; speaker=0; } } P3=0xff; P36=0; temp=P3; temp=temp&0x0f; tmp=temp; if<temp!=0x0f> { for<i=50;i>0;i--> for<j=200;j>0;j-->; temp=P3; temp=temp&0x0f; //<temp!=0x0f> if<temp==tmp> { temp=P3; temp=temp&0x0f; switch<temp> { case0x0e:key=8;break; case0x0d:key=9;break; case0x0b:key=10;break; case0x07:key=11;break; } //speaker=~speaker; STH1=tab[key]/256; STL1=tab[key]%256; temp=P3; temp=temp&0x0f; while<temp!=0x0f>{ TR0=1;temp=P3;temp=temp&0x0f;} TR0=0; speaker=0; } } P3=0xff; P37=0; temp=P3; temp=temp&0x0f; tmp=temp; if<temp!=0x0f> { for<i=50;i>0;i--> for<j=100;j>0;j-->; temp=P3; temp=temp&0x0f; //<temp!=0x0f> if<temp==tmp> { temp=P3; temp=temp&0x0f; switch<temp> { case0x0e:key=12;break; case0x0d:key=13;break; case0x0b:key=14;break; case0x07:key=15;break; } //speaker=~speaker; STH1=tab[key]/256; STL1=tab[key]%256; temp=P3; temp=temp&0x0f; while<temp!=0x0f>

溫馨提示

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

評(píng)論

0/150

提交評(píng)論