加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專(zhuān)業(yè)用戶(hù)
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入

基于單片機(jī)的電子琴設(shè)計(jì)STC89C51

09/12 10:00
4298
服務(wù)支持:
技術(shù)交流群

完成交易后在“購(gòu)買(mǎi)成功”頁(yè)面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗(yàn)、收獲成長(zhǎng)和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購(gòu)買(mǎi)后不支持退換且無(wú)法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
實(shí)物圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

第一章 緒論

1.1 課題背景

單片機(jī)因其體積小,功能強(qiáng),價(jià)格低廉而得到廣泛應(yīng)用,同時(shí)隨著我國(guó)經(jīng)濟(jì)的飛速發(fā)展,單片機(jī)在越來(lái)越多的領(lǐng)域得到了廣泛的應(yīng)用,現(xiàn)在國(guó)內(nèi)的單片機(jī)多用于電話(huà),玩具和LCD等產(chǎn)品,預(yù)計(jì)在未來(lái),利用單片機(jī)發(fā)明的產(chǎn)品會(huì)越來(lái)越多,作為一名應(yīng)用電子的應(yīng)屆畢業(yè)生來(lái)說(shuō),理解和掌握單片機(jī)的工作原理和使用技巧是必備的技能,基于這種考慮,我這次畢業(yè)設(shè)計(jì)的題目為簡(jiǎn)易電子琴。

我所設(shè)計(jì)的該產(chǎn)品時(shí)根據(jù)自身的興趣和愛(ài)好所設(shè)計(jì)的,通過(guò)對(duì)傳統(tǒng)電子琴的認(rèn)識(shí)和了解,知道了傳統(tǒng)的電子琴是利用單片機(jī)的匯編語(yǔ)言的編程來(lái)實(shí)現(xiàn)的,而且功能單一,我所設(shè)計(jì)的產(chǎn)品是基于對(duì)89c51單片機(jī)的深入理解對(duì)傳統(tǒng)電子琴的小小的改革和創(chuàng)新,并且以簡(jiǎn)單的C語(yǔ)言程序替代了復(fù)雜的匯編語(yǔ)言程序,我相信在電子琴的不斷革新達(dá)到人們所需娛樂(lè)設(shè)備的標(biāo)準(zhǔn)的時(shí)候,電子琴會(huì)被投入到批量生產(chǎn)之中。單片微型計(jì)算機(jī)大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物,屬于第四代電子計(jì)算機(jī)它具有高性能、高速度、體積小、價(jià)格低廉、穩(wěn)定可靠、應(yīng)用廣泛的特點(diǎn)。他的應(yīng)用必定導(dǎo)致傳統(tǒng)的控制技術(shù)從根本上發(fā)生變革。因此,單片機(jī)的開(kāi)發(fā)應(yīng)用已成為高科技和工程領(lǐng)域的一項(xiàng)重大課題。

1.2 設(shè)計(jì)依據(jù)

電子琴是現(xiàn)代電子科技與音樂(lè)結(jié)合的產(chǎn)物,是一種新型的鍵盤(pán)樂(lè)器。它在現(xiàn)代音樂(lè)扮演重要的角色,單片機(jī)具有強(qiáng)大的控制功能和靈活的編程實(shí)現(xiàn)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代的一部分。本文的主要內(nèi)容是用STC89C51單片機(jī)為核心控制元件,設(shè)計(jì)一個(gè)電子琴。以單片機(jī)作為主控核心,與鍵盤(pán)揚(yáng)聲器等模塊組成核心主控制模塊,在主控模塊上設(shè)有8個(gè)按鍵。

主要對(duì)使用單片機(jī)設(shè)計(jì)簡(jiǎn)易電子琴進(jìn)行了分析,并介紹了基于單片機(jī)電子琴硬件的組成。利用單片機(jī)產(chǎn)生不同頻率來(lái)獲得我們要求的音階,最終可隨意彈奏要表達(dá)的音符。并且分別從原理圖,主要芯片,各模塊原理及各模塊的程序的調(diào)試來(lái)詳細(xì)闡述。

