版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、通達(dá)學(xué)院2013 /2014 學(xué)年 第 一 學(xué)期課程設(shè)計(jì) 實(shí)驗(yàn)報(bào)告模 塊 名 稱 avr單片機(jī)課程設(shè)計(jì)(proteus)專 業(yè) 學(xué) 生 班 級(jí) 學(xué) 生 學(xué) 號(hào) 學(xué) 生 姓 名 指 導(dǎo) 教 師 設(shè)計(jì)題目基于lm016l顯示的可存儲(chǔ)式電子琴任務(wù)要求1、使用4*4鍵盤,對(duì)應(yīng)2個(gè)8度的16個(gè)單音,當(dāng)按下相應(yīng)按鍵時(shí),揚(yáng)聲器發(fā)出相對(duì)音符的音階。2、可以單鍵按下,也可以按照樂譜演奏音樂。3、在atmega128內(nèi)存儲(chǔ)至多64個(gè)單音(在兩個(gè)8度音階中任選),按鍵可以控制開始連續(xù)播放這64個(gè)單音或停止播放,每個(gè)單音的播放時(shí)長(zhǎng)自定。4、使用led/lcd來實(shí)時(shí)顯示目前正在演奏的單音碼,例低音音符la、相應(yīng)的音符頻
2、率及時(shí)長(zhǎng)、或中音音符si、相應(yīng)的音符頻率及時(shí)長(zhǎng)等。實(shí)驗(yàn)設(shè)備及軟件設(shè)備:計(jì)算機(jī)軟件:proteus7.7 sp2 iccavr7.22同組人員學(xué)號(hào)及姓名一人一組,無同組成員參考文獻(xiàn)1 金鐘夫 杜剛.atmega128單片機(jī)c程序設(shè)計(jì)與實(shí)踐m.北京:航空航天大學(xué)出版社,19992 沈建良 趙文宏.atmega128單片機(jī)入門與提高m.北京:航空航天大學(xué)出版社,20013 張毅剛.單片機(jī)應(yīng)用設(shè)計(jì)m.哈爾濱:工業(yè)大學(xué)出版社,2004年第二版4 長(zhǎng)沙太陽人電子有限公司.smc1602a lcm 使用說明書eb/ol.5 劉娟 梁衛(wèi)文.單片機(jī)c語言與protues仿真技能實(shí)訓(xùn)m.中國(guó)電力出版社,2004.
3、avr單片機(jī)軟件設(shè)計(jì)(proteus)報(bào)告1) 總體設(shè)計(jì)原理、思路 1. 電子琴的設(shè)計(jì)主要分為手動(dòng)彈奏樂曲和自動(dòng)播放音樂兩大部分組成。手動(dòng)彈奏樂曲是根據(jù)具體的硬件鍵盤設(shè)置了16個(gè)音符按鍵和1個(gè)功能轉(zhuǎn)換鍵,自動(dòng)播放音樂是在單片機(jī)的存儲(chǔ)器中通過軟件編程的方法放置音樂代碼和相關(guān)播放程序來實(shí)現(xiàn)。 2. 應(yīng)用到的原件,主要是atmega128單片機(jī)、矩陣44鍵輸入電路、lm016l顯示電路、揚(yáng)聲器以及電源電路。 3. 從聲音原理方面來看,通過控制單片機(jī)的定時(shí)器的定時(shí)時(shí)間產(chǎn)生不同頻率的音頻脈沖,經(jīng)放大后驅(qū)動(dòng)揚(yáng)聲器發(fā)出不同音樂的聲音。用軟件延時(shí)來控制發(fā)音時(shí)間的長(zhǎng)短,控制節(jié)拍。 4. 在寫程序時(shí),將電子琴的設(shè)
4、計(jì)采用程序模塊化設(shè)計(jì)方法,將程序分為主程序、鍵盤掃描程序模塊、數(shù)碼顯示模塊。這樣使得思路更加清晰,出問題更加容易更正。2) 硬件方面原理圖的設(shè)計(jì): 整個(gè)硬件部分主要包括一顆atmega128單片機(jī),lm016l顯示器和16個(gè)按鍵組成。單片機(jī)atmega128是一顆高性能低功耗的avr 8位微處理器,它擁有先進(jìn)的risc結(jié)構(gòu),多達(dá)133條指令,大多數(shù)可以在一個(gè)時(shí)鐘周期內(nèi)完成。 atmega128的引腳圖 lm016l的接口說明最后連接的原理圖 3) 軟件方面程序流程圖的設(shè)計(jì)、關(guān)鍵代碼的說明 程序流程圖如下 關(guān)鍵代碼及其說明/*/ #include#include /1602液晶顯示程序#incl
5、udexianshi.h/蜂鳴器#define beep() portb = (1pb0)/音符延時(shí)表,它們分別對(duì)應(yīng)于015號(hào)音符的輸出頻率uint tone= 64021,64103,64260,64400,64524,64580,64684,64777, 64820,64898,64918,64938,64958,64978,64998,65100;/第一段(tone為音符,time為節(jié)拍)uchar music1_tone = 2,3,1,1,2,3,1,1,2,3,5,5,5,6,1,1,6,1,2,2,2,1,6,6,6,1,2,2,3,2,1,2,2,2,0xff ; uchar
6、music1_time = 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0xff ; /第二段uchar music2_tone = 1,3,3,3,3,5,4,2,5,3,7,6,5,5,7,4,4,3,6,7,2,1,0xff ; uchar music2_time = 2,1,1,2,1,1,1,2,1,1,3,2,1,1,2,4,1,1,2,1,1,1,0xff ;/第三段 uchar music3_tone = 0,1,2,3,4,5,5,6,7,8,9,10,11,12,13,14,15,1
7、5,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0xff; uchar music3_time = 1,1,1,1,1,1,1,1,1,1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1,1,1,1,1,1,1,1,1,0xff;/第四段 uchar music4_tone = 0,1,2,3,4,5,5,6,7,8,9,10,11,12,13,14,15,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0xff; uchar music4_time = 1,1,1,1,1,1,1,1,1,1,1, 1, 1, 1,
8、 1, 1, 1, 1, 1, 1, 1, 1, 1,1,1,1,1,1,1,1,1,1,0xff;/-uint playhz=0;uint playtime=0;uchar playn=0;uchar reshbz=0;/自彈uchar diy =0,3,5,7,9,11,13,14,15; uchar diytime =2,2,2,2,2,2,2,2,2;/音樂符號(hào)引用變量volatile uchar t = 0;volatile uchar i = 0;/播放模式volatile uchar play=0; /播放模式啟動(dòng)volatile uchar bz=0; /播放模式靜音volat
9、ile uchar bz1=0; /播放曲目1void play1() t=music1_tonei; if(music1_tonei=0xff)i=0;timsk=0x00;_delay_ms(100); timsk=(1toie1); _delay_ms(music1_timei*200); playn=music1_tonei; playhz=tonemusic1_tonei; playtime=music1_tonei*200; timsk=0x00; i=i+1; /播放曲目2void play2() t=music2_tonei; if(music2_tonei=0xff)i=0;
10、_delay_ms(1000); timsk=(1toie1); _delay_ms(music2_timei*200); playn=music2_tonei; playhz=tonemusic2_tonei; playtime=music2_tonei*200; timsk=0x00; i=i+1; /播放曲目3void play3() t=music3_tonei; if(music3_tonei=0xff)i=0;_delay_ms(1000); timsk=(1toie1); _delay_ms(music3_timei*200); playn=music1_tonei; playh
11、z=tonemusic3_tonei; playtime=music3_tonei*200; timsk=0x00; i=i+1; /播放曲目4void play4() t=music4_tonei; if(music4_tonei=0xff)i=0;_delay_ms(1000); timsk=(1toie1); _delay_ms(music4_timei*200); playn=music4_tonei; playhz=tonemusic4_tonei; playtime=music4_tonei*200; timsk=0x00; i=i+1; /播放diyvoid diymusic()
12、 timsk=0x00; if(!(key=20) t=key; timsk=(120)playn=0;void resh1() /顯示hz:00000 t:00000 lcd1602_adr(0x00); lcd1602_writenumber(h); lcd1602_adr(0x01); lcd1602_writenumber(z); lcd1602_adr(0x02); lcd1602_writenumber(:); lcd1602_adr(0x03); lcd1602_writenumber(0x30+playhz/10000); lcd1602_adr(0x04); lcd1602_
13、writenumber(0x30+playhz%10000/1000); lcd1602_adr(0x05); lcd1602_writenumber(0x30+playhz%1000/100); lcd1602_adr(0x06); lcd1602_writenumber(0x30+playhz%100/10); lcd1602_adr(0x07); lcd1602_writenumber(0x30+playhz%10); lcd1602_adr(0x09); lcd1602_writenumber(t); lcd1602_adr(0x0a); lcd1602_writenumber(:);
14、 lcd1602_adr(0x0b); lcd1602_writenumber(0x30+playtime/10000); lcd1602_adr(0x0c); lcd1602_writenumber(0x30+playtime%10000/1000); lcd1602_adr(0x0d); lcd1602_writenumber(0x30+playtime%1000/100); lcd1602_adr(0x0e); lcd1602_writenumber(0x30+playtime%100/10); lcd1602_adr(0x0f); lcd1602_writenumber(0x30+pl
15、aytime%10); /顯示music:00 lcd1602_adr(0x40); lcd1602_writenumber(m); lcd1602_adr(0x41); lcd1602_writenumber(u); lcd1602_adr(0x42); lcd1602_writenumber(s); lcd1602_adr(0x43); lcd1602_writenumber(i); lcd1602_adr(0x44); lcd1602_writenumber(c); lcd1602_adr(0x45); lcd1602_writenumber(:); lcd1602_adr(0x46);
16、 lcd1602_writenumber(0x30+playn%100/10); lcd1602_adr(0x47); lcd1602_writenumber(0x30+playn%10); lcd1602_adr(0x49); lcd1602_writenumber(p); lcd1602_adr(0x4a); lcd1602_writenumber(l); lcd1602_adr(0x4b); lcd1602_writenumber(a); lcd1602_adr(0x4c); lcd1602_writenumber(y); lcd1602_adr(0x4d); lcd1602_write
17、number(:); lcd1602_adr(0x4e); lcd1602_writenumber(0x30+play%100/10); lcd1602_adr(0x4f); lcd1602_writenumber(0x30+play%10);/主函數(shù)void main(void) /端口配置 ddra=0x00; porta=0xff; ddrb=0xff; portb=0xff; ddrc=0x00; portd=0xff; ddrd=0xf0; portd=0xff; ddre=0x00; porte=0xff; ddrd&=(10); eicra=0x02; eimsk=0x01; /
18、延時(shí) s_ms(50); /1602初始化 lcdinit(); tccr1b=0x01; /t1預(yù)設(shè) sei(); /開中斷 play=0; while(1) /獲取按鍵值 if(play=0)key=keynumber(); if(play=0)diymusic(); resh1(); if(key1)bz1=1; if(key2)bz1=0; /- if(!(play=0)&(bz1=0) /顯示不同的界面 if(play=1)play1(); if(play=2)play2(); if(play=3)play3(); if(play=4)play3(); /定時(shí)器1溢出中斷服務(wù)函數(shù)用于
19、產(chǎn)生頻率實(shí)現(xiàn)音樂符#pragma interrupt_handler timer1_ovf_isr:15void timer1_ovf_isr(void)/ t/c1溢出中斷 if(t=0xff)return; tcnt1=tonet; if(bz1=0)beep(); #pragma interrupt_handler int0_ovf_isr:2void int0_ovf_isr(void)/ play=(play+1)%5;i=0;#define uchar unsigned char #define uint unsigned int #includekey.h#define rs 5
20、#define rw 6#define en 7#define rs0 portd &=(1rs); #define rw0 portd &=(1rw); #define en0 portd &=(1en); #define rs1 portd |=(1rs);#define rw1 portd |=(1rw);#define en1 portd |=(11;ms-);void _delay_ms(uint i) uchar j; for(;i0;i-) for(j=0;j0;i-) for(j=0;j1;j+); #define key1 (pind & (11)=0x00)#define
21、key2 (pind & (12)=0x00)uchar key=20;uchar keybz;uchar keynumber() ddra = 0xf0;/高四位輸出,低四位輸入porta= 0x0f; if (pina & 0x0f)!=0x0f) switch (pina) case 0b00001110: key=0; break;/記錄輸出pinbcase 0b00001101: key=1; break;case 0b00001011: key=2; break;case 0b00000111: key=3; break;ddra = 0x0f;/高四位輸入、低四位輸出porta= 0xf0;_delay_ms(5);switch (pina) case 0b11100000: key+=0; break;/記錄輸出pinbcase 0b11010000: key+=4; break;case 0b10110000: key+=8; break;case 0b01110000: key+=12;break; return key
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江海洋大學(xué)《電機(jī)學(xué)2》2023-2024學(xué)年第一學(xué)期期末試卷
- 高性能纖維防護(hù)制品研發(fā)生產(chǎn)項(xiàng)目可行性研究報(bào)告寫作模板-備案審批
- 中國(guó)計(jì)量大學(xué)現(xiàn)代科技學(xué)院《控制電機(jī)》2023-2024學(xué)年第一學(xué)期期末試卷
- 中央財(cái)經(jīng)大學(xué)《航空自動(dòng)化控制》2023-2024學(xué)年第一學(xué)期期末試卷
- 小學(xué)師生讀書評(píng)價(jià)制度
- 昭通職業(yè)學(xué)院《臨床藥理學(xué)(醫(yī)學(xué)檢驗(yàn))》2023-2024學(xué)年第一學(xué)期期末試卷
- 云南現(xiàn)代職業(yè)技術(shù)學(xué)院《大數(shù)據(jù)思維與決策》2023-2024學(xué)年第一學(xué)期期末試卷
- 企業(yè)市值管理中資本結(jié)構(gòu)優(yōu)化的研究
- 合規(guī)性旅游業(yè)務(wù)培訓(xùn)模板
- DB2201T 65.1-2024 肉牛飼養(yǎng)技術(shù)規(guī)范 第1部分:種牛
- 建設(shè)工程質(zhì)量檢測(cè)檢測(cè)計(jì)劃
- 2025年抗肺纖維化藥物市場(chǎng)分析報(bào)告
- 銀行會(huì)計(jì)主管年度工作總結(jié)2024(30篇)
- 教師招聘(教育理論基礎(chǔ))考試題庫(含答案)
- 上海市12校2025屆高三第一次模擬考試英語試卷含解析
- 三年級(jí)數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)附答案集錦
- 長(zhǎng)亭送別完整版本
- 《鐵路軌道維護(hù)》課件-更換道岔尖軌作業(yè)
- 股份代持協(xié)議書簡(jiǎn)版wps
- 職業(yè)學(xué)校視頻監(jiān)控存儲(chǔ)系統(tǒng)解決方案
- 《銷售心理學(xué)培訓(xùn)》課件
評(píng)論
0/150
提交評(píng)論