基于51單片機(jī)的激光豎琴設(shè)計(jì)

上傳人:good****022 文檔編號:116533272 上傳時(shí)間:2022-07-05 格式:DOCX 頁數(shù):39 大?。?.40MB
收藏 版權(quán)申訴 舉報(bào) 下載
基于51單片機(jī)的激光豎琴設(shè)計(jì)_第1頁
第1頁 / 共39頁
基于51單片機(jī)的激光豎琴設(shè)計(jì)_第2頁
第2頁 / 共39頁
基于51單片機(jī)的激光豎琴設(shè)計(jì)_第3頁
第3頁 / 共39頁

下載文檔到電腦,查找使用更方便

12 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《基于51單片機(jī)的激光豎琴設(shè)計(jì)》由會員分享,可在線閱讀,更多相關(guān)《基于51單片機(jī)的激光豎琴設(shè)計(jì)(39頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、基于51單片機(jī)的激光豎琴設(shè)計(jì)組長:趙唐橙組員:杜晨 楊霄 周凱龍2018年 07月 05 日目錄基于51單片機(jī)的激光豎琴設(shè)計(jì)1背景與意義2設(shè)計(jì)要求3硬件電路設(shè)計(jì)與實(shí)現(xiàn)43.1 硬件設(shè)計(jì)方案43.2 相對應(yīng)得模塊電路的規(guī)劃思路與實(shí)現(xiàn)方法53.2.1 單片機(jī)最小系統(tǒng)53.2.2 激光發(fā)射模塊93.2.3 激光接收模塊103.2.4 發(fā)聲模塊113.2.5 LED指示燈133.2.6 電源供電143.2.7 模式切換15軟件設(shè)計(jì)與實(shí)現(xiàn)154.1 軟件設(shè)計(jì)方案154.2 各模塊程序設(shè)計(jì)與實(shí)現(xiàn)174.2.1 硬件資源配置174.2.2 端口信號檢測2042.3 數(shù)據(jù)處理204.2.4音符輸出214.2.

2、5 LED音符與音區(qū)指示214.2.6 播放音樂部分224.2.7模式切換234.3 軟件開發(fā)工具介紹24測試與分析25程序部分25硬件部分26實(shí)物圖27總結(jié)與展望29附錄29附錄A 主程序29附錄B 整體電路圖38背景與意義在這個(gè)時(shí)代,科學(xué)技術(shù)的飛速前進(jìn)帶動了人們的生活水平的提升,使人類生活更加精彩。電子琴可以稱得上是這兩者融合的體現(xiàn)。MCU(Micro Unit Unit),我們用漢語來說,可以稱之為微控制單元,亦叫做單片機(jī)(單片微型計(jì)算機(jī))或單片機(jī)。它運(yùn)用的時(shí)期并不長,但發(fā)展的速度確是非常的快。 在1971年這個(gè)時(shí)間點(diǎn),美國英特爾公司有史以來第一個(gè)推出了4位微處理器,在接下來的過程中,演

3、變通過了了以下五個(gè)進(jìn)程:單片機(jī)開發(fā)的開端、低性能的單片機(jī) 、高性能的單片機(jī),然后16位的面世。進(jìn)而就是正在向更高的層次發(fā)展。單片機(jī)可構(gòu)成單應(yīng)用系統(tǒng)和多機(jī)應(yīng)用系統(tǒng)。在現(xiàn)在的這個(gè)時(shí)期,它已廣泛應(yīng)用于測控系統(tǒng)、智能儀表、機(jī)電一體化產(chǎn)品、智能接口、智能化民用產(chǎn)品、功能分布式系統(tǒng)、并行多機(jī)控制系統(tǒng)、局域網(wǎng)絡(luò)系統(tǒng)等方方面面。對于未來,我們始終相信隨著MCU性能的不斷提高,其應(yīng)用將超出我們的想象?;趩纹瑱C(jī)的簡易激光琴的設(shè)計(jì)與實(shí)現(xiàn)是可以幫助我們把我們所學(xué)的相關(guān)技術(shù)得意嘗試和發(fā)揮。在整體設(shè)計(jì)規(guī)劃中包括電路分析、數(shù)字電路、模擬電路、傳感器原理及應(yīng)用、C編程等。由此可以看出,大體上囊括了在現(xiàn)在學(xué)習(xí)水平上學(xué)到的主流

4、課程。該系統(tǒng)設(shè)計(jì)原理簡明,但樣式多彩。通過這樣一個(gè)流程,可以幫助我們把理論與實(shí)際相結(jié)合,除了我們上面所說的,也能提高我們的動手能力,使我們勇于創(chuàng)新,知識面也得到了大幅提升, 第一步我們可以在過程中找到問題所在、第二步對這個(gè)問題進(jìn)行思考,這樣使我們在以后的學(xué)習(xí)過程中碰到問題能更得心應(yīng)手的應(yīng)對。該系統(tǒng)可以對于MCU的相關(guān)功能進(jìn)行進(jìn)一步的擴(kuò)大,在我們現(xiàn)在所了解的情況基下,可以具體的地讀出中間和八個(gè)音符。可以逐步將其設(shè)計(jì)為電子琴,兒童玩具,并慢慢滲透進(jìn)我們的生活。設(shè)計(jì)要求虛擬琴弦選擇激光來完成,當(dāng)手觸碰到琴弦的時(shí)候,這個(gè)音節(jié)就會出現(xiàn),這樣就能夠完成對于豎琴演奏簡易的曲子的模仿在硬件電路上要各個(gè)模塊清晰

5、明確,對各模塊進(jìn)行具體分析,以及功能的說明。如激光發(fā)射以及接收,最小系統(tǒng),還有發(fā)聲模塊,從而設(shè)計(jì)出整體的電路布局。在軟件設(shè)計(jì)過程,要結(jié)合硬件電路具體分析,實(shí)現(xiàn)硬件資源的合理配置,端口信號的檢測和數(shù)據(jù)的處理。實(shí)現(xiàn)手指撥動光束,就會發(fā)出對應(yīng)音符,需要做到得心應(yīng)手。這個(gè)過程要確保無誤,有錯誤要及時(shí)發(fā)現(xiàn)改正,保證系統(tǒng)能夠穩(wěn)定地運(yùn)行。程序的編寫過程要注意細(xì)節(jié),防止出現(xiàn)錯誤,影響系統(tǒng)的運(yùn)行。硬件電路設(shè)計(jì)與實(shí)現(xiàn)3.1 硬件設(shè)計(jì)方案在實(shí)現(xiàn)設(shè)計(jì)的時(shí)候,我們必須得將外觀的結(jié)構(gòu)的尺寸標(biāo)準(zhǔn)融合來完成設(shè)計(jì)硬件電路,我們設(shè)計(jì)硬件系統(tǒng)的規(guī)劃就是需要真實(shí),有效、簡易。對于運(yùn)行整個(gè)系統(tǒng)的通過的關(guān)鍵一點(diǎn)就是可靠性,因此,在電路硬

6、件方面的設(shè)計(jì)的時(shí)候的各個(gè)環(huán)節(jié)都對于系統(tǒng)的平穩(wěn)以及抗干擾性深入的考慮,系統(tǒng)的簡易以及有效其實(shí)說的就是硬件系統(tǒng)于很大可靠性的前提下,對于這個(gè)硬件的電路進(jìn)行簡易,將這個(gè)硬件的性能給提升起來,這樣可以完成簡易有效的規(guī)劃。在真實(shí),簡易以及有效的原則條件下,不但在選擇元器件是便利的,對設(shè)計(jì)硬件電路也是有益的,還能夠降低有些不需要的電路,確保系統(tǒng)穩(wěn)定。由五個(gè)部分所組成的電路的硬件系統(tǒng),詳細(xì)查看圖3.1.單片機(jī)最小系統(tǒng)激光發(fā)射部分激光接收部分音頻驅(qū)動部分電源部分圖3-1 結(jié)構(gòu)圖(關(guān)于這個(gè)硬件系統(tǒng)的組成)3.2 相對應(yīng)得模塊電路的規(guī)劃思路與實(shí)現(xiàn)方法對于上一部份全部硬件電路系統(tǒng)的構(gòu)架已經(jīng)初步的進(jìn)行概述,在這個(gè)章節(jié)

7、之中我們主要是對于構(gòu)成硬件電路的各個(gè)子模塊還有其性能以及PCB電路板設(shè)計(jì)進(jìn)行詳細(xì)的概述。接下來是對于整個(gè)系統(tǒng)的4部分來進(jìn)行具體概述。3.2.1 單片機(jī)最小系統(tǒng)單片微型計(jì)算機(jī)其實(shí)又可以被簡單的叫做單片機(jī)。是一個(gè)整體的微型計(jì)算機(jī)。創(chuàng)建一個(gè)單片機(jī)最小系統(tǒng),在這個(gè)系統(tǒng)之中具有包括這四個(gè)層面:分別為STC89C51RC以及是復(fù)位電路,還有就是振蕩電路I/O接口。圖3-1 單片機(jī)最小系統(tǒng)構(gòu)成圖復(fù)位電路即讓寄存器的值變回原始值,復(fù)位電路詳細(xì)可以經(jīng)有兩個(gè)渠道,一個(gè)是上電復(fù)位,一個(gè)是外部復(fù)位。上電復(fù)位于單片機(jī)在將電源連接好的時(shí)候,復(fù)位單片機(jī)的功能可以自身達(dá)到,外部復(fù)位在這里說明,通俗來講便是由外部手動來達(dá)成復(fù)位

8、的功能??偟膩碚f此電路其實(shí)就是能夠自身上電復(fù)位(在這地位時(shí)),還能夠選擇運(yùn)用外部手動的方式來達(dá)到復(fù)位的目的。實(shí)際手動復(fù)位很少用到,所以我們把手動復(fù)位按鍵去掉,讓電路更簡潔。圖3-2 復(fù)位電路振蕩電路眾所周知片內(nèi)的時(shí)鐘電路還有定時(shí)電路可以幫助我們實(shí)現(xiàn)所要的定時(shí)控制作用,在片內(nèi),我們有兩種渠道可以達(dá)到時(shí)鐘產(chǎn)生,便是我們大家所說的內(nèi)部時(shí)鐘方法以及外部時(shí)鐘方法這兩種,當(dāng)然我們也可以稱為內(nèi)部振蕩器以及外部振蕩器這兩種。在我們需要選擇內(nèi)部時(shí)鐘方法的時(shí)候,反饋元件的片外晶體振蕩器其實(shí)是片內(nèi)的高增益反相放大器經(jīng)過XTAL1、XTAL2外接來完成的,具體是配合并聯(lián)諧振回路(這里指過我們的電容所構(gòu)成的回路)由此來

9、幫助我們一起形成自激振蕩器,從而為我們的內(nèi)部時(shí)鐘電路輸送了一個(gè)重要條件。這個(gè)條件便是震蕩時(shí)鐘,我們知道震蕩器的頻率在極大程度上被我們的晶體振蕩頻率所決定,在通常的情況下,晶體能夠在一點(diǎn)二到十二兆赫中選擇,電容能夠在五到三十pF間選取的,電容的大小其實(shí)是可以在一點(diǎn)的程度上小小的影響到振蕩頻率的,能夠發(fā)揮頻率微微調(diào)節(jié)的作用運(yùn)用外部時(shí)鐘方式時(shí)鐘的時(shí)候,連接到內(nèi)部時(shí)鐘電路是經(jīng)過XTAL2來完成外部振蕩信號,這個(gè)時(shí)候關(guān)于我們的內(nèi)部反相放大器中它的輸入端,也就是所說的XTAL1端,它此刻的狀態(tài)為接地。一般情況下外接振蕩信號它的大小,也就是小于十二赫茲,而且信號是方波信號。此時(shí),關(guān)于如何制定這個(gè)振蕩電路,我

10、們應(yīng)該通過內(nèi)部時(shí)鐘,此外對于外部晶體振蕩器選擇使用十二赫茲,電泳選擇的是三十pF。圖3-3 振蕩電路單片機(jī)和I/O接口我們運(yùn)用的單片機(jī)型號是STC89C51RC型的,這個(gè)設(shè)計(jì)的企業(yè)是宏晶,它是一個(gè)在8051內(nèi)核的前提下設(shè)計(jì)的,運(yùn)用了CMOS生產(chǎn)方式,這個(gè)單片機(jī)存在低功耗的特征,它存在四個(gè)八位的并行輸入輸出I/O接口:一個(gè)是P0,一個(gè)是P1,一個(gè)是P2,一個(gè)是P3(線是三十二個(gè)),專門運(yùn)用對數(shù)據(jù)進(jìn)行輸入以及輸出,另外,它的串行I/O接口數(shù)量是一個(gè),這個(gè)定時(shí)器/計(jì)數(shù)器是兩個(gè)十六位,中斷系統(tǒng)是五級等。對此,我們需要的片機(jī)條件是:首先它得帶有一個(gè)定時(shí)器/計(jì)數(shù)器,位數(shù)為十六。其次便是一個(gè)輸入輸出I/O口

11、,位數(shù)為八。在談到定時(shí)器/計(jì)數(shù)器的時(shí)候,無論它是我們單個(gè)存在的定時(shí)器芯片,亦或是包括在單片機(jī)內(nèi)部的那個(gè)所謂的定時(shí)器,一般都是存在這些突出點(diǎn):關(guān)于我們的定時(shí)器/計(jì)數(shù)器,如果想要它的運(yùn)行起來,是可以有多種渠道的,一方面可以是定時(shí)方法,另一方面可以是計(jì)數(shù)的方法。再者就是定時(shí)器/計(jì)數(shù)器的計(jì)算數(shù)值,毫無疑問它并不是死板的而是可變通,此外關(guān)于技術(shù)它的max值,自然而然是有限制的,這很大程度上是依靠級數(shù)器它的尾數(shù)的前提下明確的,計(jì)數(shù)的最高值將定時(shí)的最大值給限定了。能夠根據(jù)要求的定時(shí)以及要求的計(jì)數(shù)值,在兩種情況下,一是定時(shí)時(shí)間到,再者就是終止計(jì)數(shù)的這樣一個(gè)時(shí)刻,給予中斷這樣一個(gè)申請指令,來達(dá)成我們的主要目的,

12、也就是定時(shí)控制。在我們利用到的STC89C51RC單片機(jī)中,大家都知道它的定時(shí)器是能夠編程的,即運(yùn)作渠道亦或是開啟以及終止等等都是能夠用于編程來進(jìn)行控制的,需要經(jīng)過對于寄存器TMOD、TCON、TH0、TL0、TH1進(jìn)行設(shè)立,并且設(shè)立TL1就能過實(shí)現(xiàn)的,在對于定時(shí)器的工作方法進(jìn)行設(shè)立之后,并且將這個(gè)定時(shí)器工作開啟直呼,定時(shí)器是能夠?qū)τ谶@個(gè)工作方式的獨(dú)立進(jìn)行設(shè)置的,不會對于CPU進(jìn)行占用,若是計(jì)數(shù)器記載滿之后,就能過主動的朝著CPU中斷系統(tǒng)進(jìn)行一個(gè)操作,也就是請求終止,中斷這樣一個(gè)指令一旦傳達(dá)下去毫無疑問會那把我們的CPU資源給占用了。圖3-4 定時(shí)器/計(jì)數(shù)器結(jié)構(gòu)圖3.2.2 激光發(fā)射模塊關(guān)于光