對(duì)于單片機(jī)來(lái)產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來(lái)產(chǎn)生這樣的方波頻率信號(hào),因此,就可以彈奏出不同的歌曲和音調(diào)。

第二章 系統(tǒng)方案設(shè)計(jì)及主控芯片介紹

2.1 系統(tǒng)基本設(shè)計(jì)思路

此設(shè)計(jì)是用揚(yáng)聲器播放彈奏的曲子。電路包括:鍵盤(pán)、單片機(jī)以及單片機(jī)周邊最小系統(tǒng)和晶振電路

2.1.1 各部分說(shuō)明

(1)鍵盤(pán)用于彈奏音樂(lè),八個(gè)按鍵8種音符。

(2)單片機(jī)通過(guò)輸出各種電脈沖信號(hào)驅(qū)動(dòng)控制各部分正常工作。

2.1.1統(tǒng)工作過(guò)程

單片機(jī)要產(chǎn)生音頻脈沖,主要處理過(guò)程是在CPU中完成的,CPU會(huì)隨時(shí)對(duì)音符輸入信號(hào)進(jìn)行讀取數(shù)據(jù)的操作。在讀取了相應(yīng)的寄存器的值后,CPU將讀取的值進(jìn)行處理,再通過(guò)I/O口把音樂(lè)通過(guò)揚(yáng)聲器播放出來(lái)。

2.2 單元電路方案論證

根據(jù)設(shè)計(jì)要求,本系統(tǒng)主要由控制器模塊和輸入模塊構(gòu)成。為較好的實(shí)現(xiàn)各模塊的功能,我們分別設(shè)計(jì)了以下幾種方案并分別進(jìn)行了論證。

2.2.1 控制器模塊

方案1:采用凌陽(yáng)系列單片機(jī)為系統(tǒng)的控制器

凌陽(yáng)系列單片機(jī)可以實(shí)現(xiàn)各種復(fù)雜的邏輯功能,模塊大,密度高,它將所有器件集成在一塊芯片上,減少了體積,提高了穩(wěn)定性。凌陽(yáng)系列單片機(jī)提高了系統(tǒng)的處理速度,適合作為大規(guī)模實(shí)時(shí)系統(tǒng)的控制核心。

方案2:采用51系列作為系統(tǒng)控制器

單片機(jī)算術(shù)運(yùn)算功能強(qiáng),軟件編程靈活、自由度大,可用軟件編程實(shí)現(xiàn)各種算法和邏輯控制。由于其功耗低、體積較小、技術(shù)成熟和成本低等優(yōu)點(diǎn),在各個(gè)領(lǐng)域應(yīng)用廣泛。而且抗干擾性能好。

因51單片機(jī)價(jià)格比凌陽(yáng)系列低得多,且本設(shè)計(jì)不需要很高的處理速度,從經(jīng)濟(jì)和方便使用角度考慮,本設(shè)計(jì)選擇了方案2。

2.2.2 發(fā)聲模塊

發(fā)聲模塊是本設(shè)計(jì)的最主要的部分。

基本方案:發(fā)生電路是這次設(shè)計(jì)電路中最重要的組成部分,他承載著把單片機(jī)所產(chǎn)生的聲音信號(hào)放大并輸出的重要作用,而我的設(shè)計(jì)中的發(fā)聲電路主要是由兩個(gè)S8050三極管驅(qū)動(dòng)組成。S8050三極管是一種小功率的放大管,屬于NPN型號(hào)三極管,而對(duì)三極管引腳的判斷有以下方法。

1.判斷三極管的基極。對(duì)于NPN型號(hào)的三極管,用黑表筆接某一個(gè)電極,紅表筆分別接另外兩個(gè)電極,若測(cè)量電阻值兩個(gè)都小,調(diào)換表筆后被測(cè)電阻值都較大,則可判斷第一次測(cè)量中黑表筆所接的是基極;如果測(cè)量值一大一小,相差很大,則第一次測(cè)量中黑表筆接的不是基極,應(yīng)該更換其他電極重測(cè)。

