版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
一、方案論證與比 5556語音選擇 二、系統(tǒng)的具體設(shè)計及實(shí) 系統(tǒng)總框 硬件設(shè)計 12864液晶屏顯示設(shè) PS2鍵盤設(shè) 軟件設(shè)計 主程序流 LCD控制流程 三、測試、結(jié)果及分 四、總 參考文 附錄一、完整的系統(tǒng)原理 附錄二、部分的系統(tǒng)源代 電子琴設(shè)計一 設(shè)計任 i可以已的音樂能夠自動演奏多首(兩首以上)樂曲,且演奏方式可選擇(如重復(fù)或者順序等??梢詫幾鄻非M(jìn)行,在按下放音鍵時能演奏出來隨著大學(xué)生業(yè)余的增強(qiáng)DY作品越來越受大學(xué)生喜愛如果自己能做出一款DY可將理論知識融入到實(shí)踐中去。本電子琴是基于Mega16單片機(jī)控制的小型學(xué)習(xí)作品在業(yè),該游戲機(jī)由單片機(jī)Mega16和一些原件組成具有操作簡單,12864更加符合人們的操作習(xí)慣加上豐富的音樂在不知不覺中享受音樂的樂趣,自己親手彈奏美妙的音樂將不再是夢想!,關(guān)鍵字:電子琴、Amega16、PMW波形輸出、液晶、PS2鍵盤、音樂、彈奏音Withtheenhancementofstudentshobby,DIYworkmoreandmorepopularamongcollegestudentslove.IfIcouldmakeaDIYworkcannotonlyexercisetheirownability,butalsothetheoreticalknowledgeintopractice.ThekeyboardisbasedontheMega16MCUlearningworksforsmallentertainment,lifeintheamateurcanbringusalotoffun!Maketheirlifemorecolorful!ThegamebytheexternalmicrocontrollerMega16andsomeoriginalcomposition,issimple,showsclearfeatures.12864LCDasamonitortouse,youcandisplayChinesecharacters,numbers,letters,etc.,sothatsysteminformationataglance;usethecomputerkeyboardtooperateandplaymusic,moreinlinewithpeopleaccustomedtotheoperation!Withawealthofmusic,letyouenjoymusicinthefununconsciously,hishandwillplaybeautifulmusicisnolongeradream!:keyboard,Amega16chip,PMWwaveformoutput,LCD12864LCD,PS2keyboard,musicplayer,playmusic一、方案論證與比較控制器部少,功能不夠強(qiáng)大,中斷源和定時器較少,且沒有可調(diào)占空比波形輸出。EEPROM的優(yōu)點(diǎn),多種模式的AT89S52單片機(jī)考慮到以上兩種方案的優(yōu)缺點(diǎn)因本系統(tǒng)需要方便的可調(diào)占空比波形輸出需顯示部方案一使用LCD1602128*64液晶顯示模塊。128*64液晶可視面積大,介面美觀,對圖形和曲鍵盤部 利用I/O口直接連接的獨(dú)立式鍵盤,每鍵都有相應(yīng)的I/O口對應(yīng),編程容易控制,實(shí)現(xiàn)方便;但拒于IO口有限,能接的按鍵不能太多,而本系統(tǒng)需用戶根據(jù)需 用4*4矩陣鍵盤。優(yōu)點(diǎn):利用8個IO口得到16個按鍵,可使操作介界變得方案 受數(shù)據(jù),不會對其他程序有,因?yàn)椴恍枰獟呙桄I盤,極大的節(jié)約了CPU音量調(diào)節(jié)部 使用DA輸出再放大。優(yōu)點(diǎn):可以直接通過按鍵設(shè)置音量,調(diào)節(jié)精細(xì)準(zhǔn)確; 使用電位器調(diào)節(jié)加三極管放大,并用AVR自帶的10位AD檢測并顯示音量。語音選方案二使用喇叭。優(yōu)點(diǎn):能跟據(jù)輸入的頻率放出不同的音調(diào);缺點(diǎn):需要來 系統(tǒng)的具體設(shè)計及實(shí)系統(tǒng)總框1286412864PS2PS2本電子琴系統(tǒng)以Amega16單片機(jī)為系統(tǒng),配合128*64液晶模組及PS2鍵盤和硬件設(shè)12864液晶屏顯示設(shè)本系統(tǒng)采用電子公司出產(chǎn)的128*64液晶模塊(帶中文字庫)作為顯示部分,能2-2-2PS2鍵盤設(shè)盤,只占用2個IO口(外部中斷0加一個數(shù)據(jù)口使操作界面更加人性化,操作過喇叭放大電路設(shè)用NPN型三極管9013來放大電路,其中JP3接喇叭,Port40為AD信號接口,三極b0.25W8歐,原理圖如下所示。軟件設(shè)主程序流
模彈奏音樂回放音模彈奏音樂回放音樂幫助功能YN彈奏音樂流否是LCD控制流將將光標(biāo)指向指定位三測試、結(jié)果及分析基本功能和發(fā)揮與儀器,測試數(shù)據(jù)及分析6、7、i等八個音符可以通過按鍵控制發(fā)音,能夠、i4個音符。已13首歌,5式可選擇(如重復(fù)或者順序等。環(huán),3順序,4循環(huán)5隨機(jī)241280到可以對編奏樂曲進(jìn)行,在按下放音鍵時能演12864PS2車是進(jìn)入,Esc在音樂的過程中實(shí)現(xiàn)隨在音樂的過程中實(shí)現(xiàn)隨時暫停繼續(xù)也可以中途退可調(diào)節(jié)速在回放時可隨時暫停或出;使用PS2鍵盤,共24個音節(jié)按人們的打字習(xí)慣分布,并可以,經(jīng)過反復(fù)調(diào)試設(shè)計中還有來不及調(diào)試的模塊如音頻輸出,SD參考[1]李垳《AltiumDesigner6電路設(shè)計實(shí)例與技巧》國防工業(yè):[2]景《基于PROTEUS的電路及單片機(jī)系統(tǒng)設(shè)計仿真》航空航天大學(xué)2006:[3]《C語言大學(xué)使用》:電子工業(yè)[4]零點(diǎn)《AltiumDesigner6.0原理圖與PCB設(shè)計》:電子工2007附錄附錄函數(shù)名稱: 能voidmain(void){kb_init();//PS2鍵盤接lcd_init();//液晶初始化port_init();//音樂初始化{{}}} 音樂模塊頭文*控制#ifndef_avr_music_H_#define //定義標(biāo)記防止被重復(fù)用#include#include //自身頭文ucharmusicstop=0,jp=0,getout=1;uchargetend=0;//#pragmadata:data//設(shè)置回到數(shù)據(jù)器*初始化voidport_init(void){DDRD|=BIT(5);//D口配置為輸出,驅(qū)動蜂鳴器TCCR1A=0x40;//T/C1配置為比較匹配,OC1A取反TCCR1B=0x09;}voiddelay_jp(unsignedint{unsignedchari; //循環(huán)i{for(i=0;i<250;{}}}長音樂函數(shù)功能:兩數(shù)組音樂范圍:n:音樂曲目輸入:n:1-voidplay_long(ucharflash*Soundss1,ucharflash*Soundss2,ucharso,uchar{}音調(diào)產(chǎn)生函數(shù)功能:輸出頻率為x的范圍:x:100-20000Hz,0:不輸入:i主音調(diào),j為音調(diào)修改,正常為128,0127為低音調(diào),129255為高調(diào)voidsound(uintx,ucharj){{case // case0x0C: case0x0D: case0x0E: case0x0F: case0x10: case0x11: case0x12: case // case0x16: case0x17: case0x18: case0x19: case0x1A: case0x1B: case0x1C: case // case0x20: case0x21: case0x22: case0x23: case0x24: case0x25: case0x26: }{}{}}
/(x+j*2-256);//8M時鐘數(shù)據(jù)OCR1A=x;//比較值賦TCCR1A=0x40;//允許比較反轉(zhuǎn)輸TCCR1A=0x00;//頻率為0,休止符LCD12864液晶模塊顯示頭文件(基于*控制#ifndef_12864_mega16_show_H_#define 定義標(biāo)記防止被重/*非標(biāo)準(zhǔn)庫頭文件*/#include"LCD12864.H"#include/*定義全局變量uchar輸入值域void
開機(jī){}液晶屏控制輸入值域voidking_key(uchar{{case{}case{{}{{}else{}else{}else{}}}case{{}{{}else{}else{}else{}}}case{}case{{}}case{{}}}}子菜單顯示輸入:a為顯示的行數(shù)1~4b為第一句語句在數(shù)組的行數(shù)voidsan_show(uchara,uchar{uchar{}}菜單切換函輸出值域void{{}{}{{casecasecasecasecasecase}}{{casecasecasecasecasecase}}}主菜單光標(biāo)移動函輸出值域void{uchar{{{}}{
{}}}{{}{}}
{{}{}}
{}{}}系統(tǒng)參數(shù)修改函數(shù)功能范圍輸入voidsystem(){uint{}{}}PS2模塊頭文件(基于*控制//接口命名:類別_動作_對#ifndef#define //定義標(biāo)記防止被復(fù)/*非標(biāo)準(zhǔn)庫頭文件#include //公共模#pragmainterrupt_handlerInt0:2//外部中斷0中斷函/*變量//#pragma //以下變量存放于flashuchar{0x15,'q',0x16,'1',0x1a,'z',0x1b,'s',0x1c,'a',0x1d,'w',0x21,'c',0x22,'x',0x23,'d',0x24,'e',0x25,'4',0x26,'3',0x29,'',0x2a,'v',0x2b,'f',0x2d,'r',0x31,'n',0x32,'b',0x33,'h',0x34,'g',0x35,'y',0x36,'6',0x39,',',0x3a,'m',0x3b,'j',0x3d,'7',0x41,',',0x42,'k',0x43,'i',0x44,'o',0x45,'0',0x46,'9',0x49,'.',0x4a,'/',0x4b,'l',0x4d,'p',0x4e,'-0x52,'\'',0x54,'[',0x55,'=',0x5b,']',0x61,'<',0x69,'1',0x6b,'4',0x70,'0',0x71,'.',0x72,'2',0x73,'5',0x74,'6',0x75,'8',0x79,'+',0x7a,'3',0x7b,'-', //shift鍵沒按下譯碼flashuchar{0x15,'Q',0x16,'!',0x1a,'Z',0x1b,'S',0x1c,'A',0x1d,'W',0x21,'C',0x22,'X',0x23,'D',0x24,'E',0x25,'$',0x26,'#',0x29,'',0x2a,'V',0x2b,'F',0x2d,'R',0x31,'N',0x32,'B',0x33,'H',0x34,'G',0x35,'Y',0x36,'^',0x39,'L',0x3a,'M',0x3c,'U',0x3d,'&',0x41,'<',0x42,'K',0x43,'I',0x44,'O',0x45,')',0x46,'(',0x49,'>',0x4a,'?',0x4b,'L',0x4d,'P',0x52,'"',0x54,'{',0x55,'+',0x5b,'}',0x61,'>',0x69,'1',0x6b,'4',0x70,'0',0x71,'.',0x72,'2',0x73,'5',0x74,'6',0x75,'8',0x79,'+',0x7a,'3',0x7b,'-', //shift鍵按下譯碼#pragma //將以后的變量放在unsignedcharedge=0; //中斷觸發(fā)源標(biāo)識變量edge,初始0(0為下降沿中斷,1為上升沿中斷)unsignedcharbitcount=11; //接收位計數(shù)變量bitcount,初始化為11externunsignedcharkb_ascii=''; //按鍵ASCII碼變量kb_ascii,初始化為空格externunsignedcharkb_ready=0; //接收完成變量,初始化為0unsignedcharscancode=0; //掃描碼變量scancode,初始化為0unsignedcharletgo=1; 功能:PS2鍵盤輸入:返回值域:externvoid{
初始化MCUCR| //(xxxxxx1x)設(shè)置INT0為下降沿觸發(fā)中edge //下降沿中斷bitcount=11; //每次11位數(shù)據(jù):起始位(0),8個數(shù)據(jù)位(低位發(fā)送),DDRD&=~BIT(PD2);//配置中斷管腳為輸入PORTD|=BIT(PD2);//使能中斷管腳的上拉DDRB&=~BIT(PB0);//配置鍵盤數(shù)據(jù)輸為輸入PORTB|=BIT(PB0);//使能數(shù)據(jù)輸入管腳的上拉SREG| //(1xxxxxxx)打開全局中GICR|= //(x1xxxxxx)打開外部中斷}翻譯函功能:翻譯掃描碼為ASCII碼返回值域:externvoidkb_decode(uchar{staticunsignedcharup=0,shift=0; //通斷碼標(biāo)識變量up(0為通碼,1為斷碼),unsignedchar //循環(huán)變量 //數(shù)據(jù)是通{ //翻譯掃{case0xF0:up= //鍵盤釋放標(biāo)志(隨后的一個字節(jié)是碼),設(shè)置up為斷碼標(biāo)case0x12:shift=1;break; //左shift鍵按下,設(shè)置shift為按下標(biāo)志case0x59:shift=1;break; //右shift鍵按下,設(shè)置shift為按下標(biāo)志{ //shift鍵沒有{//查找unshifted
for(i=0;(unshifted[i][0]!=scancode)&&unshifted[i][0];} //shift{//查找shifted
for(i=0;(shifted[i][0]!=scancode)&&shifted[i][0];}kb_ascii=}} //數(shù)據(jù)是斷碼(up{up= //將斷碼標(biāo)志復(fù){//shift鍵釋case0x12:shift=case0x59:shift=//shift//shiftdefault:}}} 中斷中斷源:外部中斷調(diào)用void{ //下降沿觸發(fā){位忽略
if((bitcount11&&bitcount //3到10位是數(shù)據(jù)(起始位,校驗(yàn)位和停{scancode=(scancode>>1); if(PINB&0x01){scancode| //接收1則置}}觸發(fā)中}
MCUCR| //(xxxxxxx1)設(shè)置INT0為上升edge //上升沿中斷標(biāo) //上升沿觸發(fā)中{沿觸發(fā)中
MCUCR&= edge //下降沿中斷標(biāo)if((--bitcount //11位全部接收完{ //翻譯掃kb_ready //接收完bitcount //計數(shù)復(fù)}}}#include"avr_music.h"一曲音樂函數(shù)功能:一曲音樂輸入:音樂程序數(shù)組音調(diào)修改,正常為128,0127為低音調(diào),129255為高音調(diào)速度,正常為9,2551依次變快voidplay_onemusic(ucharflash*Soundss,ucharsoundture,uchar{uchary,q=0;while(Soundss[jp]!=0&&getout==1)//等待最后一個音符到{{case case0x01: case0x66: case case0x03: case0x04: case0x14: case0x15: case0x7A: case0x16: case0x17: case0x18: break;}{{}}{ }}TCCR1A=0x00;//奏完一個音符停止jp++;//準(zhǔn)備一下個音delay_jp(2*Speed);//節(jié)拍}jp=0;//一遍結(jié)束,停1秒,從頭}音樂中的鍵盤控制函數(shù)功能范圍輸入voidkey_playing()//kb_ascii{{case {}{}
kb_ascii='';}case move1--;kb_ascii='';TCCR1A=0x00;//奏完一個音符停止}case TCCR1A=0x00;//奏完一個音符停止}case }}}一首歌曲結(jié)束后的操作函數(shù)功能范圍輸入voidmusic_end(){{}}選擇音樂函數(shù)功能:選擇某一首范圍:n:音樂曲目輸入:n:1-voidplay_one(ucharn,ucharso,ucharsp) {case case2: case3: play_onemusic(Music_bjhyn,so,sp);break;}//3.歡迎case case5: case6: case7: }//4.仙劍問case case9: case10: case11: case12: }//11.}}{}{{case case2: case3: lcd_w_string_flash(show_play[3]);break;}case4: }}全部音樂函數(shù)功能:設(shè)定音樂模式范圍:m:模式,n:音樂曲目輸入:m:1單曲,2單曲循環(huán),3順序,4循環(huán),5隨n:1-音調(diào)修改128正常1-255依次升速度 1-255依次變voidplay_all(ucharm,ucharn,ucharsoundture,uchar ucharif(m==1)//單{}elseif(m==2)//單曲循 { }}}{{ } } }}}{{ } } }}}else//隨 {move1=rand()%13+1; } } }}}}voidmusic_play() uchari,q;uintj;{case lcd_w_string("是 }{{ }} {}{}TCCR1A=0x00;//奏
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 世界文化之旅-課件
- 《庫存管理與控制》課件
- 2024年鄉(xiāng)鎮(zhèn)計劃生育服務(wù)站工作總結(jié)
- 【課件】2024-2025學(xué)年上學(xué)期元旦主題班會課件
- 《項(xiàng)目管理》學(xué)習(xí)領(lǐng)域課程標(biāo)準(zhǔn)
- 第23課 內(nèi)戰(zhàn)爆發(fā)(解析版)
- 《設(shè)計過程質(zhì)量管理》課件
- 《生活安全指南》課件
- 化妝品行業(yè)促銷方案總結(jié)
- 2023-2024年項(xiàng)目部安全管理人員安全培訓(xùn)考試題【有一套】
- 輪胎返點(diǎn)協(xié)議
- 互聯(lián)網(wǎng)金融(同濟(jì)大學(xué))智慧樹知到期末考試答案2024年
- 國家開放大學(xué)管理英語4形考任務(wù)1-8
- 教育推廣之路
- 患者入院評估課件
- 如何平衡工作和生活的時間安排
- 蜜雪冰城新媒體營銷策略分析
- 愛國主題教育班會《我愛我的祖國》
- 《南來北往》愛奇藝大劇招商方案
- 【潮汕英歌舞的藝術(shù)特點(diǎn)與傳承發(fā)展探究9800字】
- 藥品集中采購教育培訓(xùn)
評論
0/150
提交評論