13、敏電阻電路部分,當(dāng)光線照到光敏電阻的光越強(qiáng),電阻值就越小。通過給光敏電阻接一個(gè)10k的上拉電阻,兩個(gè)引腳分別接到單片機(jī)io口與地。由于激光光束集中,激光照到光敏時(shí),電阻值變小,流過的電流變大,超過上拉電阻,此時(shí)io口被拉低。信號為低電平0。圖3-5圖3-5 激光發(fā)射管 圖3-6 激光發(fā)射電路電路原理圖3.2.3 激光接收模塊激光接收電路的效果是對我們的激光接收管來進(jìn)行一個(gè)檢查,看它是不是能夠?qū)τ谙鄳?yīng)的激光束完成我們的接收這樣一個(gè)操作,實(shí)質(zhì)是經(jīng)由這樣的一個(gè)電路把高、低電平信號給我們的單片機(jī)P2口運(yùn)送,這樣就可以更好的對于這個(gè)蜂鳴器或小型的音響進(jìn)行控制,完成對于相應(yīng)頻率音頻信號這樣的一個(gè)要求。因?yàn)?/p>

14、在運(yùn)用點(diǎn)對點(diǎn)的方法的時(shí)候,確切的來說就是一個(gè)激光接收管僅僅只可以對于一個(gè)激光發(fā)射器射出的激光束進(jìn)行接收,所以若是人體對于一個(gè)激光發(fā)射器射出的激光束進(jìn)行阻斷的時(shí)候,和其對應(yīng)的極光由于無法接收這個(gè)激光束而讓電平處于很低的狀態(tài),排除這樣的狀況一般都是屬于高電平,這樣就形成所要的控制信號,同叫低電平信號。圖3-7為激光接收電路原理圖,效果其實(shí)就是表示這個(gè)激光接收電路是不是對于這個(gè)激光束可以接收,若是能夠接收,那么對應(yīng)這個(gè)發(fā)光二極管就不會亮,反之就會發(fā)亮。簡單說,就是手指遮擋某一個(gè)激光束,那個(gè)相應(yīng)的LED就會亮起同時(shí)發(fā)出相應(yīng)的音符。圖3-7激光接收電路原理圖3.2.4 發(fā)聲模塊我們選擇了16無源蜂鳴器,