2.測(cè)量三極管發(fā)射極e和集電極c。三極管基極確定后,通過(guò)交換表筆,兩次測(cè)量e,c極間的電阻,如果兩次測(cè)量結(jié)果不相等,其中測(cè)得電阻值較小的一次為紅表筆的是e極黑表筆接的是c極。對(duì)于PNP型號(hào)的三極管,方法與NPN的相似,只是紅黑表筆的作用相反,在測(cè)量e,c極間電阻時(shí)要注意,由于三極管的V(BR)CEO很小,很容易將發(fā)射結(jié)擊穿。

當(dāng)我們?nèi)龢O管的管腳判斷結(jié)束以后,我們就可以用兩個(gè)三極管構(gòu)成一個(gè)達(dá)林頓結(jié)構(gòu)。首先當(dāng)單片機(jī)P1.0口輸出一個(gè)高電平,由兩個(gè)三極管構(gòu)成的達(dá)林頓成能導(dǎo)通,導(dǎo)通后又能對(duì)電流又一定的放大作用,這樣傳到揚(yáng)聲器時(shí)信號(hào)能讓我們聽(tīng)的更清楚。

圖2-1 聲音驅(qū)動(dòng)電路

2.2.3 編程軟件模塊

方案1:采用匯編語(yǔ)言編程

匯編語(yǔ)言指令是用一些具有相應(yīng)含義的助憶符來(lái)表達(dá)的,所以,它要比機(jī)器語(yǔ)言容易掌握和運(yùn)用,但另一方面,它要直接使用CPU的資源,相對(duì)高級(jí)程序設(shè)計(jì)語(yǔ)言來(lái)說(shuō),它又顯得難掌握。

方案2:采用C語(yǔ)言編程

C語(yǔ)言與其他高級(jí)語(yǔ)言相比,具有運(yùn)算符的豐富性、語(yǔ)法表述的靈活性、對(duì)軟硬件操作的兼容性、輸入輸出方式的新穎性等主要特征.深入分析研究這些特征,可以加深對(duì)C語(yǔ)言的認(rèn)識(shí);正確應(yīng)用這些特征,可以靈活高效地解決各種實(shí)際問(wèn)題.

因?yàn)槲以诖髮W(xué)期間對(duì)匯編語(yǔ)言沒(méi)有深入的了解,而且在編程時(shí)一直用C語(yǔ)言,所以我選擇了方案2。

2.2.4 最終方案

經(jīng)過(guò)反復(fù)論證,最終確定了如下方案:

(1)采用STC89C51單片機(jī)作為主控制器。

(2)采用達(dá)林頓效應(yīng)使音樂(lè)信號(hào)放大。

(3)采用C語(yǔ)言編程。

2.3 STC89C51單片機(jī)

STC89C51是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C51為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線(xiàn),看門(mén)狗定時(shí)器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口。另外 STC89X51 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35Mhz,6T/12T可選。

圖2-2 STC89C51單片機(jī)引腳圖

單片機(jī)是美國(guó)STC公司最新推出的一種新型51內(nèi)核的單片機(jī)。片內(nèi)含有Flash程序存儲(chǔ)器、SRAM、UARTSPI、PWM等模塊。

(一)STC89C51主要功能、性能參數(shù)如下:

(1)內(nèi)置標(biāo)準(zhǔn)51內(nèi)核,機(jī)器周期:增強(qiáng)型為6時(shí)鐘,普通型為12時(shí)鐘;

(2)工作頻率范圍:0~40MHZ,相當(dāng)于普通8051的0~80MHZ;

(3)STC89C51RC對(duì)應(yīng)Flash空間:4KB;

(4)內(nèi)部存儲(chǔ)器(RAM):512B;

(5)定時(shí)器計(jì)數(shù)器:3個(gè)16位;

(6)通用異步通信口(UART)1個(gè);

(7)中斷源:8個(gè);

(8)有ISP(在系統(tǒng)可編程)IAP(在應(yīng)用可編程),無(wú)需專(zhuān)用編程器仿真器;

(9)通用IO口:3236個(gè);

(10)工作電壓:3.8~5.5V;

(11)外形封裝:40腳PDIP、44腳PLCC和PQFP等。

(二)STC89C51單片機(jī)的引腳說(shuō)明:

