廣西科技大學(xué)單片機(jī)課程設(shè)計(jì)報(bào)告_第1頁
廣西科技大學(xué)單片機(jī)課程設(shè)計(jì)報(bào)告_第2頁
廣西科技大學(xué)單片機(jī)課程設(shè)計(jì)報(bào)告_第3頁
廣西科技大學(xué)單片機(jī)課程設(shè)計(jì)報(bào)告_第4頁
廣西科技大學(xué)單片機(jī)課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、廣西科技大學(xué)課程設(shè)計(jì)說明書單片機(jī)課程設(shè)計(jì)報(bào)告題目:利用蜂鳴器實(shí)現(xiàn)音樂播放功能 班 別: 姓 名: 指導(dǎo)教師: 柯寶中 日期:2016年10月10日一、課程設(shè)計(jì)目標(biāo)1、培養(yǎng)綜合運(yùn)用知識和獨(dú)立開展實(shí)踐創(chuàng)新的能力;2、學(xué)習(xí)和掌握單片機(jī)中常用接口電路的應(yīng)用和設(shè)計(jì)技術(shù),充分認(rèn)識理論知識對應(yīng)用技術(shù)的指導(dǎo)性作用,進(jìn)一步加強(qiáng)理論知識與應(yīng)用相結(jié)合的實(shí)踐和鍛煉。通過這次設(shè)計(jì)實(shí)踐能夠進(jìn)一步加深對專業(yè)知識和理論知識學(xué)習(xí)的認(rèn)識和理解,使自己的設(shè)計(jì)水平和對所學(xué)的知識的應(yīng)用能力以及分析問題解決問題的能力得到全面提高。二、研究方法及手段應(yīng)用1、將任務(wù)分成若干模塊,查閱相關(guān)論文資料,分模塊調(diào)試和完成任務(wù);2、通過單片機(jī)進(jìn)行實(shí)際

2、調(diào)試,實(shí)現(xiàn)預(yù)期的功能。三、課程設(shè)計(jì)預(yù)期效果1、完成實(shí)驗(yàn)環(huán)境搭建;2、實(shí)現(xiàn)歌曲播放及歌名顯示。四、實(shí)驗(yàn)原理與設(shè)計(jì)1、蜂鳴器及其工作原理:蜂鳴器按其結(jié)構(gòu)分主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻信號電流通過電磁線圈,使電磁線圈產(chǎn)生磁場,振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發(fā)聲。本實(shí)驗(yàn)采用的是電磁式蜂鳴器。蜂鳴器按其是否帶有信號源又分為有源和無源兩種類型。有源蜂鳴器只需要在其供電端加上額定直流電壓,其內(nèi)部的震蕩器就可以產(chǎn)生固定頻率的信號,驅(qū)動蜂鳴器發(fā)出聲音。無源蜂鳴器可以理解成與喇叭一樣,需要在

3、其供電端上加上高低不斷變化的電信號才可以驅(qū)動發(fā)出聲音。本實(shí)驗(yàn)采用的是有源蜂鳴器。 2、 蜂鳴器發(fā)聲原理本實(shí)驗(yàn)由于采用有源蜂鳴器,只需將引腳端口P34清零,蜂鳴器即可發(fā)聲;P34置位,蜂鳴器停止發(fā)聲。采用置1置0的方法只能使蜂鳴器發(fā)聲或停止發(fā)聲,想要使蜂鳴器發(fā)出聲音,必須對蜂鳴器發(fā)出聲音的音頻和節(jié)拍進(jìn)行控制。音調(diào):不同音高的樂音是用C、D、E、F、G、A、B來表示,這7個(gè)字母就是音樂的音名,它們一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成簡譜的1、2、3、4、5、6、7,相當(dāng)于漢字“多來米發(fā)梭拉西”的讀音,這是唱曲時(shí)樂音的發(fā)音,所以叫“音調(diào)”,即Tone。把C、D、E、F、G、A