15、音頻信號通過IO,經(jīng)三極管放大后傳到蜂鳴器,使蜂鳴器發(fā)出相對應(yīng)的音符。同時(shí)在信號輸出io口并接了一個(gè)3.5MM的音頻座,可以由此連接到音箱,效果更佳。無源蜂鳴器圖3-8 音頻驅(qū)動及接口電路原理圖如圖3-8,J1代表3.5毫米音頻接口。單片機(jī)P00按程序指令發(fā)出特定頻率的方波信號,Q1三極管會按此頻率導(dǎo)通或截止,將該方波信號傳遞到蜂鳴器或外接小型音箱帶動小的音箱奏出音樂。 關(guān)于音區(qū)的切換,切換按鍵由輕觸按鍵與上拉電阻組成。在沒按下按鍵時(shí)由上拉電阻輸入高電平信號,當(dāng)按下按鍵時(shí),電平信號被拉低,變?yōu)檩斎氲碗娖叫盘?。如圖3-11所示:圖3-113.2.5 LED指示燈 LED音符指示燈,我們在用于彈奏

16、音符的7個(gè)激光的對應(yīng)位置加入了LED作提示燈,當(dāng)某一個(gè)“琴弦”被彈奏時(shí),與之相對應(yīng)的LED就會亮起。第8個(gè)激光作為音區(qū)切換功能,可以切換高、中、低三個(gè)音區(qū),所以用三個(gè)LED分別顯示當(dāng)前處于的音區(qū)?!睆棥耙幌戮颓袚Q一個(gè)音區(qū),哪一個(gè)LED亮起就說明當(dāng)前處于哪一個(gè)音區(qū)。3.2.6 電源供電單片機(jī)電壓為5V,激光也為5V,為方便供電,我們選擇最常用的5V USB供電,使得整體電路更為簡明。一個(gè)LED作為電源工作指示燈,為保護(hù)LED,需要給LED串連一個(gè)限流電阻。作為提示用,不用太大亮度,一般選用1K電阻。3.2.7 模式切換在通過模式切換按鍵,可以在彈奏模式、音樂播放模式自由切換,上電默認(rèn)為彈奏模式,