VCC:供電電壓。

GND:接地。

P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門(mén)電流。當(dāng)P1口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。

P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門(mén)電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。

P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)

P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。

P3.0 RXD(串行輸入口)

P3.1 TXD(串行輸出口)

P3.2 /INT0(外部中斷0)

P3.3 /INT1(外部中斷1)

P3.4 T0(記時(shí)器0外部輸入)

P3.5 T1(記時(shí)器1外部輸入)

P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)

P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)

P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。

I/O口作為輸入口時(shí)有兩種工作方式,即所謂的讀端口與讀引腳。讀端口時(shí)實(shí)際上并不從外部讀入數(shù)據(jù),而是把端口鎖存器的內(nèi)容讀入到內(nèi)部總線(xiàn),經(jīng)過(guò)某種運(yùn)算或變換后再寫(xiě)回到端口鎖存器。只有讀端口時(shí)才真正地把外部的數(shù)據(jù)讀入到內(nèi)部總線(xiàn)。上面圖中的兩個(gè)三角形表示的就是輸入緩沖器CPU將根據(jù)不同的指令分別發(fā)出讀端口或讀引腳信號(hào)以完成不同的操作。這是由硬件自動(dòng)完成的,不需要我們操心,1然后再實(shí)行讀引腳操作,否則就可能讀入出錯(cuò),為什么看上面的圖,如果不對(duì)端口置1端口鎖存器原來(lái)的狀態(tài)有可能為0Q端為0Q^為1加到場(chǎng)效應(yīng)管柵極的信號(hào)為1,該場(chǎng)效應(yīng)管就導(dǎo)通對(duì)地呈現(xiàn)低阻抗,此時(shí)即使引腳上輸入的信號(hào)為1,也會(huì)因端口的低阻抗而使信號(hào)變低使得外加的1信號(hào)讀入后不一定是1。若先執(zhí)行置1操作,則可以使場(chǎng)效應(yīng)管截止引腳信號(hào)直接加到三態(tài)緩沖器中實(shí)現(xiàn)正確的讀入,由于在輸入操作時(shí)還必須附加一個(gè)準(zhǔn)備動(dòng)作,所以這類(lèi)I/O口被稱(chēng)為準(zhǔn)雙向口。89C51的P0/P1/P2/P3口作為輸入時(shí)都是準(zhǔn)雙向口。

RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。

ALE/PROG:當(dāng)訪(fǎng)問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。

/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。

/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。

XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。

XTAL2:來(lái)自反向振蕩器的輸出。

(三)STC89C51單片機(jī)最小系統(tǒng):

最小系統(tǒng)包括單片機(jī)及其所需的必要的電源、時(shí)鐘、復(fù)位等部件,能使單片機(jī)始終處于正常的運(yùn)行狀態(tài)。電源、時(shí)鐘等電路是使單片機(jī)能運(yùn)行的必備條件,可以將最小系統(tǒng)作為應(yīng)用系統(tǒng)的核心部分,通過(guò)對(duì)其進(jìn)行存儲(chǔ)器擴(kuò)展、A/D擴(kuò)展等,使單片機(jī)完成較復(fù)雜的功能。

STC89C51是片內(nèi)有ROM/EPROM的單片機(jī),因此,這種芯片構(gòu)成的最小系統(tǒng)簡(jiǎn)單﹑可靠。用STC89C52單片機(jī)構(gòu)成最小應(yīng)用系統(tǒng)時(shí),只要將單片機(jī)接上時(shí)鐘電路和復(fù)位電路即可,結(jié)構(gòu)如圖2-3所示,由于集成度的限制,最小應(yīng)用系統(tǒng)只能用作一些小型的控制單元。