4、、B這一組音的距離分成12個(gè)等份,每一個(gè)等份叫一個(gè)“半音”。兩個(gè)音之間的距離有兩個(gè)“半音”,就叫“全音”。在鋼琴等鍵盤樂器上,CD、DE、FG、GA、AB兩音之間隔著一個(gè)黑鍵,他們之間的距離就是全音;EF、BC兩音之間沒有黑鍵相隔,它們之間的距離就是半音。通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它們的左上角加上號或者b號的叫變化音。叫升記號,表示把音在原來的基礎(chǔ)上升高半音,b叫降記音,表示在原來的基礎(chǔ)上降低半音。例如高音DO的頻率(1046Hz)剛好是中音DO的頻率(523Hz)的一倍,中音DO的頻率(523Hz)剛好是低音DO頻率(266 Hz)的一倍;同樣的,高音RE的頻率(

5、1175Hz)剛好是中音RE的頻率(587Hz)的一倍,中音RE的頻率(587Hz)剛好是低音RE頻率(294 Hz)的一倍。節(jié)拍:節(jié)拍是讓音樂具有旋律(固定的律動),而且可以調(diào)節(jié)各個(gè)音的快滿度?!肮?jié)拍”,即Beat,簡單說就是打拍子,就像我們聽音樂不自主的隨之拍手或跺腳。若1拍實(shí)0.5s,則1/4 拍為0.125s。至于1拍多少s,并沒有嚴(yán)格規(guī)定,就像人的心跳一樣,大部分人的心跳是每分鐘72下,有些人快一點(diǎn),有些人慢一點(diǎn),只要聽的悅耳就好。音持續(xù)時(shí)間的長短即時(shí)值,一般用拍數(shù)表示。休止符表示暫停發(fā)音。)控制發(fā)聲頻率:要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半

6、周期的時(shí)間。利用定時(shí)器計(jì)時(shí)這半個(gè)周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖的I/O反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對I/O反相,就可在I/O腳上得到此頻率的脈沖。利用STC89C52RC的內(nèi)部定時(shí)器使其工作在計(jì)數(shù)器模式MODE1下,改變計(jì)數(shù)值TH0及TL0從而產(chǎn)生不同頻率。此外結(jié)束符和休止符可以分別用代碼00H和FFH來表示,若查表結(jié)果為0x00,則表示曲子終了;若查表結(jié)果為0xff,則產(chǎn)生相應(yīng)的停頓效果。以標(biāo)準(zhǔn)音高A為例,A的頻率是440Hz,周期T=1/440=2272us。在占空比為50%的情況下,導(dǎo)通時(shí)間=斷開時(shí)間=半周期t=2272us/2=1136us,利用P34端口的位操作,經(jīng)過不斷地反

7、相變換即可得到標(biāo)準(zhǔn)音高A的音頻脈沖。端口導(dǎo)通時(shí)間與斷開時(shí)的時(shí)間利用定時(shí)器實(shí)現(xiàn)。具體的方法是將單片機(jī)定時(shí)器的中斷觸發(fā)時(shí)間設(shè)為半周期t,這樣每隔半周期端口反相,輸出連續(xù)的對應(yīng)音高的頻率。設(shè)晶振的頻率為f0,中斷觸發(fā)時(shí)間(半周期)為t,定時(shí)器工作在模式1時(shí)計(jì)數(shù)器的初值為THL,高8位為THL,低8位為TL。時(shí)鐘周期即為1/f0,定時(shí)器每一次累加用去一個(gè)機(jī)器周期,一個(gè)機(jī)器周期包含12個(gè)時(shí)鐘周期,即定時(shí)器每次加一所用時(shí)間是12/f0。定時(shí)器在模式1下計(jì)時(shí)采用16位數(shù),最大計(jì)數(shù)為216-1(65535),再次加一(65536)溢出觸發(fā)中斷。根據(jù)以上分析可得如下關(guān)系:音頻對應(yīng)定時(shí)器初值的高8位TH=THL/

8、(28)=(65536-t*f/12)/256;音頻對應(yīng)定時(shí)器初值的低8位TL=THL%(28)=(65536-t*f/12)%256;附:八度12音階定時(shí)器初值表(只含自然音)低音音名頻率Hz晶振12MHz晶振11.0592MHz中音音名頻率Hz晶振12MHz晶振11.0592MHz高音音名頻率Hz晶振12MHz晶振11.0592MHzDo2620xF8850xF91BDo5230xFC430xFC8EDo10460xFE210xFE47Re2940xF95A0xF9DFRe5870xFCAD0xFCEDRe11750xFE560xFE76Mi3300xFA130xFA8AMi6590xFD

9、0A0xFD43Mi13180xFE850xFEA1Fa3490xFA680xFAD8Fa6980xFD340xFD6AFa13970xFE9A0xFEC7So3920xFB040xFB68So7840xFD820xFDB3So15680xFEC10xFED9La4400xFB900xFBE9La8800xFDC80xFDF3La17600xFEE40xFEF9Si4940xFC0C0xFC5BSi9880xFE060xFE2DSi19760xFF030xFF16*簡譜編碼將簡譜中的每個(gè)音符進(jìn)行編碼,每個(gè)音符用一個(gè)unsigned char字符類型表示,簡譜可用一個(gè)unsigned char字