17、按動按鍵切換到音樂播放模式,可以播放內(nèi)置的音樂。再按一次回到彈奏模式軟件設(shè)計(jì)與實(shí)現(xiàn)4.1 軟件設(shè)計(jì)方案按照上面概述的系統(tǒng)硬件的概述,我們這一章節(jié)按照系統(tǒng)的軟件設(shè)計(jì)部門來進(jìn)行概述。音符是怎樣出現(xiàn)的呢?人耳朵可以聽見的聲音頻率是處于二十赫茲和二十千赫茲,我們都知道51單片機(jī)本身的十六個(gè)我們所說的定時(shí)器,所以在設(shè)計(jì)中,為了實(shí)現(xiàn)不一樣的頻率的方波信號,我們運(yùn)用了定時(shí)器中斷這樣一個(gè)渠道。程序包括三部分,并且對應(yīng)相應(yīng)的功能,首先是主函數(shù),為的是檢查到p2端口值,經(jīng)由if語句,可以知道哪一位低電平觸發(fā),其次是初始化函數(shù),毫無疑問是對我們的定時(shí)器進(jìn)行初始化的一個(gè)操作,再者就是開中斷,最后是定時(shí)器中斷函數(shù),意義

18、是達(dá)到對對象的輸出,這個(gè)對象指的是我們所說的不同頻率方波。具體看表5.1,下為音符相應(yīng)的頻率和簡譜碼進(jìn)行了羅列。在圖5-1能看到,軟件的設(shè)計(jì)可以歸為3塊,首先是硬件資源配置,再一個(gè)是端口信號檢測,接著是數(shù)據(jù)處理,實(shí)施環(huán)節(jié)中,最開始為配置,對象就是我們的硬件資源,緊接著是對于它所對著的端口信號有沒有轉(zhuǎn)變進(jìn)行我們的一個(gè)操作,也就是檢測,要是這個(gè)單片機(jī)端口信號出現(xiàn)改變,就能按照端口的信號表來展開對應(yīng)的處理數(shù)據(jù),完成處理數(shù)據(jù)之后,又去到端口信號檢測,最終等到端口信號出現(xiàn)轉(zhuǎn)變。圖5-1 程序結(jié)構(gòu)圖4.2 各模塊程序設(shè)計(jì)與實(shí)現(xiàn)在上面的整體說明之后,我們會對這三塊進(jìn)行詳細(xì)的介紹。4.2.1 硬件資源配置配置