中斷技術(shù)主要用于實(shí)時(shí)監(jiān)測(cè)與控制,要求單片機(jī)能及時(shí)地響應(yīng)中斷請(qǐng)求源提出的服務(wù)請(qǐng)求,并作出快速響應(yīng)、及時(shí)處理。這是由片內(nèi)的中斷系統(tǒng)來(lái)實(shí)現(xiàn)的。當(dāng)中斷請(qǐng)求源發(fā)出中斷請(qǐng)求時(shí),如果中斷請(qǐng)求被允許,單片機(jī)暫時(shí)中止當(dāng)前正在執(zhí)行的主程序,轉(zhuǎn)到中斷服務(wù)處理程序處理中斷服務(wù)請(qǐng)求。中斷服務(wù)處理程序處理完中斷服務(wù)請(qǐng)求后,再回到原來(lái)被中止的程序之處(斷點(diǎn)),繼續(xù)執(zhí)行被中斷的主程序。

圖2-6為整個(gè)中斷響應(yīng)和處理過(guò)程。

圖1 系統(tǒng)總體框圖

3.2 最小系統(tǒng)設(shè)計(jì)

最小系統(tǒng)包括單片機(jī)及其所需的必要的電源、時(shí)鐘、復(fù)位等部件,能使單片機(jī)始終處于正常的運(yùn)行狀態(tài)。電源、時(shí)鐘等電路是使單片機(jī)能運(yùn)行的必備條件,可以將最小系統(tǒng)作為應(yīng)用系統(tǒng)的核心部分,通過(guò)對(duì)其進(jìn)行存儲(chǔ)器擴(kuò)展、A/D擴(kuò)展等,使單片機(jī)完成較復(fù)雜的功能。

3.3 時(shí)鐘電路

STC89C51內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,引腳RXD和TXD分別是此放大器的輸入端和輸出端。時(shí)鐘可以由內(nèi)部方式產(chǎn)生或外部方式產(chǎn)生。內(nèi)部時(shí)鐘在此不做詳細(xì)介紹。外部方式的時(shí)鐘電路如圖3所示,RXD接地,TXD接外部振蕩器。對(duì)外部振蕩信號(hào)無(wú)特殊要求,只要求保證脈沖寬度,一般采用頻率在12MHz或11.0592MHZ晶振。

圖3-1 89c51內(nèi)部時(shí)鐘電路

3.4 復(fù)位電路

當(dāng)在89C51單片機(jī)的RST引腳引入高電平并保持2個(gè)機(jī)器周期時(shí),單片機(jī)內(nèi)部就執(zhí)行復(fù)位操作(若該引腳持續(xù)保持高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài))。

復(fù)位電路通常采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式。

最簡(jiǎn)單的上電自動(dòng)復(fù)位電路中上電自動(dòng)復(fù)位是通過(guò)外部復(fù)位電路的電容充放電來(lái)實(shí)現(xiàn)的。只要Vcc的上升時(shí)間不超過(guò)1ms,就可以實(shí)現(xiàn)自動(dòng)上電復(fù)位。

除了上電復(fù)位外,有時(shí)還需要按鍵手動(dòng)復(fù)位。本設(shè)計(jì)就是用的按鍵手動(dòng)復(fù)位。按鍵手動(dòng)復(fù)位有電平方式和脈沖方式兩種。其中電平復(fù)位是通過(guò)RST(9)端與電源Vcc接通而實(shí)現(xiàn)的。按鍵手動(dòng)復(fù)位電路見(jiàn)圖4。時(shí)鐘頻率用11.0592MHZ時(shí)C取10uF,R取10kΩ。

圖3-2 89C51 復(fù)位電路

3.5 按鍵控制模塊

電子琴設(shè)有8個(gè)按鍵, 8個(gè)按鍵分別代表8個(gè)音符,包括中音段的全部音符,通過(guò)軟硬件設(shè)計(jì)。

如下圖:

圖3-3 按鍵模塊

3.6 播放模塊

播放模塊是由2個(gè)三極管構(gòu)成,三級(jí)管將信號(hào)放大,然后傳輸?shù)嚼?,喇叭它幾乎不存在噪聲,音響效果較好。

下圖是該模塊電路:

圖3-5 播放模塊

三極管是電流放大器件,有三個(gè)極,分別叫做集電極C,基極B,發(fā)射極E。分成NPN和PNP兩種。我們僅以NPN三極管的共發(fā)射極放大電路為例來(lái)說(shuō)明一下三極管放大電路的基本原理。

(1)電流放大

