課程設(shè)計(jì)---基于at89s52單片機(jī)簡(jiǎn)易電子琴設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  《單片機(jī)應(yīng)用與仿真訓(xùn)練》設(shè)計(jì)報(bào)告</p><p>  ------基于AT89S52單片機(jī)簡(jiǎn)易電子琴設(shè)計(jì)</p><p>  姓 名: </p><p>  學(xué) 號(hào): </p><p>  專業(yè)班級(jí): 電信08—2班

2、</p><p>  指導(dǎo)老師:     </p><p>  所在學(xué)院: 電氣工程與自動(dòng)化學(xué)院 </p><p>  2011年11月22 日</p><p><b>  摘要</b></p><p>  設(shè)計(jì)的主要內(nèi)容是用 AT89S52單片機(jī)為核心控制元件

3、,通過脈沖觸發(fā)產(chǎn)生出電子音調(diào),設(shè)計(jì)一個(gè)簡(jiǎn)易的電子琴。以單片機(jī)作為主控核心,與鍵盤、蜂鳴器等模塊組成控制模塊。該系統(tǒng)運(yùn)行穩(wěn)定,其優(yōu)點(diǎn)是硬件電路簡(jiǎn)單,軟件功能完善,控制系統(tǒng)可靠,性價(jià)比較高等,具有一定的實(shí)用與參考價(jià)值。</p><p>  關(guān)鍵詞:AT89S52;單片機(jī);脈沖觸發(fā);電子琴設(shè)計(jì)</p><p><b>  目錄</b></p><p&g

4、t;<b>  1 概述2</b></p><p>  1.1 功能簡(jiǎn)介2</p><p>  1.2 功能的實(shí)現(xiàn)2</p><p>  1.3 音樂產(chǎn)生原理3</p><p>  2 系統(tǒng)總體方案及硬件設(shè)計(jì)4</p><p>  2.1 總體方案4</p><p&

5、gt;  2.2 硬件部分4</p><p>  2.2.1 矩陣鍵盤部分4</p><p>  2.2.2 揚(yáng)聲器接口電路部分5</p><p><b>  3 軟件設(shè)計(jì)6</b></p><p>  4 Proteus軟件仿真8</p><p>  5 課程設(shè)計(jì)體會(huì)9</p&

6、gt;<p><b>  參考文獻(xiàn)10</b></p><p>  附錄1 源程序代碼10</p><p>  附錄2系統(tǒng)原理圖18</p><p><b>  1 概述</b></p><p><b>  1.1 功能簡(jiǎn)介</b></p>&

7、lt;p>  電子琴是現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,是一種新型的鍵盤樂器。它在現(xiàn)代音樂扮演著重要的角色,單片機(jī)具有強(qiáng)大的控制功能和靈活的編程實(shí)現(xiàn)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代的一部分。</p><p>  本簡(jiǎn)易電子琴的設(shè)計(jì)可實(shí)現(xiàn)的功能如下:程序中預(yù)存了一首音樂《月亮代表我的心》,通過一個(gè)獨(dú)立鍵盤可以實(shí)現(xiàn)對(duì)該音樂的播放和停止操作的控制。4*4矩陣鍵盤的16個(gè)按鍵分別對(duì)應(yīng)著16個(gè)不同的音符,分

8、為高、低兩個(gè)八度,當(dāng)按下某一按鍵,會(huì)發(fā)出相應(yīng)的音調(diào)。按下按鍵時(shí),揚(yáng)聲器會(huì)發(fā)出聲音,松開按鍵后,揚(yáng)聲器停止發(fā)聲,按鍵的時(shí)間越長(zhǎng),發(fā)聲時(shí)間越久。連續(xù)按下不同的按鍵,可以實(shí)現(xiàn)樂曲的演奏。</p><p><b>  1.2 功能的實(shí)現(xiàn)</b></p><p>  功能的實(shí)現(xiàn)部分分為軟件和硬件兩部分來(lái)簡(jiǎn)介。</p><p>  1.3 音樂產(chǎn)生原理&l

9、t;/p><p>  一首音樂是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對(duì)于單片機(jī)來(lái)產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來(lái)產(chǎn)生這樣方波頻率信號(hào),因此,只需將一首歌的音階和頻率相對(duì)應(yīng)即可。</p><p>  若要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2,即為半周期的時(shí)

