




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、單片機(jī)課程設(shè)計(jì)報(bào)告基于單片機(jī)的簡易電子琴設(shè)計(jì)摘 要電子琴是現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,是一種新型的鍵盤樂器。它在現(xiàn)代音樂扮演著重要的角色,單片機(jī)具有強(qiáng)大的控制功能和靈活的編程實(shí)現(xiàn)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代的一部分。本文的主要內(nèi)容是用at89s51單片機(jī)作為核心控制元件,設(shè)計(jì)一個電子琴。以單片機(jī)作為主控核心,與鍵盤、揚(yáng)聲器等模塊組成核心主控制模塊,在主控模塊上設(shè)有16個按鍵和揚(yáng)聲器。本系統(tǒng)運(yùn)行穩(wěn)定,其優(yōu)點(diǎn)是硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,性價比較高等,具有一定的實(shí)用和參考價值。關(guān)鍵詞:單片機(jī) 鍵盤 揚(yáng)聲器 電子琴- 37 -z10102 yangqingming
2、abstractelectronic organ is a modern electronic music technology and the product is a new type of keyboard instruments. it played an important role in modern music. scm has powerful control functions and flexible programming characteristics. it has converged with modern peoples lives, become an irre
3、placeable part. the main content is at89s51 control of the core components, design of a electronic organ. scm as a host to the core, with the keyboard, speaker and other core modules. in the main control module has 16 keys and a speaker. the system is steady, its simple hardware circuits, software f
4、unctions, reliability of control system and high cost performance is its advantages. it also has certain practical and reference value.key words : scm keyboard speaker electronic organ目 錄摘 要1abstract1目錄21 引言32 原理圖42.1 系統(tǒng)板硬件連線53 主要芯片簡介53.1 at89s51簡介53.1.1 主要功能特性63.1.2 引腳功能63.2 lm38673.2.1 lm386的引腳圖83
5、.2.2 音頻放大器電路93.3 led數(shù)碼管94 模塊原理104.1 4x4行列式鍵盤識別及顯示104.1.1 系統(tǒng)板上硬件連線設(shè)計(jì)104.1.2 程序設(shè)計(jì)內(nèi)容12圖4-2 行列式鍵盤電路124.1.3 i/o并行口直接驅(qū)動led顯示134.1.4 鍵盤識別程序164.2 音樂產(chǎn)生的方法224.2.1 原理224.2.2 程序框圖244.2.3源程序:255 結(jié)束語32致 謝33參考文獻(xiàn)341 引 言單片微型計(jì)算機(jī)是大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物,屬第四代電子計(jì)算機(jī),它具有高性能、高速度、體積小、價格低廉、穩(wěn)定可靠、應(yīng)用廣泛的特點(diǎn)。它的應(yīng)用必定導(dǎo)致傳統(tǒng)的控制技術(shù)從根本上發(fā)生變革。因此,單片機(jī)的
6、開發(fā)應(yīng)用已成為高科技和工程領(lǐng)域的一項(xiàng)重大課題。電子琴是現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,是一種新型的鍵盤樂器。它在現(xiàn)代音樂扮演著重要的角色,單片機(jī)具有強(qiáng)大的控制功能和靈活的編程實(shí)現(xiàn)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代的一部分。本文的主要內(nèi)容是用at89s51單片機(jī)為核心控制元件,設(shè)計(jì)一個電子琴。以單片機(jī)作為主控核心,與鍵盤、揚(yáng)聲器等模塊組成核心主控制模塊,在主控模塊上設(shè)有16個按鍵和揚(yáng)聲器。本文主要對使用單片機(jī)設(shè)計(jì)簡易電子琴進(jìn)行了分析,并介紹了基于單片機(jī)電子琴統(tǒng)硬件組成。利用單片機(jī)產(chǎn)生不同頻率來獲得我們要求的音階,最終可隨意彈奏想要表達(dá)的音樂。并且本文分別從原理圖,主要芯片,各模塊原理及
7、各模塊的程序的調(diào)試來詳細(xì)闡述。一首音樂是許多不同的音階組成的,而每個音階對應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對于單片機(jī)來產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時/計(jì)數(shù)器t0來產(chǎn)生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應(yīng)頻率關(guān)系弄正確即可。2 原理圖圖2-1 電子琴電路圖2.1 系統(tǒng)板硬件連線 系統(tǒng)板硬件連線如圖2-1所示,發(fā)生模塊,鍵盤模塊,及l(fā)ed顯示模塊連接如下1.把“單片機(jī)系統(tǒng)”區(qū)域中的p1.0端口用導(dǎo)線連接到“音頻放大模塊”區(qū)域中的spk in端口上;2.把“單片機(jī)系統(tǒng)“區(qū)域中的p3.0p3.7端口用8芯排線連接到“
8、4x4行列式鍵盤”區(qū)域中的c1c4r1r4端口上;3.把“單片機(jī)系統(tǒng)”區(qū)域中的p0.0/ad0p0.7/ad7端口用8芯排線連接到“四路靜態(tài)數(shù)碼顯示模塊”區(qū)域中的任一個ah端口上;要求:p0.0/ad0對應(yīng)著a,p0.1/ad1對應(yīng)著b,p0.7/ad7對應(yīng)著h。3 主要芯片簡介3.1 at89s51簡介at89s51是一個低功耗,高性能cmos 8位單片機(jī),片內(nèi)含4k bytes isp(in-system programmable)的可反復(fù)擦寫1000次的flash只讀程序存儲器,器件采用atmel公司的高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn)mcs-51指令系統(tǒng)及80c51引腳結(jié)構(gòu),芯片內(nèi)
9、集成了通用8位中央處理器和isp flash存儲單元,功能強(qiáng)大的微型計(jì)算機(jī)的at89s51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價比的解決方案。at89s51具有如下特點(diǎn):40個引腳(引腳圖如圖3-1所示),4k bytes flash片內(nèi)程序存儲器,128 bytes的隨機(jī)存取數(shù)據(jù)存儲器(ram),32個外部雙向輸入/輸出(i/o)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計(jì)數(shù)器,2個全雙工串行通信口,看門狗(wdt)電路,片內(nèi)時鐘振蕩器。此外,at89s51設(shè)計(jì)和配置了振蕩頻率可為0hz并可通過軟件設(shè)置省電模式??臻e模式下,cpu暫停工作,而ram定時計(jì)數(shù)器,串行口,外中斷系統(tǒng)可
10、繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存ram的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時該芯片還具有pdip、tqfp和plcc等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。圖3-1 管腳圖3.1.1 主要功能特性 兼容mcs-51指令系統(tǒng) 32個雙向i/o口 2個16位可編程定時/計(jì)數(shù)器 全雙工uart串行中斷口線 2個外部中斷源 中斷喚醒省電模式 看門狗(wdt)電路 靈活的isp字節(jié)和分頁編程 4k可反復(fù)擦寫isp flash rom 4.5-5.5v工作電壓 時鐘頻率0-33mhz 128x8bit內(nèi)部ram 低功耗空閑和省電模式 3級加密位 軟件設(shè)置空閑和省電功能 雙數(shù)據(jù)寄存器指針3.
11、1.2 引腳功能vcc(40):5v;gnd(20):接地;p0口(3932):p0口為8位漏極開路雙向i/o口,每引腳可吸收8個ttl門電流;p1口(18):p1口是從內(nèi)部提供上拉電阻器的8位雙向i/o口,p1口緩沖器能接收和輸出4個ttl門電流;p2口(2128):p2口為內(nèi)部上拉電阻器的8位雙向i/o口,p2口緩沖器可接收和輸出4個ttl門電流;p3口(1017):p3口是8個帶內(nèi)部上拉電阻器的雙向i/o口,可接收和輸出4個ttl門電流,p3口也可作為at89c51的特殊功能口;rst(9):復(fù)位輸入。當(dāng)振蕩器復(fù)位時,要保持rst引腳2個機(jī)器周期的高電平時間;ale/prog(30):當(dāng)
12、訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié),在flash編程期間,此引腳用于輸入編程脈沖。在平時,ale端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6,它可用作對外部輸出的脈沖或用于定時目的,要注意的是,每當(dāng)訪問外部數(shù)據(jù)存儲器時,將跳過1個ale脈沖;psen(29):外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期2次psen有效,但在訪問外部數(shù)據(jù)存儲器時,這2次有效的psen信號將不出現(xiàn);ea/vpp(31):當(dāng)ea保持低電平時,外部程序存儲器地址為(0000hffffh)不管是否有內(nèi)部程序存儲器。flash編程期間,此引腳也用于施加12
13、v編程電源(vpp);xtal1(19):反向振蕩器放大器的輸入及內(nèi)部時鐘工作電路的輸入;xtal2(18):來自反向振蕩器的輸出;3.2 lm386lm386是一種音頻集成功放,具有自身功耗低、電壓增益可調(diào)整、電源電壓范圍大、外接元件少和總諧波失真小等優(yōu)點(diǎn),廣泛應(yīng)用于錄音機(jī)和收音機(jī)之中。lm386內(nèi)部與通用型集成運(yùn)放相類似,它是一個三級放大電路。第一級為差分放大電路,t1和t3、t2和t4分別構(gòu)成復(fù)合管,作為差分放大電路的放大管;t5和t6組成鏡像電流源作為t1和t2的有源負(fù)載;t3和t4信號從管的基極輸入,從t2管的集電極輸出,為雙端輸入單端輸出差分電路。使用鏡像電流源作為差分放大電路有源
14、負(fù)載,可使單端輸出電路的增益近似等于雙端輸出電容的增益。第二級為共射放大電路,t7為放大管,恒流源作有源負(fù)載,以增大放大倍數(shù)。第三級中的t8和t9管復(fù)合成pnp型管,與npn型管t10構(gòu)成準(zhǔn)互補(bǔ)輸出級。二極管d1和d2為輸出級提供合適的偏置電壓,可以消除交越失真。引腳2為反相輸入端,引腳3為同相輸入端。電路由單電源供電,故為otl電路。輸出端(引腳5)應(yīng)外接輸出電容后再接負(fù)載。電阻r7從輸出端連接到t2的發(fā)射極,形成反饋通路,并與r5和r6構(gòu)成反饋網(wǎng)絡(luò),從而引入了深度電壓串聯(lián)負(fù)反饋,使整個電路具有穩(wěn)定的電壓增益。3.2.1 lm386的引腳圖圖3-3 lm386的外形和引腳的排列l(wèi)m386的外
15、形和引腳的排列如圖3-3所示。引腳2為反相輸入端,3為同相輸入端;引腳5為輸出端;引腳6和4分別為電源和地;引腳1和8為電壓增益設(shè)定端;使用時在引腳7和地之間接旁路電容,通常取10f。3.2.2 音頻放大器電路圖2.3 音頻放大器電路3.3 led數(shù)碼管圖3-4 7段數(shù)碼管數(shù)碼管(如圖3-4所示)使用條件:a、段及小數(shù)點(diǎn)上加限流電阻b、使用電壓:段:根據(jù)發(fā)光顏色決定;小數(shù)點(diǎn):根據(jù)發(fā)光顏色決定c、使用電流:靜態(tài):總電流 80ma(每段 10ma);動態(tài):平均電流 4-5ma 峰值電流 100ma上面這個只是七段數(shù)碼管引腳圖,其中共陽極數(shù)碼管引腳圖和共陰極的是一樣的。數(shù)碼管使用注意事項(xiàng)說明:(1)
16、數(shù)碼管表面不要用手觸摸,不要用手去弄引角;(2)焊接溫度:度;焊接時間:(3)表面有保護(hù)膜的產(chǎn)品,可以在使用前撕下來。4 模塊原理 4.1 4x4行列式鍵盤識別及顯示組成鍵盤的按鍵有機(jī)械式、電容式、導(dǎo)電橡膠式、薄膜式多種,但不管什么形式,其作用都是一個使電路接通與斷開的開關(guān)。目前微機(jī)系統(tǒng)中使用的鍵盤按其功能不同,通常可分為編碼鍵盤和非編碼鍵盤兩種基本類型。編碼鍵盤:鍵盤本身帶有實(shí)現(xiàn)接口主要功能所需的硬件電路。不僅能自動檢測被按下的鍵,并完成去抖動、防串鍵等功能,而且能提供與被按鍵功能對應(yīng)的鍵碼(如ascii碼)送往cpu。所以,編碼鍵盤接口簡單、使用方便。但由于硬件電路較復(fù)雜,因而價格較貴。非
17、編碼鍵盤:鍵盤只簡單地提供按鍵開關(guān)的行列矩陣。有關(guān)按鍵的識別、鍵碼的確定與輸入、去抖動等功能均由軟件完成。目前微機(jī)系統(tǒng)中,一般為了降低成本大多數(shù)采用非編碼鍵盤。用at89s51的并行口p1接44矩陣鍵盤,以p1.0p1.3作輸入線,以p1.4p1.7作輸出線;在數(shù)碼管上顯示每個按鍵的“0f”序號。4.1.1 系統(tǒng)板上硬件連線設(shè)計(jì)鍵盤模塊硬件連線如圖4-1所示:圖4-1 鍵盤模塊連線圖(1)把“單片機(jī)系統(tǒng)“區(qū)域中的p3.0p3.7端口用8芯排線連接到“4x4行列式鍵盤”區(qū)域中的c1c4r1r4端口上;(2)把“單片機(jī)系統(tǒng)”區(qū)域中的p0.0/ad0p0.7/ad7端口用8芯排線連接到“四路靜態(tài)數(shù)碼
18、顯示模塊”區(qū)域中的任一個ah端口上;要求:p0.0/ad0對應(yīng)著a,p0.1/ad1對應(yīng)著b,p0.7/ad7對應(yīng)著h。4.1.2 程序設(shè)計(jì)內(nèi)容1 44矩陣鍵盤識別處理2每個按鍵有它的行值和列值,行值和列值的組合就是識別這個按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和cpu通信。每個按鍵的狀態(tài)同樣需變成數(shù)字量“0”和“1”,開關(guān)的一端(列線)通過電阻接vcc,而接地是通過程序輸出數(shù)字“0”實(shí)現(xiàn)的。鍵盤處理程序的任務(wù)是:確定有無鍵按下,判斷哪一個鍵按下,鍵的功能是什么;還要消除按鍵在閉合或斷開時的抖動。兩個并行口中,一個輸出掃描碼,使按鍵逐行動態(tài)接地,另一個并行口輸入按鍵狀態(tài),由行掃描值和回
19、饋信號共同形成鍵編碼而識別按鍵,通過軟件查表,查出該鍵的功能。圖4-2 行列式鍵盤電路4.1.3 i/o并行口直接驅(qū)動led顯示led顯示模塊如圖4-3所示,利用at89s51單片機(jī)的p0端口的p0.0p0.7連接到一個共陰數(shù)碼管的ah的筆段上,數(shù)碼管的公共端接地。在數(shù)碼管上循環(huán)顯示09數(shù)字,時間間隔0.2秒。系統(tǒng)板上硬件連線:(如圖4-3所示)把“單片機(jī)系統(tǒng)”區(qū)域中的p0.0/ad0p0.7/ad7端口用8芯排線連接到“四路靜態(tài)數(shù)碼顯示模塊”區(qū)域中的任一個數(shù)碼管的ah端口上;要求:p0.0/ad0與a相連,p0.1/ad1與b相連,p0.2/ad2與c相連,p0.7/ad7與h相連。圖4-3
20、 電路原理圖程序設(shè)計(jì)內(nèi)容:(1)led數(shù)碼顯示原理:七段led顯示器內(nèi)部由七個條形發(fā)光二極管和一個小圓點(diǎn)發(fā)光二極管組成,根據(jù)各管的極管的接線形式,可分成共陰極型和共陽極型。 led數(shù)碼管的ga七個發(fā)光二極管因加正電壓而發(fā)亮,因加零電壓而不以發(fā)亮,不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼,下面給出共陰極的字形碼表(如表4-1所示)表4-1 字形碼表“0”3fh“8”7fh“1”06h“9”6fh“2”5bh“a”77h“3”4fh“b”7ch“4”66h“c”39h“5”6dh“d”5eh“6”7dh“e”79h“7”07h“f”71h(2).由于顯示的數(shù)字09的字形碼沒有規(guī)律可循
21、,只能采用查表的方式來完成我們所需的要求了。這樣我們按著數(shù)字09的順序,把每個數(shù)字的筆段代碼按順序排好!建立的表格如下所示:tabledb 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh。程序框圖:程序框圖如圖4-3所示:開始r1=0查表獲得的數(shù)據(jù)送p0根據(jù)r1的值查表延時0.2秒r1=r1+1r1內(nèi)容=10 ?圖4-3 數(shù)碼顯示程序框圖c語言源程序:#includeunsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned char dispcount;
22、void delay02s(void)unsigned char i,j,k;for(i=20;i0;i-)for(j=20;j0;j-)for(k=248;k0;k-);void main(void)while(1)for(dispcount=0;dispcount0;i-)for(j=200;j0;j-);temp=p3;temp=temp & 0x0f;if (temp!=0x0f)temp=p3;temp=temp & 0x0f;switch(temp)case 0x0e:key=7;break;case 0x0d:key=8;break;case 0x0b:key=9;break;c
23、ase 0x07:key=10;break;temp=p3;p1_0=p1_0;p0=tablekey;temp=temp & 0x0f;while(temp!=0x0f)temp=p3;temp=temp & 0x0f;p3=0xff;p3_5=0;temp=p3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i0;i-)for(j=200;j0;j-);temp=p3;temp=temp & 0x0f;if (temp!=0x0f)temp=p3;temp=temp & 0x0f;switch(temp)case 0x0e:key=4;break;cas
24、e 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=11;break;temp=p3;p1_0=p1_0;p0=tablekey;temp=temp & 0x0f;while(temp!=0x0f)temp=p3;temp=temp & 0x0f;p3=0xff;p3_6=0;temp=p3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i0;i-)for(j=200;j0;j-);temp=p3;temp=temp & 0x0f;if (temp!=0x0f)temp=p3;temp=temp &
25、0x0f;switch(temp)case 0x0e:key=1;break;case 0x0d:key=2;break;case 0x0b:key=3;break;case 0x07:key=12;break;temp=p3;p1_0=p1_0;p0=tablekey;temp=temp & 0x0f;while(temp!=0x0f)temp=p3;temp=temp & 0x0f;p3=0xff;p3_7=0;temp=p3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i0;i-)for(j=200;j0;j-);temp=p3;temp=temp
26、& 0x0f;if (temp!=0x0f)temp=p3;temp=temp & 0x0f;switch(temp)case 0x0e:key=0;break;case 0x0d:key=13;break;case 0x0b:key=14;break;case 0x07:key=15;break;temp=p3;p1_0=p1_0;p0=tablekey;temp=temp & 0x0f;while(temp!=0x0f)temp=p3;temp=temp & 0x0f;4.2 音樂產(chǎn)生的方法4.2.1 原理一首音樂是許多不同的音階組成的,而每個音階對應(yīng)著不同的頻率,這樣我們就可以利用不同的
27、頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對于單片機(jī)來產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時/計(jì)數(shù)器t0來產(chǎn)生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應(yīng)頻率關(guān)系弄正確即可。若要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2,即為半周期的時間。利用定時器計(jì)時半周期時間,每當(dāng)計(jì)時終止后就將p1.0反相,然后重復(fù)計(jì)時再反相。就可在p1.0引腳上得到此頻率的脈沖。利用at89c51的內(nèi)部定時器使其工作計(jì)數(shù)器模式(mode1)下,改變計(jì)數(shù)值th0及tl0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階,例如,頻率為523hz,其周期t1/5231912s,因此只要令計(jì)數(shù)器計(jì)時9
28、56s/1s956,每計(jì)數(shù)956次時將i/o反相,就可得到中音do(523hz)。計(jì)數(shù)脈沖值與頻率的關(guān)系式(如式4-1所示)是:nfi2fr 4-1式中,n是計(jì)數(shù)值;fi是機(jī)器頻率(晶體振蕩器為12mhz時,其頻率為1mhz);fr是想要產(chǎn)生的頻率。其計(jì)數(shù)初值t的求法如下:t65536n65536fi2fr例如:設(shè)k65536,fi1mhz,求低音do(261hz)、中音do(523hz)、高音do(1046hz)的計(jì)數(shù)值。t65536n65536fi2fr6553610000002fr65536500000/fr低音do的t65536500000/26263627中音do的t65536500
29、000/52364580高音do的t65536500000/104665059單片機(jī)12mhz晶振,高中低音符與計(jì)數(shù)t0相關(guān)的計(jì)數(shù)值如表4-2所示表4-2 音符頻率表音符頻率(hz)簡譜碼(t值)音符頻率(hz)簡譜碼(t值)低1do26263628# 4 fa#74064860#1do#27763731中 5 so78464898低2re29463835# 5 so#83164934#2 re#31163928中 6 la88064968低 3 m33064021# 693264994低 4 fa34964103中 7 si98865030# 4 fa#37064185高 1 do10466
30、5058低 5 so39264260# 1 do#110965085# 5 so#41564331高 2 re117565110低 6 la44064400# 2 re#124565134# 646664463高 3 m131865157低 7 si49464524高 4 fa139765178中 1 do52364580# 4 fa#148065198# 1 do#55464633高 5 so156865217中 2 re58764684# 5 so#166165235# 2 re#62264732高 6 la176065252中 3 m65964777# 6186565268中 4 fa6
31、9864820高 7 si196765283我們要為這個音符建立一個表格,單片機(jī)通過查表的方式來獲得相應(yīng)的數(shù)據(jù)低音019之間,中音在2039之間,高音在4059之間table: dw 0,63628,63835,64021,64103,64260,64400,64524,0,0dw 0,63731,63928,0,64185,64331,64463,0,0,0dw 0,64580,64684,64777,64820,64898,64968,65030,0,0dw 0,64633,64732,0,64860,64934,64994,0,0,0dw 0,65058,65110,65157,6517
32、8,65217,65252,65283,0,0dw 0,65085,65134,0,65198,65235,65268,0,0,0dw 0 音樂的音拍,一個節(jié)拍為單位(c調(diào))(如表4-3所示)表4-3 曲調(diào)值表曲調(diào)值delay曲調(diào)值delay調(diào)4/4125ms調(diào)4/462ms調(diào)3/4187ms調(diào)3/494ms調(diào)2/4250ms調(diào)2/4125ms對于不同的曲調(diào)我們也可以用單片機(jī)的另外一個定時/計(jì)數(shù)器來完成。下面用at89s51單片機(jī)產(chǎn)生“生日快樂”歌來說明單片機(jī)如何產(chǎn)生的。在這個程序中用到了兩個定時/計(jì)數(shù)器來完成的。其中t0用來產(chǎn)生音符頻率,t1用來產(chǎn)生音拍。4.2.2 程序框圖音樂發(fā)聲程序框圖
33、如圖4-5所示:中斷入口重裝th0、tl0初值p1.0取反中斷返回圖4-5 音樂發(fā)聲程序框圖4.2.3源程序:#includeunsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;unsigned char temp;unsigned char key;unsigned char i,j;unsigned char sth0;unsigned char stl0;unsigned int code tab=64021,64103,64260
34、,64400, 64524,64580,64684,64777,64820,64898,64968,65030, 65058,65110,65157,65178;void main(void)tmod=0x01;et0=1;ea=1;while(1)p3=0xff;p3_4=0;temp=p3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i0;i-)for(j=200;j0;j-);temp=p3;temp=temp & 0x0f;if (temp!=0x0f)temp=p3;temp=temp & 0x0f;switch(temp)case 0x0e:k
35、ey=0;break;case 0x0d:key=1;break;case 0x0b:key=2;break;case 0x07:key=3;break;temp=p3;p1_0=p1_0;p0=tablekey;sth0=tabkey/256;stl0=tabkey%6;tr0=1;temp=temp & 0x0f; while(temp!=0x0f)temp=p3;temp=temp & 0x0f; tr0=0;p3=0xff;p3_5=0;temp=p3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i0;i-)for(j=200;j0;j-);tem
36、p=p3;temp=temp & 0x0f;if (temp!=0x0f)temp=p3;temp=temp & 0x0f; switch(temp)case 0x0e:key=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=7;break;temp=p3;p1_0=p1_0;p0=tablekey;sth0=tabkey/256;stl0=tabkey%6;tr0=1;temp=temp & 0x0f; while(temp!=0x0f)temp=p3;temp=temp & 0x0f; tr0=0;p3=0
37、xff;p3_6=0;temp=p3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i0;i-)for(j=200;j0;j-);temp=p3;temp=temp & 0x0f;if (temp!=0x0f)temp=p3;temp=temp & 0x0f; switch(temp)case 0x0e:key=8;break;case 0x0d:key=9;break;case 0x0b:key=10;break;case 0x07:key=11;break;temp=p3;p1_0=p1_0;p0=tablekey;sth0=tabkey/256;stl
38、0=tabkey%6;tr0=1;temp=temp & 0x0f; while(temp!=0x0f)temp=p3;temp=temp & 0x0f; tr0=0; p3=0xff;p3_7=0;temp=p3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i0;i-)for(j=200;j0;j-);temp=p3;temp=temp & 0x0f;if (temp!=0x0f)temp=p3;temp=temp & 0x0f; switch(temp)case 0x0e:key=12;break;case 0x0d:key=13;break;case 0x0b:key=14;break;case 0x07:key=
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣州國際旅游服務(wù)合同樣本
- 商鋪?zhàn)赓U合同樣本:門面租賃全新范本
- 寒假臨時工雇傭合同書樣本
- 游戲品牌代言合同樣本
- 長租公寓租賃合同全文
- 新媒體廣告推廣合同模板
- 辦公室簡單裝修合同范本
- 個人貸款合同電子版模板
- 企業(yè)間的戰(zhàn)略合作框架合同范本
- 課件人物插圖小學(xué)生
- 培訓(xùn)中的基本學(xué)習(xí)原理-課件
- 現(xiàn)代文閱讀《有聲電影》答案詳細(xì)解析
- 銷售合同模板英文銷售合同模板
- 大學(xué)計(jì)算機(jī)基礎(chǔ)(Windows10+Office2016)PPT完整全套教學(xué)課件
- 精素材:描寫植物的好詞好句好段
- 【高中語文】《登岳陽樓》課件17張+統(tǒng)編版高中語文必修下冊
- 華師大版八年級數(shù)學(xué)下冊全冊教案
- 四下語文學(xué)情分析-2
- 家園合作培養(yǎng)幼兒勞動行為習(xí)慣的行動研究
- 中國的能源安全 課件
- 鄭州市某路雨水污水改造工程施工組織設(shè)計(jì)
評論
0/150
提交評論