19、硬件資源實(shí)質(zhì)意義上來講,便是為配置單片機(jī)定時(shí)器各個(gè)寄存器的參數(shù)。對于STC89C52RC型單片機(jī),我們大家都知道它是由有有兩種十六位位定時(shí)器/計(jì)數(shù)器,也就是T0和T1,兩個(gè)都是能夠當(dāng)成是定時(shí)器或計(jì)數(shù)器來運(yùn)用的。關(guān)于我們的定時(shí)器工作方式寄存器TMOD,它作用便是選擇定時(shí)器的工作方式,高4位用來控制我們的T1,同樣低4位用來控制我們的T0。下面具體為我們TMOD各位的定義:門控到位,專門對于這個(gè)定時(shí)器的啟動進(jìn)行控制,是不是會被外部中斷所影響到,當(dāng)GATE時(shí)等于零的時(shí)候,這個(gè)和外部中斷是沒有任何的關(guān)聯(lián)的,因?yàn)門CON寄存器中的TRx位對于啟動進(jìn)行控制,當(dāng)GATE時(shí)等于一的時(shí)候,控制位TRx以及腳一起

20、來對于啟動進(jìn)行控制,所以僅僅只有在外部中斷請求信號的狀況下,確切的來說就是外部中斷引腳等于一的時(shí)候,才能夠開啟了這個(gè)定時(shí)器。TMOD寄存器(復(fù)位清零) TCON(定時(shí)器控制寄存器)TCON各個(gè)位的如下面所定義:在此:TF0/TF1:這便是我們所說的T0/T1定時(shí)器溢出中斷標(biāo)志位。在一種情況下,也就是T0/T1計(jì)數(shù)溢出時(shí),讓我們的硬件置位,而且在同意中斷的條件下,此時(shí)發(fā)出中斷請求信號。在另一種情況下,也就是CPU響應(yīng)中斷轉(zhuǎn)向中斷服務(wù)程序時(shí),讓我們的硬件自動將該位清零。TR0/TR1:為T0/T1運(yùn)行控制位。當(dāng)TR0/TR1=1時(shí)啟動T0/T1;TR0/TR1=0時(shí)關(guān)閉T0/T1。這個(gè)位是被我們的

21、軟件所設(shè)定的。正如我們所知TCON的低4位跟外部中斷息息相關(guān),TCON寄存器會清零。,在我們將它復(fù)位的時(shí)候在上文中講過STC89C51RC單片機(jī),關(guān)于它的的定時(shí)器/計(jì)數(shù)器,我們知道是可編程的,啟用之前進(jìn)行初始化的設(shè)置。當(dāng)我們開始在編寫的時(shí)候:一方面要求我們能正確寫入控制字;在另一方面要求我們能進(jìn)行計(jì)數(shù)初值的計(jì)算。具體而言,分為以下順序渠道:把我們的工作方式定下來,這便是對開始賦值于我們的TMOD寄存器。在我們計(jì)算計(jì)數(shù)初值之后,我們需要做到同時(shí)寫入寄存器,也就是我們所說的TH0、TL0或TH1、TL1中。這時(shí)候通過對我們ETx置位進(jìn)而允許T/C中斷(必要條件下)。接下來通過對我們EA的置位進(jìn)而讓