10、間。利用定時(shí)器計(jì)時(shí)半周期時(shí)間,每當(dāng)計(jì)時(shí)終止后就將P1.0反相,然后重復(fù)計(jì)時(shí)再反相。就可在P1.0引腳上得到此頻率的脈沖。</p><p>  利用AT89S52的內(nèi)部定時(shí)器使其工作計(jì)數(shù)器模式(MODE1)下,改變計(jì)數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階,例如,頻率為523Hz,其周期T=1/523=1912μs,因此只要令計(jì)數(shù)器計(jì)時(shí)956μs/1μs=956,每計(jì)數(shù)956次時(shí)將I/O反相,就可得到中音

11、DO(523Hz)。</p><p>  計(jì)數(shù)脈沖值與頻率的關(guān)系式(如式2-1所示)是:</p><p>  N=fi÷2÷fr 2-1</p><p>  式中,N是計(jì)數(shù)值;fi是機(jī)器頻率(晶體振蕩器為12MHz時(shí),其頻率為1MHz);fr是想要產(chǎn)生的頻率。</p><p&

12、gt;  其計(jì)數(shù)初值T的求法如下:</p><p>  T=65536-N=65536-fi÷2÷fr 2-2</p><p>  例如:設(shè)K=65536,fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的計(jì)數(shù)值。</p><p>  T=65536-N=65536-fi÷2&#

13、247;fr=65536-1000000÷2÷fr=65536-500000/fr</p><p>  低音DO的T=65536-500000/262=63627</p><p>  中音DO的T=65536-500000/523=64580</p><p>  高音DO的T=65536-500000/1046=65059</p>

14、<p>  我們要為這個(gè)音符建立一個(gè)表格,單片機(jī)通過查表的方式來(lái)獲得相應(yīng)的數(shù)據(jù),音符表見附錄一。</p><p>  音樂的音拍,一個(gè)節(jié)拍為單位(C調(diào))(如表2-1所示)</p><p><b>  表2-1 曲調(diào)值表</b></p><p>  對(duì)于不同的曲調(diào)我們也可以用單片機(jī)的定時(shí)/計(jì)數(shù)器來(lái)完成。</p><p

15、>  程序流程圖如圖2.5。</p><p>  2 系統(tǒng)總體方案及硬件設(shè)計(jì)</p><p><b>  2.1 總體方案</b></p><p>  本設(shè)計(jì)采用4*4鍵盤控制通過程序產(chǎn)生高八度和低八度音律,要考慮到軟件和硬件的匹配以及硬件電路焊接時(shí)的排版問題,否則建會(huì)帶來(lái)不必要的焊接麻煩,在編程序時(shí)要注意仿真與實(shí)際電路中可能的不符,&l

16、t;/p><p><b>  2.2 硬件部分</b></p><p>  本設(shè)計(jì)硬件電路共由以下幾部分構(gòu)成:矩陣鍵盤部分;揚(yáng)聲器部分;AT89S52主控電路部分;獨(dú)立按鍵部分。</p><p>  2.2.1 矩陣鍵盤部分</p><p>  設(shè)計(jì)中采用AT89S51的并行口P3接4×4矩陣鍵盤,以P3.0-P3

17、.3作輸入線,以P3.4-P3.7作輸出線。每個(gè)按鍵有它的行值和列值,行值和列值的組合就是識(shí)別這個(gè)按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和CPU通信。每個(gè)按鍵的狀態(tài)同樣需變成數(shù)字量“0”和“1”,開關(guān)的一端(列線)通過電阻接VCC,而接地是通過程序輸出數(shù)字“0”實(shí)現(xiàn)的。鍵盤處理程序的任務(wù)是:確定有無(wú)鍵按下,判斷哪一個(gè)鍵按下,鍵的功能是什么;還要消除按鍵在閉合或斷開時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼,使按鍵逐行動(dòng)態(tài)接地,另一個(gè)