10、符數(shù)組表示。字符的前四位表示音頻,可以表示0-f共十六個(gè)音符。本實(shí)驗(yàn)中采用了中音區(qū)和高音區(qū)。中音do-si分別編碼為17,高音do-si分別編碼為8E,停頓編為0。字符的后四位表示節(jié)拍,節(jié)拍以十六分音符為單位(在本程序中為165ms),一拍即四分音符等于4個(gè)十六分音符,編為4,其它的播放時(shí)間以此類推。以0xff作為曲譜的結(jié)束標(biāo)志。程序從數(shù)組中取出一個(gè)數(shù),然后分離出高4位得到音調(diào) ,將值賦給定時(shí)器0,得到音調(diào);接著分離出該數(shù)的低4位,得到節(jié)拍。3、程序流程圖及說明五、程序設(shè)計(jì)#include <reg51.h> /包含所選單片機(jī)的定義頭文件sbit SPEAKER = P27; /定

11、義音樂輸出口#define uchar unsigned charsbit LCD_RS = P20; sbit LCD_RW = P21;sbit LCD_EN = P22;sbit led = P10;typedef struct /定義音符結(jié)構(gòu)unsigned int mFreq;/發(fā)聲頻率(對應(yīng)的定時(shí)器初值)unsigned int mDelay; /發(fā)聲時(shí)值CNote;unsigned char ReloadH; /定義定時(shí)器T1重裝值unsigned char ReloadL;uchar code cdis1 = "Now playing: " uchar co

12、de cdis2 = " Guo ge "/*函數(shù):T1_ISR()功能:定時(shí)器T1中斷服務(wù)函數(shù),產(chǎn)生音樂振蕩頻率*/void T1_ISR() interrupt 3TR1 = 0;TH1 = ReloadH;TL1 = ReloadL;TR1 = 1;SPEAKER = !SPEAKER; /音樂聲頻的半個(gè)波/*函數(shù):Delay()功能:延時(shí)0.00165.536s參數(shù):t>0時(shí),延時(shí)(t*0.001)s t=0時(shí),延時(shí)65.536s*/void Delay(unsigned int t)doTH0 = 0xFC;/定時(shí)器賦初值,定時(shí)1msTL0 = 0x66+1

13、7;TR0 = 1;/啟動定時(shí)器while ( !TF0 );/等待定時(shí)器溢出TR0 = 0;/關(guān)閉定時(shí)器TF0 = 0;/清除溢出標(biāo)志 while ( -t != 0 );/循環(huán)t次/*函數(shù):Sound()功能:演奏一個(gè)音符參數(shù):*note,音符指針,指向要演奏的音符*/void Sound(CNote *note) /利用定時(shí)器T1發(fā)出音符的頻率if ( note->mFreq != 0 )ReloadH = (unsigned char)(note->mFreq >> 8);ReloadL = (unsigned char)(note->mFreq);TH1