下面的分析僅對(duì)于NPN型硅三極管。如上圖所示,我們把從基極B流至發(fā)射極E的電流叫做基極電流Ib;把從集電極C流至發(fā)射極E的電流叫做集電極電流 Ic。這兩個(gè)電流的方向都是流出發(fā)射極的,所以發(fā)射極E上就用了一個(gè)箭頭來(lái)表示電流的方向。三極管的放大作用就是:集電極電流受基極電流的控制(假設(shè)電源 能夠提供給集電極足夠大的電流的話(huà)),并且基極電流很小的變化,會(huì)引起集電極電流很大的變化,且變化滿(mǎn)足一定的比例關(guān)系:集電極電流的變化量是基極電流變 化量的β倍,即電流變化被放大了β倍,所以我們把β叫做三極管的放大倍數(shù)(β一般遠(yuǎn)大于1,例如幾十,幾百)。如果我們將一個(gè)變化的小信號(hào)加到基極跟發(fā)射 極之間,這就會(huì)引起基極電流Ib的變化,Ib的變化被放大后,導(dǎo)致了Ic很大的變化。如果集電極電流Ic是流過(guò)一個(gè)電阻R的,那么根據(jù)電壓計(jì)算公式 U=R*I 可以算得,這電阻上電壓就會(huì)發(fā)生很大的變化。我們將這個(gè)電阻上的電壓取出來(lái),就得到了放大后的電壓信號(hào)了。

(2)偏置電路

三極管在實(shí)際的放大電路中使用時(shí),還需要加合適的偏置電路。這有幾個(gè)原因。首先是由于三極管BE結(jié)的非線(xiàn)性(相當(dāng)于一個(gè)二極管),基極電流必須在輸入電壓 大到一定程度后才能產(chǎn)生(對(duì)于硅管,常取0.7V)。當(dāng)基極與發(fā)射極之間的電壓小于0.7V時(shí),基極電流就可以認(rèn)為是0。但實(shí)際中要放大的信號(hào)往往遠(yuǎn)比 0.7V要小,如果不加偏置的話(huà),這么小的信號(hào)就不足以引起基極電流的改變(因?yàn)樾∮?.7V時(shí),基極電流都是0)。如果我們事先在三極管的基極上加上一 個(gè)合適的電流(叫做偏置電流,上圖中那個(gè)電阻Rb就是用來(lái)提供這個(gè)電流的,所以它被叫做基極偏置電阻),那么當(dāng)一個(gè)小信號(hào)跟這個(gè)偏置電流疊加在一起時(shí),小 信號(hào)就會(huì)導(dǎo)致基極電流的變化,而基極電流的變化,就會(huì)被放大并在集電極上輸出。另一個(gè)原因就是輸出信號(hào)范圍的要求,如果沒(méi)有加偏置,那么只有對(duì)那些增加的 信號(hào)放大,而對(duì)減小的信號(hào)無(wú)效(因?yàn)闆](méi)有偏置時(shí)集電極電流為0,不能再減小了)。而加上偏置,事先讓集電極有一定的電流,當(dāng)輸入的基極電流變小時(shí),集電極 電流就可以減?。划?dāng)輸入的基極電流增大時(shí),集電極電流就增大。這樣減小的信號(hào)和增大的信號(hào)都可以被放大了。

(3)開(kāi)關(guān)作用

下面說(shuō)說(shuō)三極管的飽和情況。像上面那樣的圖,因?yàn)槭艿诫娮?Rc的限制(Rc是固定值,那么最大電流為U/Rc,其中U為電源電壓),集電極電流是不能無(wú)限增加下去的。當(dāng)基極電流的增大,不能使集電極電流繼續(xù)增大 時(shí),三極管就進(jìn)入了飽和狀態(tài)。一般判斷三極管是否飽和的準(zhǔn)則是:Ib*β〉Ic。進(jìn)入飽和狀態(tài)之后,三極管的集電極跟發(fā)射極之間的電壓將很小,可以理解為 一個(gè)開(kāi)關(guān)閉合了。這樣我們就可以拿三極管來(lái)當(dāng)作開(kāi)關(guān)使用:當(dāng)基極電流為0時(shí),三極管集電極電流為0(這叫做三極管截止),相當(dāng)于開(kāi)關(guān)斷開(kāi);當(dāng)基極電流很 大,以至于三極管飽和時(shí),相當(dāng)于開(kāi)關(guān)閉合。如果三極管主要工作在截止和飽和狀態(tài),那么這樣的三極管我們一般把它叫做開(kāi)關(guān)管。

