【正文】
%256。}void m4(unsigned char g){EA=1。delaymusic(g)。STL0=tab[5]%256。}void m3(unsigned char g){EA=1。delaymusic(g)。STL0=tab[4]%256。}void m2_(unsigned char g){EA=1。delaymusic(g)。STL0=tab[3]%256。}void m2(unsigned char g){EA=1。delaymusic(g)。STL0=tab[2]%256。}void m1_(unsigned char g){EA=1。delaymusic(g)。STL0=tab[1]%256。}void m1(unsigned char g){EA=1。delaymusic(g)。STL0=tab[0]%256。}//音符定義void x0(unsigned char g){EA=0。f1000。ed。void delaymusic(unsigned char d) { unsigned long e,f。unsigned char STL0。//unsigned char key。就這樣,我們通過延時,發(fā)出了我們所需要的頻率,同理可求出其他音頻。90H12/12)%2561136(65536TL440HzFBH/256*–=。將t=1136t*f0/12)(256THLTL/(TALL256TH65536,THL為定時器待確定的計數初值。f0式中TALL=*(TALL–=一般情況下,單片機奏樂時,其定時器為工作方式1,它以振蕩器的十二分頻信號為計數脈沖。,也就是清零、置位在一個周期內完成。11362272/2T/2那么,單片機上對應蜂鳴器的I/O口來回取反的時間應為:t1/440f=440的頻率f它是由頻率來確定的!我們可以查出各個音符所對應的相應的頻率,那么現在就需要我們來用51來發(fā)出相應頻率的聲音!我們常采用的方法就是通過單片機的定時器定時中斷,將單片機上對應蜂鳴器的I/O口來回取反,或者說來回清零,置位,從而讓蜂鳴器發(fā)出聲音,為了讓單片機發(fā)出不同頻率的聲音,我們只需將定時器予置不同的定時值就可實現。圖4 按鍵電路設計四 軟件設計(一) 單片機發(fā)音原理1.音調的確定(二) 主要單元電路設計1. 晶振電路設計晶振電路如圖2所示圖2 晶振電路2. 復位電路設計復位電路如圖3所示,使兩片單片機芯片共用一個復位按鍵,相比互相獨立的兩個復位按鍵的單片機模塊更加便捷。通過軟件編程,編寫代碼燒寫到單片機芯片里,配合復位電路和晶振電路組成單片機最小系統(tǒng),晶振產生的頻率由單片機進行程序控制,得到想要的電信號頻率。所以選擇采用AT89S52作為主控制系統(tǒng)。存儲空間,同樣具有89C51的功能,且具有在線編程可擦除技術,當在對電路進行調試時,由于程序的錯誤修改或對程序的新增功能需要燒入程序時,不需要對芯片多次拔插,所以不會對芯片造成損壞。ROM;能以3V的超底壓工作;同時也與MCS51系列單片機完全該芯片內部存儲器為8KB存儲空間,能于3V的超低壓工作,而且與MCS51系列單片機完全兼容,但是運用于電路設計中時由于不具備ISP在線編程技術,ROM,內部具有4KB利用單片機片內存儲功能,通過軟件編程的方式,將一些曲目編寫在片內ROM里,通過按下控制鍵加普通按鍵,實現8個獨立按鍵的功能轉換。使之相比于單音電子琴能使旋律變得更加豐富。由于單片機程序執(zhí)行是按照順序執(zhí)行,所以本作品利用兩個單片機模塊,一個單片機模塊控制一個蜂鳴器,再用8個獨立按鍵作為鍵盤,當兩個不同按鍵被按下的時候,兩個蜂鳴器能幾乎同時發(fā)出這兩個聲音。復音的頻率用組成這個復音的基音的頻率來表示。2.能夠實現音樂盒的功能(二) 設計方案1. 關于電子琴的發(fā)聲原理本作品采用了用單片機模塊產生的頻率進行輸出,蜂鳴器作為輸入,蜂鳴器收到來自單片機控制端口的不同頻率的信號,會發(fā)出對應的聲音頻率,這就完成了從電信號轉換成聲音信號的過程。復音電子琴不僅能夠實現復音效果,還能成為一個音樂盒,這也是得益于單片機的強大功能。關鍵字:單片機,電子琴,STC90C51一 緒論 隨著科學技術的迅速發(fā)展,尤其是在電子領域上的發(fā)展,讓電器走進千家萬戶,越來越多的物件可以用電器用品代替,電子樂器漸漸代替?zhèn)鹘y(tǒng)樂器出現在眾人眼前,電子樂器相比于傳統(tǒng)樂器更輕便,也更加便宜,讓樂器走進千家萬戶,這次制作的核心在于單片機,單片機體積小,性能好,造價便宜?;?1單片機的復音電子琴課程設計劉匯鵬 課程組1班 指導老師:宋榮摘要:本設計是基于數字電路為基礎,以單片機技術為核心,軟件設計采用模塊化結構,采用C語言編程,通過按鍵控制,可以發(fā)出兩個不同的聲音,并實現音樂盒的功能。內容上首先描述系統(tǒng)硬件工作原理,介紹各個接口模塊的功能,而后介紹軟件上的各個功能模塊。并且能實現強大的功能。二 設計要求與方案(一) 設計要求1.能夠實現電子琴的復音功能。2. 關于電子琴的復音功能復音是指由許多純音組成的聲音。一般樂器發(fā)出的聲音都是復音。在空間中產生和弦效果。3. 關于音樂盒功能按下按鍵后能夠播放音樂。4. 關于單片機芯片的選擇方案一:采用89C51芯片作為硬件核心,采用FlashROM當在對電路進行調試時,由于程序的錯誤修改或對程序的新增功能需要燒入程序時,對芯片的多次拔插會對芯片造成一定的損壞。方案二: 采用AT89S52,片內ROM全都采用FlashROM三 硬件設計(一) 系統(tǒng)硬件概述1. 硬件電路設計框圖蜂鳴器單片機A單片機B蜂鳴器獨立按鍵圖1 硬件電路設計框圖2. 硬件電路設計概述硬件電路由兩片AT89C52單片機芯片為核心,接上復位電路,晶振電路,按鍵電路以及發(fā)聲電路組成的。通過兩個單片機控制端,使單片機能夠準確得到兩個按鍵信號,并使對應的蜂鳴器發(fā)聲。圖3 復位電路設計3. 按鍵電路設計 按鍵電路如圖4所示,使兩片單片機共同對獨立按鍵的信號進行實時掃描,讀取信號進行下一步操作。 音調就是我們常說的音高。那么怎樣確定一個頻率所對應的定時器的定時值呢? 以標準音高A為例:A=Hz,其對應的周期為:T1/==2272μs===μs這個時間t也就是單片機上定時器應有的中斷觸發(fā)時間。設振蕩器頻率為f0,則定時器的予置初值由下式來確定:t12THL)/216=因此定時器的高低計數器的初值為:=THL/=t*f0/12)256=%=TALL%256μs代入上面兩式(注意:計算時應將時間和頻率的單位換算一致)即可求出標準音高A在單片機晶振頻率f0=12Mhz,定時器在工作方式1下的時器高低計數器的予置初值為:TH440Hz(65536113612/12)==–*=如圖5所示:圖5 音符頻率表(二) 軟件流程圖軟件流程圖如圖6,圖7所示開始開始 N N 判斷是否有按鍵按下? 判斷是否有按鍵按下? Y Y 延時去抖 延時去抖 發(fā)出對應按鍵的聲音 發(fā)送標志位為1的命令 判斷標志位是否為1? 發(fā)出對應按鍵的聲音 N N 判斷是否松手 Y 結束圖6 電子琴流程圖開始 N 判斷控制位是否為1 Y N 判斷是否有按鍵按下 Y 播放音樂 結束 圖7 音樂盒程序流程圖(三) 程序代碼1. 主單片機程序代碼include unsigned char temp。unsigned char STH0。unsigned int code tab[]= //音符表{0,//DO DO RE RE MI FA FA SO SO LA LA SI63628,63731,63853,63928,64021,64103,64185,64260,64331,64400,64463,64524,64580,64633,64684,64732,64777,64820,64860,64898,64934,64968,64994,65030,65058,65085,65110,65134,65157,65178,65198,65217,652