22、我們的CPU開中斷(必要條件下)。最后通過對我們TRx置位進(jìn)而啟動計(jì)數(shù)器?,F(xiàn)在講關(guān)于計(jì)算方式(計(jì)數(shù)初值):定時(shí)器/計(jì)數(shù)器是以通過加1的方法來進(jìn)行計(jì)數(shù),代表與減1計(jì)數(shù)器我們之前用過的這種有異。當(dāng)我們處于定時(shí)方式的時(shí)候:當(dāng)認(rèn)定時(shí)間常數(shù)為T(這里不做說明),然后同樣認(rèn)為定時(shí)時(shí)間T,這時(shí)候T= TT,于是我們可以知道也就是時(shí)間常數(shù)是 : T= (5-1)(在這里說明)T為機(jī)器周期(12/晶振頻率)。應(yīng)裝入定時(shí)器/計(jì)數(shù)器的開始值為:X=2- T (n為計(jì)數(shù)器的位數(shù))(5-2)在計(jì)數(shù)方式下:假設(shè)計(jì)數(shù)值為N,則應(yīng)裝入的計(jì)數(shù)開始值為: X=2-N(n為計(jì)數(shù)器的位數(shù))(5-3)T0初始化程序 :/初始化函數(shù)/v

23、oid init()TMOD=0 x01;/定時(shí)器0工作在方式1EA=1;/開總中斷ETA=1;/ 代表了我們的開定時(shí)器0狀態(tài)是中斷fmq=1;/關(guān)音箱 可以看出沒有把定時(shí)器T0也設(shè)成最開始的數(shù)值,也為于設(shè)計(jì)處于初始化的時(shí)候,定時(shí)器就能過運(yùn)行,之所以這樣,是確保定時(shí)器T0才得以運(yùn)行,是在我們需要的條件下,此外還需要做到定時(shí)器T0在運(yùn)用查表的情況下,對于不同的狀況,可以設(shè)定不同的初始值。4.2.2 端口信號檢測當(dāng)我們的8個(gè)特定值都被定下來的條件下,如果單片機(jī)這個(gè)時(shí)候P2端口,它的值是特定值的話,便告訴我們它的某一位電平是低電平,剩余的便是高電平。同時(shí)意味著端口信號檢測程序的確切為發(fā)現(xiàn)某一時(shí)刻P2

24、端口中單獨(dú)哪一位是低電平。所謂的端口信號檢測,目的是確定8位P2并行輸入/輸出I / O端口的端口值。 在主函數(shù)中,我們可以借助if 語句,從而知道事先設(shè)定的值是否與p2端口一致,最終對變量music_note實(shí)現(xiàn)賦值。我們建立8個(gè)具體的價(jià)值。 當(dāng)微控制器P2的端口值為特定值時(shí),表示單片機(jī)P2的微計(jì)算機(jī)端口的一位為低電平,剩下的是高電平。42.3 數(shù)據(jù)處理在端口信號的檢測完成之后,我們需要完成數(shù)據(jù)的處理,也就是根據(jù)執(zhí)行數(shù)據(jù)處理操作后,我們所的得到的檢測結(jié)果,關(guān)于處理后內(nèi)容絕大一部分是基于檢測端口信號的結(jié)果,并且它被計(jì)算并加載到微控制器的定時(shí)器,也就是我們所說的T0的初始值。 下面為詳細(xì)說明:t

25、emp_THO=music_tabmusic_note/256; /為T0為高八位預(yù)裝入初始值temp_TLO=music_tabmusic_note/256; /為T0為低八位預(yù)裝入初始值當(dāng)我們得到初始值后,不會把它裝入定時(shí)器,而是暫時(shí)放到一個(gè)地方,這個(gè)地方指的是1個(gè)臨時(shí)變量,也就是temp_TH0以及temp_TL0,取決于整體程序設(shè)計(jì)。借助查表這樣一個(gè)步驟,經(jīng)由我們的變量music_note,利用她它的的值來幫助我們找到數(shù)組music_tab的對應(yīng)元素 與此同時(shí)讓它分離后各自進(jìn)入臨時(shí)變量temp_TH0以及temp_TL0,這樣做的意義是為了供定時(shí)器T0做初始值使用。4.2.4音符輸出用

26、位定義,定義一個(gè)io口,來作為音符頻率信號輸出sbit fmq=P00; /蜂鳴器用定時(shí)器來控制fmq產(chǎn)生不同周期的方波通過IO口輸出到蜂鳴器或音箱彈奏不同激光,給定時(shí)器放入不同的音符頻率周期。DSQ_T1=(65536*12*1000000/JINGZHEN-1000000/pl/2);4.2.5 LED音符與音區(qū)指示彈奏某一個(gè)音符時(shí),相對應(yīng)的LED就會亮起。在激光檢測程序中,加入LED亮燈的程序,當(dāng)某音符被彈奏,運(yùn)行產(chǎn)生音符頻率的程序的同時(shí)運(yùn)行LED亮燈程序。用整個(gè)P1口驅(qū)動LED。音區(qū)切換的三個(gè)LED用了三個(gè)io口P01、P02、P03來驅(qū)動。用if判斷語句來檢測音區(qū)切換信號。音區(qū)在高、

