基于單片機(jī)的簡易電子琴設(shè)計(jì)_第1頁
基于單片機(jī)的簡易電子琴設(shè)計(jì)_第2頁
基于單片機(jī)的簡易電子琴設(shè)計(jì)_第3頁
基于單片機(jī)的簡易電子琴設(shè)計(jì)_第4頁
基于單片機(jī)的簡易電子琴設(shè)計(jì)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

基于單片機(jī)的簡易電子琴設(shè)計(jì)摘要:隨著社會(huì)的開展進(jìn)步,音樂逐漸成為我們生活中很重要的一局部,有人曾說喜歡音樂的人不會(huì)向惡。我們都會(huì)抽空欣賞世界名曲,作為對(duì)精神的洗禮。本次將設(shè)計(jì)一個(gè)基于單片機(jī)的簡易電子琴,電子琴是現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,是一種新型的鍵盤樂器。它在現(xiàn)代音樂扮演著重要的角色,單片機(jī)具有強(qiáng)大的控制功能和靈活的編程實(shí)現(xiàn)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代的一局部。本系統(tǒng)是以51系列單片機(jī)為主控制器,附有矩陣鍵盤、LED數(shù)碼管揚(yáng)聲器等組成。系統(tǒng)完成顯示輸入信息、播放相應(yīng)音符以及音樂存儲(chǔ)回放的功能。本系統(tǒng)運(yùn)行穩(wěn)定,其優(yōu)點(diǎn)是硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,性價(jià)比較高等,具有一定的實(shí)用性。用戶通過本設(shè)計(jì)可以彈奏出常規(guī)的音符和播放歌曲的功能,除此外還附帶聲音存儲(chǔ)播放功能。關(guān)鍵詞:單片機(jī);矩陣鍵盤;LED數(shù)碼管;揚(yáng)聲器目錄1.引言11.1目的和意義11.2研究概況及開展趨勢11.3本系統(tǒng)主要研究內(nèi)容32.總體方案設(shè)計(jì)32.1系統(tǒng)總體方案設(shè)計(jì)概述32.2主控模塊方案設(shè)計(jì)42.3顯示模塊方案設(shè)計(jì)42.4按鍵模塊方案設(shè)計(jì)42.5功率放大模塊方案設(shè)計(jì)53.系統(tǒng)硬件設(shè)計(jì)53.1主控模塊設(shè)計(jì)53.1.1STC89C52單片機(jī)主要特性63.1.2STC89C52單片機(jī)的中斷系統(tǒng)73.1.3系統(tǒng)電路設(shè)計(jì)73.2數(shù)碼管模塊設(shè)計(jì)83.2.1數(shù)碼管原理設(shè)計(jì)83.2.2數(shù)碼管電路設(shè)計(jì)93.3鍵盤模塊設(shè)計(jì)103.3.1矩陣鍵盤模塊設(shè)計(jì)103.3.2獨(dú)立鍵盤模塊設(shè)計(jì)113.4功率放大模塊設(shè)計(jì)113.4.1功率放大模塊功能介紹113.4.2LM386的使用123.5系統(tǒng)的整體原理圖設(shè)計(jì)124.系統(tǒng)軟件設(shè)計(jì)134.1系統(tǒng)軟件總體設(shè)計(jì)134.2定時(shí)器產(chǎn)生音樂信號(hào)原理144.3程序設(shè)計(jì)原理145.系統(tǒng)調(diào)試155.1硬件調(diào)試155.2軟件調(diào)試165.3調(diào)試結(jié)果175.3.1數(shù)據(jù)統(tǒng)計(jì)175.3.2數(shù)據(jù)分析185.3.3測試過程中碰到的問題18結(jié)論18致謝19參考文獻(xiàn)19附錄1實(shí)物圖21附錄2元器件清單22附錄3系統(tǒng)源程序231.引言1.1目的和意義單片微型計(jì)算機(jī)是大規(guī)模集成電路技術(shù)開展的產(chǎn)物,屬第四代電子計(jì)算機(jī),它具有高性能、高速度、體積小、價(jià)格低廉、穩(wěn)定可靠、應(yīng)用廣泛的特點(diǎn)。它的應(yīng)用必定導(dǎo)致傳統(tǒng)的控制技術(shù)從根本上發(fā)生變革。因此,單片機(jī)的開發(fā)應(yīng)用已成為高科技和工程領(lǐng)域的一項(xiàng)重大課題。電子琴是現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,是一種新型的鍵盤樂器。它在現(xiàn)代音樂扮演著重要的角色,單片機(jī)具有強(qiáng)大的控制功能和靈活的編程實(shí)現(xiàn)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代的一局部。本設(shè)計(jì)是用單片機(jī)為核心控制元件,設(shè)計(jì)一個(gè)電子琴。以單片機(jī)作為主控核心,與鍵盤、揚(yáng)聲器等模塊組成核心主控制模塊,在主控模塊上設(shè)有16個(gè)按鍵和揚(yáng)聲器。本文主要對(duì)使用單片機(jī)設(shè)計(jì)簡易電子琴進(jìn)行了分析,并介紹了基于單片機(jī)電子琴統(tǒng)硬件組成。利用單片機(jī)產(chǎn)生不同頻率來獲得我們要求的音階,最終可隨意彈奏想要表達(dá)的音樂。并且本文分別從原理圖,主要芯片,各模塊原理及各模塊的程序的調(diào)試來詳細(xì)闡述。本系統(tǒng)是簡易電子琴的設(shè)計(jì),按下鍵盤矩陣中的按鍵會(huì)使數(shù)碼管顯示當(dāng)前按鍵,揚(yáng)聲器播放器對(duì)應(yīng)的音符。通過設(shè)計(jì)本系統(tǒng)可了解單片機(jī)的根本功能。對(duì)單片機(jī)的了解有一個(gè)小的飛躍。1.2研究概況及開展趨勢隨著當(dāng)代科學(xué)技術(shù)的開展,電子產(chǎn)品在人們的日常生活中占據(jù)著越來越重要的地位。電子琴作為其中的一個(gè)典型代表,引領(lǐng)著許多孩子進(jìn)入音樂的殿堂。因此,我們選擇了簡易電子琴這個(gè)題目來制作,因?yàn)樗粌H能夠提高我的實(shí)踐動(dòng)手能力,還與實(shí)際生活有著緊密地聯(lián)系。單片機(jī)是一門實(shí)踐性很強(qiáng)的課程,而此次課程設(shè)計(jì)依據(jù)的理論根底是單片機(jī)的相關(guān)知識(shí)。其主要目的是通過本次畢業(yè)設(shè)計(jì),進(jìn)一步理解數(shù)字系統(tǒng)的概念,掌握小型數(shù)字系統(tǒng)的設(shè)計(jì)方法,掌握小型數(shù)字系統(tǒng)的組裝和調(diào)試技術(shù),裝握查閱有關(guān)資料的技能。單片機(jī)又稱單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。概括講:一塊芯片就成了一臺(tái)計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格廉價(jià)、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時(shí),學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原理與結(jié)構(gòu)的最正確選擇。單片機(jī)技術(shù)在各個(gè)領(lǐng)域正得到越來越廣泛的應(yīng)用,世界上許多集成電路生產(chǎn)廠家相繼推出了各種類型的單片機(jī),在單片機(jī)家族的眾多成員中,MCS-51系列單片機(jī)以其優(yōu)越的性能、成熟的技術(shù)及高可靠性和高性價(jià)比,迅速占領(lǐng)了工業(yè)測控和自動(dòng)化工程應(yīng)用的主要市場,成為國內(nèi)單片機(jī)領(lǐng)域中的主流。它是一種在線式實(shí)時(shí)控制計(jì)算機(jī),在線式就是現(xiàn)場控制,需要的是有較強(qiáng)的抗干擾能力,較低的本錢,這也是和離線式計(jì)算機(jī)的〔比方家用PC〕的主要區(qū)別。計(jì)算機(jī)技術(shù)和通信技術(shù)緊密結(jié)合,涉及到通信與計(jì)算機(jī)兩個(gè)領(lǐng)域。計(jì)算機(jī)網(wǎng)絡(luò)的誕生使計(jì)算機(jī)體系結(jié)構(gòu)發(fā)生了巨大變化,在當(dāng)今社會(huì)經(jīng)濟(jì)中起著非常重要的作用,它對(duì)人類社會(huì)的進(jìn)步做出了巨大奉獻(xiàn)。從某種意義上講,計(jì)算機(jī)網(wǎng)絡(luò)的開展水平不僅反映了一個(gè)國家的計(jì)算機(jī)科學(xué)和通信技術(shù)水平,而且已經(jīng)成為衡量其國力及現(xiàn)代化程度的重要標(biāo)志之一[1]。近年來,正是由于計(jì)算機(jī)技術(shù)的開展加之計(jì)算機(jī)多媒體技術(shù)及多媒體制作軟件的廣泛應(yīng)用,使模擬電子琴技術(shù)也緊隨時(shí)代的潮流加速開展,比方現(xiàn)在從互聯(lián)網(wǎng)上就可以隨意免費(fèi)下載許多計(jì)算機(jī)軟件開發(fā)出來的模擬電子琴軟件,比方大名鼎鼎的悠悠電子琴,nbPiano模擬電子琴,順風(fēng)雷電子琴等,不僅以其完美的界面爭得了廣闊電子琴愛好者地喜愛,而且其功能已經(jīng)根本接近于真正的電子琴。相信計(jì)算機(jī)模擬電子琴的開展會(huì)越來越好。最近20年內(nèi),軟件模擬電子琴技術(shù)開展迅速,不管是在制作過程上、操作程序上還是在演奏技法上都有了突飛猛進(jìn)的開展,這在音樂開展史上是其他任何實(shí)體樂器所不能比較的[2]。自從八十年代電子琴進(jìn)入我國以來,電子琴以它適合中國國情、經(jīng)濟(jì)適用、表現(xiàn)力強(qiáng)、功能強(qiáng)大而受到廣闊的初學(xué)者、音樂愛好者、專業(yè)音樂工作者,音樂家的喜愛,可以說現(xiàn)在電子琴在中國的普及率是很高的。這無論是對(duì)提高人們整體的音樂素質(zhì),還是對(duì)音樂的開展都是功德無量的事。本課題就是基于電子琴的上述諸多優(yōu)點(diǎn)而提出來的。雖然現(xiàn)在電子琴的價(jià)格也比較低廉,但是低端的電子琴功能還是比較單一的,它不能滿足人們對(duì)多種樂器樂感的要求。而計(jì)算機(jī)模擬電子琴,功能豐富,在網(wǎng)上又可以下載各種各樣的模擬電子琴軟件。一個(gè)普通家庭,只要家里有一臺(tái)個(gè)人電腦或筆記本,就可以隨意下載這樣的軟件,使用電腦鍵盤就可以練習(xí)各種電子琴指法,對(duì)電子琴的學(xué)習(xí)非常有幫助;一名大學(xué)生,在閑暇之余,也可以下載一個(gè)模擬電子琴軟件,它既陶冶了一個(gè)人的情操,又豐富了我們大學(xué)生的課余生活。1.3本系統(tǒng)主要研究內(nèi)容本系統(tǒng)設(shè)計(jì)制作一個(gè)可演奏的電子琴?!?〕鍵盤矩陣識(shí)別。即矩陣掃描,顯示當(dāng)前按鍵。〔2〕不同頻率音符播放。可以通過按鍵控制15種發(fā)音?!?〕設(shè)有一個(gè)按鍵,按下后可以播放預(yù)設(shè)的歌曲?!?〕設(shè)有存儲(chǔ)和回放按鍵,可以儲(chǔ)存用戶彈奏的音符并能回放。2.總體方案設(shè)計(jì)根據(jù)所要實(shí)現(xiàn)的功能劃分,系統(tǒng)一共需要以下幾個(gè)模塊:主控模塊、顯示模塊、時(shí)鐘模塊、溫度檢測模塊,以下就針對(duì)這幾個(gè)模塊的選型和論證進(jìn)行討論。2.1系統(tǒng)總體方案設(shè)計(jì)概述系統(tǒng)以STC89C52單片機(jī)為控制核心,對(duì)系統(tǒng)進(jìn)行初始化,主要完成對(duì)鍵盤的響應(yīng)、數(shù)碼管顯示等功能的控制,起到總控和協(xié)調(diào)各模塊之間工作的作用。單片機(jī)通過檢測鍵盤輸出對(duì)應(yīng)頻率的方波,后級(jí)通過LM386對(duì)功率進(jìn)行擴(kuò)大從而驅(qū)動(dòng)揚(yáng)聲器發(fā)響。如圖2-1所示,系統(tǒng)由單片機(jī)STC89C52、矩陣鍵盤模塊、功率放大模塊、揚(yáng)聲器、USB供電電源所組成。系統(tǒng)能完成以下功能。系統(tǒng)帶有4*4矩陣鍵盤,矩陣鍵盤的16個(gè)按鍵分別代表15個(gè)音符和一首固定的歌曲,用戶按每個(gè)按鍵,單片時(shí)機(jī)產(chǎn)生對(duì)應(yīng)頻率的方波,并通過功率放大模塊驅(qū)動(dòng)蜂鳴器發(fā)出對(duì)應(yīng)的聲響。16個(gè)按鍵每個(gè)按鍵在數(shù)碼管也會(huì)對(duì)應(yīng)一個(gè)字符來指示用戶所按下的按鍵。同時(shí)系統(tǒng)帶有存儲(chǔ)和播放功能,用戶可以通過特定按鍵切換到錄制模式,系統(tǒng)會(huì)把用戶按的音符存儲(chǔ),存儲(chǔ)后可以通過特定的按鍵進(jìn)行播放。圖2-1系統(tǒng)結(jié)構(gòu)框圖2.2主控模塊方案設(shè)計(jì)方案一:采用MSP430系列單片機(jī),該單片機(jī)是TI公司1996年開始推向市場的一種16位超低功耗的混合信號(hào)處理器。其內(nèi)部集成了很多模擬電路、數(shù)字電路和微處理器,提供強(qiáng)大的功能。不過該芯片昂貴不適合一般的設(shè)計(jì)開發(fā)。方案二:采用51系列的單片機(jī),該單片機(jī)是一個(gè)高可靠性,超低價(jià),高性能的8位單片機(jī),32個(gè)IO口,且STC系列的單片機(jī)可以在線編程、調(diào)試,方便地實(shí)現(xiàn)程序的下載與整機(jī)的調(diào)試。因此選用方案二中的51系列單片機(jī)作為主控芯片。2.3顯示模塊方案設(shè)計(jì)方案一:采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對(duì)于顯示文字比較適宜,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對(duì)較高,所以不用此種作為顯示。方案二:采用LED數(shù)碼管動(dòng)態(tài)掃描,LED數(shù)碼管價(jià)格雖適中,對(duì)于顯示數(shù)字也最適宜,而且采用動(dòng)態(tài)掃描法與單片機(jī)連接時(shí),占用單片機(jī)口線少。方案三:采用LCD液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形,顯示多樣,清晰可見,但是LCD相對(duì)價(jià)格較貴,而且本設(shè)計(jì)只需顯示簡單字符即可。比較可知本設(shè)計(jì)中方案二中的LED數(shù)碼管作為顯示模塊。2.4按鍵模塊方案設(shè)計(jì)方案一:采用常見的獨(dú)立按鍵輸入模式,根據(jù)需要一共要用16個(gè)按鍵進(jìn)行功能輸入,而所選用的單片機(jī)只有32個(gè)IO,占用了總IO數(shù)的一般,不利于后續(xù)的功能擴(kuò)展。方案二:采用矩陣鍵盤作為輸入,矩陣鍵盤是單片機(jī)外部設(shè)備中所使用的排布類似于矩陣的鍵盤組。在鍵盤中按鍵數(shù)量較多時(shí),為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖2-2所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個(gè)按鍵加以連接。這樣,一個(gè)端口〔如P1口〕就可以構(gòu)成4*4=16個(gè)按鍵,比直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比方再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線那么只能多出一鍵〔9鍵〕。由此可見,在需要的鍵數(shù)比較多時(shí),采用矩陣法來做鍵盤是合理的。圖2-2矩陣鍵盤電路結(jié)構(gòu)框圖由于本設(shè)計(jì)除了有彈奏功能外,還需要存儲(chǔ)和播放音樂的功能,因此這里選用了矩陣鍵盤加獨(dú)立鍵盤設(shè)計(jì)。2.5功率放大模塊方案設(shè)計(jì)方案一:利用三極管做一個(gè)分立的功率放大器,是本錢低廉,但是分立元件搭建的電路一般調(diào)試麻煩,而且元件較多,因此為了調(diào)試方便不適合使用分立元件進(jìn)行搭建。方案二:使用集成芯片LM386,該芯片是一種音頻集成功放,具有自身功耗低、電源電壓范圍大、外接元件少和總諧波失真小等優(yōu)點(diǎn)的功率放大器,廣泛應(yīng)用于錄音機(jī)和收音機(jī)之中。因此本設(shè)計(jì)采用方案二中的LM386芯片作為功率放大模塊的芯片。3.系統(tǒng)硬件設(shè)計(jì)3.1主控模塊設(shè)計(jì)主控模塊在整個(gè)系統(tǒng)中起著統(tǒng)籌的作用,需要檢測鍵盤,控制音樂播放等,同時(shí)驅(qū)動(dòng)液晶顯示相關(guān)數(shù)字。在這里我們選用了51系列單片機(jī)中的STC89C52單片機(jī)作為系統(tǒng)的主控芯片。STC89C52有40個(gè)引腳,4個(gè)8位并行I/O口,1個(gè)全雙工異步串行口,同時(shí)內(nèi)含5個(gè)中斷源,2個(gè)優(yōu)先級(jí),2個(gè)16位定時(shí)/計(jì)數(shù)器。STC89C52的存儲(chǔ)器系統(tǒng)由4K的程序存儲(chǔ)器(掩膜ROM),和128B的數(shù)據(jù)存儲(chǔ)器(RAM)組。3.1.1STC89C52單片機(jī)主要特性〔1〕一個(gè)8位的微處理器(CPU)?!?〕片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM(128B),用以存放可以讀/寫的數(shù)據(jù),如運(yùn)算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù)等,SST89系列單片機(jī)最多提供1K的RAM?!?〕片內(nèi)程序存儲(chǔ)器ROM(4KB),用以存放程序、一些原始數(shù)據(jù)和表格。但也有一些單片機(jī)內(nèi)部不帶ROM/EPROM,如8031,8032,80C31等。目前單片機(jī)的開展趨勢是將RAM和ROM都集成在單片機(jī)里面,這樣既方便了用戶進(jìn)行設(shè)計(jì)又提高了系統(tǒng)的抗干擾性[3]。圖3-1STC89C52單片機(jī)管腳圖局部引腳說明:〔1〕時(shí)鐘電路引腳XTAL1和XTAL2:XTAL2(18腳):接外部晶體和微調(diào)電容的一端;片內(nèi)它是振蕩電路反相放大器的輸出端,振蕩電路的頻率就是晶體固有頻率。假設(shè)需采用外部時(shí)鐘電路時(shí),該引腳輸入外部時(shí)鐘脈沖。要檢查振蕩電路是否正常工作,可用示波器查看XTAL2端是否有脈沖信號(hào)輸出?!?〕控制信號(hào)引腳RST,ALE:RST/VPD(9腳):RST是復(fù)位信號(hào)輸入端,高電平有效。當(dāng)此輸入端保持備用電源的輸入端。當(dāng)主電源Vcc發(fā)生故障,降低到低電平規(guī)定值時(shí),將+5V電源自動(dòng)兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘振蕩周期)的高電平時(shí),就可以完成復(fù)位操作。RST引腳的第二功能是VPD,即接入RST端,為RAM提供備用電源,以保證存儲(chǔ)在RAM中的信息不喪失,從而合復(fù)位后能繼續(xù)正常運(yùn)行。ALE/PROG(30腳):地址鎖存允許信號(hào)端。當(dāng)8051上電正常工作后,ALE引腳不斷向外輸出正脈沖信號(hào),此頻率為振蕩器頻率fOSC的1/6。CPU訪問片外存儲(chǔ)器時(shí),ALE輸出信號(hào)作為鎖存低8位地址的控制信號(hào)。3.1.2STC89C52單片機(jī)的中斷系統(tǒng)STC89C52系列單片機(jī)的中斷系統(tǒng)有5個(gè)中斷源,2個(gè)優(yōu)先級(jí),可以實(shí)現(xiàn)二級(jí)中斷效勞嵌套。由片內(nèi)特殊功能存放器中的中斷允許存放器IE控制CPU是否響應(yīng)中斷請求;由中斷優(yōu)先級(jí)存放器IP安排各中斷源的優(yōu)先級(jí);同一優(yōu)先級(jí)內(nèi)各中斷同時(shí)提出中斷請求時(shí),由內(nèi)部的查詢邏輯確定其響應(yīng)次序。在單片機(jī)應(yīng)用系統(tǒng)中,常常會(huì)有定時(shí)控制需求,如定時(shí)輸出、定時(shí)檢測、定時(shí)掃描等;也經(jīng)常要對(duì)外部事件進(jìn)行計(jì)數(shù)。STC89C52單片機(jī)內(nèi)集成有兩個(gè)可編程的定時(shí)/計(jì)數(shù)器:T0和T1,它們既可以工作于定時(shí)模式,也可以工作于外部事件計(jì)數(shù)模式,此外,T1還可以作為串行口的波特率發(fā)生器。3.1.3系統(tǒng)電路設(shè)計(jì)圖3-2單片機(jī)最小系統(tǒng)電路圖圖3-2為單片機(jī)最小系統(tǒng)電路圖,單片機(jī)最小系統(tǒng)有單片機(jī)、時(shí)鐘電路、復(fù)位電路組成,時(shí)鐘電路選用了12MHZ的晶振提供時(shí)鐘,作用為給單片機(jī)提供一個(gè)時(shí)間基準(zhǔn),其中執(zhí)行一條根本指令需要的時(shí)間為一個(gè)機(jī)器周期,單片機(jī)的復(fù)位電路,按下復(fù)位按鍵之后可以使單片機(jī)進(jìn)入剛上電的起始狀態(tài)。圖中10K排阻為P0口的上拉電阻,由于P0口跟其他IO結(jié)構(gòu)不一樣為漏極開路的結(jié)構(gòu),因此要加上拉電阻才能正常使用。3.2數(shù)碼管模塊設(shè)計(jì)3.2.1數(shù)碼管原理設(shè)計(jì)數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元〔多一個(gè)小數(shù)點(diǎn)顯示〕;按能顯示多少個(gè)“8〞可分為1位、2位、4位等等數(shù)碼管。按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管,共陽數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管,共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陽極為低電平時(shí),相應(yīng)字段就不亮。數(shù)碼管要正常顯示,就要用驅(qū)動(dòng)電路來驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類。靜態(tài)驅(qū)動(dòng)也稱直流驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè)單片機(jī)的I/O端口進(jìn)行驅(qū)動(dòng),或者使用如BCD碼二-十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是編程簡單,顯示亮度高,缺點(diǎn)是占用I/O端口多,如驅(qū)動(dòng)5個(gè)數(shù)碼管靜態(tài)顯示那么需要5×8=40根I/O端口來驅(qū)動(dòng),要知道一個(gè)89S51單片機(jī)可用的I/O端口才32個(gè)〕,實(shí)際應(yīng)用時(shí)必須增加譯碼驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng),增加了硬件電路的復(fù)雜性。數(shù)碼管動(dòng)態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制翻開,該位就顯示出字形,沒有選通的數(shù)碼管就不會(huì)亮。通過分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。圖3-3數(shù)碼管內(nèi)部結(jié)構(gòu)圖3.2.2數(shù)碼管電路設(shè)計(jì)如圖3-4所示為一位共陽數(shù)碼管的硬件電路連接圖,由于數(shù)碼管內(nèi)部實(shí)際為8個(gè)LED燈,如果把LED的陰級(jí)直接單片機(jī)的IO的口,會(huì)使LED通過的電流過大從而把數(shù)碼管燒毀,因此在設(shè)計(jì)的時(shí)候在LED的陰級(jí)和單片機(jī)的IO之間加上了限流電阻從而起到限流作用。根據(jù)經(jīng)驗(yàn),這里選取了1K電阻。程序編寫的時(shí)候我們預(yù)先根據(jù)要顯示的字符,編寫了個(gè)對(duì)應(yīng)要顯示的數(shù)組,這樣可以使程序更加簡化。圖3-4共陽數(shù)碼管硬件電路連接圖3.3鍵盤模塊設(shè)計(jì)3.3.1矩陣鍵盤模塊設(shè)計(jì)矩陣鍵盤在這里作用起著播放15個(gè)音符和一首歌曲的作用,用戶按下對(duì)應(yīng)的功能會(huì)播出對(duì)應(yīng)的音樂。圖3-5矩陣鍵盤模塊電路圖硬件電路設(shè)計(jì)圖如圖3-5所示。把單片機(jī)的P3.0-P3.7端口通過8聯(lián)撥動(dòng)撥碼開關(guān)連接到“4*4行列式鍵盤〞,其中P3.0-P3.3作為列線,P3.4-P3.7作為行線,系統(tǒng)首先通過CPU對(duì)全部鍵盤進(jìn)行掃描,即把第一根行線置為“0〞狀態(tài),其余行線置于“1〞狀態(tài),讀入輸入緩沖器的狀態(tài),假設(shè)其狀態(tài)全為“1〞說明該行無鍵按下,再將第二根行線置為“0〞狀態(tài),同樣讀入輸入緩沖器的狀態(tài),如其狀態(tài)也全為“1〞,那么置第一根行線置為“0〞狀態(tài),以此類推。如讀入輸入緩沖器的狀態(tài)不全為“1〞,確定哪一根列線為“0〞狀態(tài),當(dāng)某個(gè)鍵的行線和列線都為“0〞狀態(tài)時(shí),說明該鍵按下。這里有一個(gè)消抖動(dòng)的過程,是通過軟件來實(shí)現(xiàn)的。矩陣式鍵盤模式以N個(gè)端口連接控制N*N個(gè)按鍵,實(shí)時(shí)在LED數(shù)碼管上顯示按鍵信息。顯示按鍵信息,省下了很多的I/O端口為他用,相反,獨(dú)立式按鍵雖編程簡單,但占用I/O口資源較多,不適合在按鍵較多的場合應(yīng)用。并且在實(shí)際應(yīng)用中經(jīng)常要用到輸入數(shù)字、字母、符號(hào)等操作功能,如電子密碼鎖、機(jī)鍵盤、計(jì)算器按鍵等,至少都需要12到16個(gè)按鍵。矩陣式鍵盤簡介:矩陣式鍵盤又稱行列鍵盤,它是用N條I/O線作為行線,N條I/O線作為列線組成的鍵盤。在行線和列線的每個(gè)交叉點(diǎn)上設(shè)置一個(gè)按鍵。這樣鍵盤上按鍵的個(gè)數(shù)就為N*N個(gè)。這種行列式鍵盤結(jié)構(gòu)能有效地提高單片機(jī)系統(tǒng)中I/O口的利用率。最常見的鍵盤布局如圖3-6所示。一般由16個(gè)按鍵組成,在單片機(jī)中正好可以用一個(gè)P口實(shí)現(xiàn)16個(gè)按鍵功能,這也是在單片機(jī)系統(tǒng)中最常用的形式,本設(shè)計(jì)就采用這個(gè)鍵盤模式。圖3-6鍵盤布局矩陣式鍵盤提高效率進(jìn)行按鍵操作管理有效方法,它可以提高系統(tǒng)準(zhǔn)確性,有利于資源的節(jié)約,降低對(duì)操作者本身素質(zhì)的要求。3.3.2獨(dú)立鍵盤模塊設(shè)計(jì)本設(shè)計(jì)還附帶有播放過程中音符存儲(chǔ)播放功能,用戶通過按鍵可以進(jìn)入錄音狀態(tài),單片時(shí)機(jī)把用戶按下的每個(gè)音符的編號(hào)記錄在一個(gè)數(shù)組里面,錄音完畢后,用戶按下播放按鍵那么可以把存儲(chǔ)的錄音播放。這個(gè)模塊還附帶LED燈指示方便用戶進(jìn)行識(shí)別。圖3-7為獨(dú)立模塊的電路原理圖。圖3-7獨(dú)立按鍵模塊電路圖3.4功率放大模塊設(shè)計(jì)3.4.1功率放大模塊功能介紹功率放大模塊我們選用了LM386作為功率放大模塊的主要芯片,LM386是美國國家半導(dǎo)體公司生產(chǎn)的音頻功率放大器,主要應(yīng)用于低電壓消費(fèi)類產(chǎn)品。為使外圍元件最少,電壓增益內(nèi)置為20。但在1腳和8腳之間增加一只外接電阻和電容,便可將電壓增益調(diào)為任意值,直至200。輸入端以地為參考,同時(shí)輸出端被自動(dòng)偏置到電源電壓的一半,在6V電源電壓下,它的靜態(tài)功耗僅為24mW,使得LM386特別適用于電池供電的場合。3.4.2LM386的使用LM386的外形和引腳的排列如圖3-8所示。引腳2為反相輸入端,3為同相輸入端;引腳5為輸出端;引腳6和4分別為電源和地;引腳1和8為電壓增益設(shè)定端;使用時(shí)在引腳7和地之間接旁路電容,通常取10μF[4]。圖3-8LM386管腳圖LM386第一級(jí)為差分放大電路,T1和T3、T2和T4分別構(gòu)成復(fù)合管,作為差分放大電路的放大管;T5和T6組成鏡像電流源作為T1和T2的有源負(fù)載;T3和T4信號(hào)從管的基極輸入,從T2管的集電極輸出,為雙端輸入單端輸出差分電路。使用鏡像電流源作為差分放大電路有源負(fù)載,可使單端輸出電路的增益近似等于雙端輸出電容的增益。第二級(jí)為共射放大電路,T7為放大管,恒流源作有源負(fù)載,以增大放大倍數(shù)。第三級(jí)中的T8和T9管復(fù)合成PNP型管,與NPN型管T10構(gòu)成準(zhǔn)互補(bǔ)輸出級(jí)。二極管D1和D2為輸出級(jí)提供適宜的偏置電壓。引腳2為反相輸入端,引腳3為同相輸入端。電路由單電源供電,故為OTL電路。輸出端〔引腳5〕應(yīng)外接輸出電容后再接負(fù)載。電阻R7從輸出端連接到T2的發(fā)射極,形成反應(yīng)通路,并與R5和R6構(gòu)成反應(yīng)網(wǎng)絡(luò),從而引入了深度電壓串聯(lián)負(fù)反應(yīng),使整個(gè)電路具有穩(wěn)定的電壓增益。查LM386的資料,電源電壓4-12V或5-18V;靜態(tài)消耗電流為4mA;電壓增益為20-200;在1、8腳開路時(shí),帶寬為300KHz;輸入阻抗為50K;音頻功率0.5W。3.5系統(tǒng)的整體原理圖設(shè)計(jì)我們綜合上述四個(gè)模塊的設(shè)計(jì),可以得到一個(gè)系統(tǒng)的整體原理圖的設(shè)計(jì),系統(tǒng)的整個(gè)原理圖如圖3-9所示。圖3-9系統(tǒng)整體原理圖4.系統(tǒng)軟件設(shè)計(jì)4.1系統(tǒng)軟件總體設(shè)計(jì)主程序流程圖如圖4-1所示,單片機(jī)上電后先進(jìn)行初始化,去除一些參數(shù)的初始值,然后單片機(jī)通過不斷的掃描矩陣鍵盤從而判斷用戶按下的是哪個(gè)按鍵,用戶按下按鍵后單片機(jī)通過裝載不同的值給定時(shí)器,從而發(fā)出不同頻率的聲音。圖4-1系統(tǒng)流程圖4.2定時(shí)器產(chǎn)生音樂信號(hào)原理一首音樂是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對(duì)于單片機(jī)來產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來產(chǎn)生這樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系正確即可[5]。利用AT89C51的內(nèi)部定時(shí)器使其工作計(jì)數(shù)器模式〔MODE1〕下,改變計(jì)數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階,例如,頻率為523Hz,其周期T=1/523=1912μs,因此只要令計(jì)數(shù)器計(jì)時(shí)956μs/1μs=956,每計(jì)數(shù)956次時(shí)將I/O反相,就可得到中音DO〔523Hz〕。計(jì)數(shù)脈沖值與頻率的關(guān)系式(如式2-1所示)是:N=fi÷2÷fr