18、并行口輸入按鍵狀態(tài),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按鍵,通過軟件查表,查出該鍵的功能,在本程序中,當(dāng)程序檢測(cè)到有鍵按下時(shí),將查表使按鍵值與預(yù)存數(shù)據(jù)表中數(shù)據(jù)對(duì)應(yīng),并調(diào)用發(fā)聲程序。</p><p>  圖2.1 矩陣鍵盤的連接</p><p>  2.2.2 揚(yáng)聲器接口電路部分</p><p>  仿真中的揚(yáng)聲器一段接CPU的P2^4口,另一端接高電平。當(dāng)P2

19、^4口有電平變化時(shí),揚(yáng)聲器被驅(qū)動(dòng)發(fā)聲。而在實(shí)物制作中,這樣是難以實(shí)現(xiàn)功能的,需要增加模擬電路以除去多余的干擾信號(hào)。也可選用集成芯片LM386作為揚(yáng)聲器的驅(qū)動(dòng)芯片。若使用LM386驅(qū)動(dòng)揚(yáng)聲器,通過相應(yīng)的模擬電路的設(shè)計(jì),還可以實(shí)現(xiàn)音量的調(diào)節(jié)。不過,在平時(shí)做實(shí)物時(shí),我們一般用一個(gè)三極管作為放大器,這次我采用的是8050</p><p>  圖2.2揚(yáng)聲器接口電路</p><p><b>

20、;  3 軟件設(shè)計(jì)</b></p><p>  本設(shè)計(jì)使用Protues仿真軟件進(jìn)行仿真,在程序設(shè)計(jì)部分,包括鍵盤掃描程序,音樂發(fā)聲程序。程序見附錄1。</p><p>  4*4矩陣鍵盤是由CPU控制I/O口來(lái)實(shí)現(xiàn)掃描的。具體程序見附錄二主程序鍵盤掃描部分。鍵盤掃描程序流程圖如圖2.4。</p><p>  程序首先給P3口賦值,然后讀取P3的狀態(tài),將

21、讀取的狀態(tài)值同所賦值相比較,如果二者不相同,則說明有鍵按下,子程序?qū)存I值返回主程序;否則,說明沒有鍵按下,程序繼續(xù)進(jìn)行下一次掃描。 </p><p>  本系統(tǒng)的軟件流程圖如下</p><p>  圖 2.3 系統(tǒng)主程序流程</p><p><b>  鍵盤掃描程序流程圖</b></p><p>  圖 2.4鍵盤掃描

22、程序流程圖</p><p><b>  音樂發(fā)聲程序</b></p><p>  圖 2.5音樂發(fā)聲程序流程圖</p><p>  4 Proteus軟件仿真</p><p><b>  仿真電路圖</b></p><p><b>  5 課程設(shè)計(jì)體會(huì)</b&

23、gt;</p><p>  將程序燒入芯片,調(diào)試成功后,可任意彈奏自己想要的旋律。本設(shè)計(jì)通過制作電子琴,將幾個(gè)模塊很好的融合,對(duì)使用單片機(jī)設(shè)計(jì)簡(jiǎn)易電子琴進(jìn)行了分析,并了解了基于單片機(jī)電子琴統(tǒng)硬件組成。利用單片機(jī)產(chǎn)生不同頻率來(lái)獲得我們要求的音階,最終可隨意彈奏想要表達(dá)的音樂。說明一首音樂是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,于是我們可以利

24、用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來(lái)產(chǎn)生這樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系弄正確即可,然后我們利用功放電路來(lái)將音樂聲音放大。</p><p>  遇到的問題:在剛剛焊接好后,程序燒入芯片后,發(fā)現(xiàn)并不發(fā)聲,經(jīng)檢查才發(fā)現(xiàn)是對(duì)鍵盤沒看清楚,將鍵盤接亂了,另外,在硬件電路修改好后,發(fā)現(xiàn)每次按鍵時(shí)會(huì)引起蜂鳴器一直響,再按鍵時(shí)有可能會(huì)消失,經(jīng)檢查后知道是再每按鍵件程序后蜂鳴器對(duì)應(yīng)參值沒有直接置零。</

25、p><p>  總之,這是一次動(dòng)手能力的鍛煉,也是一次單片機(jī)知識(shí)的再回顧,還是對(duì)自己細(xì)心以及耐心能力的考察。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 賈立新、王涌.電子系統(tǒng)設(shè)計(jì)與實(shí)踐[M],清華大學(xué)出版社,2008年2月版; [2] 陶春鳴、陳享成、甕嘉民.單片機(jī)使用技術(shù)[M],人民郵電出版社,2008年4月版;