27、中、低順序切換。如當(dāng)前在中音區(qū),當(dāng)檢測到一次信號后,音區(qū)變?yōu)榈停瑢?yīng)LED也變?yōu)榈鸵舻闹甘緹?。if(pSZ*2=0 x416)P1=keymode0;else if(pSZ*2=0 x496)P1=keymode1;else if(pSZ*2=0 x526)P1=keymode2;else if(pSZ*2=0 x574)P1=keymode3;else if(pSZ*2=0 x61f)P1=keymode4;else if(pSZ*2=0 x6e0)P1=keymode5;else if(pSZ*2=0 x7b7)P1=keymode6;/*中*/ else if(pSZ*2=0 x20b)

28、P1=keymode0;else if(pSZ*2=0 x24b)P1=keymode1;else if(pSZ*2=0 x293)P1=keymode2;else if(pSZ*2=0 x2ba)P1=keymode3;else if(pSZ*2=0 x310)P1=keymode4;else if(pSZ*2=0 x370)P1=keymode5;else if(pSZ*2=0 x3db)P1=keymode6;/*低*/else if(pSZ*2=0 x106)P1=keymode0;else if(pSZ*2=0 x11e)P1=keymode1;else if(pSZ*2=0 x13

29、7)P1=keymode2;else if(pSZ*2=0 x15d)P1=keymode3;else if(pSZ*2=0 x188)P1=keymode4;else if(pSZ*2=0 x1b8)P1=keymode5;else if(pSZ*2=0 x1ee)P1=keymode6;4.2.6 播放音樂部分下圖為程序中樂曲各音符所對應(yīng)的定時(shí)器值與音符播放的時(shí)間具體組成如下:4.2.7模式切換整個(gè)程序由彈奏與播放音樂兩大部分,由此加入了一個(gè)按鍵來切換模式。 if(k0=0)/【彈奏/播放】切換delay1ms(15);if(k0=0) zd=!zd;SZ=0;P1=0 x00;while

30、(k0=0);P1=0 xff;當(dāng)zd等于0時(shí),為彈奏模式,當(dāng)zd等于1時(shí),為音樂播放模式,首次上電時(shí)為彈奏模式。if(zd=0)anjian();if(zd=1)yinyue();4.3 軟件開發(fā)工具介紹利用的是Keil Software公司研發(fā)的uVision3,它的結(jié)構(gòu)組成如圖5-4所示。圖5-4 結(jié)構(gòu)組成(uVision)測試與分析在完成硬件系統(tǒng)設(shè)計(jì)和軟件系統(tǒng)設(shè)計(jì)后,需要在具體實(shí)現(xiàn)之前進(jìn)行相關(guān)測試,以檢驗(yàn)硬件系統(tǒng)和軟件系統(tǒng)的相關(guān)設(shè)計(jì)是否合理可行。確保最小風(fēng)險(xiǎn)能達(dá)到正常穩(wěn)定運(yùn)行的目標(biāo)。程序部分硬件部分實(shí)物圖總結(jié)與展望在系統(tǒng)調(diào)試的過程中,我們總結(jié)出影響系統(tǒng)正常穩(wěn)定工作的兩大因素是半導(dǎo)體激光

31、發(fā)射器相互間的干擾和系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的穩(wěn)定性。我們在如何增強(qiáng)系統(tǒng)抗干擾能力的問題上,指出傳統(tǒng)設(shè)計(jì)采用模擬型器件光敏電阻作為激光光束接收單元傳感器極易受到外部環(huán)境光線強(qiáng)度變化的影響而引發(fā)較大干擾的缺陷。由此展開探討,決定使用受外部環(huán)境光線強(qiáng)度變化影響極小的數(shù)字型激光接收管替代光敏電阻,并采用半導(dǎo)體激光發(fā)射器與激光接收管點(diǎn)對點(diǎn)式發(fā)射與接收。以上所做設(shè)計(jì)及改進(jìn)極大程度地增強(qiáng)了系統(tǒng)的抗干擾能力,確保了系統(tǒng)能夠在任何光線強(qiáng)度的環(huán)境下正常穩(wěn)定工作。這也是我們該設(shè)計(jì)的最大優(yōu)點(diǎn)之處。此外,我們在發(fā)聲部分也一改傳統(tǒng)設(shè)計(jì),用成品音響取代傳統(tǒng)設(shè)計(jì)上的揚(yáng)聲器,使得系統(tǒng)可以獲得極佳的、可調(diào)音量的音質(zhì)。這也是我們該設(shè)計(jì)的又一

32、具有創(chuàng)新性的亮點(diǎn)之處。反觀我們整個(gè)設(shè)計(jì),鑒于它設(shè)計(jì)原理的通用性、生產(chǎn)成本的逐步降低和產(chǎn)品穩(wěn)定性的日益增強(qiáng),相信它將會在新形電子樂器設(shè)計(jì)中得到進(jìn)一步完善和發(fā)展。附錄附錄A 主程序#include/STC89c52單片機(jī)頭文件#define JINGZHEN 12000000 /宏定義晶振的頻率為12M#define uchar unsigned char#define uint unsigned int sbit k0=P32; /【手彈/播放】模式切換按鍵sbit k1=P20;/ 【 】 下一首的按鍵為P2.1,檢測io口1為有效sbit k4=P33;/定義低/中/高音切換按鍵sbit f

