




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
-.z.----.可修編.本科畢業(yè)設(shè)計(jì)(論文)本科畢業(yè)設(shè)計(jì)(論文)基于單片機(jī)的音樂盒的設(shè)計(jì)學(xué)院名稱:專業(yè):班級(jí):**:**:指導(dǎo)教師**:指導(dǎo)教師職稱:二〇一四年六月-.z.基于單片機(jī)的音樂盒的設(shè)計(jì)摘要:本次設(shè)計(jì)根據(jù)單片機(jī)技術(shù)原理,通過(guò)硬件電路制作以及軟件編程,制作出一個(gè)基于AT89C52單片機(jī)的簡(jiǎn)易音樂播放器,該系統(tǒng)以單片機(jī)作為電路的主控核心,硬件電路主要由按鍵電路、復(fù)位電路、顯示電路等模塊組成。系統(tǒng)軟件采用C語(yǔ)言進(jìn)行編寫,采用了模塊化編程,其移植性較好。系統(tǒng)程序主要包括主程序、播放子程序、按鍵子程序、延時(shí)子程序等。該系統(tǒng)有歌曲播放、電子琴兩種模式,可通過(guò)按鍵進(jìn)行模式選擇。本論文包括系統(tǒng)方案的建立、硬件電路的具體設(shè)計(jì)及軟件的程序?qū)崿F(xiàn)等過(guò)程。并通過(guò)軟硬件的聯(lián)合調(diào)試,驗(yàn)證了設(shè)計(jì)方案的可行性。該系統(tǒng)最終實(shí)現(xiàn)了模式的選擇、歌曲的選擇及播放等功能,實(shí)驗(yàn)證明,該系統(tǒng)具有一定的實(shí)用性。關(guān)鍵詞:AT89C52單片機(jī);軟件編程;音樂盒-.z.TheDesignofMusicBo*oftheSingleChipMicroputerAbstract:Thisdesignaccordingtoprincipleofsinglechipmicroputertechnology,throughthehardwarecircuitsandsoftwareprogramming,makeasimplemusicplayerbasedonAT89C52singlechipmicroputer,thesystemwithsinglechipmicroputerascontrolcoreofthecircuit,thehardwarecircuitismainlyposedofkeypadcircuit,resetcircuit,displaycircuitmodule.SystemsoftwareusingClanguagetowrite,usingthemodularprogramming.theportablilityisgood.Systemprogrammainlyincludesthemainprogramsubroutine,playedsubroutines,buttons,delaysubroutine.Thesystemhasasongplay,keyboardtwomodes,canthroughthebuttontochoose.Thispaperincludestheestablishmentofthesystem,detaileddesignofhardwarecircuitandsoftwareprogramimplementationprocess.Andthroughthesoftwareandhardwarejointdebugging,verifythefeasibilityofdesignscheme.Thesystemfinallyrealizethepatternselection,selectionofsongsandplayfunction,suchase*perimentsshowthatthesystemhasacertainpracticality.Keywords:AT89C52microcontroller,;Softwareprogramming;themusicbo*-.z.目錄TOC\o"1-3"\h\u1612第1章緒論1276561.1課題背景及研究意義1282681.2課題設(shè)計(jì)目的及主要工作230118第2章課題任務(wù)分析與方案選擇3310302.1課題任務(wù)分析355022.2硬件電路的組成3132282.3設(shè)計(jì)功能要求321172.4總體設(shè)計(jì)原理493432.5總體設(shè)計(jì)框圖4193092.6選用的方案518110第3章系統(tǒng)硬件設(shè)計(jì)670793.1單片機(jī)最小系統(tǒng)6170973.1.1AT89C52單片機(jī)介紹6113923.2.2復(fù)位電路介紹881863.2.3晶振電路介紹9155413.3顯示電路10231363.44*4矩陣鍵盤識(shí)別電路1119663.5聲音電路1212806第4章軟件設(shè)計(jì)1432404.1Proteus仿真軟件與Keil編譯介紹14241754.2音調(diào)與節(jié)拍15143414.2.1發(fā)聲原理1588824.2.2音調(diào)的確定1640474.2.3節(jié)拍的確定17181054.2.4音樂編碼18220614.3系統(tǒng)軟件總體設(shè)計(jì)流程圖18159774.3.1主程序流程圖18267204.3.2歌曲播放流程圖2038804.3.3按鍵掃描流程圖2017204.3.4延時(shí)子程序流程圖213713第5章總結(jié)2321795致謝24-.z.10999參考文獻(xiàn)258515附錄1:電路原理圖2714393附錄2:元器件清單288754附錄3:源程序29-.z.第1章緒論1.1課題背景及研究意義單片機(jī)應(yīng)用到當(dāng)前社會(huì)的各個(gè)領(lǐng)域中,既提高了社會(huì)的信息化水平又大力的發(fā)展了社會(huì)的生產(chǎn)力,同時(shí)也使目前電子產(chǎn)品的性能有了更高的提升,從而使產(chǎn)品更新?lián)Q代的周期也逐漸變短。如今,單片機(jī)不僅有著高性能與多品種性能的發(fā)展趨勢(shì),并且還向著其他優(yōu)良方向發(fā)展,比如向著CMOS化、低耗能、小巧、大容量、高性能、廉價(jià)和外圍電路內(nèi)裝化等。單片機(jī)從本質(zhì)上轉(zhuǎn)變了傳統(tǒng)控制系統(tǒng)中的設(shè)計(jì)思想與設(shè)計(jì)方式,這在其應(yīng)用中具有很重要的價(jià)值[1]。以前的狀態(tài)是,只能通過(guò)模擬電路或者是數(shù)字電路的應(yīng)用,才可以將大部分的功能實(shí)現(xiàn),而目前的狀態(tài)可以直接使用軟件編程的方式來(lái)實(shí)現(xiàn)單片機(jī)的功能。這種被稱為微控制技術(shù)的方法是對(duì)傳統(tǒng)控制技術(shù)的一次革命,就是使用軟件的方式取代使用硬件的方式來(lái)實(shí)現(xiàn)功能的控制技術(shù)[2]。單片機(jī)可以很成功的應(yīng)用到嵌入式系統(tǒng)當(dāng)中,因此它獲得了更多應(yīng)用的機(jī)會(huì),相比與專用處理器來(lái)說(shuō),這是超越其應(yīng)用的優(yōu)勢(shì)。換個(gè)方式講單片機(jī)是世界上個(gè)數(shù)最多的計(jì)算機(jī)。集成單片機(jī)已經(jīng)應(yīng)用到到的大部分電子和機(jī)械產(chǎn)品中,是目前人類的生產(chǎn)生活的主流。大多數(shù)電子產(chǎn)品中都會(huì)配有1到2部單片機(jī),比如正常生活中人們通訊時(shí)用到的手機(jī)、,生產(chǎn)生活中用到的計(jì)算器、家用電器,以及娛樂項(xiàng)目中的電子玩具、掌上電腦,另外還包括一些電腦配件鍵盤鼠標(biāo)之類的。而臺(tái)式機(jī),筆記本電腦等個(gè)人電腦中也都有許多單片機(jī)在工作。其他的一些大一點(diǎn)的產(chǎn)品中通常會(huì)配有40部以上的單片機(jī),比如汽車等,而特殊的一些大型機(jī)械上的單片機(jī)會(huì)有更多,甚至能達(dá)到上百臺(tái),并且可以同時(shí)工作,在龐大的工業(yè)控制系統(tǒng)上就是如此。由此可見就算PC機(jī)和其他控制系統(tǒng)的合在一起,他們的總數(shù)也遠(yuǎn)遠(yuǎn)不及單片機(jī)的數(shù)目,甚至比人的數(shù)量還要多[3]。因此單片機(jī)地研究前景有非常廣闊的空間。所以現(xiàn)實(shí)生活中單片機(jī)的影響已經(jīng)融入到大多數(shù)的研究領(lǐng)域,例如軍事中裝配的導(dǎo)彈導(dǎo)航系統(tǒng),裝在飛機(jī)上的各種儀器的控制系統(tǒng),計(jì)算機(jī)之間的網(wǎng)絡(luò)通訊和數(shù)據(jù)傳輸,包括運(yùn)用在工業(yè)自動(dòng)化過(guò)程的實(shí)時(shí)控制和數(shù)據(jù)處理,還有人們?cè)谏钪杏玫降母黝愔悄躀C卡,在民用轎車中應(yīng)用到的安全保障系統(tǒng),包括一些普通生活的一些控制系統(tǒng)中也有應(yīng)用,比如錄像機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī),包括其他的一些電子玩具、電子寵物等娛樂產(chǎn)品,這些都離不開單片機(jī)的應(yīng)用[4]。我們所接觸的信息在隨著科學(xué)技術(shù)的提高和人類社會(huì)的進(jìn)步發(fā)展中會(huì)不斷擴(kuò)大并且越來(lái)越復(fù)雜。面對(duì)如此多如牛毛的信息,人們已經(jīng)可以利用計(jì)算機(jī)等工具準(zhǔn)確高效地對(duì)其進(jìn)行處理,但是想要將處理成功的信息能及時(shí),清晰地傳遞給別人,還必須利用更加高效的顯示技術(shù)來(lái)實(shí)現(xiàn)相應(yīng)的功能。其中能成熟的結(jié)合單片機(jī)技術(shù)和液晶顯示技術(shù),使得智能可視化技術(shù)成為信息傳輸交流技術(shù)發(fā)展的主流方向[5]。說(shuō)到音樂盒的歷史發(fā)展,可以上溯到歐洲文藝復(fù)興的年代,也就是中世紀(jì)時(shí)期。那個(gè)時(shí)候其主要的作用只是為教會(huì)的鐘塔提供時(shí)間提醒用的,這種裝置構(gòu)成單一,就是把各種不一樣的鐘表裝在一個(gè)機(jī)器上,所以也叫做“可發(fā)出聲音的組鐘”。所以音樂盒的成長(zhǎng)歷史有將近300多年,同時(shí)也見證了人類歷史文化的發(fā)展[6]。機(jī)械音樂盒在最初的音樂盒中是占據(jù)主流的,他是利用齒輪來(lái)讓鐵桶滾動(dòng),鐵桶上裝有鐵棒,通過(guò)鐵棒與鐵片相互碰撞從而制成琴鍵,從而發(fā)出聲音的原理。但是,機(jī)械音樂盒的缺點(diǎn)很多,比如外形大,個(gè)體沉重,且發(fā)聲單一。而且有著一些容易讓內(nèi)部鐵條變形的外在因素在影響,比如水,粉塵等,都會(huì)造成音準(zhǔn)失調(diào),時(shí)間一長(zhǎng)就會(huì)讓音樂盒的發(fā)音跑調(diào)。另外,機(jī)械音樂盒放音時(shí)必須放平不可動(dòng)搖,才能發(fā)出好的音質(zhì)。而且機(jī)械音樂盒價(jià)格昂貴,不允許大批量生產(chǎn),商業(yè)價(jià)值不高[7]。而如今隨著科技的進(jìn)步,人們能將現(xiàn)代電子科技和音樂相結(jié)合,并產(chǎn)生一個(gè)新的產(chǎn)物,被稱為電子琴,這種全新的樂器通過(guò)鍵盤來(lái)實(shí)現(xiàn)彈奏,儼然已成為現(xiàn)代音樂發(fā)展中的不可或缺的角色。由此可見單片機(jī)也憑借著其控制功能的強(qiáng)大與軟件編程的靈便的特征,成功滲透到當(dāng)今人們生活的各個(gè)領(lǐng)域,是人類正常生產(chǎn)生活中必須要用到的存在。1.2課題設(shè)計(jì)目的及主要工作本文的主要設(shè)計(jì)內(nèi)容中,電路的核心控制元件就是AT89C52單片機(jī),即主控核心為單片機(jī),硬件電路設(shè)計(jì)中還包括鍵盤、揚(yáng)聲器、4*4矩陣鍵盤、液晶顯示器等模塊。通常來(lái)講一部好聽的音樂由不少各不一樣的音階所構(gòu)成的,但是許多音符又是由各不相同的頻率相互對(duì)照,這樣在使用該系統(tǒng)時(shí)就能夠通過(guò)操縱不一樣的頻率的相連,就能變?yōu)樗璧囊魳罚趩纹瑱C(jī)工作中發(fā)出不一樣的頻率是十分容易的,它能夠通過(guò)單片機(jī)的定時(shí)/計(jì)數(shù)器T0來(lái)發(fā)出不同方波頻率的信號(hào),所以,只需直接將一部歌曲的音符與頻率之間的對(duì)應(yīng)關(guān)系根據(jù)音符與頻率關(guān)系對(duì)照表弄清楚就行了。本系統(tǒng)中電子音樂盒有著外形小巧,播放的音質(zhì)優(yōu)美,另外其演奏的音樂也有非常方便的優(yōu)勢(shì),而這些都是傳統(tǒng)的機(jī)械式音樂盒無(wú)法達(dá)到的。通過(guò)電池來(lái)供電使得電子音樂盒更加方便,并且它的制作過(guò)程也非常簡(jiǎn)單,而且非常廉價(jià),廠商能成批的進(jìn)行制造。基于單片機(jī)制作的音樂盒,控制功能強(qiáng)大,可根據(jù)不同需求進(jìn)行選歌,且使用方便。第2章課題任務(wù)分析與方案選擇2.1課題任務(wù)分析本次設(shè)計(jì)中硬件電路的主要核心就是AT89C52芯片,用揚(yáng)聲器作為外部放音電路,這樣就能夠?qū)崿F(xiàn)音樂播放控制器的功能。設(shè)計(jì)中運(yùn)用軟件程序通過(guò)在單片機(jī)內(nèi)部控制定時(shí)器,從而達(dá)到能夠?qū)崿F(xiàn)演奏出幽美悅耳的音樂的功能。本次設(shè)計(jì)中對(duì)運(yùn)用單片機(jī)設(shè)計(jì)音樂盒與電子琴時(shí),分析其原理,發(fā)現(xiàn)其本質(zhì)就是利用單片機(jī)來(lái)生成不同的頻率以便在系統(tǒng)中可以得到自己所需的音符,最終可以彈奏各種不同的音樂。此次論文主要論述各個(gè)模塊的功能,芯片等元器件和電路的原理圖,以及軟件程序流程圖等。在此次設(shè)計(jì)的內(nèi)容中,利用計(jì)算機(jī)當(dāng)做控制終端,方便在軟件仿真和調(diào)試過(guò)程可以順利進(jìn)行。用1602顯示器顯示發(fā)音值和揚(yáng)聲器的發(fā)音狀態(tài)。使用4*4矩陣鍵盤,作為電子琴的琴鍵。系統(tǒng)整體設(shè)計(jì)簡(jiǎn)潔,精練。用戶能夠根據(jù)自身的興趣演奏樂曲,也能夠播放不同的音樂。而對(duì)于不同型號(hào)的單片機(jī)來(lái)講直接改變一下地址就可以繼續(xù)使用該音樂盒放音了。由此可看出它的硬件系統(tǒng)和軟件系統(tǒng)都擁有較優(yōu)的通用性,而且它的實(shí)用價(jià)值和參考價(jià)值也是相當(dāng)高的。2.2硬件電路的組成本次硬件電路設(shè)計(jì)可以分為以下幾個(gè)部分:(1)單片機(jī)部分以AT89C52單片機(jī)為核心控制整個(gè)系統(tǒng);(2)液晶顯示部分是用1602液晶顯示器,通過(guò)單片機(jī)P1口控制,以實(shí)現(xiàn)開機(jī)畫面,音樂盒與電子琴功能的顯示,以及電子琴不同音調(diào)的顯示;(3)功能鍵盤部分是用4*4矩陣鍵盤作為按鍵開關(guān),通過(guò)單片機(jī)P3口控制,實(shí)現(xiàn)電路復(fù)位,歌曲的播放,功能的選擇,以及電子琴音調(diào)的播放的功能;(4)發(fā)聲部分是用蜂鳴器,通過(guò)單片機(jī)P2口實(shí)現(xiàn)歌曲的播放以及電子琴音調(diào)的發(fā)聲。2.3設(shè)計(jì)功能要求匯編或C語(yǔ)言程序設(shè)計(jì)。2.程序調(diào)試,在Proteus上進(jìn)行仿真。3.使用I/O處采用1602液晶顯示歌曲。此次設(shè)計(jì)的電路共分為兩種工作模式:音樂盒模式與電子琴模式(1)音樂盒模式下演奏完整的一首歌。(2)電子琴模式下通過(guò)4*4鍵盤演奏不同的音樂。按下復(fù)位鍵進(jìn)入開機(jī)畫面,按下選擇鍵進(jìn)入音樂盒模式播放音樂,再按選擇鍵進(jìn)入電子琴模式,可以進(jìn)行演奏。2.4總體設(shè)計(jì)原理基本發(fā)聲原理是通過(guò)單片機(jī)的定時(shí)器產(chǎn)生一定長(zhǎng)度的方波,方波脈沖驅(qū)動(dòng)揚(yáng)聲器發(fā)出聲音。只需直接算出一個(gè)音頻的周期(1/音頻),然后直接取半個(gè)周期的時(shí)間進(jìn)行定時(shí),就可以生成音頻脈沖了。利用定時(shí)器計(jì)使用這個(gè)半周期的時(shí)間,然后在重復(fù)計(jì)時(shí)此半周期時(shí)間,在計(jì)時(shí)結(jié)束后再將I/O口進(jìn)行反相,直接就能在I/O腳上獲得這個(gè)頻率的脈沖信號(hào)。如中音D0,頻率為523HZ,其周期T=1/523=1912微秒,要想獲得中音D0(523HZ),就將令計(jì)數(shù)器直接定時(shí)為1912/2=956,這樣每當(dāng)計(jì)數(shù)956次后,就將I/O口反相就可以了[8]。想要播放音樂時(shí),直接按下按鍵,然后判斷鍵值,并啟動(dòng)計(jì)數(shù)器T0,這樣生成相應(yīng)頻率的脈沖,通過(guò)單片機(jī)來(lái)驅(qū)動(dòng)喇叭,就能放出樂曲了。同時(shí)啟動(dòng)定時(shí)器T1,在液晶顯示器上顯示模塊。顯示相應(yīng)的功能必須要使用顯示器,本次設(shè)計(jì)采用的是1602顯示器,通過(guò)單片機(jī)P1口控制,實(shí)現(xiàn)功能切換的顯示;如果要進(jìn)行相應(yīng)的操作時(shí),就使用按鍵開關(guān)來(lái)作為按鍵模塊的功能按鍵,在單片機(jī)的P3口上實(shí)施控制,來(lái)實(shí)現(xiàn)歌曲的播放與模塊切換的功能;揚(yáng)聲器則是通過(guò)單片機(jī)的P2口進(jìn)行控制的,主要是能實(shí)現(xiàn)播放樂曲和演奏的功能;同時(shí)有液晶顯示器顯示電子琴琴鍵的鍵值,揚(yáng)聲器播放出音樂。2.5總體設(shè)計(jì)框圖電源供電是單片機(jī)工作的動(dòng)力來(lái)源,單片機(jī)工作中用到的時(shí)鐘信號(hào)是由晶振電路提供的,外部中斷由功能按鍵來(lái)實(shí)施控制,以此來(lái)控制選擇音樂盒模塊與電子琴模塊,揚(yáng)聲器發(fā)聲是通過(guò)I/O口向外輸出的,液晶顯示器則是進(jìn)行功能的顯示。而復(fù)位電路的作用就是建造程序的初始狀態(tài),在發(fā)生意外或者程序報(bào)錯(cuò)時(shí),就能將單片機(jī)重新啟動(dòng),保證電路的安全。系統(tǒng)總體設(shè)計(jì)框圖如圖2-1所示。AT89C52顯示電路4*4矩陣鍵盤晶振電路聲音電路復(fù)位電路圖2-1總體設(shè)計(jì)框圖2.6選用的方案(1)硬件設(shè)計(jì):系統(tǒng)把AT89C52當(dāng)做整個(gè)電路主控制核心,而外部的程序存儲(chǔ)器需要擴(kuò)展則是利用74LS373與27512,對(duì)播放器的控制是采用按鍵來(lái)實(shí)現(xiàn)的,4*4鍵盤矩陣控制電子琴的發(fā)音,顯示電路采用1602液晶顯示器來(lái)顯示,晶振部分用的頻率大小是12MHz,從P3.0口輸出的音樂信號(hào)由揚(yáng)聲器傳出并放出動(dòng)聽的音樂。(2)軟件設(shè)計(jì):軟件編程的程序中選取了C調(diào)中一個(gè)8度內(nèi)的一共7個(gè)音階的音符來(lái)作為音調(diào)。按照十二平均律,(就是把八度定義為1200音分,其中全因音符占用200音分,半音占100音分,共十二個(gè)半音)每個(gè)音符所對(duì)應(yīng)的頻率由定時(shí)器T0產(chǎn)生。我們?cè)诒碇蟹湃攵〞r(shí)器初值,一共十二個(gè)半音,這樣我們?cè)诩虞d計(jì)數(shù)初值是就可以直接在程序中以查表的方式來(lái)進(jìn)行,而在放音時(shí)就可以不用再計(jì)算定時(shí)器的初值了,每個(gè)編碼都會(huì)有一個(gè)音符所對(duì)應(yīng)著,占用一個(gè)字節(jié),這樣可以更方便的將程序進(jìn)行調(diào)用。鑒于人耳有限的分辨力,所以曲譜中的節(jié)拍碼直接可以用延時(shí)來(lái)替換,每個(gè)音符發(fā)音30MS,這樣就使編程更加的簡(jiǎn)單了。矩陣式鍵盤在設(shè)計(jì)中得到較好的應(yīng)用,目的是讓按鍵能夠及時(shí)的響應(yīng),程序的編寫中的主線編寫是其中的掃描鍵盤的程序(就是在主程序中循環(huán)的掃描按鍵,并在掃描按鍵模塊時(shí)在調(diào)用其他的功能模塊),每當(dāng)按下一次按鍵,利用掃描按鍵的功能計(jì)算出鍵盤的鍵值,并將鍵值存儲(chǔ)起來(lái),跳轉(zhuǎn)到相應(yīng)的標(biāo)號(hào)執(zhí)行程序,并將鍵值調(diào)用液晶顯示器子程序顯示在制定的位置上,在檢測(cè)到復(fù)位鍵按下時(shí),就會(huì)恢復(fù)帶開機(jī)畫面。此方案中選用1602液晶顯示器的優(yōu)點(diǎn)是其在編寫程序時(shí)方便,顯示的也穩(wěn)定,而且占用的CPU時(shí)序少,另外它和矩陣鍵盤一樣在其外圍電路中可以有不少的擴(kuò)展功能。第3章系統(tǒng)硬件設(shè)計(jì)3.1單片機(jī)最小系統(tǒng)3.1.1AT89C52單片機(jī)介紹單片機(jī)事實(shí)上是一種集成的電路芯片(實(shí)際上就是一塊硅片),也被稱為微型計(jì)算機(jī)系統(tǒng),它的主要技術(shù)是超大規(guī)模集成電路技術(shù),主要的組成部分有中央處理器CPU(具有數(shù)據(jù)處理能力)、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)和定時(shí)器/計(jì)數(shù)器等(其他的還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路模塊),這種集成電路不僅體積小,而且功能完善,所以在工業(yè)控制領(lǐng)域得到廣泛應(yīng)用[10]。從80年代開始,最初只有4位、8位的單片機(jī),到現(xiàn)在的高速單片機(jī)已經(jīng)達(dá)到了300M。本次設(shè)計(jì)中用的是AT89C52單片機(jī),AT89C52的主要功能是控制會(huì)聚調(diào)整時(shí)的功能,它用的內(nèi)核是工業(yè)上標(biāo)準(zhǔn)的C51內(nèi)核,是一種8位的通用微處理器,所以它的內(nèi)部功能和管腳排布和正常使用的8*c52沒什么差別[11]。AT89C52有許多功能,主要包括初始化一些功能部件,比如把主IC的內(nèi)部寄存器與數(shù)據(jù)RAM和外部接口等進(jìn)行匯聚,還有可以把調(diào)整控制匯聚,將測(cè)試圖控制匯聚以及接受并解碼紅外遙控信號(hào)IR和對(duì)主板CPU進(jìn)行通信等[12]。AT89C52單片機(jī)中的*TAL1(19腳)在振蕩器中是被當(dāng)做輸入腳,而*TAL2(18腳)在振蕩器中是當(dāng)做輸出腳,另外它的外借晶振可以接到12MHz。單片機(jī)中的復(fù)位電路是由電阻和電容組成的,其中電阻和電容都是從外部接入的,復(fù)位電路的輸出端口是RST/Vpd(9腳)。單片機(jī)的工作需要電源供電,而在52單片機(jī)中的供電端口有VCC(40腳)接+5V電源的正極,VSS(20腳)接電源的負(fù)極,運(yùn)行單片機(jī)需要軟件編程來(lái)實(shí)現(xiàn),依靠軟件來(lái)定義單片機(jī)的功能用途,可以通過(guò)P0-P3口的通用I/O腳來(lái)實(shí)現(xiàn)軟件程序的導(dǎo)入,此次設(shè)計(jì)過(guò)程中,我們把P0端的32-39腳分別和N1的對(duì)應(yīng)的功能管腳相連,如此就可以將N1功能控制端口用P0端的32-39腳來(lái)定義,其他的連接在N1的SDAS(18腳)與SCLS(19腳)端口上的10腳與11腳,就可以將這兩個(gè)引腳定義成I2C總線上的控制端口,另外一些相應(yīng)的功能端是連接主板CPU上的,主要功能是把目前制式的檢測(cè)和匯聚進(jìn)行狀態(tài)調(diào)整,并進(jìn)入控制功能,而這些連接到主板CPU的引腳就定義為握手信號(hào)功能端口,而52單片機(jī)中的12腳,27腳以及28腳都可以實(shí)現(xiàn)此功能[13]。現(xiàn)如今,盡管單片機(jī)的品種繁多,各具特色,但是80C51單片機(jī)由于兼容其他類型單片機(jī)產(chǎn)品的結(jié)構(gòu)和指令系統(tǒng),所以80C51依然是主流,可以說(shuō)占據(jù)了該領(lǐng)域的半壁江山。而隨著Microchip公司的PIC精簡(jiǎn)指令集合(RISC)發(fā)展勢(shì)頭強(qiáng)勁,中國(guó)**的HOLTE*公司單片機(jī)的產(chǎn)量也日漸增加,而且其質(zhì)量高,價(jià)格廉,所以占據(jù)一定的市場(chǎng)份額。此外還有MOTOROLA公司的產(chǎn)品,日本幾大公司的專用單片機(jī)。在一定的時(shí)期內(nèi),這種情形將得以延續(xù),將不存在*個(gè)單片機(jī)一統(tǒng)天下的壟斷局面,走的是依存互補(bǔ)、相輔相成、共同發(fā)展的道路。九十年代以后,單片機(jī)在結(jié)構(gòu)上采用雙CPU或內(nèi)部流水線,CPU位數(shù)有8位、16位、32位,時(shí)鐘頻率高達(dá)20MHZ,片內(nèi)帶有PWM輸出、監(jiān)視定時(shí)器WDT、可編程計(jì)數(shù)器陣列PCA、DMA傳輸、調(diào)制解調(diào)器等。芯片向高度集成化、低功耗方向的發(fā)展,使得單片機(jī)在大量數(shù)據(jù)的實(shí)時(shí)處理、高級(jí)通信系統(tǒng)、數(shù)字信號(hào)處理、復(fù)雜工業(yè)過(guò)程控制、高級(jí)機(jī)器人以及局域網(wǎng)等方面得到大量應(yīng)用[8]。這類單片機(jī)有NEC公司的MPD7800,MITSUBISHI公司的M337700,REVKWELL公司的R6500[9]。此次設(shè)計(jì)之所以選用52單片機(jī)是因?yàn)锳T89C52比AT89C51多個(gè)定時(shí)器,而RAM大小也不一樣,51的大小只有128,52的卻有256。根據(jù)這些信息可以看出52其實(shí)是51的增強(qiáng)型,在定時(shí)器方面52也比51的定時(shí)器多了一個(gè)T2,在串行通信中可以設(shè)置更高的波特率,由此可見T2的功能實(shí)現(xiàn)上與其他的兩個(gè)定時(shí)器也不同樣,在ROM上52比51要多4K,中斷也多2個(gè),意味著看門狗也比51多出一個(gè)來(lái),另外52在掉電與數(shù)據(jù)指針等方面也有一些改善[14]。而在外接晶振上C52可以擁有最高能達(dá)到33MHz,而C51的極限也只能達(dá)到24MHz。單片機(jī)有個(gè)最小應(yīng)用系統(tǒng),也就是單片機(jī)最小系統(tǒng),這種系統(tǒng)是可以正常工作的,但由于構(gòu)成此系統(tǒng)只用了最少的元器件,所以功能也相應(yīng)的比較單一。我們考慮52單片機(jī)中的結(jié)構(gòu),可以看出最小系統(tǒng)正常是由單片機(jī)芯片、晶振電路、復(fù)位電路構(gòu)成的?;?2單片機(jī)的最小系統(tǒng)的電路原理圖,如圖3-1所示。圖3-1單片機(jī)最小系統(tǒng)復(fù)位電路介紹復(fù)位電路是由電容串聯(lián)電阻構(gòu)成的。復(fù)位電路原理圖如圖3-2所示。圖3-2復(fù)位電路原理圖電源通電后,就會(huì)在RST引腳上顯示出高電平,而高電平的可持續(xù)時(shí)間是由電路的RC值來(lái)決定的。在設(shè)計(jì)實(shí)現(xiàn)功能時(shí)要適當(dāng)組合RC的取值就可以保證復(fù)位的可靠性,因?yàn)閱纹瑱C(jī)一般會(huì)在RST腳上持續(xù)兩個(gè)機(jī)器周期以上的高電平時(shí)就會(huì)復(fù)位。本次設(shè)計(jì)中C取用的是22uf,R取10K。要想在RST腳上能生成的高電平多于2個(gè)機(jī)器周期,就直接將RC按照這個(gè)數(shù)值進(jìn)行組合。在復(fù)位電路中復(fù)位信號(hào)是在系統(tǒng)供電時(shí)就會(huì)提供,而想要撤消復(fù)位信號(hào),只需等到系統(tǒng)中的電源穩(wěn)定了即可。為了在實(shí)現(xiàn)功能時(shí)電路的安全,在系統(tǒng)中電源穩(wěn)定以后,等待撤消的復(fù)位信號(hào)必須要經(jīng)過(guò)一個(gè)延時(shí),這樣的目的是為了防止在電源開關(guān)啟動(dòng)或關(guān)閉過(guò)程中引發(fā)的抖動(dòng)而影響復(fù)位。復(fù)位電路復(fù)位的過(guò)程中有兩種,一種是通電自動(dòng)復(fù)位,另一種是按鍵手動(dòng)復(fù)位,根據(jù)電路原理圖可知,復(fù)位電路的復(fù)位信號(hào)的輸入端是RST引腳,而且復(fù)位必須在高電平的情況下才有效。想要實(shí)現(xiàn)復(fù)位電路的功能,就是通過(guò)外接電容C1與外接電阻R8來(lái)實(shí)現(xiàn)。晶振電路介紹52單片機(jī)中的引腳*TAL1和的引腳*TAL2都是在片內(nèi)一個(gè)反相放大器(高增益)中的,它的作用是用來(lái)組成穩(wěn)定的自激振蕩器,組成自激振蕩器的電路是由有石英晶體的振蕩器和微調(diào)電容進(jìn)行外接,而能直接進(jìn)入系統(tǒng)內(nèi)部時(shí)鐘電路的信號(hào)就是這個(gè)振蕩器發(fā)出的脈沖信號(hào)。本次設(shè)計(jì)晶振電路中使用的是固定電容C5與C6,兩個(gè)電容都是30pF。晶體振蕩頻率*圍是1.2MHz~12MHz,一般情況下,選用振蕩頻率為12MHz的石英晶體。而要將信號(hào)變成單片機(jī)的時(shí)鐘信號(hào),只有在內(nèi)部時(shí)鐘發(fā)生器上將振蕩脈沖信號(hào)通過(guò)二分頻的操作才能實(shí)現(xiàn)。單片機(jī)工作狀態(tài)下要想從先取指令,再進(jìn)行譯碼,最后再微操做的過(guò)程能有序的進(jìn)行,就必須通過(guò)時(shí)鐘信號(hào)來(lái)控制,由此可知單片機(jī)在工作狀態(tài)下提供基本時(shí)鐘的電路就是時(shí)鐘電路。生成時(shí)鐘信號(hào)的方式可以分為兩種,一種是內(nèi)部時(shí)鐘的方式,另一種是外部時(shí)鐘的方式,本課題采用就是內(nèi)部時(shí)鐘方式。晶振電路就是在單片機(jī)內(nèi)組成一個(gè)自激振蕩器,而這個(gè)穩(wěn)定的自激振蕩器是將一個(gè)晶振和兩個(gè)穩(wěn)頻電容外接到單片機(jī)的*ALT1與*LAT2兩個(gè)引腳上構(gòu)成的。晶振頻率選擇12MHz。晶振電路原理圖如圖3-3所示。圖3-3晶振電路原理圖3.3顯示電路本設(shè)計(jì)顯示部分是采用液晶顯示器1602,單片機(jī)的P0口是一個(gè)地址/數(shù)據(jù)復(fù)用的雙向I/O口,當(dāng)使用P0口訪問外部存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器時(shí),P0口內(nèi)部已有上拉電阻,當(dāng)P0口作程序檢驗(yàn),輸出指令字節(jié)時(shí),必須外接上拉電阻。1602的控制信號(hào)RS、RW、E分別接到單片機(jī)的P2.0、P2.1、P2.2。本設(shè)計(jì)中1602液晶顯示器可以實(shí)現(xiàn)多種顯示功能,比如在開機(jī)過(guò)程中能夠顯示開機(jī)畫面,提示開機(jī);在功能選擇上可以顯示當(dāng)前所選擇的功能模塊畫面以及電子琴模式中可以顯示在琴鍵上按下的鍵值。顯示電路原理圖如圖3-4所示。圖3-4顯示電路原理圖3.44*4矩陣鍵盤識(shí)別電路設(shè)計(jì)中經(jīng)常使用的鍵盤按鍵分為好多種,比如有電容式,有導(dǎo)電式,還有機(jī)械式和薄膜式等,而將電路接通與斷開就是這些鍵盤按鍵的基本功能,所以不管是什么種類的按鍵,都有這些基本的功能。而現(xiàn)今使用的鍵盤在功能應(yīng)用方面主要有兩種基本類型,一種是編碼鍵盤,另一種是非編碼鍵盤,編碼鍵盤的鍵盤本身就有一個(gè)硬件電路,而這些硬件電路就能夠?qū)崿F(xiàn)接口處在按鍵被自動(dòng)檢測(cè)到時(shí),實(shí)現(xiàn)一些比如去抖動(dòng)和防串鍵等功能,而且這些與按鍵功能相對(duì)應(yīng)的鍵碼也會(huì)被送往CPU中。但是由于編碼鍵盤的硬件電路復(fù)雜,所以其價(jià)格也相應(yīng)的昂貴,就算其接口簡(jiǎn)單,用起來(lái)也挺方便,但是一般簡(jiǎn)單的設(shè)計(jì)中不會(huì)應(yīng)用編碼鍵盤,只有一些廠商生產(chǎn)的商品才會(huì)用到。而非編碼鍵盤雖然僅提供簡(jiǎn)單的行列矩陣式的按鍵開關(guān),但在實(shí)現(xiàn)功能過(guò)程中可以通過(guò)軟件編程來(lái)實(shí)現(xiàn)識(shí)別按鍵,確定與輸入鍵碼,以及去抖動(dòng)等一些功能。所以在設(shè)計(jì)中選用非編碼鍵盤可以節(jié)省許多的成本。無(wú)論選什么按鍵,在鍵盤的接口處的四個(gè)基本功能是必不可少的,分別是:去抖動(dòng),防串鍵識(shí)別按鍵以及生成鍵碼。本次設(shè)計(jì)中鍵盤用的是4*4矩陣鍵盤,它是將16個(gè)按鍵依據(jù)4行4列的方式進(jìn)行排版,鍵盤在單片機(jī)中是通過(guò)JP50端口進(jìn)行信號(hào)傳輸?shù)?。輸出端是由行線連接到單片機(jī)的I/O口上,而輸入端是由列線連接到I/O口上。若輸出端都是高電平的話,就表示按鍵沒有被按下。我們判斷按鍵是否被按下,可以根據(jù)讀取當(dāng)前輸入線的狀態(tài),因?yàn)楫?dāng)按鍵按下時(shí),表示有低電平從行線輸出來(lái),而且會(huì)把輸入線電平拉低,而這個(gè)狀態(tài)就能判斷按鍵按下了沒。本次設(shè)計(jì)選用的鍵盤耗能低,并且由于它的外圍電路元件少,擴(kuò)充起來(lái)會(huì)更靈活。鍵盤電路原理圖如圖3-5所示。圖3-5鍵盤電路原理圖鍵盤掃描的時(shí)候,會(huì)先對(duì)其橫坐標(biāo)*進(jìn)行操作,也就是掃描“行”,再對(duì)其縱坐標(biāo)y進(jìn)行操作,也就是掃描“列”。獲取y的方法與獲取*的方法相似,具體的操作可以參考附錄的相關(guān)總程序。這樣,按鍵的功能就可以根據(jù)獲取的坐標(biāo),也就是(*,y)中*與y的值來(lái)實(shí)現(xiàn)。3.5聲音電路本次設(shè)計(jì)使用的發(fā)聲元件是揚(yáng)聲器,圖3-6是的揚(yáng)聲器原理圖。圖3-6揚(yáng)聲器原理圖聲音電路是由2N3904NPN三極管和喇叭組成。實(shí)現(xiàn)功能時(shí),直接從AT89C52中獲取的高電平控制信號(hào),然后再通過(guò)這個(gè)三極管把這個(gè)控制信號(hào)放大,再驅(qū)動(dòng)揚(yáng)聲器放出聲音。但因?yàn)閾P(yáng)聲器所需驅(qū)動(dòng)功率較小,驅(qū)動(dòng)器件要求也較低,所以選用2N3904型號(hào)的NPN型三極管就可驅(qū)動(dòng)揚(yáng)聲器發(fā)出聲音,這樣在設(shè)計(jì)中所用的成本也會(huì)相應(yīng)的減少。在單片機(jī)中的P2口就是實(shí)現(xiàn)音樂的播放功能的接口。此聲音電路實(shí)現(xiàn)的功能就是播放音樂,在電子琴模式下,按鍵彈奏出的聲音也是由喇叭播放出來(lái)的。第4章軟件設(shè)計(jì)一個(gè)系統(tǒng)想要正常運(yùn)行不僅僅依靠硬件系統(tǒng)的支持,而且要依靠軟件系統(tǒng)的支持。若是把這個(gè)系統(tǒng)比作人,則人的軀體就是硬件系統(tǒng),而人的靈魂則是軟件系統(tǒng),只有將硬件系統(tǒng)和軟件系統(tǒng)之間相互完美的配合才能組成一個(gè)能夠“思考”和“判斷”的整體系統(tǒng)[16]。在設(shè)計(jì)中依靠軟件的可編程性,能精簡(jiǎn)硬件系統(tǒng)的組成,同時(shí)依靠著軟件編程的靈活性,可以省略通過(guò)對(duì)硬件系統(tǒng)進(jìn)行修改而實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)功能的修改。軟件系統(tǒng)與硬件系統(tǒng)之間是密切相聯(lián)的,軟件系統(tǒng)的成立是建立在硬件系統(tǒng)完成的前提上,離開了硬件系統(tǒng),軟件將無(wú)法實(shí)現(xiàn)任何功能。軟件設(shè)計(jì)的重要特性是具有一定的針對(duì)性,針對(duì)硬件系統(tǒng)的不同,就要編寫不同的軟件程序。要想系統(tǒng)擁有較快的工作效率,以及較高的可靠性,除了硬件系統(tǒng)的影響外,軟件系統(tǒng)同樣起到?jīng)Q定性的作用。4.1Proteus仿真軟件與Keil編譯介紹軟件的編程需要依靠?jī)?yōu)良的平臺(tái),此次設(shè)計(jì)用的EDA操作系統(tǒng)就是一款由英國(guó)LCE公司所刊行的,而此操作系統(tǒng)中的Proteus操作平臺(tái)就是一個(gè)優(yōu)良的軟件。這款操作系統(tǒng)不僅涵蓋了別的EDA操作系統(tǒng)進(jìn)行仿真的功效,對(duì)于單片機(jī)和它的外圍電路同樣可以仿真[15]。目前在國(guó)內(nèi)Proteus軟件推廣剛起步,就已經(jīng)受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于研究單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞[18]。Proteus是世界上著名的EDA工具,從原理圖的布圖、代碼的調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,以及一鍵切換到PCB的設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)[18]。這款系統(tǒng)的處理器模型功能強(qiáng)大,它支持8051、HC11和PIC系列中的10、12、16、18、24、30以及DsPIC33,另外還支持AVR、ARM、8086以及MSP430等,后來(lái)還支持Corte*與DSP等處理器,不僅如此,該設(shè)計(jì)平臺(tái)還在不斷增加其他的處理器模型[16]。該平臺(tái)同樣支持許多的編譯器,比如IAR和Keil以及MATLAB等,以便用戶只用同一個(gè)平臺(tái)來(lái)進(jìn)行各項(xiàng)操作。在軟件編程的過(guò)程中,我們用匯編軟件把源程序該成機(jī)器碼,這樣CPU才能對(duì)其執(zhí)行命令,過(guò)去在MCS-51單片機(jī)上進(jìn)行匯編,所使用的軟件是A51,而現(xiàn)在單片機(jī)發(fā)展迅速,開發(fā)所用的語(yǔ)言大多是高級(jí)語(yǔ)言,現(xiàn)如今大多研究人員在單片機(jī)上用的是最流行的Keil軟件,所用最近一段時(shí)間的廠商在制作仿真機(jī)的過(guò)程中都表示會(huì)對(duì)Keil軟件給予全面的支持。如今使用的開發(fā)語(yǔ)言大部分是C語(yǔ)言,美國(guó)Keil公司出品一款開發(fā)系統(tǒng)就支持在單片機(jī)上運(yùn)用C語(yǔ)言來(lái)開發(fā),是51系列的KeilC51軟件,C語(yǔ)言比匯編語(yǔ)言的優(yōu)勢(shì)要大的多,不管從功能上,結(jié)構(gòu)上,還是可讀性,可維護(hù)性上都明顯,而且簡(jiǎn)單易懂。Keil軟件具有完整性,擁有完整的開發(fā)方案,我們可以將一些功能和方案集中到一個(gè)集成開發(fā)環(huán)境(Vision)中,其中的功能方案有C編譯器,有宏匯編,有連接器與庫(kù)管理,還有一個(gè)功能強(qiáng)大的仿真調(diào)試器。在WINDOWS7和WIN*P等一些操作系統(tǒng)中就可以使用Keil軟件。不管你用的開發(fā)語(yǔ)言是C語(yǔ)言還是匯編語(yǔ)言,它集成環(huán)境方便,軟件仿真調(diào)試效率高,能使你的工作也會(huì)事半功倍。目前差不多有超出10萬(wàn)名微控制器開發(fā)人員在使用這種獲得業(yè)界認(rèn)同的解決方案[17]。4.2音調(diào)與節(jié)拍發(fā)聲原理物理學(xué)中聲波的頻譜*圍一般在幾十赫茲到幾千赫茲。單片機(jī)發(fā)聲是通過(guò)揚(yáng)聲器發(fā)出的聲音,其原理是在接口線處生成“高電平”或“低電平”,這樣就可以制造一定頻率的方波信號(hào),而發(fā)出的聲音不可能是單一的,所以要對(duì)“高低”電平的持續(xù)時(shí)間進(jìn)行控制,這些都是通過(guò)一個(gè)延時(shí)程序來(lái)控制的,這樣就可以改變音調(diào),放出不同的聲響[16]。音調(diào)和音符就是音樂能順利播放的必要元素。先了解一下音調(diào),對(duì)于音調(diào),聲音的頻率與聲音播放的強(qiáng)度就是其確定因素。純音達(dá)到一定的強(qiáng)度時(shí),頻率的升降也直接會(huì)決定音調(diào)的升降;而純音的頻率中,低頻純音的音調(diào)會(huì)隨著聲音強(qiáng)度的增高而有所下降,相對(duì)的高頻純音的音調(diào)卻會(huì)隨著聲音強(qiáng)度的增高而上升[17]。另外,音符的頻率有所不同?,F(xiàn)在來(lái)了解節(jié)拍,設(shè)計(jì)軟件時(shí)想要控制音符的節(jié)拍,只需用定時(shí)器T0就可以了,而不同定時(shí)時(shí)間的產(chǎn)生只要有不同的初值輸入就行了。但是初值是不能直接去改變的,所以想要控制節(jié)拍時(shí)間的長(zhǎng)短,可以通過(guò)判斷中斷計(jì)數(shù)器的值來(lái)實(shí)現(xiàn),并產(chǎn)生不同的節(jié)拍,這是因?yàn)門0的定時(shí)時(shí)間最多只有131ms,不過(guò)可以利用T0生成10ms的時(shí)間基準(zhǔn),再設(shè)置一個(gè)中斷計(jì)數(shù)器就行了[19]。在播放音樂時(shí)產(chǎn)生的音符和控制節(jié)奏,都是通過(guò)查表的程序依次讀取的,而這個(gè)表是由曲譜中全部的常數(shù)構(gòu)成的,一組常數(shù)又是由一個(gè)音符中時(shí)間常數(shù)與相對(duì)應(yīng)的節(jié)拍常數(shù)組成,這樣就可以實(shí)現(xiàn)發(fā)聲效果。特別的,音樂的結(jié)束由結(jié)束符(00H)表示,音樂的停頓效果則是由休止符(FFH)表示,還可以在相同的兩個(gè)音符間或其他音符間插入時(shí)間單位頻率不一樣的音符,這樣可以增強(qiáng)節(jié)奏感[20]。單片機(jī)播放出的音樂沒有電子琴可以演奏不同音調(diào)聲音的功能,因?yàn)榉懦龅囊魳坊臼菃我纛l率,沒有一定幅度的諧波頻率,這樣,對(duì)單片機(jī)放音只要知道音調(diào)和節(jié)拍的知識(shí)就可以了。音符頻率對(duì)照表如表4-1所示。表4-1:音符頻率對(duì)照表音調(diào)的確定唱歌時(shí)會(huì)正常有DO、RE、MI、FA、SO、LA、SI這7個(gè)音調(diào),音調(diào)名就是大寫的英文字母C、D、E、F、G、A、B來(lái)表示的,唱成簡(jiǎn)譜的1、2、3、4、5、6、7,相當(dāng)于漢字“哆唻咪發(fā)唆啦西”的讀音,這是唱曲時(shí)聲樂的發(fā)音,所以叫“音調(diào)”,即Tone[19]。而C、D、E、F、G、A、B這組音調(diào)名可以被我們拆為12個(gè)等份,可以用一個(gè)“半音”來(lái)描述一個(gè)等份,用“全音”來(lái)描述相鄰兩個(gè)音間隔的兩個(gè)“半音”。我們通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它們的左上角加上﹟號(hào)或者b號(hào)的叫變化音。這些變化音中﹟的作用是在基于原來(lái)的音上再升高半音,叫做升記號(hào),b的作用是在基于原來(lái)的音再降低半音,叫做降記號(hào)。例如,高頻率(1046hz做)只是中間做頻率(523hz)翻了一番,阿爾托做頻率(523hz)只是低音頻率(266赫茲)的兩倍;同樣,高重復(fù)頻率(1175hz)只是中間再頻率(587hz)翻了一番,阿爾托重新頻率(587hz)只是低音重復(fù)頻率(294赫茲)的兩倍。(1)以生成音頻脈沖,以解決只是一個(gè)音頻周期(1/頻率),則這段除以2,其中一半是周期時(shí)間。利用定時(shí)器計(jì)使用這個(gè)半周期的時(shí)間,我們可以重復(fù)計(jì)時(shí)此半周期時(shí)間,在計(jì)時(shí)結(jié)束后再將I/O口進(jìn)行反相,直接就能在I/O腳上獲得這個(gè)頻率的脈沖信號(hào)。(2)在計(jì)數(shù)器模式下工作,只要采用AT89C52單片機(jī)內(nèi)部的定時(shí)器就能實(shí)現(xiàn),然后通過(guò)獲取TH0和TL0的數(shù)值的方法來(lái)產(chǎn)生不同頻率。 特別的,音樂的結(jié)束由結(jié)束符(00H)表示,音樂的停頓效果則是由休止符(FFH)表示。通過(guò)查表可查到OOH與FFH,以此來(lái)實(shí)現(xiàn)功能。(3)如中音D0,頻率為523HZ,其周期T=1/523=1912微秒,要想獲得中音D0(523HZ),就將令計(jì)數(shù)器直接定時(shí)為1912/2=956,這樣每當(dāng)計(jì)數(shù)956次后,就將I/O口反相就可以了。C調(diào)各音符頻率與計(jì)數(shù)值T的對(duì)照表如表4-2所示。表4-2:C調(diào)各音符頻率與計(jì)數(shù)值T的對(duì)照表節(jié)拍的確定音樂是要有旋律的,所以音樂不僅僅只靠音調(diào),節(jié)拍也是必不可少的,這樣音樂才有旋律,音樂的快慢也可以控制。節(jié)拍的英文叫做Beat,通俗點(diǎn)來(lái)講就是打拍子,比如在聽音樂的時(shí)候會(huì)情不自禁的隨其拍手。實(shí)際上1拍是多少秒,并無(wú)嚴(yán)格的規(guī)定,就和人的心跳差不多,人的心跳大多是每分鐘72左右,但有些人會(huì)快一些,而有些人會(huì)慢一些,只要音樂聽的動(dòng)聽就好。這樣我們就可以用節(jié)拍來(lái)描述一首音樂可以持續(xù)多長(zhǎng)時(shí)間,當(dāng)遇到休止符時(shí),發(fā)音會(huì)暫停。形成音樂的過(guò)程是將不同頻率相互結(jié)合,再通過(guò)與節(jié)拍數(shù)相對(duì)應(yīng)的延時(shí)過(guò)程就行了,通過(guò)理解音樂的一些基本常識(shí),可以知道將很多不一樣的音符結(jié)合可以產(chǎn)生音樂,而不同的音符還對(duì)應(yīng)不一樣的頻率,這樣生成不同頻率的音頻脈沖就可以形成音樂。單片機(jī)內(nèi)可以很容易的就得到不一樣頻率的脈沖,形成有方波頻率的信號(hào)通過(guò)定時(shí)器與計(jì)數(shù)器就能直接實(shí)現(xiàn)。所以,能播放出如此悅耳動(dòng)聽的聲音,只要能搞明白音符和相對(duì)應(yīng)的頻率就行了。音樂編碼一個(gè)音符中要有兩個(gè)音節(jié),其中音調(diào)占用一個(gè)字節(jié),而另一個(gè)字節(jié)被節(jié)拍占用。在音調(diào)字節(jié)中,高四位意味著低中高音,0表示低音,1表示中音,2表示高音;音調(diào)就是其中的低四位。就像中音do就表示成0*11。節(jié)拍字節(jié)中,數(shù)值i的意思是延遲i個(gè)十六分音符。一首歌曲如果是4分音符組成,那一拍就是0*04。而0*04還可以來(lái)代表其的延時(shí),就是在下邊無(wú)橫線,右邊無(wú)橫線和數(shù)字的情況。若底面有個(gè)橫線就是用0*02表示;右邊有個(gè)橫則用0*08表示;右邊有兩橫就用0*0c表示;而右邊有三橫則是用0*10表示;右下角有一點(diǎn):加上當(dāng)前延時(shí)的一半。因?yàn)槊總€(gè)歌曲的播放速率各不相同,單位就可以用曲速(單位——拍每分鐘)表示。所以在音樂編碼表中的第0和第1元素用來(lái)表示曲速。這樣就能根據(jù)以上的規(guī)律在不同歌曲的簡(jiǎn)譜圖上編寫出單片機(jī)辨別的簡(jiǎn)譜表。4.3系統(tǒng)軟件總體設(shè)計(jì)流程圖主程序流程圖開始開始掃描鍵盤掃描鍵盤否否否否讀下一個(gè)音符否是關(guān)閉定時(shí)器P0口置0是是否停止播放?算出定時(shí)器初值識(shí)別按鍵是有矩陣鍵按下?算出音符的音調(diào)、節(jié)拍否是是否結(jié)束符?讀取歌曲播放鍵按下?關(guān)閉T0T1否是按鍵是否釋放?開啟定時(shí)器,并賦初值,揚(yáng)聲器發(fā)聲按節(jié)拍延遲根據(jù)音調(diào)給T0賦初值開啟T0T1讀下一個(gè)音符否是關(guān)閉定時(shí)器P0口置0是是否停止播放?算出定時(shí)器初值識(shí)別按鍵是有矩陣鍵按下?算出音符的音調(diào)、節(jié)拍否是是否結(jié)束符?讀取歌曲播放鍵按下?關(guān)閉T0T1否是按鍵是否釋放?開啟定時(shí)器,并賦初值,揚(yáng)聲器發(fā)聲按節(jié)拍延遲根據(jù)音調(diào)給T0賦初值開啟T0T1圖4-1主程序流程圖歌曲播放流程圖開始開始初始化設(shè)置音節(jié)起始位置和節(jié)拍間距讀取音節(jié),音符初始化設(shè)置音節(jié)起始位置和節(jié)拍間距讀取音節(jié),音符顯示當(dāng)前播放歌曲節(jié)拍結(jié)束音樂結(jié)束顯示當(dāng)前播放歌曲節(jié)拍結(jié)束音樂結(jié)束圖4-2歌曲播放流程圖按鍵掃描流程圖由于定時(shí)器的初始值設(shè)置不一樣,所以不同按鍵對(duì)應(yīng)不同的功能。在設(shè)計(jì)過(guò)程中通常會(huì)設(shè)計(jì)一個(gè)按鍵掃描的子程序,這樣其他的功能就可以更方便的調(diào)用這個(gè)程序。按鍵掃描子程序的流程圖如圖4-3所示。YYYNYN開始是否有鍵按下?開始是否有鍵按下?延時(shí)去抖NN有否鍵按下?延時(shí)去抖NN有否鍵按下?Y計(jì)算并保存鍵值按鍵是否釋放?Y計(jì)算并保存鍵值按鍵是否釋放?恢復(fù)鍵值返回恢復(fù)鍵值返回圖4-3按鍵掃描流程圖延時(shí)子程序流程圖延時(shí)程序通常是經(jīng)過(guò)一層或多層循環(huán)來(lái)實(shí)現(xiàn)的,整個(gè)系統(tǒng)延時(shí)的時(shí)間是程序執(zhí)行的指令總條數(shù)和執(zhí)行每條指令所用的時(shí)間進(jìn)行相乘。因?yàn)樵撓到y(tǒng)的晶振采用的是12M,因此執(zhí)行每條指令所用時(shí)間為2us。程序執(zhí)行流程圖如圖4-4所示。開始開始是否是否否否*>0?*>0?是是*--y>0"y--返回y>0"y--返回圖4-4延時(shí)子程序流程圖在函數(shù)初始化子程序設(shè)計(jì)中,在主函數(shù)內(nèi),給*些參數(shù)以及一些標(biāo)記位賦個(gè)初值并編寫成一個(gè)函數(shù),也就是函數(shù)初始化程序,如此可以讓程序能更加擁有層次,更明顯易懂。由于整個(gè)程序要用到定時(shí)器0和定時(shí)器1,所以初始化程序主要是對(duì)定時(shí)器相關(guān)內(nèi)容作說(shuō)明。第5章總結(jié)個(gè)人覺得本次的單片機(jī)還是非常有意義的,我覺得帶給我的好處可以總結(jié)為兩點(diǎn):第一,能讓把實(shí)際的與理論的知識(shí)做一個(gè)結(jié)合,第二,讓我們對(duì)單片機(jī)這一個(gè)應(yīng)用學(xué)科,有了更深入的學(xué)習(xí),了解單片機(jī)的各種操作,而不僅僅局限在書本上念字。這次的課程設(shè)計(jì),我做的是一個(gè)電子琴音樂播放器,原本的心中理想作品是可以自由選擇歌曲的音樂盒。但由于實(shí)際操作中碰到很多問題,影響到設(shè)計(jì)的進(jìn)度,最終設(shè)計(jì)的要求改為,帶音樂播放(2首),帶按鍵彈琴。前期準(zhǔn)備的時(shí)候搜集了很多東西,并分析了一些可以借鑒的文檔,然后綜合并總結(jié)了多個(gè)文檔確定了我這次的設(shè)計(jì)方案。然后根據(jù)這些資料在Proteus軟件上進(jìn)行了繪制,并進(jìn)行前期的仿真,之后開始硬件的焊裝。一開始我對(duì)按鍵模塊進(jìn)行了選擇。原先的方案是獨(dú)立式按鍵,最后發(fā)現(xiàn)按鍵少,達(dá)不到要求,最終選擇了4*4矩陣鍵盤。在做放大電路時(shí)我們選用的是NPN型三極管,因?yàn)橛X得三極管的能力就已經(jīng)能達(dá)到要求,不需要放大器。做揚(yáng)聲器的時(shí)候我選用了喇叭。差不多三天的時(shí)間焊接好硬件電路,并開始調(diào)試,首先編輯一個(gè)簡(jiǎn)單的方波信號(hào)來(lái)檢測(cè)揚(yáng)聲器的好壞,經(jīng)過(guò)多次調(diào)試和改件最終能工作,然后利用C語(yǔ)言編寫了一個(gè)按鍵的發(fā)音,經(jīng)過(guò)調(diào)試成功后,在開始編寫多個(gè)按鍵的發(fā)音,最后我都把子程序?qū)懞茫{(diào)試成功,然后組合成一個(gè)總程序,達(dá)到設(shè)計(jì)的要求。當(dāng)然在組合的時(shí)候也出現(xiàn)過(guò)程序問題,因?yàn)槲矣械牟糠质褂昧送粋€(gè)工作寄存器,還有定時(shí)器。在碰到問題的時(shí)候有時(shí)候一天都調(diào)不出來(lái),但是最后反復(fù)檢查分析錯(cuò)誤原因,才解決了這些問題。這次的畢業(yè)設(shè)計(jì)對(duì)自己真的有很大的提高,以后工作有機(jī)會(huì)多多接觸這方面的實(shí)踐,積累相關(guān)的經(jīng)驗(yàn),從實(shí)際中學(xué)到書本上學(xué)不到的知識(shí)。致謝六月份的到來(lái),代表新的畢業(yè)季的降臨,也預(yù)示著我大學(xué)四年的學(xué)習(xí)生活走向尾聲。當(dāng)我回首眺望,看到自己一生最珍貴的時(shí)光能在大學(xué)校園之中,有著眾多有共**趣愛好的朋友,實(shí)在是榮幸之極。在四年的時(shí)間里,我在學(xué)習(xí)上有了很大的進(jìn)步,思想上得到較高的提升。通過(guò)我自己的努力,老師的指導(dǎo)以及同學(xué)與朋友的幫助,和家人的支持與鼓勵(lì),讓我在大學(xué)期間獲益良多。完成一篇好的論文是枯燥艱辛而又具有很大挑戰(zhàn)的。但老師不厭其煩的指導(dǎo)、同學(xué)間的互相幫助以及家長(zhǎng)的支持鼓勵(lì),讓我有了堅(jiān)持完成論文的動(dòng)力。在此,我特別要感謝我的導(dǎo)師。老師一直都孜孜不倦的指導(dǎo)我,不管是開始論文選題,采集文獻(xiàn),還是中期硬件的制作,結(jié)構(gòu)的布局,以及最后論文的確定和論文中內(nèi)容格式,標(biāo)點(diǎn)符號(hào)等,都為我提供了幫助。要是沒有老師的不知疲倦的指導(dǎo),我就不能夠順利完成論文。同時(shí)也感謝寢室的各位同學(xué),在我遇到問題時(shí)幫我出謀劃策,讓我度過(guò)難關(guān)。最后要感謝一直給我理解與支持,鼓勵(lì)與幫助的家人,有了他們的這些正能量,讓我在做事情時(shí)更有動(dòng)力,更有信心,讓我所做的一切更加有意義。此次的論文由于時(shí)間的緊迫和自身專業(yè)水平的還有待提高,所以論文中肯定存在一些尚未發(fā)現(xiàn)的錯(cuò)誤。懇請(qǐng)老師能多予指正,讓我大學(xué)最后的階段更加圓滿,不留遺憾。在此學(xué)生感激致謝!參考文獻(xiàn)[1]李玉梅.單片機(jī)原理的應(yīng)用設(shè)計(jì)[M].國(guó)防工業(yè),2009.[2]陳海宴.51單片機(jī)原理及應(yīng)用[M].航空航天大學(xué),2010.[3]高培先.提高實(shí)時(shí)系統(tǒng)數(shù)據(jù)采集質(zhì)量的研究[J].**理工學(xué)院,2002.15(3):111—113.[4]楊美仙.單片機(jī)的發(fā)展及其應(yīng)用[J].科技信息(學(xué)術(shù)研究),2007.6(35):65-79.[5]梁麗潔.基于單片機(jī)的簡(jiǎn)單數(shù)字采集系統(tǒng)的設(shè)計(jì)[J].**理工大學(xué)學(xué)報(bào),2007.01(8):156-168.[6]羅衛(wèi)星.單片機(jī)音樂播放器設(shè)計(jì)[J].科學(xué)之友,2010.11(4):137-139.[7]歐陽(yáng)斌林,*立山,蔣文科.單片機(jī)原理及應(yīng)用[M].:中國(guó)水利水電,2011.[8]王宜懷.12位A/D轉(zhuǎn)換器TLC2543與51系列單片機(jī)接口技術(shù)[J].**絲綢工學(xué)院學(xué)報(bào),1999.20(5):197-199.[9]何立民.從80C51F[10]柴鈺.單片機(jī)原理及應(yīng)用[M].**電子科技大學(xué),2009.[11]田媛.單片機(jī)音樂播放器功能多樣性的研究[J].**職業(yè)技術(shù)學(xué)院學(xué)報(bào),2013.06(28):64-70.[12]遠(yuǎn)飛.基于單片機(jī)的音樂播放器的仿真與制作[J].電子元器件應(yīng)用,2010.12(15):122-130.[13]DaniloPelusi.JournalofDiscreteMathematicalSciencesandCryptography[J].Applicationoffuzzylogictointegratedcircuits,2003.6(1):109-120.[14]YinFei,ZhangDongliang.InternationalJournalofDistributedSensorNetworks(IF0.727)[J].PerformanceAnalysisforLarge-ScaleParallelMicroscopicTrafficSimulationSystem,2009,5(1):422-461.[15]ReginaldB.Kogbara,Abir.Al-Tabbaa,JuliaA.Stegemann.JournalofEnvironmentalScienceandHealth,PartA(IF1.252)[J].Relatingmonolithicandgranularleachingfromcontaminatedsoiltreatedwithdifferentcementitiousbinders2013,48(12):1502-1515.[16]曹麗燕.基于單片機(jī)的音樂盒功能設(shè)計(jì)[J].信息與電腦(理論版),2010.04(15):156-177.[17]許紅換.基于單片機(jī)AT89C52的數(shù)字音樂盒設(shè)計(jì)[J].電源技術(shù)應(yīng)用,2013.07(15):167-189.[18]*磊.單片機(jī)原理及應(yīng)用教學(xué)手段探索[J].電子世界,2013.11(21):56-78.[19]祝燎,何峰山.單片機(jī)AT89C51的設(shè)計(jì)與開發(fā)[J].河西學(xué)院學(xué)報(bào).2010(25):86-106.[20]羅芬,趙新業(yè),梁小流.多功能音樂演奏的設(shè)計(jì)[J].大眾科技,2010.11(10):201-265.附錄1:電路原理圖附錄2:元器件清單附錄3:源程序*include<reg52.h>//包含頭文件*include"1602.h"*defineuintunsignedint*defineucharunsignedcharsbitP1_0=P2^0; //蜂鳴器引腳sbitK2=P1^0; //按鍵2引腳(板子上左邊三個(gè)中的中間一個(gè))voidTime0_Init(); //定時(shí)器0初始化voidTime1_init(); //定時(shí)器1初始化ucharkeyscan(); //按鍵掃描函數(shù)unsignedcharCount; //count為音樂代碼的指針ucharnum,temp,num1,key,i,j,STH0,STL0; //定義各種變量 voidPlay_music(unsignedchari); //播放音樂函數(shù)unsignedintcodetab[]={63628,63835,64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110};//1~7的頻率表unsignedchar*ianshi1[16]="DianZiQin";unsignedchar*ianshi2[16]="YinYueHe";unsignedchar*ianshi3[16]="biyiSheJi";unsignedcharjishu;unsignedcharcodeSONG[]={ 0*26,0*20,0*20,0*20,0*20,0*20,0*26,0*10,0*20,0*10,0*20,0*80,0*26,0*20,0*30,0*20,0*30,0*20,0*39,0*10,0*30,0*10,0*30,0*80,0*26,0*20,0*20,0*20,0*20,0*20,0*1c,0*20,0*20,0*80,0*2b,0*20,0*26,0*20,0*20,0*20,0*2b,0*10,0*26,0*10,0*2b,0*80,0*26,0*20,0*30,0*20,0*30,0*20,0*39,0*10,0*26,0*10,0*26,0*60,0*40,0*10,0*39,0*10,0*26,0*20,0*30,0*20,0*30,0*20,0*39,0*10,0*26,0*10,0*26,0*80,0*26,0*20,0*2b,0*10,0*2b,0*10,0*2b,0*20,0*30,0*10,0*39,0*10,0*26,0*10,0*2b,0*10,0*2b,0*20,0*2b,0*40,0*40,0*20,0*20,0*10,0*20,0*10,0*2b,0*10,0*26,0*30,0*30,0*80,0*18,0*20,0*18,0*20,0*26,0*20,0*20,0*20,0*20,0*40,0*26,0*20,0*2b,0*20,0*30,0*20,0*30,0*20,0*1c,0*20,0*20,0*20,0*20,0*80,0*1c,0*20,0*1c,0*20,0*1c,0*20,0*30,0*20,0*30,0*60,0*39,0*10,0*30,0*10,0*20,0*20,0*2b,0*10,0*26,0*10,0*2b,0*10,0*26,0*10,0*26,0*10,0*2b,0*10,0*2b,0*80,0*18,0*20,0*18,0*20,0*26,0*20,0*20,0*20,0*20,0*60,0*26,0*10,0*2b,0*20,0*30,0*20,0*30,0*20,0*1c,0*20,0*20,0*20,0*20,0*80,0*26,0*20,0*30,0*10,0*30,0*10,0*30,0*20,0*39,0*20,0*26,0*10,0*2b,0*10,0*2b,0*20,0*2b,0*40,0*40,0*10,0*40,0*10,0*20,0*10,0*20,0*10,0*2b,0*10,0*26,0*30,0*30,0*80,0*C0,0*30,0*1C,0*10,0*20,0*40,0*1C,0*10,0*18,0*10,0*20,0*10,0*1C,0*10,0*18,0*40,0*1C,0*20,0*20,0*20,0*1C,0*20,0*18,0*20,0*20,0*80,0*FF,0*20,0*30,0*1C,0*10,0*18,0*20,0*15,0*20,0*1C,0*20,0*20,0*20,0*26,0*40,0*20,0*20,0*2B,0*20,0*26,0*20,0*20,0*20,0*30,0*80,0*FF,0*20,0*20,0*1C,0*10,0*18,0*10,0*20,0*20,0*26,0*20,0*2B,0*20,0*30,0*20,0*2B,0*40,0*20,0*20,0*1C,0*10,0*18,0*10,0*20,0*20,0*26,0*20,0*2B,0*20,0*30,0*20,0*2B,0*40,0*20,0*30,0*1C,0*10,0*18,0*20,0*15,0*20,0*1C,0*20,0*20,0*20,0*26,0*40,0*20,0*20,0*2B,0*20,0*26,0*20,0*20,0*20,0*30,0*80,0*20,0*30,0*1C,0*10,0*20,0*10,0*1C,0*10,0*20,0*20,0*26,0*20,0*2B,0*20,0*30,0*20,0*2B,0*40,0*20,0*15,0*1F,0*05,0*20,0*10,0*1C,0*10,0*20,0*20,0*26,0*20,0*2B,0*20,0*30,0*20,0*2B,0*40,0*20,0*30,0*1C,0*10,0*18,0*20,0*15,0*20,0*1C,0*20,0*20,0*20,0*26,0*40,0*20,0*20,0*2B,0*20,0*26,0*20,0*20,0*20,0*30,0*30,0*20,0*30,0*1C,0*10,0*18,0*40,0*1C,0*20,0*20,0*20,0*26,0*40,0*13,0*60,0*18,0*20,0*15,0*40,0*13,0*40,0*18,0*80,0*00};/*******************************延時(shí)函數(shù)************************************函數(shù)名:Delay_*Ms()作用:用于微量延時(shí),在播放音樂是延時(shí)*****************************************************************************/voidDelay_*Ms(unsignedint*){unsignedinti,j;for(i=0;i<*;i++){for(j=0;j<2;j++);}}/*******************************延時(shí)函數(shù)************************************函數(shù)名:delay(uintz)作用:zms延時(shí)延時(shí)z毫秒*****************************************************************************/voiddelay(uintz){ uint*,y; for(*=z;*>0;*--) for(y=110;y>0;y--);}/********************************主函數(shù)********************************函數(shù)名:main()*******************************************************************/voidmain(){unsignedcharji; lcd_ini(); lcd_order(0*80); for(jishu=0;jishu<16;jishu++) lcd_data(*ianshi3[jishu]); while(K2==1); while(K2==0);while(1){ lcd_order(0*80); for(jishu=0;jishu<16;jishu++) lcd_data(*ianshi2[jishu]); Time0_Init(); while(1) { Play_music(0); Time1_init(); lcd_order(0*80); for(jishu=0;jishu<16;jishu++) lcd_data(*ianshi1[jishu]); while(1) { keyscan();//鍵盤掃描子程序 P1_0=1; if(K2==0) { while(K2==0); TR1=0; EA=0; ji=1;break; } } if(ji==1) { ji=0; lcd_order(0*80+0*40+6); lcd_data(''); lcd_data(''); break; } } }}voidTime0_Init(){TMOD=0*01;IE=0*82;EA=1;//開總中斷ET0=1;//開定時(shí)器0中斷TH0=0*DC;TL0=0*00;//11.0592MZ晶振,10ms}voidTime1_init(){ TMOD=0*10;//定時(shí)器0工作方式1 ET1=1;//開定時(shí)器0中斷 EA=1;//開總中斷}/*功能:歌曲播放子程序i為播放哪一段曲目*/voidPlay_music(unsignedchari){unsignedcharTemp1,Temp2,ll;unsignedintAddr;Count=0;//中斷計(jì)數(shù)器清0Addr=i*217;while(1){Temp1=SONG[Addr++];if(Temp1==0*FF)//休止符{TR0=0;Delay_*Ms(80);}elseif(Temp1==0*00)//歌曲結(jié)束符{return;}else{Temp2=SONG[Addr++];TR0=1;while(1){P1_0=~P1_0;Delay_*Ms(Temp1);if(Temp2==Count){Count=0;break;} if(K2==0) { P1_0=1; while(K2==0); ll=1; break; }} if(ll==1) { ll=0; i=0; TR0=0; break; }}}}/****************************************鍵盤掃描**************************函數(shù)名:keyscan()作用:鍵盤掃描**********************************************************/ucharkeyscan(){ P3=0*fe;//第一行判斷 temp=P3; temp=temp&0*f0;while(temp!=0*f0) { delay(5); temp=P3; temp=temp&0*f0; while(temp!=0*f0) { switch(temp) { case0*e0:num=1; break; case0*d0:num=2; break; case0*b0:num=3; break; case0*70:num=4; break; } lcd_order(0*80+0*40+6);lcd_data(0*30+num/10); lcd_data(0*30+num%10); P1_0=~P1_0; STH0=tab[num-1]/256; STL0=tab[num-1]%256;TR1=1; while(temp!=0*f0) { temp=P3; temp=temp&0*f0; }TR1=0; } } P3=0*fd;//第二行判斷 temp=P3; temp=temp&0*f0; while(temp!=0*f0) { delay(5); temp=P3; temp=temp&0*f0; while(temp!=0*f0) { switch(temp) { case0*e0:num=5; break; case0*d0:num=6; break; case0*b0:num=7; break; case0*70:num=8; break; } lcd_order(0*80+0*40+6);lcd_data(0*30+num/10); lcd_data(0*30+num%10); P1_0=~P1_0; STH0=tab[num-1]/256;STL0=tab[num-1]%256;TR1=1; while(temp!=0*f0) { temp=P3; temp=temp&0*f0; } TR1=0; } } P3=0*fb;//第三行判斷 temp=P3; temp=temp&0*f0; while(temp!=0*f0) { delay(5); temp=P3; temp=temp&0*f0; while(temp!=0*f0) { switch(temp) { case0*e0:num=9; break; case0*d0:num=10; break; case0*b0:num=11; break; case0*70:num=12; break;} lcd_order(0*80+0*40+6);lcd_data(0*30+num/10); lcd_data(0*30+num%10); P1_0=~P1_0; STH0=tab[num-1]/256; STL0=tab[num-1]%256;TR1=1; while(temp!=0*f0) { temp=P3; temp=temp&0*f0; } TR1=0; } } P3=0*f7;//第四行判斷 temp=P3; temp=temp&0*f0; while(temp!=0*f0) { delay(5); temp=P3; temp=temp&0*f0; while(temp!=0*f0) { switch(temp) { case0*e0:num=13; break;case0*d0:num=14; break; case0*b0:num=15; break; case0*70:num=16; break; } lcd_order(0*80+0*40+6);lcd_data(0*30+num/10); lcd_data(0*30+num%10); P1_0=~P1_0; STH0=tab[num-1]/256; STL0=tab[num-1]%256;TR1=1; while(temp!=0*f0) { temp=P3; temp=temp&0*f0; } TR1=0; } }returnnum;}voidTime1_Int()interrupt3 //定時(shí)器1中斷函數(shù){ TH1=STH0; TL1=STL0; P1_0=~P1_0;}voidtime0()interrupt1 //定時(shí)器0中斷函數(shù){ TH0=0*DC; TL0=0*00; Count++;//長(zhǎng)度加1}*include<reg52.h>typedefunsignedcharuint8;typedefunsignedintuint16;sbitRS=P2^5;//LCD1602的數(shù)據(jù)命令選擇sbitRW=P2^6;sbitEN_LCD=P2^7;//LCD1602的使能信號(hào)voiddelays(uint16time);//延時(shí)函數(shù)(6us單位) voidlcd_ini(); //LCD1602的初始化voidlcd_order(uint8date); //向LCD1602的寫1個(gè)指令voidlcd_data(uint8date); //向LCD1602的寫1個(gè)指令void*ie1602(uint16daa);//寫數(shù)據(jù)*include"1602.h"/**********************************************函數(shù)名:delay行參:time延時(shí)基數(shù)功能:用while延時(shí)***************
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度陜西榆林能源集團(tuán)有限公司高校畢業(yè)生招聘300人筆試參考題庫(kù)附帶答案詳解
- 2024年模具磨料項(xiàng)目資金申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2025年上半年宣城經(jīng)濟(jì)技術(shù)開發(fā)區(qū)城管局工作人員招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽馬鞍山市博望區(qū)事業(yè)單位招聘工作人員33人筆試易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽阜陽(yáng)界首市教育系統(tǒng)引進(jìn)急需緊缺專業(yè)人才28人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽銅陵市人力資源和社會(huì)保障局選調(diào)事業(yè)單位工作人員易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽蕪湖事業(yè)單位1023聯(lián)考易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025中儲(chǔ)糧信息化運(yùn)維中心招聘(14人)筆試參考題庫(kù)附帶答案詳解
- 2025年上半年安徽省合肥市廬江縣招聘招聘政府購(gòu)買崗16人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省六安市煙草專賣局(公司)招聘高校畢業(yè)生6人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 手機(jī)攝影PPT學(xué)習(xí)課件(攝影的七大要素)
- 《采購(gòu)管理》教學(xué)課件
- 金蝶云星空V7.7-產(chǎn)品培訓(xùn)-供應(yīng)鏈-銷售管理
- 2023年高三新高考英語(yǔ)復(fù)習(xí)備考策略及方法指導(dǎo)(深度課件)
- 數(shù)字信號(hào)處理(課件)
- 社會(huì)主義核心價(jià)值觀-團(tuán)課課件
- 化學(xué)品安全技術(shù)說(shuō)明(乙二胺四乙酸)
- 各單位特種作業(yè)人員持證情況統(tǒng)計(jì)表
- 蓄電池在線監(jiān)控方案
- 《豎提》課件
- 不銹鋼排煙風(fēng)管施工實(shí)施方案
評(píng)論
0/150
提交評(píng)論