26、 [3] 余發(fā)山.單片機(jī)原理及應(yīng)用技術(shù)[M],中國(guó)礦業(yè)大學(xué)出版社,2003年12月版; [4] 李光飛.單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo)[M], 航空航天大學(xué)出版社,2004年9月版; [5] 余永權(quán).ATMEL89 系列單片機(jī)[M],北京航空航天大學(xué)出版社,2002年4 月版; [6] 胡宴如,耿蘇燕.模擬電子技術(shù)[M],高等教育出版社,2007年12月版; [7] 趙潤(rùn)林,張迎輝.單片機(jī)原理與應(yīng)用教程[M],北京大學(xué)出版社,2007

27、年1月版; [8] 馬淑華、王鳳文.單片機(jī)原理與接口技術(shù)[M],北京郵電大學(xué)出版社,2005年10月版; [9] 李建忠.單片機(jī)原理及應(yīng)用[M],西安電子科技大學(xué)出版社,2002 年5月版; [10] 楊子文.單片機(jī)原理及應(yīng)用[M],西安電子科技大學(xué)出版社,2006 年4月版</p><p><b>  附錄1 源程序代碼</b></p><p>  #in

28、clude<reg51.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  uint key,i,j,time,m,k;</p><p>  uchar temp;</p><p>  

29、uchar STH0,STL0,STH1,STL1;</p><p>  sbit sw=P2^7;</p><p>  sbit speaker=P2^4;</p><p>  sbit P37=P3^7;</p><p>  sbit P36=P3^6;</p><p>  sbit P35=P3^5;</p

30、><p>  sbit P34=P3^4;</p><p>  //月亮代表我的心數(shù)據(jù)表</p><p>  code unsigned char sszymmh[]={ 0,2,1, 5,1,1, 1,2,3, 3,2,1, 5,2,3, 1,2,1, 7,1,3, </p><p>  3,2,1, 5,2,2, 0,2,1, 5,2,1,

31、6,2,1, 7,2,2, 1,3,3, </p><p>  6,2,1, 6,2,1, 5,2,1, 5,2,5, 3,2,1, 2,2,1, 1,2,3, </p><p>  1,2,1, 1,2,2, 3,2,1, 2,2,1, 1,2,3, 1,2,1, 1,2,2, </p><p>  2,2,1, 3,2,1,2,2,2, 1,2,1,6,1,2,

32、 2,2,1, 3,2,1, 2,2,5, </p><p><b>  };</b></p><p>  // 音階頻率表高八位</p><p>  code unsigned char FREQH[]={</p><p>  0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, </p>

33、<p>  0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i</p><p>  0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,</p><p>  0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,</p><p><b>  } ;&

34、lt;/b></p><p>  // 音階頻率表低八位</p><p>  code unsigned char FREQL[]={</p><p>  0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,</p><p>  0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,

35、2,3,4,5,6,7,8,i</p><p>  0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, </p><p>  0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,</p><p><b>  };</b></p><p>  unsigned int code tab[]={

36、 64103,64260,64400, 64524,64580,64684,64777,</p><p>  64820,64898,64968,65030, 65058,65110,65157,65178,65217};</p><p>  void key_music()</p><p><b>  {</b></p><

37、;p>  unsigned char tmp;</p><p><b>  P3=0xff;</b></p><p><b>  P34=0;</b></p><p><b>  temp=P3;</b></p><p>  temp=temp&0x0f;<

38、/p><p>  tmp = temp;</p><p>  if(temp!=0x0f)</p><p><b>  {</b></p><p>  for(i=50;i>0;i--)</p><p>  for(j=200;j>0;j--); </p><p>

39、<b>  temp=P3;</b></p><p>  temp=temp&0x0f;</p><p>  //(temp!=0x0f)</p><p>  if(temp==tmp)</p><p><b>  {</b></p><p><b>  t

40、emp=P3;</b></p><p>  temp=temp&0x0f;</p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0x0e:</p><p><b>  key=0;</b>&l

41、t;/p><p><b>  break;</b></p><p>  case 0x0d:</p><p><b>  key=1;</b></p><p><b>  break;</b></p><p>  case 0x0b:</p>

42、<p><b>  key=2;</b></p><p><b>  break;</b></p><p>  case 0x07:</p><p><b>  key=3;</b></p><p><b>  break;</b></p&

43、gt;<p><b>  }</b></p><p>  //speaker=~speaker;</p><p>  STH1=tab[key]/256;</p><p>  STL1=tab[key]%256;</p><p><b>  temp=P3;</b></p>

44、<p>  temp=temp & 0x0f; </p><p>  while(temp!=0x0f)</p><p><b>  {TR0=1;</b></p><p><b>  temp=P3;</b></p><p>  temp=temp &

45、amp; 0x0f; </p><p><b>  }</b></p><p><b>  TR0=0;</b></p><p>  speaker = 0;</p><p><b>  }</b></p><p><b

