版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課</b></p><p><b> 程</b></p><p><b> 設(shè)</b></p><p><b> 計(jì)</b></p><p><b> 報(bào)</b></p><p
2、><b> 告</b></p><p><b> 一、概述:</b></p><p> 本系統(tǒng)設(shè)計(jì)制作一個(gè)可演奏的電子琴。綜合應(yīng)用了兩項(xiàng)設(shè)計(jì):</p><p> ?。?)能產(chǎn)生純音,了解音調(diào)高低的控制方法,用鍵盤(pán)代替電子琴的鍵盤(pán),控制演奏音樂(lè)。</p><p> ?。?)演奏一支樂(lè)曲(天
3、空之城)。</p><p> 那音階要怎么使用C51單片機(jī)產(chǎn)生呢?C51在這項(xiàng)工作中運(yùn)用它哪些資源呢?我們?cè)趺磳?shí)現(xiàn)一個(gè)按鍵對(duì)應(yīng)一個(gè)音階呢?</p><p><b> 二、系統(tǒng)描述:</b></p><p> ?。?)我們從初中開(kāi)始就知道,聲音是由振動(dòng)產(chǎn)生的,基本的這7個(gè)音階的頻率之間滿(mǎn)足某種數(shù)學(xué)關(guān)系由低到高排列的自然音,所以我們可以通過(guò)改變
4、單片機(jī)輸出頻率就可以得到不同的音階;(2)為了得到精確的頻率(周期的倒數(shù)),我們可以使用C51單片機(jī)定時(shí)中斷模塊。(3)通過(guò)判斷按鍵是否被按下,然后執(zhí)行該按鍵按下時(shí)的函數(shù)(在程序中是改變T1的初值得到實(shí)現(xiàn))。</p><p> 需要注意的是,在該程序中讓8051的內(nèi)部定時(shí)器使其工作在計(jì)數(shù)器模式MODE1下,改變記數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法。例如頻率為523HZ,其周期T=1/523=1912微秒,因
5、此只要令計(jì)數(shù)器定時(shí)956/1=956在每記數(shù)9次時(shí)將I/O口反相,就可得到中音D0(523HZ)。</p><p> 記數(shù)脈沖值與頻率的關(guān)系公式如下:</p><p> N=Fi/2/Fr N:記數(shù)值</p><p> Fi:內(nèi)部計(jì)時(shí)一次為1微秒.故其頻率為1MHZ</p><p><b> Fr;要產(chǎn)生的頻率<
6、/b></p><p> 起記數(shù)值的求法如下:</p><p> T=65536-N=65536-Fi/2/Fr</p><p> 例如:設(shè)K=65536,F(xiàn)=1000000=Fi=1MHZ,求低音D0(523HZ),高音的D0(1046HZ)的記數(shù)值。</p><p> T=65536-N=65536-Fi/2/Fr=6553
7、6-1000000/2/Fr=65536-500000/Fr</p><p> 低音D0的T=65536-500000/262=63627</p><p> 中音D0的T=65536-500000/523=64580</p><p> 低音D0的T=65536-500000/1047=65059</p><p> 詳細(xì)的音階頻率與計(jì)數(shù)
8、初值可參考附錄一;</p><p><b> 三、電路設(shè)計(jì)</b></p><p> 1.單片機(jī)最小系統(tǒng)模塊</p><p> 2.三極管信號(hào)放大模塊</p><p> 揚(yáng)聲器發(fā)出對(duì)應(yīng)音符模塊如下:</p><p><b> 3.按鍵電路模塊:</b></p&
9、gt;<p><b> 四.程序設(shè)計(jì):</b></p><p> 本系統(tǒng)的程序流程圖如下:</p><p><b> 程序如下:</b></p><p> #include <reg51.h></p><p> #define uchar unsigned cha
10、r</p><p> #define uint unsigned int</p><p> sbit kongzhi=P1^1;</p><p> sbit fm=P1^0; //蜂鳴器輸出的IO口</p><p> uchar timeh,timel,i=8,t; //timeh,time
11、l為定時(shí)器高低4位,i為演奏音符個(gè)數(shù)</p><p> uchar code yinyue[]={</p><p> 0x63,0x71,0x83,0x71,0x82,0xA2,0x76,0x32,0x32,0x63,0x51,0x62,0x82,0x54,0x32,0x32,0x42,0x32,0x42,0x11,</p><p> 0x32,0x81,0x
12、81,0x81,0x73,0x41,0x41,0x71,0x74,0x63,0x71,0x83,0x71,0x82,0xA2,0x74,0x31,0x31,0x63,0x51,0x62,0x82,</p><p> 0x54,0x31,0x42,0x83,0x71,0x71,0x83,0x91,0x91,0xA1,0x82,0x83,0x71,0x61,0x61,0x72,0x51,0x66,0xff};<
13、;/p><p> //---------------------------簡(jiǎn)譜---------------------------------------</p><p> //1-7代表中音do~si,8代表高音do</p><p> uchar code yinfu[]={0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x81,0x
14、ff};</p><p> //----------------------------簡(jiǎn)譜音調(diào)對(duì)應(yīng)的定時(shí)器初值---------------------------</p><p> uchar code cuzhi[]={ 0xff,0xff, //占位符</p><p> 0xFC,0x44,0xFC,0xAD,0xF
15、D,0x0A,0xFD,0x34,0xFD,0x83,0xFD,0xC8,0xFE,0x06,</p><p> //中音do~si的T計(jì)數(shù)初值</p><p> 0xFE,0x22,0xFE,0x57,0xFE,0x85,0xFE,0x9B,0xFE,0xC2,0xFE,0xE4,0xFF,0x03}; //高音d
16、o的T計(jì)數(shù)初值</p><p> void delay1ms(unsigned int ms); //延時(shí)ms毫秒子程序</p><p> void delay165ms(uint z); //延時(shí)165ms,即1/4拍子程序</p><p> void keysong();
17、 //演奏子程序</p><p> int key();</p><p> void song();</p><p><b> main()</b></p><p> {kongzhi=1;</p><p> EA=1;
18、 //開(kāi)總中斷</p><p> ET0=1; //開(kāi)定時(shí)器0</p><p> TMOD=0x01; //定時(shí)器0工作在方式1</p><p><b> TH
19、0=0;</b></p><p><b> TL0=0;</b></p><p><b> TR0=1;</b></p><p><b> P3=0xff;</b></p><p><b> while(1)</b></p>
20、<p> {if(kongzhi==0){song();}</p><p><b> else{</b></p><p><b> key();</b></p><p> keysong();}</p><p><b> }</b></p>
21、<p><b> }</b></p><p> void song()</p><p><b> {</b></p><p> uint temp;</p><p> uchar jp; //jp是簡(jiǎn)譜1~8的變量</p&
22、gt;<p><b> t=0;</b></p><p><b> while(1)</b></p><p> {temp=yinyue[t];</p><p> if(temp==0xff) break; //到曲終則跳出循環(huán) </p>
23、<p> jp=temp/16; //取數(shù)的高4位作為音調(diào)</p><p><b> if(jp!=0)</b></p><p><b> {</b></p><p> timeh=cuzhi[jp*2];
24、 //取T的高4位值</p><p> timel=cuzhi[jp*2+1]; //取T的低4位值</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b&g
25、t;</p><p><b> TR0=0;</b></p><p> fm=1; //關(guān)蜂鳴器</p><p><b> }</b></p><p> delay165ms(temp%16);
26、 //取數(shù)的低4位作為節(jié)拍</p><p> TR0=0; //唱完一個(gè)音停10ms</p><p><b> fm=1;</b></p><p> delay1ms(10); </p><p><b> TR0=
27、1; </b></p><p><b> t++;</b></p><p><b> }</b></p><p><b> TR0=0;</b></p><p><b> fm=1;</b></p><p>&l
28、t;b> }</b></p><p> void timer0() interrupt 1 //定時(shí)器0溢出中斷子程序用于產(chǎn)生各種音調(diào)</p><p><b> {</b></p><p> TH0=timeh;</p><p> TL0=timel;</p>
29、<p> fm=~fm; //產(chǎn)生方波</p><p><b> }</b></p><p> void keysong()</p><p><b> {</b></p><p> uint temp;</p>&l
30、t;p> uchar jp; //jp是簡(jiǎn)譜1~8的變量</p><p><b> i=key();</b></p><p> delay1ms(50);</p><p><b> if(i!=8)</b></p><p><b&g
31、t; {TR0=1;</b></p><p> temp=yinfu[i];</p><p> jp=temp/16; //取數(shù)的高4位作為音調(diào)</p><p><b> if(jp!=0)</b></p><p><b>
32、{</b></p><p> timeh=cuzhi[jp*2]; //取T的高4位值</p><p> timel=cuzhi[jp*2+1]; //取T的低4位值</p><p><b> }</b></p><
33、p><b> else</b></p><p><b> {</b></p><p><b> TR0=0;</b></p><p> fm=1; //關(guān)蜂鳴器</p><p><b&
34、gt; }</b></p><p> delay165ms(temp%16); //取數(shù)的低4位作為節(jié)拍</p><p> TR0=0; //唱完一個(gè)音停10ms</p><p><b> fm=1;</b>&l
35、t;/p><p> delay1ms(10); </p><p><b> //TR0=1;</b></p><p><b> //i++;</b></p><p><b> }</b></p><p><b> TR0=0;</b
36、></p><p><b> fm=1;</b></p><p><b> }</b></p><p><b> int key()</b></p><p> {switch(P2)</p><p><b> {</b&
37、gt;</p><p> case 0xfe: return 0;</p><p> case 0xfd: return 1;</p><p> case 0xfb: return 2;</p><p> case 0xf7: return 3;</p><p> case 0xef: return
38、 4;</p><p> case 0xdf: return 5;</p><p> case 0xbf: return 6;</p><p> case 0x7f: return 7;</p><p> default: return 8;</p><p><b> }</b>
39、</p><p><b> }</b></p><p> //函數(shù)名:delay165ms</p><p> //函數(shù)功能:采用軟件實(shí)現(xiàn)延時(shí)約z*165ms</p><p><b> //形式參數(shù):無(wú) </b></p><p><b> //返回值:無(wú)&l
40、t;/b></p><p> void delay165ms(uint z) //延時(shí)165ms,即1/4拍</p><p><b> {uint x;</b></p><p> for(x=0;x<z;x++)</p><p> delay1m
41、s(165);</p><p><b> }</b></p><p> //函數(shù)名:delay1ms</p><p> //函數(shù)功能:采用軟件實(shí)現(xiàn)延時(shí)約ms*1ms</p><p><b> //形式參數(shù):無(wú) </b></p><p><b> //返回值
42、:無(wú)</b></p><p> void delay1ms(unsigned int ms)</p><p> { unsigned int i,j;</p><p> for(j=0;j<ms;j++)</p><p> for(i=0;i<0x100;i++);</p><p>&
43、lt;b> }</b></p><p><b> 五.制作與調(diào)試:</b></p><p><b> 最后制作出的成品:</b></p><p><b> 六.測(cè)試結(jié)果。</b></p><p> 該成品外觀(guān)雖然不夠美觀(guān),但是播放音樂(lè)功能,一個(gè)按鍵對(duì)
44、應(yīng)一個(gè)音階的功能十分到位??偟膩?lái)說(shuō),對(duì)于該成品老師和同學(xué)達(dá)成了同一共識(shí):雖然丑了點(diǎn),但很“溫柔”(聲音較?。?lt;/p><p><b> 七.結(jié)論。</b></p><p> 本次綜合設(shè)計(jì)主要涉及硬件和軟件兩方面的內(nèi)容,通過(guò)這次課程,我的硬件和軟件開(kāi)發(fā)能力都獲得了提高。首先硬件方面,更加熟悉了51單片機(jī)的結(jié)構(gòu)以及它的實(shí)用,基本了解了電子產(chǎn)品的開(kāi)發(fā)流程和所要做的工作
45、。 通過(guò)課程設(shè)計(jì),我學(xué)到了很多,這些不僅僅局限于鞏固復(fù)習(xí)了課本上知識(shí)點(diǎn),還鍛煉了自己分析問(wèn)題以及動(dòng)手實(shí)際操作的能力,將以前學(xué)過(guò)的零散的知識(shí)串到一起,學(xué)以致用。本系統(tǒng)基本上實(shí)現(xiàn)了按下鍵盤(pán),揚(yáng)聲器播放對(duì)應(yīng)的音符,同時(shí)單個(gè)程序也能播放歌曲,不足之處在于不能將按鍵和播放音樂(lè)的程序不能完美融合,只能在一定范圍內(nèi)滿(mǎn)足按鍵或播放歌曲一種需要,且播放的聲音太小,放大電路的選擇方面的工作做得不是很好。</p><p><b&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c51單片機(jī)課程設(shè)計(jì)——電子琴
- 51單片機(jī)課程設(shè)計(jì)--簡(jiǎn)易電子琴
- c51課程設(shè)計(jì)電子琴
- 58.基于c51單片機(jī)電子琴設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于51單片機(jī)的簡(jiǎn)易電子琴
- c51單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---電子琴
- 單片機(jī)課程設(shè)計(jì)(電子琴)
- c51單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-電子琴
- 單片機(jī)課程設(shè)計(jì)——電子琴
- 基于51單片機(jī)簡(jiǎn)易電子琴的課程設(shè)計(jì)
- 電子琴課程設(shè)計(jì)--基于單片機(jī)的電子琴設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---電子琴設(shè)計(jì)
- 單片機(jī)簡(jiǎn)易電子琴單片機(jī)課程設(shè)計(jì)
- 電子琴課程設(shè)計(jì)--基于單片機(jī)的電子琴設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---電子琴設(shè)計(jì)
- 電子琴課程設(shè)計(jì)-- 基于單片機(jī)的電子琴設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)簡(jiǎn)易電子琴
- 簡(jiǎn)易電子琴單片機(jī)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論