基于51單片機(jī)的激光豎琴設(shè)計(jì)
《基于51單片機(jī)的激光豎琴設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于51單片機(jī)的激光豎琴設(shè)計(jì)(39頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、基于51單片機(jī)的激光豎琴設(shè)計(jì)組長(zhǎng):趙唐橙組員:杜晨 楊霄 周凱龍2018年 07月 05 日目錄基于51單片機(jī)的激光豎琴設(shè)計(jì)1背景與意義2設(shè)計(jì)要求3硬件電路設(shè)計(jì)與實(shí)現(xiàn)43.1 硬件設(shè)計(jì)方案43.2 相對(duì)應(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 端口信號(hào)檢測(cè)2042.3 數(shù)據(jù)處理204.2.4音符輸出214.2.
2、5 LED音符與音區(qū)指示214.2.6 播放音樂(lè)部分224.2.7模式切換234.3 軟件開(kāi)發(fā)工具介紹24測(cè)試與分析25程序部分25硬件部分26實(shí)物圖27總結(jié)與展望29附錄29附錄A 主程序29附錄B 整體電路圖38背景與意義在這個(gè)時(shí)代,科學(xué)技術(shù)的飛速前進(jìn)帶動(dòng)了人們的生活水平的提升,使人類生活更加精彩。電子琴可以稱得上是這兩者融合的體現(xiàn)。MCU(Micro Unit Unit),我們用漢語(yǔ)來(lái)說(shuō),可以稱之為微控制單元,亦叫做單片機(jī)(單片微型計(jì)算機(jī))或單片機(jī)。它運(yùn)用的時(shí)期并不長(zhǎng),但發(fā)展的速度確是非常的快。 在1971年這個(gè)時(shí)間點(diǎn),美國(guó)英特爾公司有史以來(lái)第一個(gè)推出了4位微處理器,在接下來(lái)的過(guò)程中,演
3、變通過(guò)了了以下五個(gè)進(jìn)程:?jiǎn)纹瑱C(jī)開(kāi)發(fā)的開(kāi)端、低性能的單片機(jī) 、高性能的單片機(jī),然后16位的面世。進(jìn)而就是正在向更高的層次發(fā)展。單片機(jī)可構(gòu)成單應(yīng)用系統(tǒng)和多機(jī)應(yīng)用系統(tǒng)。在現(xiàn)在的這個(gè)時(shí)期,它已廣泛應(yīng)用于測(cè)控系統(tǒng)、智能儀表、機(jī)電一體化產(chǎn)品、智能接口、智能化民用產(chǎn)品、功能分布式系統(tǒng)、并行多機(jī)控制系統(tǒng)、局域網(wǎng)絡(luò)系統(tǒng)等方方面面。對(duì)于未來(lái),我們始終相信隨著MCU性能的不斷提高,其應(yīng)用將超出我們的想象?;趩纹瑱C(jī)的簡(jiǎn)易激光琴的設(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ì)原理簡(jiǎn)明,但樣式多彩。通過(guò)這樣一個(gè)流程,可以幫助我們把理論與實(shí)際相結(jié)合,除了我們上面所說(shuō)的,也能提高我們的動(dòng)手能力,使我們勇于創(chuàng)新,知識(shí)面也得到了大幅提升, 第一步我們可以在過(guò)程中找到問(wèn)題所在、第二步對(duì)這個(gè)問(wèn)題進(jìn)行思考,這樣使我們?cè)谝院蟮膶W(xué)習(xí)過(guò)程中碰到問(wèn)題能更得心應(yīng)手的應(yīng)對(duì)。該系統(tǒng)可以對(duì)于MCU的相關(guān)功能進(jìn)行進(jìn)一步的擴(kuò)大,在我們現(xiàn)在所了解的情況基下,可以具體的地讀出中間和八個(gè)音符??梢灾鸩綄⑵湓O(shè)計(jì)為電子琴,兒童玩具,并慢慢滲透進(jìn)我們的生活。設(shè)計(jì)要求虛擬琴弦選擇激光來(lái)完成,當(dāng)手觸碰到琴弦的時(shí)候,這個(gè)音節(jié)就會(huì)出現(xiàn),這樣就能夠完成對(duì)于豎琴演奏簡(jiǎn)易的曲子的模仿在硬件電路上要各個(gè)模塊清晰
5、明確,對(duì)各模塊進(jìn)行具體分析,以及功能的說(shuō)明。如激光發(fā)射以及接收,最小系統(tǒng),還有發(fā)聲模塊,從而設(shè)計(jì)出整體的電路布局。在軟件設(shè)計(jì)過(guò)程,要結(jié)合硬件電路具體分析,實(shí)現(xiàn)硬件資源的合理配置,端口信號(hào)的檢測(cè)和數(shù)據(jù)的處理。實(shí)現(xiàn)手指撥動(dòng)光束,就會(huì)發(fā)出對(duì)應(yīng)音符,需要做到得心應(yīng)手。這個(gè)過(guò)程要確保無(wú)誤,有錯(cuò)誤要及時(shí)發(fā)現(xiàn)改正,保證系統(tǒng)能夠穩(wěn)定地運(yùn)行。程序的編寫過(guò)程要注意細(xì)節(jié),防止出現(xiàn)錯(cuò)誤,影響系統(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)融合來(lái)完成設(shè)計(jì)硬件電路,我們?cè)O(shè)計(jì)硬件系統(tǒng)的規(guī)劃就是需要真實(shí),有效、簡(jiǎn)易。對(duì)于運(yùn)行整個(gè)系統(tǒng)的通過(guò)的關(guān)鍵一點(diǎn)就是可靠性,因此,在電路硬
6、件方面的設(shè)計(jì)的時(shí)候的各個(gè)環(huán)節(jié)都對(duì)于系統(tǒng)的平穩(wěn)以及抗干擾性深入的考慮,系統(tǒng)的簡(jiǎn)易以及有效其實(shí)說(shuō)的就是硬件系統(tǒng)于很大可靠性的前提下,對(duì)于這個(gè)硬件的電路進(jìn)行簡(jiǎn)易,將這個(gè)硬件的性能給提升起來(lái),這樣可以完成簡(jiǎn)易有效的規(guī)劃。在真實(shí),簡(jiǎn)易以及有效的原則條件下,不但在選擇元器件是便利的,對(duì)設(shè)計(jì)硬件電路也是有益的,還能夠降低有些不需要的電路,確保系統(tǒng)穩(wěn)定。由五個(gè)部分所組成的電路的硬件系統(tǒng),詳細(xì)查看圖3.1.單片機(jī)最小系統(tǒng)激光發(fā)射部分激光接收部分音頻驅(qū)動(dòng)部分電源部分圖3-1 結(jié)構(gòu)圖(關(guān)于這個(gè)硬件系統(tǒng)的組成)3.2 相對(duì)應(yīng)得模塊電路的規(guī)劃思路與實(shí)現(xiàn)方法對(duì)于上一部份全部硬件電路系統(tǒng)的構(gòu)架已經(jīng)初步的進(jìn)行概述,在這個(gè)章節(jié)
7、之中我們主要是對(duì)于構(gòu)成硬件電路的各個(gè)子模塊還有其性能以及PCB電路板設(shè)計(jì)進(jìn)行詳細(xì)的概述。接下來(lái)是對(duì)于整個(gè)系統(tǒng)的4部分來(lái)進(jìn)行具體概述。3.2.1 單片機(jī)最小系統(tǒng)單片微型計(jì)算機(jī)其實(shí)又可以被簡(jiǎn)單的叫做單片機(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ù)位在這里說(shuō)明,通俗來(lái)講便是由外部手動(dòng)來(lái)達(dá)成復(fù)位
8、的功能??偟膩?lái)說(shuō)此電路其實(shí)就是能夠自身上電復(fù)位(在這地位時(shí)),還能夠選擇運(yùn)用外部手動(dòng)的方式來(lái)達(dá)到復(fù)位的目的。實(shí)際手動(dòng)復(fù)位很少用到,所以我們把手動(dòng)復(fù)位按鍵去掉,讓電路更簡(jiǎn)潔。圖3-2 復(fù)位電路振蕩電路眾所周知片內(nèi)的時(shí)鐘電路還有定時(shí)電路可以幫助我們實(shí)現(xiàn)所要的定時(shí)控制作用,在片內(nèi),我們有兩種渠道可以達(dá)到時(shí)鐘產(chǎn)生,便是我們大家所說(shuō)的內(nèi)部時(shí)鐘方法以及外部時(shí)鐘方法這兩種,當(dāng)然我們也可以稱為內(nèi)部振蕩器以及外部振蕩器這兩種。在我們需要選擇內(nèi)部時(shí)鐘方法的時(shí)候,反饋元件的片外晶體振蕩器其實(shí)是片內(nèi)的高增益反相放大器經(jīng)過(guò)XTAL1、XTAL2外接來(lái)完成的,具體是配合并聯(lián)諧振回路(這里指過(guò)我們的電容所構(gòu)成的回路)由此來(lái)
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)過(guò)XTAL2來(lái)完成外部振蕩信號(hào),這個(gè)時(shí)候關(guān)于我們的內(nèi)部反相放大器中它的輸入端,也就是所說(shuō)的XTAL1端,它此刻的狀態(tài)為接地。一般情況下外接振蕩信號(hào)它的大小,也就是小于十二赫茲,而且信號(hào)是方波信號(hào)。此時(shí),關(guān)于如何制定這個(gè)振蕩電路,我
10、們應(yīng)該通過(guò)內(nèi)部時(shí)鐘,此外對(duì)于外部晶體振蕩器選擇使用十二赫茲,電泳選擇的是三十pF。圖3-3 振蕩電路單片機(jī)和I/O接口我們運(yùn)用的單片機(jī)型號(hào)是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)用對(duì)數(shù)據(jù)進(jìn)行輸入以及輸出,另外,它的串行I/O接口數(shù)量是一個(gè),這個(gè)定時(shí)器/計(jì)數(shù)器是兩個(gè)十六位,中斷系統(tǒng)是五級(jí)等。對(duì)此,我們需要的片機(jī)條件是:首先它得帶有一個(gè)定時(shí)器/計(jì)數(shù)器,位數(shù)為十六。其次便是一個(gè)輸入輸出I/O口
11、,位數(shù)為八。在談到定時(shí)器/計(jì)數(shù)器的時(shí)候,無(wú)論它是我們單個(gè)存在的定時(shí)器芯片,亦或是包括在單片機(jī)內(nèi)部的那個(gè)所謂的定時(shí)器,一般都是存在這些突出點(diǎn):關(guān)于我們的定時(shí)器/計(jì)數(shù)器,如果想要它的運(yùn)行起來(lái),是可以有多種渠道的,一方面可以是定時(shí)方法,另一方面可以是計(jì)數(shù)的方法。再者就是定時(shí)器/計(jì)數(shù)器的計(jì)算數(shù)值,毫無(wú)疑問(wèn)它并不是死板的而是可變通,此外關(guān)于技術(shù)它的max值,自然而然是有限制的,這很大程度上是依靠級(jí)數(shù)器它的尾數(shù)的前提下明確的,計(jì)數(shù)的最高值將定時(shí)的最大值給限定了。能夠根據(jù)要求的定時(shí)以及要求的計(jì)數(shù)值,在兩種情況下,一是定時(shí)時(shí)間到,再者就是終止計(jì)數(shù)的這樣一個(gè)時(shí)刻,給予中斷這樣一個(gè)申請(qǐng)指令,來(lái)達(dá)成我們的主要目的,
12、也就是定時(shí)控制。在我們利用到的STC89C51RC單片機(jī)中,大家都知道它的定時(shí)器是能夠編程的,即運(yùn)作渠道亦或是開(kāi)啟以及終止等等都是能夠用于編程來(lái)進(jìn)行控制的,需要經(jīng)過(guò)對(duì)于寄存器TMOD、TCON、TH0、TL0、TH1進(jìn)行設(shè)立,并且設(shè)立TL1就能過(guò)實(shí)現(xiàn)的,在對(duì)于定時(shí)器的工作方法進(jìn)行設(shè)立之后,并且將這個(gè)定時(shí)器工作開(kāi)啟直呼,定時(shí)器是能夠?qū)τ谶@個(gè)工作方式的獨(dú)立進(jìn)行設(shè)置的,不會(huì)對(duì)于CPU進(jìn)行占用,若是計(jì)數(shù)器記載滿之后,就能過(guò)主動(dòng)的朝著CPU中斷系統(tǒng)進(jìn)行一個(gè)操作,也就是請(qǐng)求終止,中斷這樣一個(gè)指令一旦傳達(dá)下去毫無(wú)疑問(wèn)會(huì)那把我們的CPU資源給占用了。圖3-4 定時(shí)器/計(jì)數(shù)器結(jié)構(gòu)圖3.2.2 激光發(fā)射模塊關(guān)于光
13、敏電阻電路部分,當(dāng)光線照到光敏電阻的光越強(qiáng),電阻值就越小。通過(guò)給光敏電阻接一個(gè)10k的上拉電阻,兩個(gè)引腳分別接到單片機(jī)io口與地。由于激光光束集中,激光照到光敏時(shí),電阻值變小,流過(guò)的電流變大,超過(guò)上拉電阻,此時(shí)io口被拉低。信號(hào)為低電平0。圖3-5圖3-5 激光發(fā)射管 圖3-6 激光發(fā)射電路電路原理圖3.2.3 激光接收模塊激光接收電路的效果是對(duì)我們的激光接收管來(lái)進(jìn)行一個(gè)檢查,看它是不是能夠?qū)τ谙鄳?yīng)的激光束完成我們的接收這樣一個(gè)操作,實(shí)質(zhì)是經(jīng)由這樣的一個(gè)電路把高、低電平信號(hào)給我們的單片機(jī)P2口運(yùn)送,這樣就可以更好的對(duì)于這個(gè)蜂鳴器或小型的音響進(jìn)行控制,完成對(duì)于相應(yīng)頻率音頻信號(hào)這樣的一個(gè)要求。因?yàn)?/p>
14、在運(yùn)用點(diǎn)對(duì)點(diǎn)的方法的時(shí)候,確切的來(lái)說(shuō)就是一個(gè)激光接收管僅僅只可以對(duì)于一個(gè)激光發(fā)射器射出的激光束進(jìn)行接收,所以若是人體對(duì)于一個(gè)激光發(fā)射器射出的激光束進(jìn)行阻斷的時(shí)候,和其對(duì)應(yīng)的極光由于無(wú)法接收這個(gè)激光束而讓電平處于很低的狀態(tài),排除這樣的狀況一般都是屬于高電平,這樣就形成所要的控制信號(hào),同叫低電平信號(hào)。圖3-7為激光接收電路原理圖,效果其實(shí)就是表示這個(gè)激光接收電路是不是對(duì)于這個(gè)激光束可以接收,若是能夠接收,那么對(duì)應(yīng)這個(gè)發(fā)光二極管就不會(huì)亮,反之就會(huì)發(fā)亮。簡(jiǎn)單說(shuō),就是手指遮擋某一個(gè)激光束,那個(gè)相應(yīng)的LED就會(huì)亮起同時(shí)發(fā)出相應(yīng)的音符。圖3-7激光接收電路原理圖3.2.4 發(fā)聲模塊我們選擇了16無(wú)源蜂鳴器,
15、音頻信號(hào)通過(guò)IO,經(jīng)三極管放大后傳到蜂鳴器,使蜂鳴器發(fā)出相對(duì)應(yīng)的音符。同時(shí)在信號(hào)輸出io口并接了一個(gè)3.5MM的音頻座,可以由此連接到音箱,效果更佳。無(wú)源蜂鳴器圖3-8 音頻驅(qū)動(dòng)及接口電路原理圖如圖3-8,J1代表3.5毫米音頻接口。單片機(jī)P00按程序指令發(fā)出特定頻率的方波信號(hào),Q1三極管會(huì)按此頻率導(dǎo)通或截止,將該方波信號(hào)傳遞到蜂鳴器或外接小型音箱帶動(dòng)小的音箱奏出音樂(lè)。 關(guān)于音區(qū)的切換,切換按鍵由輕觸按鍵與上拉電阻組成。在沒(méi)按下按鍵時(shí)由上拉電阻輸入高電平信號(hào),當(dāng)按下按鍵時(shí),電平信號(hào)被拉低,變?yōu)檩斎氲碗娖叫盘?hào)。如圖3-11所示:圖3-113.2.5 LED指示燈 LED音符指示燈,我們?cè)谟糜趶椬?/p>
16、音符的7個(gè)激光的對(duì)應(yīng)位置加入了LED作提示燈,當(dāng)某一個(gè)“琴弦”被彈奏時(shí),與之相對(duì)應(yīng)的LED就會(huì)亮起。第8個(gè)激光作為音區(qū)切換功能,可以切換高、中、低三個(gè)音區(qū),所以用三個(gè)LED分別顯示當(dāng)前處于的音區(qū)?!睆棥耙幌戮颓袚Q一個(gè)音區(qū),哪一個(gè)LED亮起就說(shuō)明當(dāng)前處于哪一個(gè)音區(qū)。3.2.6 電源供電單片機(jī)電壓為5V,激光也為5V,為方便供電,我們選擇最常用的5V USB供電,使得整體電路更為簡(jiǎn)明。一個(gè)LED作為電源工作指示燈,為保護(hù)LED,需要給LED串連一個(gè)限流電阻。作為提示用,不用太大亮度,一般選用1K電阻。3.2.7 模式切換在通過(guò)模式切換按鍵,可以在彈奏模式、音樂(lè)播放模式自由切換,上電默認(rèn)為彈奏模式,
17、按動(dòng)按鍵切換到音樂(lè)播放模式,可以播放內(nèi)置的音樂(lè)。再按一次回到彈奏模式軟件設(shè)計(jì)與實(shí)現(xiàn)4.1 軟件設(shè)計(jì)方案按照上面概述的系統(tǒng)硬件的概述,我們這一章節(jié)按照系統(tǒng)的軟件設(shè)計(jì)部門來(lái)進(jìn)行概述。音符是怎樣出現(xiàn)的呢?人耳朵可以聽(tīng)見(jiàn)的聲音頻率是處于二十赫茲和二十千赫茲,我們都知道51單片機(jī)本身的十六個(gè)我們所說(shuō)的定時(shí)器,所以在設(shè)計(jì)中,為了實(shí)現(xiàn)不一樣的頻率的方波信號(hào),我們運(yùn)用了定時(shí)器中斷這樣一個(gè)渠道。程序包括三部分,并且對(duì)應(yīng)相應(yīng)的功能,首先是主函數(shù),為的是檢查到p2端口值,經(jīng)由if語(yǔ)句,可以知道哪一位低電平觸發(fā),其次是初始化函數(shù),毫無(wú)疑問(wèn)是對(duì)我們的定時(shí)器進(jìn)行初始化的一個(gè)操作,再者就是開(kāi)中斷,最后是定時(shí)器中斷函數(shù),意義
18、是達(dá)到對(duì)對(duì)象的輸出,這個(gè)對(duì)象指的是我們所說(shuō)的不同頻率方波。具體看表5.1,下為音符相應(yīng)的頻率和簡(jiǎn)譜碼進(jìn)行了羅列。在圖5-1能看到,軟件的設(shè)計(jì)可以歸為3塊,首先是硬件資源配置,再一個(gè)是端口信號(hào)檢測(cè),接著是數(shù)據(jù)處理,實(shí)施環(huán)節(jié)中,最開(kāi)始為配置,對(duì)象就是我們的硬件資源,緊接著是對(duì)于它所對(duì)著的端口信號(hào)有沒(méi)有轉(zhuǎn)變進(jìn)行我們的一個(gè)操作,也就是檢測(cè),要是這個(gè)單片機(jī)端口信號(hào)出現(xiàn)改變,就能按照端口的信號(hào)表來(lái)展開(kāi)對(duì)應(yīng)的處理數(shù)據(jù),完成處理數(shù)據(jù)之后,又去到端口信號(hào)檢測(cè),最終等到端口信號(hào)出現(xiàn)轉(zhuǎn)變。圖5-1 程序結(jié)構(gòu)圖4.2 各模塊程序設(shè)計(jì)與實(shí)現(xiàn)在上面的整體說(shuō)明之后,我們會(huì)對(duì)這三塊進(jìn)行詳細(xì)的介紹。4.2.1 硬件資源配置配置
19、硬件資源實(shí)質(zhì)意義上來(lái)講,便是為配置單片機(jī)定時(shí)器各個(gè)寄存器的參數(shù)。對(duì)于STC89C52RC型單片機(jī),我們大家都知道它是由有有兩種十六位位定時(shí)器/計(jì)數(shù)器,也就是T0和T1,兩個(gè)都是能夠當(dāng)成是定時(shí)器或計(jì)數(shù)器來(lái)運(yùn)用的。關(guān)于我們的定時(shí)器工作方式寄存器TMOD,它作用便是選擇定時(shí)器的工作方式,高4位用來(lái)控制我們的T1,同樣低4位用來(lái)控制我們的T0。下面具體為我們TMOD各位的定義:門控到位,專門對(duì)于這個(gè)定時(shí)器的啟動(dòng)進(jìn)行控制,是不是會(huì)被外部中斷所影響到,當(dāng)GATE時(shí)等于零的時(shí)候,這個(gè)和外部中斷是沒(méi)有任何的關(guān)聯(lián)的,因?yàn)門CON寄存器中的TRx位對(duì)于啟動(dòng)進(jìn)行控制,當(dāng)GATE時(shí)等于一的時(shí)候,控制位TRx以及腳一起
20、來(lái)對(duì)于啟動(dòng)進(jìn)行控制,所以僅僅只有在外部中斷請(qǐng)求信號(hào)的狀況下,確切的來(lái)說(shuō)就是外部中斷引腳等于一的時(shí)候,才能夠開(kāi)啟了這個(gè)定時(shí)器。TMOD寄存器(復(fù)位清零) TCON(定時(shí)器控制寄存器)TCON各個(gè)位的如下面所定義:在此:TF0/TF1:這便是我們所說(shuō)的T0/T1定時(shí)器溢出中斷標(biāo)志位。在一種情況下,也就是T0/T1計(jì)數(shù)溢出時(shí),讓我們的硬件置位,而且在同意中斷的條件下,此時(shí)發(fā)出中斷請(qǐng)求信號(hào)。在另一種情況下,也就是CPU響應(yīng)中斷轉(zhuǎn)向中斷服務(wù)程序時(shí),讓我們的硬件自動(dòng)將該位清零。TR0/TR1:為T0/T1運(yùn)行控制位。當(dāng)TR0/TR1=1時(shí)啟動(dòng)T0/T1;TR0/TR1=0時(shí)關(guān)閉T0/T1。這個(gè)位是被我們的
21、軟件所設(shè)定的。正如我們所知TCON的低4位跟外部中斷息息相關(guān),TCON寄存器會(huì)清零。,在我們將它復(fù)位的時(shí)候在上文中講過(guò)STC89C51RC單片機(jī),關(guān)于它的的定時(shí)器/計(jì)數(shù)器,我們知道是可編程的,啟用之前進(jìn)行初始化的設(shè)置。當(dāng)我們開(kāi)始在編寫的時(shí)候:一方面要求我們能正確寫入控制字;在另一方面要求我們能進(jìn)行計(jì)數(shù)初值的計(jì)算。具體而言,分為以下順序渠道:把我們的工作方式定下來(lái),這便是對(duì)開(kāi)始賦值于我們的TMOD寄存器。在我們計(jì)算計(jì)數(shù)初值之后,我們需要做到同時(shí)寫入寄存器,也就是我們所說(shuō)的TH0、TL0或TH1、TL1中。這時(shí)候通過(guò)對(duì)我們ETx置位進(jìn)而允許T/C中斷(必要條件下)。接下來(lái)通過(guò)對(duì)我們EA的置位進(jìn)而讓
22、我們的CPU開(kāi)中斷(必要條件下)。最后通過(guò)對(duì)我們TRx置位進(jìn)而啟動(dòng)計(jì)數(shù)器。現(xiàn)在講關(guān)于計(jì)算方式(計(jì)數(shù)初值):定時(shí)器/計(jì)數(shù)器是以通過(guò)加1的方法來(lái)進(jìn)行計(jì)數(shù),代表與減1計(jì)數(shù)器我們之前用過(guò)的這種有異。當(dāng)我們處于定時(shí)方式的時(shí)候:當(dāng)認(rèn)定時(shí)間常數(shù)為T(這里不做說(shuō)明),然后同樣認(rèn)為定時(shí)時(shí)間T,這時(shí)候T= TT,于是我們可以知道也就是時(shí)間常數(shù)是 : T= (5-1)(在這里說(shuō)明)T為機(jī)器周期(12/晶振頻率)。應(yīng)裝入定時(shí)器/計(jì)數(shù)器的開(kāi)始值為:X=2- T (n為計(jì)數(shù)器的位數(shù))(5-2)在計(jì)數(shù)方式下:假設(shè)計(jì)數(shù)值為N,則應(yīng)裝入的計(jì)數(shù)開(kāi)始值為: X=2-N(n為計(jì)數(shù)器的位數(shù))(5-3)T0初始化程序 :/初始化函數(shù)/v
23、oid init()TMOD=0 x01;/定時(shí)器0工作在方式1EA=1;/開(kāi)總中斷ETA=1;/ 代表了我們的開(kāi)定時(shí)器0狀態(tài)是中斷fmq=1;/關(guān)音箱 可以看出沒(méi)有把定時(shí)器T0也設(shè)成最開(kāi)始的數(shù)值,也為于設(shè)計(jì)處于初始化的時(shí)候,定時(shí)器就能過(guò)運(yùn)行,之所以這樣,是確保定時(shí)器T0才得以運(yùn)行,是在我們需要的條件下,此外還需要做到定時(shí)器T0在運(yùn)用查表的情況下,對(duì)于不同的狀況,可以設(shè)定不同的初始值。4.2.2 端口信號(hào)檢測(cè)當(dāng)我們的8個(gè)特定值都被定下來(lái)的條件下,如果單片機(jī)這個(gè)時(shí)候P2端口,它的值是特定值的話,便告訴我們它的某一位電平是低電平,剩余的便是高電平。同時(shí)意味著端口信號(hào)檢測(cè)程序的確切為發(fā)現(xiàn)某一時(shí)刻P2
24、端口中單獨(dú)哪一位是低電平。所謂的端口信號(hào)檢測(cè),目的是確定8位P2并行輸入/輸出I / O端口的端口值。 在主函數(shù)中,我們可以借助if 語(yǔ)句,從而知道事先設(shè)定的值是否與p2端口一致,最終對(duì)變量music_note實(shí)現(xiàn)賦值。我們建立8個(gè)具體的價(jià)值。 當(dāng)微控制器P2的端口值為特定值時(shí),表示單片機(jī)P2的微計(jì)算機(jī)端口的一位為低電平,剩下的是高電平。42.3 數(shù)據(jù)處理在端口信號(hào)的檢測(cè)完成之后,我們需要完成數(shù)據(jù)的處理,也就是根據(jù)執(zhí)行數(shù)據(jù)處理操作后,我們所的得到的檢測(cè)結(jié)果,關(guān)于處理后內(nèi)容絕大一部分是基于檢測(cè)端口信號(hào)的結(jié)果,并且它被計(jì)算并加載到微控制器的定時(shí)器,也就是我們所說(shuō)的T0的初始值。 下面為詳細(xì)說(shuō)明:t
25、emp_THO=music_tabmusic_note/256; /為T0為高八位預(yù)裝入初始值temp_TLO=music_tabmusic_note/256; /為T0為低八位預(yù)裝入初始值當(dāng)我們得到初始值后,不會(huì)把它裝入定時(shí)器,而是暫時(shí)放到一個(gè)地方,這個(gè)地方指的是1個(gè)臨時(shí)變量,也就是temp_TH0以及temp_TL0,取決于整體程序設(shè)計(jì)。借助查表這樣一個(gè)步驟,經(jīng)由我們的變量music_note,利用她它的的值來(lái)幫助我們找到數(shù)組music_tab的對(duì)應(yīng)元素 與此同時(shí)讓它分離后各自進(jìn)入臨時(shí)變量temp_TH0以及temp_TL0,這樣做的意義是為了供定時(shí)器T0做初始值使用。4.2.4音符輸出用
26、位定義,定義一個(gè)io口,來(lái)作為音符頻率信號(hào)輸出sbit fmq=P00; /蜂鳴器用定時(shí)器來(lái)控制fmq產(chǎn)生不同周期的方波通過(guò)IO口輸出到蜂鳴器或音箱彈奏不同激光,給定時(shí)器放入不同的音符頻率周期。DSQ_T1=(65536*12*1000000/JINGZHEN-1000000/pl/2);4.2.5 LED音符與音區(qū)指示彈奏某一個(gè)音符時(shí),相對(duì)應(yīng)的LED就會(huì)亮起。在激光檢測(cè)程序中,加入LED亮燈的程序,當(dāng)某音符被彈奏,運(yùn)行產(chǎn)生音符頻率的程序的同時(shí)運(yùn)行LED亮燈程序。用整個(gè)P1口驅(qū)動(dòng)LED。音區(qū)切換的三個(gè)LED用了三個(gè)io口P01、P02、P03來(lái)驅(qū)動(dòng)。用if判斷語(yǔ)句來(lái)檢測(cè)音區(qū)切換信號(hào)。音區(qū)在高、
27、中、低順序切換。如當(dāng)前在中音區(qū),當(dāng)檢測(cè)到一次信號(hào)后,音區(qū)變?yōu)榈?,?duì)應(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 播放音樂(lè)部分下圖為程序中樂(lè)曲各音符所對(duì)應(yīng)的定時(shí)器值與音符播放的時(shí)間具體組成如下:4.2.7模式切換整個(gè)程序由彈奏與播放音樂(lè)兩大部分,由此加入了一個(gè)按鍵來(lái)切換模式。 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í),為音樂(lè)播放模式,首次上電時(shí)為彈奏模式。if(zd=0)anjian();if(zd=1)yinyue();4.3 軟件開(kāi)發(fā)工具介紹利用的是Keil Software公司研發(fā)的uVision3,它的結(jié)構(gòu)組成如圖5-4所示。圖5-4 結(jié)構(gòu)組成(uVision)測(cè)試與分析在完成硬件系統(tǒng)設(shè)計(jì)和軟件系統(tǒng)設(shè)計(jì)后,需要在具體實(shí)現(xiàn)之前進(jìn)行相關(guān)測(cè)試,以檢驗(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)試的過(guò)程中,我們總結(jié)出影響系統(tǒng)正常穩(wěn)定工作的兩大因素是半導(dǎo)體激光
31、發(fā)射器相互間的干擾和系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的穩(wěn)定性。我們?cè)谌绾卧鰪?qiáng)系統(tǒng)抗干擾能力的問(wèn)題上,指出傳統(tǒng)設(shè)計(jì)采用模擬型器件光敏電阻作為激光光束接收單元傳感器極易受到外部環(huán)境光線強(qiáng)度變化的影響而引發(fā)較大干擾的缺陷。由此展開(kāi)探討,決定使用受外部環(huán)境光線強(qiáng)度變化影響極小的數(shù)字型激光接收管替代光敏電阻,并采用半導(dǎo)體激光發(fā)射器與激光接收管點(diǎn)對(duì)點(diǎn)式發(fā)射與接收。以上所做設(shè)計(jì)及改進(jìn)極大程度地增強(qiáng)了系統(tǒng)的抗干擾能力,確保了系統(tǒng)能夠在任何光線強(qiáng)度的環(huán)境下正常穩(wěn)定工作。這也是我們?cè)撛O(shè)計(jì)的最大優(yōu)點(diǎn)之處。此外,我們?cè)诎l(fā)聲部分也一改傳統(tǒng)設(shè)計(jì),用成品音響取代傳統(tǒng)設(shè)計(jì)上的揚(yáng)聲器,使得系統(tǒng)可以獲得極佳的、可調(diào)音量的音質(zhì)。這也是我們?cè)撛O(shè)計(jì)的又一
32、具有創(chuàng)新性的亮點(diǎn)之處。反觀我們整個(gè)設(shè)計(jì),鑒于它設(shè)計(jì)原理的通用性、生產(chǎn)成本的逐步降低和產(chǎn)品穩(wěn)定性的日益增強(qiáng),相信它將會(huì)在新形電子樂(lè)器設(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,檢測(cè)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;/按鍵值,對(duì)應(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;/開(kāi)啟蜂鳴器定時(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+;/音樂(lè)曲目選擇標(biāo)志 else SZ+; XY=0; / /*/*定時(shí)器初始化*/void Timer0Init(void)/10毫秒12.000MHzEA=1;/開(kāi)啟總中斷/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;/啟動(dòng)定時(shí)器T0TF0=0;/溢出標(biāo)志位,清零/*T1設(shè)置*/PT1=1; /*定時(shí)器T1高優(yōu)先級(jí)(把T1設(shè)為最優(yōu)先級(jí)后雜音消失)TMOD|=0 x10; /使用定時(shí)器T1的模式1ET1=1;/定時(shí)器T1中斷允許TR1=0;/不啟動(dòng)定時(shí)器T1TF1=0;/溢出標(biāo)志位清零 /*/*定時(shí)器T0的中斷服務(wù)程序*/void Time0() interrupt 1 TR0=0;i+;/音樂(lè)延時(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: 本站所有資源如無(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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 外研版(一起)英語(yǔ)一年級(jí)上冊(cè)Module-5課件
- 外研版(一起)五上Module-10《Unit-1-You-should-tidy-your課件
- 認(rèn)識(shí)線段課件
- 患者病情評(píng)估培訓(xùn)完整
- 早產(chǎn)兒的護(hù)理教學(xué)
- 我們吃的食物安全嗎
- 鹽酸硫酸—浙教版九級(jí)科學(xué)上冊(cè)課件1
- 人工智能遺傳算法
- 硬質(zhì)景觀的細(xì)部處理龍湖
- 人教版小學(xué)二年級(jí)上冊(cè)數(shù)學(xué)8的乘法口訣
- 郵輪旅游世界郵輪產(chǎn)業(yè)經(jīng)濟(jì)的發(fā)展
- 如何繪制出高品質(zhì)的學(xué)科思維導(dǎo)圖
- 美國(guó)癲癇學(xué)會(huì)驚厥性癲癇持續(xù)狀態(tài)治療指南解讀
- 城市公共空間設(shè)計(jì)理論及方法課件
- (課件)正弦定理公開(kāi)課