版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、第 屆電子設計大賽論文單片機音樂發(fā)生器組長: 組員: - 25 -目 錄1、系統(tǒng)方案- 2 -1.1、方案比較與選擇- 2 -1.1.1、單片機選擇與論證- 2 -1.1.2、功放選擇與論證- 2 -1.1.3、顯示器件選擇與論證- 2 -1.1.4、鍵盤形式選擇與論證- 3 -1.1.5、材料選擇與論證- 3 -2、理論分析與計算- 3 -2.1、聲音播放的原理- 3 -2.1.1、普通聲音產(chǎn)生原理. - 3 -2.1.2、音樂產(chǎn)生原理.- 4 -2.2、音符節(jié)拍處理- 5 -3、電路與程序設計- 6 -3.1、電路的設計- 6 -3.1.1、總體框圖設計- 6 -3.1.2、時鐘電路設計-
2、 6 -3.1.3、復位電路設計- 7 -3.1.4、按鍵電路設計- 7 -3.1.5、顯示電路設計- 8 -3.1.6、揚聲器電路設計- 9 -3.2、程序設計.- 10 -3.2.1、系統(tǒng)整體流程圖- 10 -3.2.2、鍵盤子程序流程圖- 10 -3.2.3、液晶顯示子程序流程圖- 11 -4、測試方案與測試結(jié)果- 12 -4.1、測試方案- 12 -4.2、測試結(jié)果- 12 -4.3、測試分析- 13 -附錄- 13 -附錄1:電路原理圖- 13 -附錄2:部分源程序- 14 -1、系統(tǒng)方案1.1、方案比較與選擇1.1.1、單片機選擇與論證方案一:8051單片機。8051內(nèi)部包含一個8
3、位CPU,128BRAM,4KBROM,21個特殊功能寄存器,4個8位并行I/O口,一個全雙工串行口,2個16位定時器、計數(shù)器,5個中斷源。方案二:SST單片機。SST單片機省去了開發(fā)用的編程器和仿真器。省去了外部EEPROM、電壓監(jiān)控芯片、上電復位電路和5個UART的擴展芯片。它自帶在線下載和在線仿真功能,帶有5路PCA模塊(主成分分析),PCA功能比普通單片機有更強的計時性。利用PCA的脈沖寬度調(diào)制(PWM)模式可產(chǎn)生一個8位PWM。方案三:AT89C52單片機。AT89C52是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS位單片機,片內(nèi)含4k字節(jié)的可反復擦寫1000次的只讀程序存儲器(P
4、EROM)和128字節(jié)的隨機存取數(shù)據(jù)存儲器(RAM),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲單元?;趯δ荦R全性的考慮,我們采用方案三。1.1.2、功放選擇與論證方案一:LM386。LM386是一種音頻集成功放,具有自身功耗低、更新內(nèi)鏈增益可調(diào)整、電源電壓范圍大和總諧波失真小等優(yōu)點的功率放大器。方案二:NPN型三極管。集電極電流受基極電流的控制,并且基極電流很小的變化,會引起集電極電流很大的變化,且變化滿足一定的比例關系。出于對市場供應情況和價格方面的考慮,我們采用方案一。1.1.3、顯示器件選擇與論證方案一:數(shù)碼管。數(shù)碼管顯示能在低電壓、小電流條件下驅(qū)動發(fā)光,能與CMOS、IT
5、L電路兼容。發(fā)光響應時間極短(30秒。發(fā)揮部分(1):能播放指定曲目。發(fā)揮部分(2):具有鍵盤,可現(xiàn)場編曲并播放。發(fā)揮部分(3):具有液晶顯示功能,可顯示簡譜。發(fā)揮部分(4):可將簡譜轉(zhuǎn)換成顯示五線譜。4.2、測試結(jié)果4.2.1、仿真測試通過Keil和Proteus仿真,在播放Do,Re,Mi,Fa,So,La,Xi,Do等待兩秒后,可以聽到自選歌曲和指定曲目,LCD顯示歌曲信息。按下控制鍵后,進入編曲模式,7個獨立鍵盤分別代表七個音符,可現(xiàn)場編曲。同時,數(shù)碼管顯示每個按鍵代表的數(shù)字。如圖13所示,為數(shù)碼管仿真結(jié)果。 圖134.2.2、成品測試 通過對成品進行調(diào)試實驗,所得到的結(jié)果與仿真結(jié)果相
6、同。4.3、測試分析由測試結(jié)果可以看出,成品滿足基本要求和發(fā)揮部分的部分要求。附錄附錄1:電路原理圖附錄2:部分源程序#include#include #defineuchar unsigned char#define uint unsigned int #define LCDPORT P0#define E P31#define RW P33#define DI P34#define CS1 P36#define CS2 P35#define BUSYSTATUS P07#define LCDSTARTROW 0xc0#define LCDPAGE 0xB8#define LCDLINE 0
7、x40void Run(void);/主程序void KeyScan(void);/ 按鍵void PlayKey(void); /按鍵程序void delay_1ms(uchar i);/延時1msvoid PlayMusic1(void); / 播放12345671void PlayMusic(void); /播放同一首歌void PlayMusic2(void); /播放規(guī)定曲目1void DisPlay(void);/ 數(shù)碼管/void lcd_init(void); /lcd初始化void init_com(void);void sound_delay(uchar n);void t
8、imer0(void);uchar code hz1;/*一系列變量*/sbit Beep=P27;/sbit busy=P01;ucharTh0,Tl0;ucharflag=0;/模式,0表示音樂,1表示按鍵ucharkey=0;/按鍵代號uchara;uchargaodi=0;/uchar data count=0;/uint counter=0;/12345671的頻率uchar code SONG_TONE=115,102,91,86,77,68,61,0;/12345671的節(jié)拍uchar code SONG_LONG=17,18,20,21,23,25,28,0; /*比賽規(guī)定曲目
9、*/魂斗羅 赤色要塞uchar code SONG_TONE2=34,38,45,51,45,51,57,61, 57,61,68,77,68,102,91,77, 68,68,45,51,45,43,38, 68,68,45,51,45,43,57, 68,68,45,51,45,43,38, 68,68,45,51,45,43,57,0;/魂斗羅的節(jié)拍uchar code SONG_LONG2=13,12,10,9,10,9,8,28, 8,7,6,6,6,5,5,6, 35,13,10,9,19,11,85, 35,13,10,9,19,11,68, 35,13,10,9,19,11,8
10、5, 35,13,10,9,19,11,68,0; /*同一首歌的源代碼*/uchar codeMusic=0Xef,0Xef, 0X88,0X14,0X24,0X36,0X42,0X34,0X14,0X28,0X14,0X94,0X1f,0X88,0X14,0X24,0X34,0X32,0X42,0X54,0X14,0X46,0X32,0X54,0X22,0X32,0X32,0X22,0X2C,0X38,0X54,0X74,0X76,0X62,0X68,0X54,0X52,0X62,0X74,0X62,0X52,0X3f,0X46,0X42,0X54,0X64,0X54,0X42,0X32,
11、0X28,0X0a4,0Xa2,0X92,0X84,0X94,0X1f,0Xb8,0X68,0X46,0X52,0X68,0X74,0X72,0X72,0X74,0X62,0X52,0X3f,0Xb8,0X68,0X46,0X52,0X68,0X64,0X62,0X62,0X64,0X42,0X32,0X2f,0X58,0X14,0X24,0X36,0X42,0X34,0X12,0X12,0X26,0X22,0X24,0X22,0X12,0X94,0X9c,0Xa8,0Xa6,0X92,0X84,0X64,0X54,0X22,0X22,0X46,0X42,0X44,0X32,0X22,0X5f
12、,0Xef,0Xef,0xFF,/按鍵音符ucharcodeKeyCode =0XFF,0XFF,0xF8,0x8B,0xF9,0x5B,0xFA,0x14,0xFA,0x66,0xFB,0x03,0xFB,0x8F,0xFC,0x0B,/低音0xFC,0x43,0xFC,0xAB,0xFD,0x08,0xFD,0x33,0xFD,0x81,0xFD,0xC7,0xFE,0x05,/中音0xFE,0x21,0xFE,0x55,0xFE,0x84,0xFE,0X99,0XFE,0xC0,0xFE,0xE3,0xFF,0x02,/高音;/功能程序void Run(void)if(flag=0)Pl
13、ayMusic1(); /12345671PlayMusic(); /同一首歌PlayMusic2();/魂斗羅elsePlayKey();void KeyScan(void)/按按鍵1-7,數(shù)碼管的顯示if(P1=0X7f)/如果P1.7=0delay_1ms(5);if(P1=0X7f)gaodi+;if(gaodi2)gaodi=0;a=gaodi;else if(P1=0XFE)delay_1ms(12);if(P1=0XFE)key=1;a=key;else if(P1=0XFD)delay_1ms(12);if(P1=0XFD)key=2;a=key;else if(P1=0XFB
14、)delay_1ms(12);if(P1=0XFB)key=3;a=key;else if(P1=0XF7)delay_1ms(12);if(P1=0XF7)key=4;a=key;else if(P1=0XEF)delay_1ms(12);if(P1=0XEF)key=5;a=key; else if(P1=0XDF)delay_1ms(12);if(P1=0XDF)key=6;a=key;else if(P1=0XBF)delay_1ms(12);if(P1=0XBF)key=7;a=key;elsereturn;void PlayKey(void)if(key=0)return;else
15、Th0=KeyCodegaodi*14+key*2;Tl0=KeyCodegaodi*14+key*2+1;TR0=1;delay_1ms(187);TR0=0;key=0;time0() interrupt 1 /定時器0中斷TH0=Th0;TL0=Tl0;Beep=Beep;void interrupt0() interrupt 0 /外部終端0flag=flag;if(flag=0)a=8;P2=0;/延時1msvoid delay_1ms(uchar i)uchar j,k;for(j=0;ji;j+)for(k=0;k148;k+); /*播放音樂主程序*/12345671void
16、PlayMusic1(void) uint i=0; uint j,k; while(SONG_LONGi!=0|SONG_TONEi!=0) /播放各個音符,SONG_LONG 為拍子長度 for(j=0;jSONG_LONGi*30;j+) Beep=Beep; /SONG_TONE 延時表決定了每個音符的頻率 for(k=0;k4);jiepai=(Musici&0X0F);if(yinfu=0)continue;Th0=MusicCode(yinfu-1)*2;Tl0=MusicCode(yinfu-1)*2+1;TR0=1;for(j=jiepai;j0;-j)delay_1ms(1
17、50);/調(diào)歌曲快慢:187(越大越慢) TR0=0;if(flag!=0)break;void PlayMusic2(void) uint i=0; uint j,k; while(SONG_LONG2i!=0|SONG_TONE2i!=0) /播放各個音符,SONG_LONG 為拍子長度 for(j=0;jSONG_LONG2i*30;j+) Beep=Beep; /SONG_TONE 延時表決定了每個音符的頻率 for(k=0;k0 ;n-)for ( i=500; i0 ; i-);bit bCheckBusy () LCDPORT=0xff; RW = 1; DI=0; E=1; E
18、=0; return BUSYSTATUS ;void vWriteData (unsigned char ucData) while(bCheckBusy() ; LCDPORT=0xff; RW=0; DI=1; LCDPORT=ucData; E=1; E=0;void vWriteCMD(unsigned char ucCMD) while ( bCheckBusy() ); LCDPORT=0xff; RW=0; DI=0; LCDPORT=ucCMD; E=1; E=0; void vLCDInitialize()CS1=1;CS2=1;vWriteCMD (0x38) ;vWri
19、teCMD (0x0f) ;vWriteCMD (0x01) ;vWriteCMD (0x06) ;vWriteCMD (LCDSTARTROW); Void vShowCustomRow ( unsigned char ucPage ,unsigned char ucLine ,unsigned char ucWidth ,unsigned char *ucaRow) unsigned char ucCount ; if(ucLine64) CS1=1; CS2=0; vWriteCMD(LCDPAGE+ucPage) ; vWriteCMD(LCDLINE+ucLine) ; if (uc
20、Line + ucWidth)64) for (ucCount =0 ; ucCountucWidth ;ucCount +) vWriteData (*(ucaRow+ucCount) ; for(ucCount=0;ucCount64-ucline;ucCount+) vWriteData(*(ucaRow+ucCount) ;CS1=0;CS2=1;vWriteCMD(LCDPAGE+ucPage);vWriteCMD(LCDLINE);for (ucCount=64-ucLine;ucCountucWidth;ucCount+) vWriteData(*(ucaRow+ucCount) ; else CS1=0;CS2=1; vWriteCMD(LCDPAGE+ucPage);vWriteCMD(LCDLINE);for(uccount=0;uccountucwidth;uccount+)vwritedata(*(ucarow+uccount); void vShowOneChin(unsigned char ucPage,unsigned char
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年甘肅省隴南地區(qū)單招職業(yè)適應性測試模擬測試卷附答案
- 2026年湖南省邵陽市單招職業(yè)適應性考試題庫附答案
- 2026年民辦四川天一學院單招職業(yè)技能考試題庫及答案1套
- 2026年廣東金融學院單招綜合素質(zhì)考試題庫及答案1套
- 2026年電工電子期末測試題及答案(奪冠)
- 2025寧波市甬北糧食收儲有限公司公開招聘工作人員2人筆試模擬試題及答案解析
- 吉水縣旅游開發(fā)投資有限公司2026年面向社會公開招聘2名場館營業(yè)員筆試模擬試題及答案解析
- 2026云南紅河老兵聯(lián)綜合保障服務有限公司保安員招聘1人筆試模擬試題及答案解析
- 2026銅川市新區(qū)文家中學教師招聘筆試備考試題及答案解析
- 2025年七臺河桃山區(qū)招聘社區(qū)工作者27人考試參考題庫附答案
- 建筑設計防火規(guī)范-實施指南
- 2025國開《中國古代文學(下)》形考任務1234答案
- 肺部感染中醫(yī)護理
- 租地合同協(xié)議書合同
- 《肺炎的CT表現(xiàn)》課件
- 糧食倉儲設施建設維修資金申請報告
- 腦器質(zhì)性精神障礙護理查房
- 中考英語聽力命題研究與解題策略省公開課金獎全國賽課一等獎微課獲獎課件
- 物聯(lián)網(wǎng)智能家居設備智能控制手冊
- 2023-2024學年湖北省武漢市東西湖區(qū)五年級(上)期末數(shù)學試卷(含答案)
- 全國班主任比賽一等獎《班主任經(jīng)驗交流》課件
評論
0/150
提交評論