14、 = 0xFF;TL1 = 0xF0;TR1 = 1;Delay(note->mDelay); /發(fā)聲延時(shí)TR1 = 0; /停止發(fā)聲TF1 = 0;SPEAKER = 1;Delay(5); /*函數(shù):Play()功能:演奏一段樂曲參數(shù):music,要演奏的樂曲*/void delay1(int ms) uchar t; while(ms-) for(t = 0; t < 120; t+); void Play(CNote music)unsigned int n = 0;while(1)if ( musicn.mDelay = 0 ) break;Sound(&(mus

15、icn);n+;/* 定義音符表 */ 音頻變量名 定時(shí)器初值 音頻率值 音名 #define A 0xEFA3 / 110.000Hz A#define As 0xF08E / 116.541Hz A#define B 0xF16C / 123.471Hz B#define c 0xF23D / 130.813Hz c#define cs 0xF303 / 138.591Hz c#define d 0xF3BE / 146.832Hz d#define ds 0xF46E / 155.563Hz d#define e 0xF514 / 164.814Hz e#define f 0xF5B1

16、/ 174.614Hz #define fs 0xF645 / 184.997Hz f#define g 0xF6D1 / 195.998Hz g#define gs 0xF755 / 207.652Hz g#define a 0xF7D1 / 220.000Hz a#define as 0xF847 / 233.082Hz a#define b 0xF8B6 / 246.942Hz b#define c1 0xF91F / 261.626Hz c1 (中央C)#define c1s 0xF982 / 277.183Hz c1#define d1 0xF9DF / 293.665Hz d1#d

17、efine d1s 0xFA37 / 311.127Hz d1#define e1 0xFA8A / 329.628Hz e1#define f1 0xFAD9 / 349.228Hz f1#define f1s 0xFB23 / 369.994Hz f1#define g1 0xFB68 / 391.995Hz g1#define g1s 0xFBAA / 415.305Hz g1#define a1 0xFBE9 / 440.000Hz a1(標(biāo)準(zhǔn)音)#define a1s 0xFC24 / 466.164Hz a1#define b1 0xFC5B / 493.883Hz b1#defi

18、ne c2 0xFC8F / 523.251Hz c2#define c2s 0xFCC1 / 554.365Hz c2#define d2 0xFCEF / 587.330Hz d2#define d2s 0xFD1B / 622.254Hz d2#define e2 0xFD45 / 659.255Hz e2#define f2 0xFD6C / 698.456Hz f2#define f2s 0xFD91 / 739.989Hz f2#define g2 0xFDB4 / 783.991Hz g2#define g2s 0xFDD5 / 830.609Hz g2#define a2 0x

19、FDF4 / 880.000Hz a2#define a2s 0xFE12 / 932.328Hz a2#define b2 0xFE2D / 987.767Hz b2#define c3 0xFE48 / 1046.500Hz c3#define c3s 0xFE60 / 1108.730Hz c3#define d3 0xFE78 / 1174.660Hz d3#define d3s 0xFE8E / 1244.510Hz d3# #define e3 0xFEA3 / 1318.510Hz e3#define f3 0xFEB6 / 1396.910Hz f3#define f3s 0x

20、FEC9 / 1479.980Hz f3#define g3 0xFEDA / 1567.980Hz g3#define g3s 0xFEEB / 1661.220Hz g3#define a3 0xFEFA / 1760.000Hz a3#define a3s 0xFF09 / 1864.660Hz a3# #define b3 0xFF17 / 1975.530Hz b3/定義發(fā)聲時(shí)值/T*4全音符,T*2二分音符,T四分音符,T/2八分音符,T/4十六分音符#define T625code CNote MusicTab =0,T/2,d2,T/2,g2,T+T/2,g2,T/2,g2,T

21、/2,g2,T/2,d2,T/3,e2,T/3,f2s,T/3,g2,T,g2,T,0,T/2,b2,T/2,g2,T/2,a2,T/4,b2,T/4,d3,T,d3,T,b2,T/2+T/4,b2,T/4,g2,T/2,b2,T/2,d3,T/2+T/4,b2,T/4,a2,T,a2,2*T,e3,T,d3,T,a2,T,b2,T,d3,T/2,b2,T/2,0,T/2,d3,T/2,b2,T/2,a2,T/4,b2,T/4,g2,T,b2,T,0,T,d2,T/2+T/4,e2,T/4,g2,T/4,g2,T/4,b2,T/2+T/4,b2,T/4,d3,T/2,d3,T/2,a2,T/2

22、,a2,T/4,a2,T/4,e2,T,a2,T+T/2,d2,T/2,g2,T+T/2,g2,T/2,b2,T+T/2,b2,T/2,d3,2*T,g2,T/2+T/4,b2,T/4,d3,T/2,d3,T/2,e3,T,d3,T,b3,T/2+T/4,g2,T/4,d3,T/3,d3,T/3,d3,T/3,b2,T/2,0,T/2,g2,T/2,0,T/2,d2,T,g2,T,b2,T/2+T/4,g2,T/4,d3,T/3,d3,T/3,d3,T/3,b2,T/2,0,T/2,g2,T/2,0,T/2,d2,T,g2,T,d2,T,g2,T,d2,T,g2,T,g2,T,0,T,0,0;

23、bit lcd_busy() bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delay1(1); result = (bit)(P0&0x80); LCD_EN = 0; return(result); /* * 寫指令或數(shù)據(jù)* start=0, 寫入命令; start=1, 寫入數(shù)據(jù)*/void lcd_write(bit start, uchar in_data) uchar Hdata,Ldata;while(lcd_busy(); Hdata=in_data&0xf0; /取高四位 Ldata=(in_data<&

24、lt;4)&0xf0; /取低四位 if(start=0) LCD_RS = 0; /寫入命令 else LCD_RS = 1; /寫入數(shù)據(jù)LCD_RW = 0; LCD_EN = 0;delay1(1);P0 = Hdata; /發(fā)送高四位 LCD_EN = 1; delay1(1); LCD_EN = 0;delay1(1);P0 = Ldata; /發(fā)送低四位 LCD_EN = 1; delay1(1); LCD_EN = 0;delay1(1);/* LCD初始化設(shè)定 */void lcd_init() delay1(15); lcd_write(0,0x28); /16*2顯

25、示,5*7點(diǎn)陣,4位數(shù)據(jù) delay1(5); lcd_write(0,0x28); delay1(5); lcd_write(0,0x28); delay1(5); lcd_write(0,0x0c); /顯示開,關(guān)光標(biāo) delay1(5); lcd_write(0,0x06); /移動光標(biāo) delay1(5); lcd_write(0,0x01); /清除LCD的顯示內(nèi)容 delay1(25); /延時(shí)/* 設(shè)定顯示位置 */void lcd_pos(uchar pos) lcd_write(0,pos|0x80); /數(shù)據(jù)指針=80+地址變量void main() /主程序 uchar m; lcd_init(); /LCD1602初始化lcd_pos(0x00); /設(shè)置顯示位置為第

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論