2-1式2-1中,N是計(jì)數(shù)值;fi是機(jī)器頻率〔晶體振蕩器為12MHz時(shí),其頻率為1MHz〕;fr是想要產(chǎn)生的頻率。其計(jì)數(shù)初值T的求法如下:T=65536-N=65536-fi÷2÷fr2-2例如:設(shè)K=65536,fi=1MHz,求低音DO〔261Hz〕、中音DO〔523Hz〕、高音DO〔1046Hz〕的計(jì)數(shù)值。T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr2-3低音DO的T=65536-500000/262=63627中音DO的T=65536-500000/523=64580高音DO的T=65536-500000/1046=650594.3程序設(shè)計(jì)原理軟件任務(wù)分析和硬件電路設(shè)計(jì)結(jié)合進(jìn)行,哪些功能由硬件完成,哪些任務(wù)由軟件完成,在硬件電路設(shè)計(jì)根本定型后,也就根本上決定下來了。軟件任務(wù)分析環(huán)節(jié)是為軟件設(shè)計(jì)做一個(gè)總體規(guī)劃。從軟件的功能來看可分為兩大類:一類是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測量、計(jì)算、顯示、打印、輸出控制和通信等;另一類是監(jiān)控軟件,它是專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色的軟件。這兩類軟件的設(shè)計(jì)方法各有特色,執(zhí)行軟件的設(shè)計(jì)偏重算法效率,與硬件關(guān)系密切,千變?nèi)f化。軟件任務(wù)分析時(shí),應(yīng)將各執(zhí)行模塊一一列出,并為每一個(gè)執(zhí)行模塊進(jìn)行功能定義和接口定義〔輸入輸出定義〕。在各執(zhí)行模塊進(jìn)行定義時(shí),將要牽扯到的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型問題也一并規(guī)劃好。各執(zhí)行模塊規(guī)劃好后,就可以監(jiān)控程序了。首先根據(jù)系統(tǒng)功能和鍵盤設(shè)置選擇一種最適合的監(jiān)控程序結(jié)構(gòu)。相對(duì)來講,執(zhí)行模塊任務(wù)明確單純,比較容易編程,而監(jiān)控程序較易出問題。軟件任務(wù)分析的另一個(gè)內(nèi)容是如何安排監(jiān)控軟件和各執(zhí)行模塊。整個(gè)系統(tǒng)軟件可分為后臺(tái)程序〔背景程序〕和前臺(tái)程序。后臺(tái)程序指主程序及其調(diào)用的子程序,這類程序?qū)?shí)時(shí)性要求不是太高,延誤幾十ms甚至幾百ms也沒關(guān)系,故通常將監(jiān)控程序〔鍵盤解釋程序〕,顯示程序和打印程序等與操作者打交道的程序放在后臺(tái)程序中執(zhí)行;而前臺(tái)程序安排一些實(shí)時(shí)性要求較高的內(nèi)容,如定時(shí)系統(tǒng)和外部中斷〔如掉電中斷〕。也可以將全部程序均安排在前臺(tái),后臺(tái)程序?yàn)椤笆瓜到y(tǒng)進(jìn)入睡眠狀態(tài)〞,以利于系統(tǒng)節(jié)電和抗干擾。5.系統(tǒng)調(diào)試5.1硬件調(diào)試電子琴的電路系統(tǒng)較大,對(duì)于焊接方面更是不可輕視,龐大的電路系統(tǒng)中只要出于一處的錯(cuò)誤,那么會(huì)對(duì)檢測造成很大的不便,而且電路的交線較多,對(duì)于各種鋒利的引腳要注意處理,否那么會(huì)刺破帶有包皮的導(dǎo)線,那么會(huì)對(duì)電路造成短路現(xiàn)象。在本電子琴的設(shè)計(jì)調(diào)試中遇到了很多的問題?;叵脒@些問題只要認(rèn)真多思考都是可以防止的,以下為主要的問題:〔1〕數(shù)碼管選用的時(shí)候沒有注意采用的是共陰還是共陽,導(dǎo)致調(diào)試的時(shí)候數(shù)碼管一直不能顯示。解決方案:把共陰數(shù)碼管換成共陽數(shù)碼管?!?〕最開始的時(shí)候以為單片機(jī)IO口直接可以驅(qū)動(dòng)喇叭發(fā)聲,后來調(diào)試的時(shí)候久久不能出聲音。解決方案:經(jīng)過查找相關(guān)資料,知道揚(yáng)聲器需要功率放大器來驅(qū)動(dòng),后來把功率放大器加上,系統(tǒng)便可以正常工作。調(diào)試的過程如圖5-1所示,首先進(jìn)行初始化操作,檢測按鍵以后是否有聲音,如果不正常,那么有四種可能:〔1〕蜂鳴器有問題;〔2〕按鍵本身的問題;〔3〕程序的問題;〔4〕連線問題。檢測數(shù)碼管是否顯示正確或者有顯示,如果不正常顯示,那么有三種可能:〔1〕數(shù)碼管本身的問題;〔2〕程序的問題;〔3〕連線問題。按下存儲(chǔ)鍵以后我們進(jìn)行播放,如果播放不正常,那么包括兩種可能:〔1〕存儲(chǔ)是否成功;〔2〕播放程序是否正確。圖5-1硬件調(diào)試流程圖5.2軟件調(diào)試電子琴是多功能的數(shù)字型,可以根據(jù)用戶按下的按鍵發(fā)出對(duì)應(yīng)頻率的聲音。電子琴功能很多,所以對(duì)于它的程序也較為復(fù)雜,所以在編寫程序和調(diào)試時(shí)出現(xiàn)了相對(duì)較多的問題。最后經(jīng)過屢次的模塊子程序的修改,一步一步的完成,最終解決了軟件。在軟件的調(diào)試過程中主要遇到的問題如下:〔1〕燒入程序后,LED數(shù)碼管顯示閃動(dòng),而且亮度不均勻。解決方案:首先對(duì)調(diào)用的延時(shí)進(jìn)行逐漸修改,可以解決顯示閃動(dòng)問題。其次,由于本作品使作動(dòng)態(tài)掃描方式顯示的數(shù)字,動(dòng)態(tài)掃描很快,人的肉眼是無法看出,但是調(diào)用的顯示程序時(shí),如果不在返回時(shí)屏蔽掉最后的附值,那么會(huì)出現(xiàn)很亮的現(xiàn)象,所以在顯示的后面加了屏蔽子令,最后解決了此問題?!?〕當(dāng)用戶按下按鍵的時(shí)候,定時(shí)器設(shè)置的頻率跟設(shè)置的不對(duì)應(yīng)。解決方案:由于定時(shí)器中,有大量需要處理的語句使設(shè)置定時(shí)器的頻率不準(zhǔn),為了解決這個(gè)問題,我把不太相關(guān)的語句放大定時(shí)器外部使用。利用Proteus進(jìn)行仿真,通過不停的調(diào)試與改良,最后終于實(shí)現(xiàn)了電子琴的功能,Proteus仿真結(jié)果如圖5-2所示。圖5-2Proteus仿真圖5.3調(diào)試結(jié)果5.3.1數(shù)據(jù)統(tǒng)計(jì)為了能實(shí)現(xiàn)每個(gè)按鍵按下之后,蜂鳴器都能正常播放聲音,并且使每個(gè)音都準(zhǔn)確的播放,對(duì)每一個(gè)按鍵都進(jìn)行測試,為了盡可能的降低按鍵出錯(cuò)的偶然性,我對(duì)每個(gè)按鍵分別進(jìn)行了40次的檢測,在表中有兩個(gè)屬性,分別為:聽到的聲音與理想一致、聽到的聲音與理想不一致,這樣檢測可能會(huì)有一定的誤差,因?yàn)橐恢屡c否是人為認(rèn)定的。在檢測的過程中,還有很重要的檢測內(nèi)容,比方說:按下“1〞之后,播放的是否是“DO〞等等。測試結(jié)果如下表5-1所示。表5-1測試結(jié)果表測試項(xiàng)測試次數(shù)聽到的聲音與理想一致聽到的聲音與理想不一致一致率14039197.50%24038295.00%34039197.50%440400100.00%540400100.00%64039197.50%74039197.50%840400100.00%94038295.00%A4039197.50%B4039197.50%C40400100.00%D4039197.50%E40400100.00%F40400100.00%5.3.2數(shù)據(jù)分析根據(jù)如上表數(shù)據(jù)顯示,按鍵準(zhǔn)確率較高。其中出現(xiàn)過幾次95.00%和97.50%的情況,出現(xiàn)這種情況的原因有:〔1〕人為誤差;〔2〕環(huán)境因素;〔3〕元器件本身的問題。除了這幾項(xiàng)因素之外,測試結(jié)果根本到達(dá)預(yù)期效果。5.3.3測試過程中碰到的問題〔1〕在測試中遇到LED數(shù)碼管為不顯示時(shí),首先使用試測儀對(duì)電路進(jìn)行測試,觀察是否存在漏焊,虛焊,或者元件損壞。〔2〕LED數(shù)碼管顯示不正常,還有亮度不夠,首先使用試測儀對(duì)電路進(jìn)行測試,觀察電路是否存在短路現(xiàn)象。查看燒寫的程序是否正確無誤,對(duì)程序進(jìn)行認(rèn)真修改。經(jīng)過一系列的問題查找后系統(tǒng)最終能正常工作,并完成所有的功能。結(jié)論通過這次畢業(yè)設(shè)計(jì),我學(xué)到了不少課本上沒有的知識(shí),也鍛煉了自己的動(dòng)手能力,將以前學(xué)過的零散的知識(shí)串到一起。經(jīng)過我長時(shí)間的設(shè)計(jì)及調(diào)試,本系統(tǒng)根本能實(shí)現(xiàn)按下鍵盤矩陣中的按鍵會(huì)使數(shù)碼管顯示當(dāng)前按鍵,揚(yáng)聲器播放對(duì)應(yīng)的音符。但由于仿真系統(tǒng)原因,本設(shè)計(jì)音頻效果不是很好。缺乏之處有:〔1〕可彈奏的音符數(shù)較少,只能在一定范圍內(nèi)滿足用戶需要??赏ㄟ^改良鍵盤識(shí)別模塊和發(fā)生模塊來增加其復(fù)雜度〔2〕音量不可調(diào)。我的綜合設(shè)計(jì)主要涉及硬件和軟件兩方面的內(nèi)容,通過這些我的硬件和軟件開發(fā)能力都獲得了提高。首先硬件方面,根本了解了電子產(chǎn)品的開發(fā)流程和所要做的工作。根本掌握了Protel99SE原理圖的方法,并設(shè)計(jì)了一個(gè)單片機(jī)最小系統(tǒng)。通過開發(fā)板的設(shè)計(jì)和硬件搭建的過程,使我對(duì)51系單片機(jī)的接口有了更深層次的理解,熟悉了一些單片機(jī)常用的外圍電路引腳和連接方法,如LED數(shù)碼管,鍵盤等。并且我學(xué)會(huì)了分析問題解決問題的能力,加深了對(duì)所學(xué)理論知識(shí)的理解和運(yùn)用。我的動(dòng)手能力得到了很大的提高,創(chuàng)新意識(shí)得到了鍛煉。致謝本次畢業(yè)設(shè)計(jì)在選題及研究過程中得到小白老師的親切關(guān)心和悉心指導(dǎo)下完成的。他嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和鼓勵(lì)著我。從題目的選擇到工程的最終完成,白老師都始終給予我細(xì)心的指導(dǎo)和不懈的支持。白老師不僅在學(xué)業(yè)上給我以精心指導(dǎo),同時(shí)還在思想、生活上給我以無微不至的關(guān)心,在此謹(jǐn)向白老師致以誠摯的謝意和崇高的敬意。參考文獻(xiàn)[1]彭偉.單片機(jī)C語言程序設(shè)計(jì)實(shí)訓(xùn)100例.電子工業(yè)出版社.2023年[2]李建忠.單片機(jī)原理及應(yīng)用.西安:西安電子科技大學(xué),2002年[3]馬忠梅等.單片機(jī)的C語言應(yīng)用程序設(shè)計(jì)[M].北京航空航天大學(xué)出版社,2006[4]閻石.數(shù)字電子技術(shù)根底.北京:高等教育出版社,1997年[5]薛鳳鳴.電子琴電聲性能微機(jī)輔助分析測試系統(tǒng)[J].電聲技術(shù),1992(2).[6]劉建超.用單片機(jī)制作簡易電子琴[J].電子制作,2005(7).[7]韓志軍等.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M].機(jī)械工業(yè)出版社,2004[8]周潤景等.Proteus在MCS-51&ARM7系統(tǒng)中的應(yīng)用百例[M].電子工業(yè)出版社,2006[9]馬忠梅等.單片機(jī)的C語言應(yīng)用程序設(shè)計(jì)[M].北京航空航天大學(xué)出版社,2006[10]劉樹中,孫書膺,王春平.單片機(jī)和液晶顯示驅(qū)動(dòng)器串行接口的實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2007[11]黃鑫,馬善農(nóng),趙永科.基于CPLD的電子琴研究與設(shè)計(jì)[J].科技廣場,2007(5).[12]王毅,羅振元.自制多功能電子琴[J].電氣時(shí)代,1989(1).[13]張建平,朱偉娜.單片機(jī)電子琴[J].無線電,2023(5).[14]馬忠梅等.ARM&Linux嵌入式系統(tǒng)教程.北京:北京航空航天大學(xué)出版社,2004年[15]于海生.微型計(jì)算機(jī)控制技術(shù).北京:清華大學(xué)出版社,1999.3.[16]李廣弟.單片機(jī)根底[M]北京:北京航空航天大學(xué)出版社,2001.[17]徐新艷單片機(jī)原理、應(yīng)用與實(shí)踐[M]北京:高等教育出版社,2005.[18]楊恢先,黃輝先單片機(jī)原理及應(yīng)用[M].北京:人民郵電出版社,2006.[19]張虹.單片機(jī)原理及應(yīng)用[M].北京:中國電力出版社,2023.[20]趙亮,侯國銳單片機(jī)C語言編程與實(shí)例[M].北京:人民郵電出版社2003.[21]李建忠.單片機(jī)原理及應(yīng)用.西安:西安電子科技大學(xué),2002年[22]杜麗芳.用單片機(jī)設(shè)計(jì)的電子琴[J].電子世界,2005(7).[23]王兵.用單片機(jī)設(shè)計(jì)微型電子琴[J].電子工程師,2002(3).附錄1實(shí)物圖附錄2元器件清單名稱數(shù)量STC89C52130PF電容210UF電容31000UF電容1330歐姆電阻110K電阻110K電位器1DIP40插座1DIP8插座1輕觸按鍵1912M晶振1LM3861揚(yáng)聲器1板子1銅柱4螺帽4數(shù)碼管1LED2附錄3系統(tǒng)源程序#include<reg52.h>#include<intrins.h>//本程序是電子琴的程序,能夠?qū)崿F(xiàn)單獨(dú)演奏和放一首歌曲的功能。其中,按鍵1~15是用于單獨(dú)演奏的,按鍵16是用于播放歌曲的//播放歌曲的時(shí)候需要按復(fù)位鍵才能夠停止。//共陰極數(shù)碼管段碼表,最后一字節(jié)為黑屏unsignedcharcodeDSY_CODE[]={0x28,0xee,0x34,0xa4,0xe2,0xa1,0x21,0xec,0x20,0xa0,0x60,0x23,0x39,0x26,0x31,0x71,0xbf};//各音符對(duì)應(yīng)的延時(shí)表unsignedintcodetone_delay_table[]={64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178};//蜂鳴器的位定義sbitbeep=P3^0;#defineSOUND_SPACE 4/5 //定義普通音符演奏的長度分率,//每4分音符間隔//同一首歌的譜子unsignedcharcodeMusic[]={0x0F,0x01,0x15,0x02,0x16,0x02,0x17,0x66,0x18,0x03, 0x17,0x02,0x15,0x02,0x16,0x01,0x15,0x02,0x10,0x02, 0x15,0x00,0x0F,0x01,0x15,0x02,0x16,0x02,0x17,0x02, 0x17,0x03,0x18,0x03,0x19,0x02,0x15,0x02,0x18,0x66, 0x17,0x03,0x19,0x02,0x16,0x03,0x17,0x03,0x16,0x00, 0x17,0x01,0x19,0x02,0x1B,0x02,0x1B,0x70,0x1A,0x03, 0x1A,0x01,0x19,0x02,0x19,0x03,0x1A,0x03,0x1B,0x02, 0x1A,0x0D,0x19,0x03,0x17,0x00,0x18,0x66,0x18,0x03, 0x19,0x02,0x1A,0x02,0x19,0x0C,0x18,0x0D,0x17,0x03, 0x16,0x01,0x11,0x02,0x11,0x03,0x10,0x03,0x0F,0x0C, 0x10,0x02,0x15,0x00,0x1F,0x01,0x1A,0x01,0x18,0x66, 0x19,0x03,0x1A,0x01,0x1B,0x02,0x1B,0x03,0x1B,0x03, 0x1B,0x0C,0x1A,0x0D,0x19,0x03,0x17,0x00,0x1F,0x01, 0x1A,0x01,0x18,0x66,0x19,0x03,0x1A,0x01,0x10,0x02, 0x10,0x03,0x10,0x03,0x1A,0x0C,0x18,0x0D,0x17,0x03, 0x16,0x00,0x0F,0x01,0x15,0x02,0x16,0x02,0x17,0x70, 0x18,0x03,0x17,0x02,0x15,0x03,0x15,0x03,0x16,0x66, 0x16,0x03,0x16,0x02,0x16,0x03,0x15,0x03,0x10,0x02, 0x10,0x01,0x11,0x01,0x11,0x66,0x10,0x03,0x0F,0x0C, 0x1A,0x02,0x19,0x02,0x16,0x03,0x16,0x03,0x18,0x66, 0x18,0x03,0x18,0x02,0x17,0x03,0x16,0x03,0x19,0x00, 0x00,0x00};unsignedintcodeFreTab[12]={262,277,294,311,330,349,369,392,415,440,466,494};//原始頻率表unsignedcharcodeSignTab[7]={0,2,4,5,7,9,11}; //1~7在頻率表中的位置unsignedcharcodeLengthTab[7]={1,2,4,8,16,32,64}; unsignedcharSound_Temp_TH0,Sound_Temp_TL0; //音符定時(shí)器初值暫存unsignedcharSound_Temp_TH1,Sound_Temp_TL1; //音長定時(shí)器初值暫存voiddelay_1ms(unsignedintms){unsignedchari;while(ms--)for(i=0;i<120;i++);}//延時(shí)1ms//播放音樂的子函數(shù)voidPlay(unsignedchar*Sound,unsignedcharSignature,unsignedOctachord,unsignedintSpeed){ unsignedintNewFreTab[12]; //新的頻率表 unsignedchari,j; //定義一些中間變量 unsignedintPoint,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength; unsignedcharTone,Length,SL,SH,SM,SLen,XG,FD; for(i=0;i<12;i++) //根據(jù)調(diào)號(hào)及升降八度來生成新的頻率表 { j=i+Signature; if(j>11) { j=j-12; NewFreTab[i]=FreTab[j]*2;//計(jì)算新的頻率 } else NewFreTab[i]=FreTab[j]; if(Octachord==1) NewFreTab[i]>>=2; elseif(Octachord==3) NewFreTab[i]<<=2; } SoundLength=0; while(Sound[SoundLength]!=0x00) //計(jì)算歌曲長度 { SoundLength+=2; } Point=0; Tone=Sound[Point]; Length=Sound[Point+1]; //讀出第一個(gè)音符和它時(shí)時(shí)值 LDiv0=12000/Speed; //算出1分音符的長度(幾個(gè)10ms) LDiv4=LDiv0/4; //算出4分音符的長度 LDiv4=LDiv4-LDiv4*SOUND_SPACE; //普通音最長間隔標(biāo)準(zhǔn) TR0 =0; TR1=1; while(Point<SoundLength) { SL=Tone%10; //計(jì)算出音符 SM=Tone/10%10; //計(jì)算出上下音 SH=Tone/100; //計(jì)算出是否升半 CurrentFre=NewFreTab[SignTab[SL-1]+SH]; //查出對(duì)應(yīng)音符的頻率 if(SL!=0) { if(SM==1)CurrentFre>>=2; //低音 if(SM==3)CurrentFre<<=2; //高音 Temp_T=65536-(50000/CurrentFre)*10;//計(jì)算計(jì)數(shù)器初值 Sound_Temp_TH0=Temp_T/256; Sound_Temp_TL0=Temp_T%256; TH0=Sound_Temp_TH0; TL0=Sound_Temp_TL0+12;//加12是對(duì)中斷延時(shí)的補(bǔ)償 } SLen=LengthTab[Length%10]; //算出是幾分音符 XG=Length/10%10; //算出音符類型(0普通1連音2頓音) FD=Length/100; LDiv=LDiv0/SLen; //算出連音音符演奏的長度(多少個(gè)1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論