版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 單片機(jī)原理及系統(tǒng)課程設(shè)計</p><p> 專 業(yè): 自動控制 </p><p> 班 級: </p><p> 姓 名: </p><p> 學(xué) 號: </p><p> 2014 年 1
2、月 15 日</p><p> 評語:</p><p> 考勤10分守紀(jì)10分過程30分設(shè)計報告30分答辯20分總成績(100分)</p><p> 基于單片機(jī)的多音階電子琴的設(shè)計</p><p><b> 1 設(shè)計題目</b></p><p> 本次單片機(jī)原理與系統(tǒng)課程設(shè)計題目是基于單片機(jī)
3、的多音階電子琴。主要將十個音鍵制作成獨立鍵盤,并用數(shù)碼管進(jìn)行顯示。本設(shè)計還預(yù)先存放一段音樂程序在芯片內(nèi),整個設(shè)計既可以作電子琴用又可以作音樂盒用,且?guī)э@示功能。</p><p><b> 2 設(shè)計目的</b></p><p> 1、通過課程設(shè)計,使我們能夠深入理解單片機(jī)系統(tǒng)的工作原理,接口電路的設(shè)計及調(diào)試方法,培養(yǎng)綜合運用所學(xué)理論知識分析和解決實際問題的能力;&l
4、t;/p><p> 2、使用AT89C52芯片的串口功能,利用獨立式鍵盤和AT89C52單片機(jī)以及揚聲器實現(xiàn)樂曲的演奏;</p><p> 3、用keil軟件進(jìn)行編程與調(diào)試,利用Proteus 7 Professional軟件進(jìn)行繪制硬件電路圖且進(jìn)行仿真.</p><p><b> 3 設(shè)計方案及原理</b></p><p
5、> 3.1 總體設(shè)計方案</p><p> 采用AT89C52單片機(jī)作為主控芯片,設(shè)置鍵盤、蜂鳴器等外圍器件,另外還用到一些簡單器件如:四位數(shù)碼管和NPN型三極管及電阻等。利用按鍵實現(xiàn)音符和音調(diào)的輸入,兩位的數(shù)碼管進(jìn)行被操作的按鍵顯示,用NPN型三極管8550實現(xiàn)低音頻功率放大,最后用蜂鳴器發(fā)音。</p><p> 3.2系統(tǒng)原理及結(jié)構(gòu)</p><p>
6、 本系統(tǒng)基本結(jié)構(gòu)框圖如圖1所示。</p><p><b> 圖1 原理框圖</b></p><p><b> 4 硬件設(shè)計</b></p><p><b> 4.1時鐘電路 </b></p><p> 單片機(jī)內(nèi)部具有一個高增益反相放大器,用于構(gòu)成振蕩器。通常在引腳XT
7、ALl和XTAL2跨接石英晶體和兩個補(bǔ)償電容構(gòu)成自激振蕩器,如結(jié)構(gòu)圖2 中X1、C1、C2。</p><p><b> 圖 2 時鐘電路</b></p><p><b> 4.2復(fù)位電路 </b></p><p> 單片機(jī)系統(tǒng)常采用上電自動復(fù)位和手動按鍵復(fù)位兩種方式實現(xiàn)系統(tǒng)的復(fù)位操作。上電復(fù)位要求接通電源后,自動實現(xiàn)
8、復(fù)位操作。手動復(fù)位要求在電源接通的條件下,在單片機(jī)運行期間,用按鈕開關(guān)操作使單片機(jī)復(fù)位。其結(jié)構(gòu)如圖3所示。</p><p><b> 圖 3 復(fù)位電路</b></p><p><b> 4.3顯示部分</b></p><p> 本次課程設(shè)計的顯示電路采用兩位數(shù)碼管進(jìn)行顯示。如圖4所示。</p><
9、p><b> 圖 4 數(shù)碼管電路</b></p><p> 4.4 按鍵與發(fā)音部分</p><p> 鍵盤設(shè)計:獨立式按鍵是直接用I/O口線構(gòu)成的單個按鍵電路,其特點是每個按鍵單獨占用一根I/O口線,每個按鍵的工作不會影響其它I/O口線的狀態(tài)。獨立式鍵盤如圖5所示。</p><p><b> 圖 5 獨立式鍵盤</
10、b></p><p> 發(fā)音部分設(shè)計:有一個按鍵和揚聲器組成。電路如圖6所示。</p><p> 圖 6 發(fā)音部分電路</p><p><b> 5 軟件設(shè)計</b></p><p><b> 5.1 系統(tǒng)分析</b></p><p> 系統(tǒng)的軟件組成:(1)
11、鍵盤掃描程序:檢測是否有按鍵按下,有按鍵按下則記錄按下鍵的鍵值,并跳轉(zhuǎn)至功能轉(zhuǎn)移程序,無按鍵按下,則返回鍵盤掃描程序繼續(xù)檢測。</p><p> ?。?)功能轉(zhuǎn)移程序:對檢測到的按鍵值進(jìn)行判斷,是琴鍵則跳轉(zhuǎn)至琴鍵處理程序,是功能鍵則跳轉(zhuǎn)至相應(yīng)的功能程序。</p><p> ?。?)琴鍵處理程序:根據(jù)檢測到的按鍵值,查詢音調(diào)表,給計時器賦值,使發(fā)出相應(yīng)頻率的聲音。</p>&l
12、t;p> (4)自動播放歌曲程序:檢測到按鍵按下的是自動播放歌曲功能鍵后執(zhí)行該程序,電子琴會自動播放事先已經(jīng)存放的歌曲。</p><p> 系統(tǒng)總體流程圖見附錄1。</p><p><b> 5.2程序設(shè)計</b></p><p> C編程語言程序見附錄2。</p><p> 6 系統(tǒng)仿真及實際調(diào)試<
13、;/p><p><b> 6.1 仿真結(jié)果</b></p><p> 仿真結(jié)果如圖7所示。</p><p><b> 圖7 系統(tǒng)仿真圖</b></p><p><b> 6.2結(jié)果分析</b></p><p> 根據(jù)仿真結(jié)果可知,本次課程設(shè)計能夠
14、準(zhǔn)確并徹底的完成設(shè)計要求。右側(cè)數(shù)碼管顯示0、1、2三種結(jié)果時,分別代表低音、中音和高音。右側(cè)數(shù)碼管顯示1、2、3、4、5、6、7七個數(shù)字時,分別代表DO、RE、MI、FA、SO、LA、SI七種音符。當(dāng)系統(tǒng)上電后,若按下低音鍵,則選定工作方式為低音模式。P0口連接數(shù)碼管段選端,右側(cè)數(shù)碼管顯示的3即代表MI。四位數(shù)碼管即代表低音MI。</p><p><b> 7 總結(jié)</b></p&g
15、t;<p> 本次課程設(shè)計主要涉及硬件和軟件兩方面的內(nèi)容,通過這些使我的硬件和軟件開發(fā)能力都獲得了提高。硬件方面,基本了解了電子產(chǎn)品的開發(fā)流程和所要做的工作。通過硬件搭建的過程,使我對52系列單片機(jī)的接口有了更深層次的理解,熟悉了一些單片機(jī)常用的外圍電路引腳和連接方法,如LED數(shù)碼管,鍵盤等。在軟件方面,我的能力比較差,為了很好地完成軟硬件結(jié)合,我努力學(xué)習(xí)52系列單片機(jī)內(nèi)部的寄存器和編程規(guī)則以及學(xué)習(xí)了如何控制外圍電路等內(nèi)
16、容。通過此次設(shè)計我發(fā)現(xiàn)自己對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,因此也利用圖書館、網(wǎng)絡(luò)資源查閱了大量文獻(xiàn)資料,也請教了老師和同學(xué)。本次課程設(shè)計是我學(xué)到了很多,一方面,將自己的理論知識與實踐相結(jié)合起來,進(jìn)一步鞏固了專業(yè)基礎(chǔ)知識和相關(guān)專業(yè)課程知識;另一方面,更培養(yǎng)了自己獨立自主、綜合分析的思維與創(chuàng)新能力。</p><p> 最后,衷心的感謝各位老師和同學(xué)的精心指導(dǎo),使我能夠順利地完成本次課程設(shè)計。<
17、;/p><p><b> 參考文獻(xiàn)</b></p><p> [1]蘇家健,曹柏榮,汪志鋒. 單片機(jī)原理及應(yīng)用技術(shù). 北京:高等教育出版社,2003</p><p> [2]李朝青. 單片機(jī)原理及接口技術(shù). 北京:北京航天航空大學(xué)出版色,2001</p><p> [3]胡漢才. 單片機(jī)原理及其接口技術(shù). 北京:清華
18、大學(xué)出版社,2004.</p><p> [4]潭浩強(qiáng). C語言程序設(shè)計. 北京:清華大學(xué)出版社,2005</p><p> [5]王思明,張金敏,張鑫等,單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計[M].北京:科學(xué)出版社,2012.</p><p> 附錄1 系統(tǒng)總體流程圖</p><p> 附錄 2 源程序代碼</p><p
19、> #include<reg52.h> </p><p> #define uchar unsigned char</p><p> void Run(void);</p><p> void KeyScan(void); </p><p> void PlayKey(void); </p><
20、p> void delay_1ms(uchar i); </p><p> void PlayMusic(void); </p><p> void DisPlay(void);</p><p> sbit Beep=P3^7; </p><p> uchar Th0,Tl0; //TH0,TL
21、0 </p><p> uchar flag=0xff; //模式,0表示音樂,ff表示按鍵</p><p> uchar key=0; //按鍵代號 </p><p> uchar a; uchar gaodi=0; //音樂音符 </p><p>
22、uchar code MusicCode[]={0XFc,0X44,0XFc,0Xac,0XFd,0X09,0XFd,0X34, </p><p> 0XFD,0X82,0XFD,0Xc8,0XFD,0X06,0XFb,0X04, </p><p> 0Xfb,0X90,0Xfc,0X0c,0Xfe,0X22,0Xf9,0X5b,0Xfa,0x15 };
23、 //月亮代表我的心 </p><p> uchar code Music[]={</p><p> 0X02,0X82, </p><p> 0X16,0X32,0X54,0X02,0X52, </p><p> 0XA6,0X32,0X54,0X02,0X52,</p><p>
24、 0X64,0X74,0XB6,0X64,</p><p> 0X52,0X5C,0X32,0X22, </p><p> 0X16,0X12,0X14,0X32,0X22, </p><p> 0X16,0X12,0X14,0X22,0X32, </p><p> 0X26,0X12,0X94,0X22,0X32, </p&
25、gt;<p><b> 0X2C, </b></p><p> 0X32,0X52, </p><p> 0X36,0X22,0X14,0X54, </p><p> 0XAC,0X92,0XA2,</p><p> 0X96,0X0A2,0X96,0X82, </p><p&
26、gt; 0X3C,0X54,</p><p> 0X36,0X22,0X14,0X54, </p><p> 0XAC,0X92,0XA2,</p><p> 0X16,0X12,0X14,0X22,0X32, </p><p> 0X2C,0X02,0X82, </p><p> 0X16,0X32,0X
27、56,0X12, </p><p> 0XA6,0X32,0X56,0X52,</p><p> 0X66,0X72,0XB6,0X62,</p><p> 0X62,0X52,0X58,0X32,0X22,</p><p> 0X16,0X12,0X14,0X32,0X22,</p><p> 0X16,0
28、X12,0X14,0X22,0X32, </p><p><b> 0X1C,</b></p><p><b> 0XFF};</b></p><p><b> //按鍵音符</b></p><p> uchar code KeyCode[]={0XFF,0XFF, &
29、lt;/p><p> 0xF8,0x8B,0xF9,0x5B,0xFA,0x14,0xFA,0x66,0xFB,0x03,0xFB,0x8F,0xFC,0x0B,//低音 </p><p> 0xFC,0x43,0xFC,0xAB,0xFD,0x08,0xFD,0x33,0xFD,0x81,0xFD,0xC7,0xFE,0x05,//中音 </p><p> 0x
30、FE,0x21,0xFE,0x55,0xFE,0x84,0xFE,0X99,0XFE,0xC0,0xFE,0xE3,0xFF,0x02,//高音</p><p><b> }; </b></p><p> void main(void) </p><p><b> {</b></p><p>
31、 P1=0XFF; //初始化 </p><p><b> P0=0XFF; </b></p><p><b> P2=0;</b></p><p> TMOD=0X01; </p><p><b> IT0=1;</b>&
32、lt;/p><p><b> TR0=0; </b></p><p><b> EX0=1; </b></p><p><b> ET0=1; </b></p><p><b> EA=1; </b></p><p>
33、 while(1) </p><p><b> { </b></p><p> KeyScan(); //按鍵掃描 </p><p> Run(); //運行 </p><p> DisPlay();
34、 //顯示 </p><p><b> }</b></p><p><b> }</b></p><p> void Run(void) //運行 </p><p><b> {</b></p>&
35、lt;p> if(flag==0) </p><p> PlayMusic(); </p><p> else PlayKey();</p><p><b> } </b></p><p> void KeyScan(void) //按鍵掃描 </p><p
36、> { if(P1==0XFE) //第一按鍵按下 </p><p> { delay_1ms(12); //延時12MS </p><p> if(P1==0XFE) //確定按下 </p><p> {key=1; a=key;</p><p
37、><b> }</b></p><p><b> } </b></p><p> else if(P1==0XFD)</p><p><b> { </b></p><p> delay_1ms(12);</p><p> if(P1
38、==0XFD) </p><p> {key=2; a=key;} </p><p><b> } </b></p><p> else if(P1==0XFB) </p><p><b> { </b></p><p> delay_1ms(12);
39、</p><p> if(P1==0XFB) </p><p><b> {key=3; </b></p><p><b> a=key;}</b></p><p><b> } </b></p><p> else if(P1==0X
40、F7) </p><p><b> {</b></p><p> delay_1ms(12);</p><p> if(P1==0XF7)</p><p><b> {key=4; </b></p><p><b> a=key;}</b>
41、</p><p><b> } </b></p><p> else if(P1==0XEF) </p><p><b> {</b></p><p> delay_1ms(12);</p><p> if(P1==0XEF)</p><p>
42、;<b> {key=5; </b></p><p><b> a=key;}</b></p><p><b> }</b></p><p> else if(P1==0XDF)</p><p><b> {</b></p><
43、;p> delay_1ms(12);</p><p> if(P1==0XDF)</p><p><b> {key=6;</b></p><p><b> a=key;}</b></p><p><b> }</b></p><p>
44、 else if(P1==0XBF)</p><p><b> {</b></p><p> delay_1ms(12);</p><p> if(P1==0XBF)</p><p><b> {key=7;</b></p><p><b> a=key;
45、}</b></p><p><b> }</b></p><p> else if(P0==0XFE) //低音模式鍵按下</p><p> { delay_1ms(12); </p><p> if(P0==0XFE)</p><p><b
46、> {gaodi=0;</b></p><p><b> a=gaodi;}</b></p><p><b> } </b></p><p> else if(P0==0XFD) //中音模式鍵按下 </p><p><b> {
47、 </b></p><p> delay_1ms(12);</p><p> if(P0==0XFD)</p><p> {gaodi=1; </p><p><b> a=gaodi;}</b></p><p><b> } </b></p>
48、;<p> else if(P0==0XFB) //高音模式鍵按下 </p><p><b> { </b></p><p> delay_1ms(12);</p><p> if(P0==0XFB)</p><p> {gaodi=2; </p>
49、<p><b> a=gaodi;}</b></p><p><b> }</b></p><p> else return;</p><p><b> } </b></p><p> void PlayKey(void)
50、 //響應(yīng)按鍵</p><p><b> { </b></p><p> if(key==0)</p><p><b> return;</b></p><p><b> else</b></p><p><b> {<
51、;/b></p><p> Th0=KeyCode[gaodi*14+key*2];</p><p> Tl0=KeyCode[gaodi*14+key*2+1];</p><p> TR0=1; delay_1ms(187);</p><p> TR0=0; key=0;</p><p><
52、;b> }</b></p><p><b> }</b></p><p> time0() interrupt 1 //定時器0中斷</p><p><b> { </b></p><p><b> TH0=Th0;<
53、;/b></p><p><b> TL0=Tl0;</b></p><p> Beep=~Beep;</p><p><b> }</b></p><p> void interrupt0() interrupt 0 //外部中斷0</p>&l
54、t;p><b> {</b></p><p> flag=~flag;</p><p> if(flag==0)</p><p><b> {</b></p><p><b> a=8;</b></p><p><b> P2
55、=0;</b></p><p><b> } </b></p><p><b> }</b></p><p> void delay_1ms(uchar i) //延時 </p><p><b> {</b></p&g
56、t;<p> uchar j,k;</p><p> for(j=0;j<i;j++)</p><p> for(k=0;k<148;k++)</p><p><b> ; </b></p><p><b> }</b></p><p>
57、 void PlayMusic(void) //播放音樂</p><p> { uchar yinfu,jiepai;</p><p> uchar i,j;</p><p> for(i=0;Music[i]!=0XFF;i++)</p><p><b> {</b>&l
58、t;/p><p> yinfu=(Music[i]>>4);</p><p> jiepai=(Music[i]&0X0F);</p><p> if(yinfu==0)</p><p><b> continue;</b></p><p> Th0=MusicCode[
59、(yinfu-1)*2];</p><p> Tl0=MusicCode[(yinfu-1)*2+1];</p><p><b> TR0=1;</b></p><p> for(j=jiepai;j>0;--j)</p><p><b> {</b></p><p
60、> delay_1ms(250);</p><p><b> }</b></p><p><b> TR0=0;</b></p><p> if(flag!=0)</p><p><b> break;</b></p><p><b
61、> }</b></p><p><b> }</b></p><p> void DisPlay(void) //顯示</p><p><b> {</b></p><p><b> switch(a)</b>
62、</p><p><b> { </b></p><p> case 0: P2= 0X3F;break;</p><p> case 1: P2= 0X06;break;</p><p> case 2: P2= 0X5B;break;</p><p> case 3: P2= 0X4
63、F;break; </p><p> case 4: P2= 0X66;break;</p><p> case 5: P2= 0X6D;break;</p><p> case 6: P2= 0X7D;break;</p><p> case 7: P2= 0X07;break;</p><p> defa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子琴課程設(shè)計--基于單片機(jī)的電子琴設(shè)計
- 電子琴課程設(shè)計-- 基于單片機(jī)的電子琴設(shè)計
- 基于單片機(jī)的電子琴課程設(shè)計報告
- 單片機(jī)課程設(shè)計報告--電子琴
- 基于單片機(jī)的電子琴課程設(shè)計報告
- 單片機(jī)課程設(shè)計—基于單片機(jī)的電子琴
- 基于單片機(jī)的電子琴課程設(shè)計
- 單片機(jī)課程設(shè)計---基于單片機(jī)的電子琴設(shè)計
- 基于單片機(jī)的電子琴課程設(shè)計
- 單片機(jī)課程設(shè)計---電子琴
- 單片機(jī)課程設(shè)計(電子琴)
- 單片機(jī)課程設(shè)計-電子琴
- 單片機(jī)課程設(shè)計——電子琴
- 單片機(jī)原理課程設(shè)計報告--電子琴
- 基于單片機(jī)的電子琴設(shè)計課程設(shè)計
- 單片機(jī)課程設(shè)計---電子琴設(shè)計
- 單片機(jī)簡易電子琴單片機(jī)課程設(shè)計
- 單片機(jī)電子琴課程設(shè)計--基于單片機(jī)的可存儲式電子琴設(shè)計
- 單片機(jī)課程設(shè)計---電子琴設(shè)計
- 單片機(jī)課程設(shè)計報告---簡單電子琴設(shè)計
評論
0/150
提交評論