46、>  }</b></p><p><b>  P3=0xff;</b></p><p><b>  P35=0;</b></p><p><b>  temp=P3;</b></p><p>  temp=temp&0x0f;</p>&

47、lt;p>  tmp = temp;</p><p>  if(temp!=0x0f)</p><p><b>  {</b></p><p>  for(i=50;i>0;i--)</p><p>  for(j=200;j>0;j--); </p><p><b>

48、  temp=P3;</b></p><p>  temp=temp&0x0f;</p><p>  //(temp!=0x0f)</p><p>  if(temp==tmp)</p><p><b>  {</b></p><p><b>  temp=P3;&l

49、t;/b></p><p>  temp=temp&0x0f;</p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0x0e:</p><p><b>  key=4;</b></p>

50、<p><b>  break;</b></p><p>  case 0x0d:</p><p><b>  key=5;</b></p><p><b>  break;</b></p><p>  case 0x0b:</p><p>

51、<b>  key=6;</b></p><p><b>  break;</b></p><p>  case 0x07:</p><p><b>  key=7;</b></p><p><b>  break;</b></p><

52、p><b>  }</b></p><p>  //speaker=~speaker;</p><p>  STH1=tab[key]/256;</p><p>  STL1=tab[key]%256;</p><p><b>  temp=P3;</b></p><p&g

53、t;  temp=temp & 0x0f; </p><p>  while(temp!=0x0f)</p><p><b>  {TR0=1;</b></p><p><b>  temp=P3;</b></p><p>  temp=temp & 0x0f

54、; </p><p><b>  }</b></p><p><b>  TR0=0;</b></p><p>  speaker = 0;</p><p><b>  }</b></p><p><b>  }&l

55、t;/b></p><p><b>  P3=0xff;</b></p><p><b>  P36=0;</b></p><p><b>  temp=P3;</b></p><p>  temp=temp&0x0f;</p><p> 

56、 tmp = temp;</p><p>  if(temp!=0x0f)</p><p><b>  {</b></p><p>  for(i=50;i>0;i--)</p><p>  for(j=200;j>0;j--); </p><p><b>  temp=P3

57、;</b></p><p>  temp=temp&0x0f;</p><p>  //(temp!=0x0f)</p><p>  if(temp==tmp)</p><p><b>  {</b></p><p><b>  temp=P3;</b>&

58、lt;/p><p>  temp=temp&0x0f;</p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0x0e:</p><p><b>  key=8;</b></p><p>

59、;<b>  break;</b></p><p>  case 0x0d:</p><p><b>  key=9;</b></p><p><b>  break;</b></p><p>  case 0x0b:</p><p><b>

60、  key=10;</b></p><p><b>  break;</b></p><p>  case 0x07:</p><p><b>  key=11;</b></p><p><b>  break;</b></p><p>&l

61、t;b>  }</b></p><p>  //speaker=~speaker;</p><p>  STH1=tab[key]/256;</p><p>  STL1=tab[key]%256;</p><p><b>  temp=P3;</b></p><p>  tem

62、p=temp & 0x0f; </p><p>  while(temp!=0x0f)</p><p><b>  {</b></p><p><b>  TR0=1;</b></p><p><b>  temp=P3;</b></p&g

63、t;<p>  temp=temp & 0x0f; </p><p><b>  }</b></p><p><b>  TR0=0;</b></p><p>  speaker = 0;</p><p><b>  }</b>

