版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 信息工程學(xué)院 頁(yè)摘 要電子琴是現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,是一種新型的鍵盤樂器。它在現(xiàn)代音樂扮演著重要的角色,單片機(jī)具有強(qiáng)大的控制功能和靈活的編程實(shí)現(xiàn)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代的一部分。本文的主要內(nèi)容是用AT89S51單片機(jī)為核心控制元件,設(shè)計(jì)一個(gè)電子琴。以單片機(jī)作為主控核心,與鍵盤、揚(yáng)聲器等模塊組成核心主控制模塊,在主控模塊上設(shè)有16個(gè)按鍵和揚(yáng)聲器。本系統(tǒng)運(yùn)行穩(wěn)定,其優(yōu)點(diǎn)是硬件電路簡(jiǎn)單,軟件功能完善,控制系統(tǒng)可靠,性價(jià)比較高等,具有一定的實(shí)用和參考價(jià)值。關(guān)鍵詞:AT80c51,單片機(jī)音色,節(jié)拍器,自動(dòng)放音一丶項(xiàng)目概述和要求1.1 項(xiàng)目開發(fā)背景隨著電子科技的飛速發(fā)展,電
2、子技術(shù)正在逐漸改善著人們的學(xué)習(xí)、生活、工作,因此開發(fā)本系統(tǒng)希望能夠給人們多帶來一點(diǎn)生活上的樂趣。基于當(dāng)前市場(chǎng)上的玩具市場(chǎng)需求量大,其中電子琴就是一個(gè)很好的應(yīng)用方面。單片機(jī)技術(shù)使我們可以利用軟硬件實(shí)現(xiàn)電子琴的功能,從而實(shí)現(xiàn)電子琴的微型化,可以用作玩具琴、音樂轉(zhuǎn)盤以及音樂童車等等。并且可以進(jìn)行一定的功能擴(kuò)展。鑒于傳統(tǒng)電子琴可以用鍵盤上的“1”到“A”鍵演奏從低So到高DO等11個(gè)音,從而可以用來彈奏喜歡的樂曲。該設(shè)計(jì)將十一個(gè)琴鍵改成16個(gè),使電子琴的功能更加完美。不但可以實(shí)現(xiàn)對(duì)樂曲的演奏,同時(shí)還具有存儲(chǔ)音樂、播放歌曲以及顯示按鍵的功能。使該設(shè)計(jì)功能更加完善。1.2 項(xiàng)目目的利用AT80C51單片機(jī)
3、自帶資源,設(shè)計(jì)一款能實(shí)現(xiàn)彈奏和帶存儲(chǔ)功能的電子琴。(1)能夠?qū)﹄娮与娐贰㈦娮釉骷?、印制電路板等方面的知識(shí)有進(jìn)一步的認(rèn)識(shí),獨(dú)立對(duì)其進(jìn)行測(cè)試與檢查。(2)熟悉8051單片機(jī)的內(nèi)部結(jié)構(gòu)和功能,合理使用其內(nèi)部寄存器,能夠完成相關(guān)軟件編程設(shè)計(jì)工作。(3)為實(shí)現(xiàn)預(yù)期功能,能夠?qū)ο到y(tǒng)進(jìn)行快速的調(diào)試,并能夠?qū)Τ霈F(xiàn)的功能故障進(jìn)行分析,及時(shí)修改相關(guān)軟硬件。(4)對(duì)軟件編程、排錯(cuò)調(diào)試、焊接技術(shù)、相關(guān)儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高。1.3設(shè)計(jì)要求設(shè)計(jì)出15個(gè)音符,隨意彈奏,按“0”鍵為音樂休止符,不發(fā)聲,用它時(shí)間的長(zhǎng)短表示休止時(shí)間的長(zhǎng)短。用功能鍵轉(zhuǎn)換成歌曲演奏,可播放預(yù)存的音樂??纱鎯?chǔ)現(xiàn)場(chǎng)彈奏的音樂
4、。擴(kuò)充功能:采用LCD顯示信息,開機(jī)時(shí)有歡迎提示符,播放時(shí)顯示歌曲序號(hào)(或名稱)。顯示樂曲播放時(shí)間或剩余時(shí)間。 二丶 系統(tǒng)硬件設(shè)計(jì)2.1電子琴原理 在介紹總體方案之前,先簡(jiǎn)單介紹一下電子琴的發(fā)生原理以及如何改變音色的基本原理:聲音的頻譜范圍約在幾十到幾千赫茲, 若能利用程序來控制單片機(jī)某個(gè)口線不斷輸出“高”“低”電平, 則在該口線上就能產(chǎn)生一定頻率的方波, 將該方波接上喇叭就能發(fā)出一定頻率的聲音, 若再利用程序控制“高”“低”電平的持續(xù)時(shí)間, 就能改變輸出波形的頻率從而改變音調(diào)。樂曲中, 每一音符對(duì)應(yīng)著確定的頻率, 下表給出各音符頻率。如果單片機(jī)某個(gè)口線輸出“高”“低”電平的頻率和某個(gè)音符的頻
5、率一樣, 那么將此口線接上喇叭就可以發(fā)出此音符的聲音1。本系統(tǒng)就是根據(jù)此原理設(shè)計(jì), 對(duì)于單片機(jī)來說要產(chǎn)生一定頻率的方波大致是先將某口線輸出高電平然后延時(shí)一段時(shí)間再輸出低電平, 如此循環(huán)的輸出就會(huì)產(chǎn)生一定頻率的方波, 通過改變延時(shí)的時(shí)間就可以改變輸出方波的頻率。單片機(jī)內(nèi)部有兩個(gè)位的定時(shí)計(jì)數(shù)器T1和T0, 單片機(jī)的定時(shí)計(jì)數(shù)器實(shí)際上是個(gè)計(jì)數(shù)裝置它既可以對(duì)單片機(jī)的內(nèi)部晶振驅(qū)動(dòng)時(shí)鐘計(jì)數(shù)也可以對(duì)外部輸入的脈沖計(jì)數(shù), 對(duì)內(nèi)部晶振計(jì)數(shù)時(shí)稱為定時(shí)器, 對(duì)外部時(shí)鐘計(jì)數(shù)時(shí)稱為計(jì)數(shù)器。當(dāng)對(duì)單片機(jī)的內(nèi)部晶振驅(qū)動(dòng)時(shí)鐘計(jì)數(shù)時(shí),每個(gè)機(jī)器周期定時(shí)計(jì)數(shù)器的計(jì)數(shù)值就加, 當(dāng)計(jì)數(shù)值達(dá)到計(jì)數(shù)最大值時(shí)計(jì)數(shù)完畢并通知單片機(jī)的尸比對(duì)外部輸入
6、的時(shí)鐘信號(hào)計(jì)數(shù)時(shí), 外部時(shí)鐘的每個(gè)時(shí)鐘上升沿定時(shí)計(jì)數(shù)器的計(jì)數(shù)值就加, 當(dāng)計(jì)數(shù)值達(dá)到計(jì)數(shù)最大值時(shí)計(jì)數(shù)完畢并通知單片機(jī)。因此, 如果知道單片機(jī)的機(jī)器周期或者外部輸入時(shí)鐘信號(hào)的周期單片機(jī)就可以根據(jù)定時(shí)器的計(jì)數(shù)值計(jì)算出定時(shí)的時(shí)間。用此方法定時(shí)十分準(zhǔn)確, 想得到多大的延時(shí)時(shí)間就可以給定時(shí)器賦一定的計(jì)數(shù)初值, 定時(shí)器從預(yù)先設(shè)置的計(jì)數(shù)初值開始不斷增當(dāng)增加到計(jì)數(shù)最大值時(shí)計(jì)數(shù)完畢, 調(diào)整計(jì)數(shù)初值的大小就可以調(diào)整定時(shí)器定時(shí)的時(shí)間, 從而達(dá)到準(zhǔn)確的延時(shí)。2.2系統(tǒng)結(jié)構(gòu)本系統(tǒng)主要由四部分組成:(1)鍵盤:控制系統(tǒng)和演奏音樂(2)揚(yáng)聲器:發(fā)聲(3)LED:顯示歡迎界面,顯示操作,顯示演奏音樂歌詞(后期開發(fā)計(jì)劃)(4)A
7、T80C51:系統(tǒng)控制中心系統(tǒng)結(jié)構(gòu)圖如圖2-1所示。振蕩器振蕩器分頻器電源鍵 盤放大器揚(yáng)聲器圖2-1 系統(tǒng)結(jié)構(gòu)圖2.3硬件部分總體方案 51單片機(jī)P0口通過8155擴(kuò)展,連接4*8的矩陣鍵盤,作為琴鍵鍵盤和相應(yīng)的功能控制鍵;并P2口一起,與EPROM連接;P0口則接通不通音色的濾波電路,通過程序控制P0口,選通不通的琴聲音色濾波電路,使電子琴發(fā)出不同音色的聲音。硬件電路包括中心控制模塊、播放模塊、按鍵控制模塊三大模塊。其電路圖如圖2-2所示:圖2-2 電子琴電路圖2.4元件清單1) AT80C51 AT80C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器(FPEROMFlash Program
8、mable and Erasable Read Only Memory)的低電壓,高性能CMOS 8位微處理器,俗稱單片機(jī)。AT80C51是一種帶2K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT80C51是一種高效微控制器,AT80C51是它的一種精簡(jiǎn)版本2。AT89C單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。本次設(shè)計(jì)中中心控制模塊是采用AT80C51單片機(jī)來控制整個(gè)系統(tǒng)
9、。其中P1口作為輸入口,連接蜂鳴器驅(qū)動(dòng)電路,而P2口連接按鍵控制電路, 從而實(shí)現(xiàn)播放音樂的功能。2) LCD1602LCD1062 在本次中主要用于顯示,有如下特點(diǎn):顯示質(zhì)量高:由于液晶顯示器每一個(gè)點(diǎn)在收到信號(hào)后就一直保持那種色彩和亮度,恒定發(fā)光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新新亮點(diǎn)。因此,液晶顯示器畫質(zhì)高且不會(huì)閃爍。數(shù)字式接口:液晶顯示器都是數(shù)字式的,和單片機(jī)系統(tǒng)的接口更加簡(jiǎn)單可靠,操作更加方便。體積小、重量輕:液晶顯示器通過顯示屏上的電極控制液晶分子狀態(tài)來達(dá)到顯示的目的,在重量上比相同顯示面積的傳統(tǒng)顯示器要輕得多。功耗低:相對(duì)而言,液晶顯示器的功耗主要消耗在其內(nèi)部的電極和
10、驅(qū)動(dòng)IC上,因而耗電量比其它顯示器要少得多3。其硬件原理圖如圖2-3所示。 圖2-3 LCD1062 硬件原理圖3)4X4行列式鍵盤識(shí)別及顯示鍵盤接口必須具有去抖動(dòng)、防串鍵、按鍵識(shí)別和鍵碼產(chǎn)生4個(gè)基本功能。(1)去抖動(dòng):每個(gè)按鍵在按下或松開時(shí),都會(huì)產(chǎn)生短時(shí)間的抖動(dòng)。抖動(dòng)的持續(xù)時(shí)間與鍵的質(zhì)量相關(guān),一般為520mm。所謂抖動(dòng)是指在識(shí)別被按鍵是必須避開抖動(dòng)狀態(tài),只有處在穩(wěn)定接通或穩(wěn)定斷開狀態(tài)才能保證識(shí)別正確無誤。去抖問題可通過軟件延時(shí)或硬件電路解決。(2)防串鍵:防串鍵是為了解決多個(gè)鍵同時(shí)按下或者前一按鍵沒有釋放又有新的按鍵按下時(shí)產(chǎn)生的問題。常用的方法有雙鍵鎖定和N鍵輪回兩種方法。雙鍵鎖定,是當(dāng)有兩
11、個(gè)或兩個(gè)以上的按鍵按下時(shí),只把最后釋放的鍵當(dāng)作有效鍵并產(chǎn)生相應(yīng)的鍵碼。N鍵輪回,是當(dāng)檢測(cè)到有多個(gè)鍵被按下時(shí),能根據(jù)發(fā)現(xiàn)它們的順序依次產(chǎn)生相應(yīng)鍵的鍵碼。(3)被按鍵識(shí)別:如何識(shí)別被按鍵是接口解決的主要問題,一般可通過軟硬結(jié)合的方法完成。常用的方法有行掃描法和線反轉(zhuǎn)法兩種。行掃描法的基本思想是,由程序?qū)︽I盤逐行掃描,通過檢測(cè)到的列輸出狀態(tài)來確定閉合鍵,為此,需要設(shè)置入口、輸出口一個(gè),該方法在微機(jī)系統(tǒng)中被廣泛使用。線反轉(zhuǎn)法的基本思想是通過行列顛倒兩次掃描來識(shí)別閉合鍵,為此需要提供兩個(gè)可編程的雙向輸入/輸出端口。 (4)鍵碼產(chǎn)生:為了從鍵的行列坐標(biāo)編碼得到反映鍵功能的鍵碼,一般在內(nèi)存區(qū)中建立一個(gè)鍵盤編
12、碼表,通過查表獲得被按鍵的鍵碼4。用 HYPERLINK / AT80c51的并行口P1接44矩陣鍵盤,以P1.0P1.3作輸入線,以P1.4P1.7作輸出線;在數(shù)碼管上顯示每個(gè)按鍵的“0F”序號(hào)。4)speaker蜂鳴器5)三極管三丶軟件設(shè)計(jì)本軟件設(shè)計(jì)關(guān)鍵是要實(shí)現(xiàn)一種由單片機(jī)控制的簡(jiǎn)單音樂發(fā)生器,它由16個(gè)音節(jié)組成的的鍵盤,用戶可以根據(jù)樂譜在鍵盤上進(jìn)行演奏,音樂發(fā)生器會(huì)根據(jù)用戶的彈奏,通過揚(yáng)聲器將音樂播放出來。3.1單片機(jī)實(shí)現(xiàn)音樂一首音樂是由許多不同的音符組成的,而每個(gè)音符對(duì)應(yīng)著不同的頻率,這樣就可以利用不同頻率的組合,加以與拍數(shù)對(duì)應(yīng)的延時(shí),構(gòu)成音樂。(1)節(jié)拍設(shè)計(jì)除了音符以外,節(jié)拍也是音樂
13、的關(guān)鍵組成部分。節(jié)拍實(shí)際上就是音持續(xù)時(shí)間的長(zhǎng)短,在單片機(jī)系統(tǒng)中可以用延時(shí)來實(shí)現(xiàn),如果1/4拍的延時(shí)是0.4秒,則1拍的延時(shí)是1.6秒,只要知道1/4拍的延時(shí)時(shí)間,其余的節(jié)拍延時(shí)時(shí)間就是它的陪數(shù)。如果單片機(jī)要自己播放音樂,那么必須在程序設(shè)計(jì)中考慮到節(jié)拍的設(shè)置,由于本例實(shí)現(xiàn)的音樂發(fā)生器是由用戶通過鍵盤輸入彈奏樂曲的,所以節(jié)拍由用戶掌握,不由程序控制。對(duì)于不同的曲調(diào)我們也可以用單片機(jī)的另外一個(gè)定時(shí)/計(jì)數(shù)器來完成。音樂的音拍,一個(gè)節(jié)拍為單位(C調(diào))具體如表3-1:表3-1 音樂節(jié)拍表曲調(diào)值 DELAY曲調(diào)值DELAY調(diào)4/4125ms調(diào)4/462ms調(diào)3/4187ms調(diào)3/494ms調(diào)2/4250ms
14、調(diào)2/4125ms (2)音頻脈沖實(shí)現(xiàn)了解音樂的一些基本知識(shí)后可知,產(chǎn)生不同頻率的音頻脈沖即能產(chǎn)生音樂,對(duì)于單片機(jī)而言,產(chǎn)生不同頻率有脈沖非常方便,可以利用它的定時(shí)/計(jì)數(shù)器來產(chǎn)生這樣的方波頻率信號(hào),因此,需要弄清楚音樂中的音符和對(duì)應(yīng)的頻率,以及單片機(jī)定時(shí)計(jì)數(shù)的關(guān)系。在本實(shí)驗(yàn)中,單片機(jī)工作于12MHZ時(shí)鐘頻率,使用其定時(shí)/計(jì)數(shù)器T0,工作模式為1,改變計(jì)數(shù)值TH0和TL0可以產(chǎn)生不同頻率的脈沖信號(hào),在此情況下,C調(diào)的各音符頻率與計(jì)數(shù)值T的對(duì)照如表3-2:表3-2 音符頻率與計(jì)數(shù)值T的對(duì)照表音符頻率(HZ)計(jì)數(shù)值(T值)音符頻率(HZ)計(jì)數(shù)值(T值)低1DO26263628#4FA#7406486
15、0#1DO#27763737中5SO78464898低2RE29463835#5SO#83194934#2RE#31163928中6LA88064968低3MI33064021#6LA#93264994低4FA34964103中7SI96865030#4FA#37064185低1DO104665058低SO39264260#1DO#110965085#5SO#41564331高2RE117565110低6LA44064400#2RE#124565134#6LA#46664463高3MI131865157低7SI49464524高4FA139765178中1DO52364580#4FA#1490
16、65198#1DO#55464633高5SO156865217中2RE58764633#5SO#166165235#2RE#62264884高6LA176065252中3MI65964732#6LA#186565268中4FA69864820高7SI196765283 T的值決定了TH0和TL0的值,其關(guān)系為:TH0=T/256,TL0=T%2563.2軟件框圖及部分代碼(1)總程序簡(jiǎn)易流程圖如圖3-1:鍵盤掃描程序鍵盤掃描程序有鍵按下賦鍵值功能鍵地址轉(zhuǎn)移程序取鍵值A(chǔ)17H A1A轉(zhuǎn)至音色調(diào)節(jié)轉(zhuǎn)至彈奏轉(zhuǎn)自動(dòng)播放樂曲NYYNN 圖 3-1 總程序簡(jiǎn)易流程圖(2)顯示流程圖如圖3-2:開始開始R1
17、=0根據(jù)R1的值查表查表獲得的數(shù)據(jù)送P0延時(shí)0.2秒R1=R1+1R1的內(nèi)容=10嗎?圖3-2顯示流程圖C語言源程序#include#define uchar unsigned char#define uint unsigned intunsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;unsigned char discount;void delay02s(void) unsigned char i, j, k; for(i=20;i0;i-) for(j=20;j0;j-)
18、 for(k=248;k0;k-);void main(void) while(1) for(discount=0;dispcount10;dispcount+) P0=tablediscount; delay02s(); (3)鍵盤識(shí)別程序框圖如圖3-3所示:圖3-3 鍵盤識(shí)別程序框圖語言源程序#includeunsigned char code table=table=0 x3f,0 x06,0 x5b,0 x4f, 0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77, 0 x7c, 0 x39,0 x5e,0 x79,0 x71;unsigned char
19、 temp;unsigned char key;unsigned char i,j;void main(void) while(1)P3=0 xff; P3_4=0; temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f) for(i=50;i0;i-)for(j=200;j0;j-);temp=P3;temp=temp & 0 x0f;if (temp!=0 x0f)temp=P3; temp=temp & 0 x0f;switch(temp)case 0 x0e: key=7; break; case 0 x0d: key=8; break; case 0
20、 x0b: key=9; break; case 0 x07: key=10; break;temp=P3; P1_0=P1_0; P0=tablekey; temp=temp & 0 x0f; while(temp!=0 x0f) temp=P3; temp=temp & 0 x0f; P3=0 xff; P3_5=0; temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f) for(i=50;i0;i-)for(j=200;j0;j-);temp=P3;temp=temp & 0 x0f; temp=P3; temp=temp & 0 x0f; switc
21、h(temp) case 0 x0e: key=4; break; case 0 x0d: key=5; break; case 0 x0b: key=6;break; case 0 x07: key=11; break; temp=P3; P1_0=P1_0; P0=tablekey; temp=temp & 0 x0f; while(temp!=0 x0f) temp=P3; temp=temp & 0 x0f; P3=0 xff; P3_6=0; temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f) for(i=50;i0;i-)for(j=200;j
22、0;j-);temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f) temp=P3; temp=temp & 0 x0f; switch(temp)case 0 x0e: key=1;break;case 0 x0d: key=2;break;case 0 x0b: key=3;break;case 0 x07: key=12; break; temp=P3;P1_0=P1_0;P0=tablekey;temp=temp & 0 x0f;while(temp!=0 x0f)temp=P3;temp=temp & 0 x0f;P3=0 xff;P3_7=0;te
23、mp=P3;temp=temp & 0 x0f;if (temp!=0 x0f)for(i=50;i0;i-)for(j=200;j0;j-);temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f)temp=P3;temp=temp & 0 x0f;switch(temp)case 0 x0e:key=0;break;case 0 x0d:key=13;break;case 0 x0b:key=14;break;case 0 x07:key=15;break;temp=P3; P1_0=P1_0; P0=tablekey; temp=temp & 0 x0f;
24、 while(temp!=0 x0f) temp=P3; temp=temp & 0 x0f;(4)音樂發(fā)聲程序框圖如圖3-4所示:圖3-4 音樂發(fā)聲程序框圖3.3程序設(shè)計(jì)說明(1)對(duì)聲音的控制對(duì)音調(diào)的控制:根據(jù)不同的按鍵,對(duì)定時(shí)器T1送入不同的初值,調(diào)節(jié)T1的溢出時(shí)間,這樣就可以輸出不同音調(diào)頻率的方波。不同音調(diào)下各個(gè)音階的定時(shí)器對(duì)音長(zhǎng)的控制:先向定時(shí)器T0送入一個(gè)固定初值,控制中斷循環(huán)的次數(shù),從而得到成倍數(shù)關(guān)系的時(shí)間間隔。按一拍0.64S計(jì)算,取1/16拍為最小間隔,即0.04S,為此設(shè)定T0的初值為63C0。樂譜的編碼規(guī)則:對(duì)于每個(gè)音符,定義用8位二進(jìn)制數(shù)表示。其中,最高位為1的字符為結(jié)束
25、符,當(dāng)讀到最高位為1時(shí),停止播放;低3位存儲(chǔ)音階碼,即音階表的列數(shù),可為000B111B (17和休止符),休止符表示停頓,不發(fā)音,只有時(shí)間長(zhǎng)短屬性;第3位和第4位存儲(chǔ)音高碼,即音階表的行數(shù),可為00B10B;第5位和第6位存儲(chǔ)音長(zhǎng)碼,即中斷次數(shù),可為00B10B。(2)對(duì)演奏的控制在手動(dòng)演奏時(shí),規(guī)定先按音調(diào)鍵,后按音階鍵。每次音階鍵按下時(shí),調(diào)用鍵盤掃描子程序,獲得鍵值,查詢音階表,獲取定時(shí)器的計(jì)時(shí)初值,向喇叭輸入相應(yīng)頻率的驅(qū)動(dòng)脈沖,發(fā)出相應(yīng)的聲音,若按鍵沒有松開,則一直發(fā)聲;若按鍵松開,則停止發(fā)聲。在自動(dòng)演奏時(shí),通過選曲鍵來確定要播放的音樂,根據(jù)鍵值查詢曲目表獲取所點(diǎn)歌曲的首地址,依次讀取歌
26、曲的代碼,獲得音階、音調(diào)和音長(zhǎng)信息,播放相應(yīng)的音樂。當(dāng)讀到結(jié)束符時(shí),停止播放音樂。四丶 系統(tǒng)調(diào)試與測(cè)試結(jié)果分析4.1使用的儀器儀表 單片機(jī)仿真器KEILC蜂鳴器 LS14.2系統(tǒng)調(diào)試根據(jù)系統(tǒng)設(shè)計(jì)方案,本系統(tǒng)的調(diào)試共分為三大部分:硬件調(diào)試,軟件調(diào)試和軟硬件聯(lián)調(diào)。由于在系統(tǒng)設(shè)計(jì)中采用模塊設(shè)計(jì)法,所以方便對(duì)各電路模塊功能進(jìn)行逐級(jí)測(cè)試:中心控制模塊的調(diào)試,音樂播放模塊的調(diào)試,按鍵控制模塊的調(diào)試等,最后將各模塊組合后進(jìn)行整體測(cè)試。(1)對(duì)各個(gè)模塊的功能進(jìn)行調(diào)試,主要調(diào)試各模塊能否實(shí)現(xiàn)指定的功能。(2)軟件調(diào)試采用單片機(jī)仿真器KEILC及微機(jī),將編好的程序進(jìn)行調(diào)試,主要是檢查語法錯(cuò)誤。(3)將調(diào)試好的硬件
27、和軟件進(jìn)行聯(lián)調(diào),主要調(diào)試系統(tǒng)的實(shí)現(xiàn)功能。4.3 測(cè)試結(jié)果此次系統(tǒng)設(shè)計(jì)結(jié)果較好,分別發(fā)出8種高低不同的聲音,如果送入音樂程序,則會(huì)播放歌曲。五丶源程序程序?yàn)椋?includeunsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;unsigned char temp;unsigned char key;unsigned char i,j;unsigned char STH0;unsigned char STL0;
28、unsigned int code tab=64021,64103,64260,64400, 64524,64580,64684,64777,64820,64898,64968,65030, 65058,65110,65157,65178;void main(void)TMOD=0 x01; ET0=1; EA=1;while(1) P3=0 xff;P3_4=0;temp=P3;temp=temp & 0 x0f;if (temp!=0 x0f)for(i=50;i0;i-) for(j=200;j0;j-); temp=P3; temp=temp & 0 x0f; if (temp!=0
29、x0f) temp=P3; temp=temp & 0 x0f; switch(temp) case 0 x0e: key=0; break; case 0 x0d: key=1;break; case 0 x0b: key=2; break; case 0 x07: key=3; break; temp=P3; P1_0=P1_0; P0=tablekey; STH0=tabkey/256; STL0=tabkey%6; TR0=1; temp=temp & 0 x0f; while(temp!=0 x0f) temp=P3; temp=temp & 0 x0f; TR0=0; P3=0 x
30、ff; P3_5=0; temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f) for(i=50;i0;i-) for(j=200;j0;j-); temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f) temp=P3; temp=temp & 0 x0f; switch(temp) case 0 x0e: key=4; break; case 0 x0d: key=5; break; case 0 x0b: key=6; break; case 0 x07: key=7; break; temp=P3; P1_0=P1_0;
31、 P0=tablekey; STH0=tabkey/256; STL0=tabkey%6; TR0=1; temp=temp & 0 x0f; while(temp!=0 x0f) temp=P3; temp=temp & 0 x0f; TR0=0; P3=0 xff; P3_6=0; temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f) for(i=50;i0;i-) for(j=200;j0;j-); temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f) temp=P3; temp=temp & 0 x0f; swit
32、ch(temp) case 0 x0e:key=8; break; case 0 x0d: key=9; break; case 0 x0b: key=10; break; case 0 x07: key=11; break; temp=P3; P1_0=P1_0; P0=tablekey; STH0=tabkey/256; STL0=tabkey%6; TR0=1; temp=temp & 0 x0f; while(temp!=0 x0f) temp=P3; temp=temp & 0 x0f; TR0=0; P3=0 xff; P3_7=0; temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f) for(i=50;i0;i-) for(j=200;j0;j-); temp=P3; temp=tem
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度服裝店品牌服裝定制與品牌產(chǎn)品代理銷售合同范本3篇
- 二零二五年度物聯(lián)網(wǎng)股權(quán)借款質(zhì)押投資合同3篇
- 2025版合伙購(gòu)買汽車用于城市觀光旅游租賃合同3篇
- 二零二五年度生物制藥原材料采購(gòu)合同113篇
- 焦作工貿(mào)職業(yè)學(xué)院《金融市場(chǎng)》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度電網(wǎng)企業(yè)電力供應(yīng)保障供電合同范本3篇
- 根式方程換元法計(jì)算詳細(xì)過程解析A9
- 2024招投標(biāo)部門職責(zé)與權(quán)限調(diào)整服務(wù)合同3篇
- 2025年度環(huán)保型住宅小區(qū)建筑工程施工合同參考3篇
- 2024版公務(wù)員錄用與聘用合同
- 藝術(shù)漆培訓(xùn)課件
- 建德海螺二期施工組織設(shè)計(jì)
- 山東省菏澤市2023-2024學(xué)年高一上學(xué)期期末測(cè)試物理試題(解析版)
- 2024年學(xué)校后勤日用品采購(gòu)合同范本2篇
- 中建中建機(jī)電工程聯(lián)動(dòng)調(diào)試實(shí)施方案范本
- 新《安全生產(chǎn)法》安全培訓(xùn)
- 山東省濟(jì)南市2023-2024學(xué)年高一上學(xué)期1月期末考試 物理 含答案
- 《念珠菌感染的治療》課件
- 中華人民共和國(guó)安全生產(chǎn)法知識(shí)培訓(xùn)
- 物業(yè)品質(zhì)提升方案課件
- 上海教育出版社 藝術(shù) 八年級(jí)上冊(cè)第三單元 鄉(xiāng)音鄉(xiāng)韻 京腔京韻系鄉(xiāng)情 教學(xué)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論