33、mq=P00; /蜂鳴器sbit LEDa=P10;/ 【 】 下一首 按鍵指示燈uchar i=0;uchar q=1;uchar XY=0,YINFU,YINCHANG,SZ,XQ=0;uint DSQ_T1;uint pl; /音符頻率,延時(shí)計(jì)數(shù)變量/*/*音符*/uint code tone0=0 x106,0 x11e,0 x137,0 x15d,0 x188,0 x1b8,0 x1ee, /低音 0 x20b,0 x24b,0 x293,0 x2ba,0 x310,0 x370,0 x3db, /中音 0 x416,0 x496,0 x526,0 x574,0 x61f,0 x6e

34、0,0 x7b7;/高音/*鍵值*/uchar code keymode=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;/按鍵值,對應(yīng)io:0,1,2,3,4,5,6,7uchar YANSHI=0,1,2,4,8,12,16;/*延時(shí)1ms函數(shù)*/void delay1ms(uchar a)/延時(shí)1msuchar x;while(a-) for(x=0;x=1)/【】下一首TR1=0;delay1ms(10);if(k3=1)SZ=0;XQ+;P1=0 xff;/清除其它顯示的燈LEDc=0;/按鍵指示燈while(k3=1);LEDc=1;

35、/*/if(kaishi=0) if(XY=0)XY=1;YINFU=YANSHIpSZ*2+1/16; YINCHANG=YANSHIpSZ*2+1%16;DSQ_T1=(65536*12*1000000/JINGZHEN-1000000/pSZ*2/2);/把頻率裝到定時(shí)器T1 /*LED燈*if(d=7) d=0;P1=keymoded;d+;/LED */*高*/if(pSZ*2=0 x416)P1=keymode0;else if(pSZ*2=0 x496)P1=keymode1;else if(pSZ*2=0 x526)P1=keymode2;else if(pSZ*2=0 x57

36、4)P1=keymode3;else if(pSZ*2=0 x61f)P1=keymode4;else if(pSZ*2=0 x6e0)P1=keymode5;else if(pSZ*2=0 x7b7)P1=keymode6;/*中*/ else if(pSZ*2=0 x20b)P1=keymode0;else if(pSZ*2=0 x24b)P1=keymode1;else if(pSZ*2=0 x293)P1=keymode2;else if(pSZ*2=0 x2ba)P1=keymode3;else if(pSZ*2=0 x310)P1=keymode4;else if(pSZ*2=0

37、x370)P1=keymode5;else if(pSZ*2=0 x3db)P1=keymode6;/*低*/else if(pSZ*2=0 x106)P1=keymode0;else if(pSZ*2=0 x11e)P1=keymode1;else if(pSZ*2=0 x137)P1=keymode2;else if(pSZ*2=0 x15d)P1=keymode3;else if(pSZ*2=0 x188)P1=keymode4;else if(pSZ*2=0 x1b8)P1=keymode5;else if(pSZ*2=0 x1ee)P1=keymode6;/ if(YINFU!=0)

38、 /音符響的時(shí)間 TR1=1;/開啟蜂鳴器定時(shí)器T1 if(i=130) i=0;YINFU-; / if(YINFU=0) /停頓的時(shí)間 TR1=0;/關(guān)閉蜂鳴器定時(shí)器T1 if(YINCHANG!=0) if(i=130) i=0;YINCHANG-; / else if(YINCHANG=0) if(pSZ*2=0) SZ=0;XQ+;/音樂曲目選擇標(biāo)志 else SZ+; XY=0; / /*/*定時(shí)器初始化*/void Timer0Init(void)/10毫秒12.000MHzEA=1;/開啟總中斷/EX0=1;/允許使用外中斷/IT0=1;/負(fù)跳變觸發(fā)外中斷ET0=1;/定時(shí)器T

39、0中斷允許TMOD|=0 x01;/使用定時(shí)器T0模式1TL0 = 0 xF0;/設(shè)置定時(shí)初值TH0 = 0 xD8;/設(shè)置定時(shí)初值TR0=1;/啟動定時(shí)器T0TF0=0;/溢出標(biāo)志位,清零/*T1設(shè)置*/PT1=1; /*定時(shí)器T1高優(yōu)先級(把T1設(shè)為最優(yōu)先級后雜音消失)TMOD|=0 x10; /使用定時(shí)器T1的模式1ET1=1;/定時(shí)器T1中斷允許TR1=0;/不啟動定時(shí)器T1TF1=0;/溢出標(biāo)志位清零 /*/*定時(shí)器T0的中斷服務(wù)程序*/void Time0() interrupt 1 TR0=0;i+;/音樂延時(shí)變量TL0 = 0 x18;/設(shè)置定時(shí)初值1msTH0 = 0 xFC;/設(shè)置定時(shí)初值1msTR0=1;/*/*定時(shí)器T1的中斷服務(wù)程序*/void Time1(void) interrupt 3 fmq=fmq; /每進(jìn)入一次中斷就取反一次TH1=DSQ_T1/256;/定時(shí)器T1的高8位重新賦初值TL1=DSQ_T1%256;/定時(shí)器T1的低8位重新賦初值附錄B 整體電路圖基于51單片機(jī)的激光豎琴設(shè)計(jì)2

展開閱讀全文
溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!