64、</p><p><b>  }</b></p><p><b>  P3=0xff;</b></p><p><b>  P37=0;</b></p><p><b>  temp=P3;</b></p><p>  temp=t

65、emp&0x0f;</p><p>  tmp = temp;</p><p>  if(temp!=0x0f)</p><p><b>  {</b></p><p>  for(i=50;i>0;i--)</p><p>  for(j=100;j>0;j--); <

66、/p><p><b>  temp=P3;</b></p><p>  temp=temp & 0x0f;</p><p>  //(temp!=0x0f)</p><p>  if(temp==tmp)</p><p><b>  {</b></p>&l

67、t;p><b>  temp=P3;</b></p><p>  temp=temp&0x0f;</p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0x0e:</p><p><b> 

68、 key=12;</b></p><p><b>  break;</b></p><p>  case 0x0d:</p><p><b>  key=13;</b></p><p><b>  break;</b></p><p>  c

69、ase 0x0b:</p><p><b>  key=14;</b></p><p><b>  break;</b></p><p>  case 0x07:</p><p><b>  key=15;</b></p><p><b>  

70、break;</b></p><p><b>  }</b></p><p>  //speaker=~speaker;</p><p>  STH1=tab[key]/256;</p><p>  STL1=tab[key]%256;</p><p><b>  temp=

71、P3;</b></p><p>  temp=temp & 0x0f; </p><p>  while(temp!=0x0f)</p><p><b>  {TR0=1;</b></p><p><b>  temp=P3;</b></p>

72、<p>  temp=temp & 0x0f; </p><p><b>  }</b></p><p><b>  TR0=0;</b></p><p>  speaker = 0;</p><p><b>  }</b><

73、;/p><p><b>  }</b></p><p><b>  }</b></p><p>  void timer0(void) interrupt 1 using 0</p><p><b>  {</b></p><p><b>  if

74、(sw==1)</b></p><p><b>  {</b></p><p><b>  TH0=STH1;</b></p><p><b>  TL0=STL1;</b></p><p><b>  }</b></p>&l

75、t;p><b>  else </b></p><p><b>  {</b></p><p><b>  TH0=STH0;</b></p><p><b>  TL0=STL0;</b></p><p><b>  }</b&g

76、t;</p><p>  speaker=~speaker;</p><p><b>  }</b></p><p>  void delay(unsigned char t)</p><p><b>  {</b></p><p>  unsigned char t1;&

77、lt;/p><p>  unsigned long t2;</p><p>  for(t1=0;t1<t;t1++)</p><p>  { </p><p>  for(t2=0;t2<8000;t2++)</p><p><b>  {

78、</b></p><p><b>  ;</b></p><p>  } </p><p><b>  }</b></p><p><b>  TR0=0;</b></p><p>

79、;<b>  }</b></p><p>  void song()</p><p><b>  {</b></p><p><b>  TH0=STH0;</b></p><p><b>  TL0=STL0;</b></p><p&

80、gt;<b>  TR0=1;</b></p><p>  delay(time);</p><p><b>  }</b></p><p>  void music(void)</p><p><b>  {</b></p><p>  unsigne

81、d int cnt;</p><p><b>  m=0;</b></p><p><b>  time=1;</b></p><p><b>  sw=1;</b></p><p>  cnt = sizeof(sszymmh)/sizeof(char);</p>

82、<p>  while(time&&sw==0)</p><p><b>  {</b></p><p><b>  if(sw)</b></p><p>  {i=0;continue;}</p><p><b>  else</b></p

83、><p><b>  {</b></p><p>  k=sszymmh[m]+7*sszymmh[m+1]-1;</p><p>  STH0=FREQH[k];</p><p>  STL0=FREQL[k];</p><p>  time=sszymmh[m+2];</p><

84、;p>  song();m=m+3;</p><p>  if(m > cnt) break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  speaker = 0;</p><p><b>  }&

85、lt;/b></p><p>  void main()</p><p><b>  {</b></p><p>  TMOD=0x01;</p><p><b>  ET0=1;</b></p><p><b>  TF0 = 1;</b>&l

86、t;/p><p><b>  EA=1;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  if(sw==1)</b></p><p>  key_musi

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論