圖3-6 三極管引腳介紹

第四章 系統(tǒng)軟件設(shè)計(jì)

  1. 資料包括:

部分程序:

/*
8個(gè)按鍵發(fā)出8個(gè)基本音。 系統(tǒng)會(huì)記錄下彈奏的樂(lè)曲,并可以回放,
當(dāng)沒(méi)有彈奏時(shí)能播放內(nèi)置音樂(lè)
*/

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit speaker=P1^4;//喇叭接30腳
sbit key1=P1^0;//
sbit key2=P1^1;//
sbit key3=P1^2;//?? ? ?按鍵
sbit Do=P3^0;
sbit Re=P3^1;
sbit Mi=P3^2;
sbit Fa=P3^3;
sbit So=P3^4;
sbit La=P3^5;
sbit Si=P3^6;
sbit Do_=P3^7;?? ? ?//八個(gè)音符按鍵

uchar a,b,num_yf,num_jp,jiepai,qiehuan;
uchar code yinfu[]={0xfb,0xe0, ? ? ?//Do
0xfc,0x5c, ? ? ?//Re
0xfc,0xc1, ? ? ?//Mi
0xfc,0xe5, ? ? ?//Fa
0xfd,0x45, ? ? ?//So
0xfd,0x92, ? ? ?//La
0xfd,0xd1, ? ? ?//Si
0xfd,0xee, ? ? ?//Do#
0x00,0x00,?? ? ? //間隔
};
uchar code shengri_tone[]={ ? 1,0,1,2,1,4,3,0, //生日快樂(lè)音調(diào)
1,0,1,2,1,5,4,0,
1,0,1,8,6,4,3,2,0,
7,0,7,6,4,5,4,0 ? ? ? //0代表不發(fā)聲,即停頓;數(shù)字即為音調(diào)
};

uchar code shengri_beat[]={ ? 24,1,24,48,48,48,72,5,//節(jié)拍
24,1,24,48,48,48,72,5,
24,1,24,48,48,48,48,72,5,
24,1,24,48,48,48,72,5 ? ?//節(jié)拍,即tone表各音調(diào)的延時(shí)
};

uchar xdata save[220];?? ??? ??? ??? ? //保存音符的數(shù)組
uchar idata save_beat[220];?? ??? ??? ? //保存節(jié)拍的數(shù)組

void check_key();//改為P3組為按鍵
void delay(uint z);//延時(shí)函數(shù)聲明
void delay1(void);//聲明第二個(gè)延時(shí)函數(shù)
void play1(void);//播放生日快樂(lè)
void play2(void);//播放存儲(chǔ)存儲(chǔ)的音樂(lè)

void cunchu()
{
jiepai++;
if(save[num_yf]==9)
delay(20);
else
delay(15);
if(jiepai>=251)
jiepai=250;
}

void main()?? ??? ??? ? //主函數(shù)
{
TMOD=0x10;?? ??? ? //定時(shí)器工作方式1
TH0=a;
TL0=b;?? ??? ??? ? //定時(shí)器初值
ET0=1;?? ??? ??? ??? ?//中斷允許
TR0=0;?? ??? ??? ? //打開(kāi)定時(shí)器
while(1)?? ??? ?//進(jìn)入循環(huán)
{
check_key(); ?//掃描按鍵
}
}
需要完整的資料可在我的資源里下載,也可以加入我的紛傳圈子,里面有資源壓縮包的百度網(wǎng)盤(pán)下載地址及提取碼。

紛傳點(diǎn)擊用微信打開(kāi)即可,過(guò)程有點(diǎn)繁瑣請(qǐng)見(jiàn)諒。

  • 有需要資料的可了解一下.docx

相關(guān)推薦

電子產(chǎn)業(yè)圖譜