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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  單片機(jī)技術(shù)及系統(tǒng)設(shè)計(jì)</p><p><b>  課程設(shè)計(jì)</b></p><p>  題 目: 基于單片機(jī)的電子琴制作 </p><p>  專 業(yè): 自動(dòng)化 </p><p>  班 級(jí):

2、 </p><p>  姓 名: </p><p>  學(xué) 號(hào) </p><p>  摘要: 隨著電子技術(shù)的發(fā)展,尤其是大規(guī)模集成電路的出現(xiàn),給人類生活帶來(lái)了根本性的改變。本文首先描述系統(tǒng)硬件工作原理,并附以結(jié)構(gòu)框圖加以說(shuō)明。著重介紹了本系統(tǒng)所應(yīng)用的各硬件接口技術(shù)和各個(gè)接口模塊的

3、功能及工作過(guò)程,并且按照設(shè)計(jì)要求利用單片機(jī)設(shè)計(jì)微型電子琴。完成電路原理圖、程序,并進(jìn)行相關(guān)分析。</p><p>  關(guān)鍵詞:?jiǎn)纹瑱C(jī),電子琴,程序</p><p><b>  一、設(shè)計(jì)主要內(nèi)容:</b></p><p> ?。?)鍵盤矩陣識(shí)別。即矩陣掃描,顯示當(dāng)前按鍵。</p><p>  (2)不同頻率音符播放,可以通

4、過(guò)按鍵控制16種發(fā)音。</p><p> ?。?)可彈奏想要表達(dá)的音樂(lè);</p><p> ?。?)該電子琴包含1首示例音樂(lè),接通電源可播放示例音樂(lè)。</p><p><b>  二、設(shè)計(jì)要求</b></p><p>  (1)按設(shè)計(jì)指標(biāo)進(jìn)行電路設(shè)計(jì);</p><p> ?。?)列出音階與單片機(jī)定

5、時(shí)器輸出頻率關(guān)系表格;</p><p> ?。?)制作符合設(shè)計(jì)指標(biāo)的硬件電路。</p><p><b>  三、設(shè)計(jì)說(shuō)明</b></p><p>  單片微型計(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)

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

7、計(jì)簡(jiǎn)易電子琴進(jìn)行了分析,并介紹了基于單片機(jī)電子琴統(tǒng)硬件組成。利用單片機(jī)產(chǎn)生不同頻率來(lái)獲得我們要求的音階,最終可隨意彈奏想要表達(dá)的音樂(lè)。并且本文分別從原理圖,主要芯片,各模塊原理及各模塊的程序的調(diào)試來(lái)詳細(xì)闡述。。</p><p>  四、設(shè)計(jì)簡(jiǎn)單原理介紹</p><p>  一首音樂(lè)是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音

8、樂(lè)了,當(dāng)然對(duì)于單片機(jī)來(lái)產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來(lái)產(chǎn)生這樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系弄正確即可。</p><p>  若要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2,即為半周期的時(shí)間。利用定時(shí)器計(jì)時(shí)半周期時(shí)間,每當(dāng)計(jì)時(shí)終止后就將P1.0反相,然后重復(fù)計(jì)時(shí)再反相。就可在P1.0引腳上得到此頻率的脈沖。</p>&l

9、t;p>  利用AT89C51的內(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反相,就可得到中音DO(523Hz)。</p><p>  計(jì)數(shù)脈沖值與頻率的關(guān)系式(如式3-1所示)是:</p><p&

10、gt;  N=fi÷2÷fr 3-1</p><p>  式中,N是計(jì)數(shù)值;fi是機(jī)器頻率(晶體振蕩器為12MHz時(shí),其頻率為1MHz);fr是想要產(chǎn)生的頻率。</p><p>  其計(jì)數(shù)初值T的求法如下:</p><p>  T=65536-N=65536-fi÷2÷fr<

11、;/p><p>  例如:設(shè)K=65536,fi=1MHz,DO(523Hz)的計(jì)數(shù)值。</p><p>  T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/f</p><p>  DO的T=65536-500000/523=64580</p><

12、p>  單片機(jī)12MHZ晶振,高中低音符與計(jì)數(shù)T0相關(guān)的計(jì)數(shù)值如表4-2所示</p><p>  表3-2 音符頻率表</p><p>  我們要為這個(gè)音符建立一個(gè)表格,單片機(jī)通過(guò)查表的方式來(lái)獲得相應(yīng)的數(shù)據(jù) 低音0-19之間,中音在20-39之間,高音在40-59之間 TABLE: </p><p>  DW 0,63628,63835,64

13、021,64103,64260,64400,64524,0,0</p><p>  DW 0,63731,63928,0,64185,64331,64463,0,0,0</p><p>  DW 0,64580,64684,64777,64820,64898,64968,65030,0,0</p><p>  DW 0,64633,64732,0,64860,649

14、34,64994,0,0,0</p><p>  DW 0,65058,65110,65157,65178,65217,65252,65283,0,0</p><p>  DW 0,65085,65134,0,65198,65235,65268,0,0,0</p><p><b>  DW 0 </b></p><p&

15、gt;  在這個(gè)程序中,彈奏音樂(lè)的程序是用定時(shí)/計(jì)數(shù)器T0來(lái)完成的,播放音樂(lè)程序則是用定時(shí)/計(jì)數(shù)器T1來(lái)完成的。</p><p>  五、軟件總體方案及設(shè)計(jì)流程</p><p> ?。?)鍵盤掃描程序:</p><p>  檢測(cè)是否有鍵按下,有鍵按下則記錄按下鍵的鍵值,并跳轉(zhuǎn)至功能轉(zhuǎn)移程序;無(wú)鍵按下,則返回鍵盤掃描程序繼續(xù)檢測(cè)</p><p>

16、; ?。?)功能轉(zhuǎn)移程序:</p><p>  對(duì)檢測(cè)到得按鍵值進(jìn)行判斷,是琴鍵則跳轉(zhuǎn)至琴鍵處理程序,是功能鍵則跳轉(zhuǎn)至相應(yīng)的功能程序,我們?cè)O(shè)計(jì)的功能程序有兩種,即音色調(diào)節(jié)功能和自動(dòng)播放樂(lè)曲功能</p><p> ?。?)琴鍵處理程序:</p><p>  根據(jù)檢測(cè)到得按鍵值,查詢音律表,給計(jì)時(shí)器賦值,使發(fā)出相應(yīng)頻率的聲音</p><p>  

17、(4)自動(dòng)播放歌曲程序:</p><p>  檢測(cè)到按鍵按下的是自動(dòng)播放歌曲功能鍵后執(zhí)行該程序,電子琴會(huì)自動(dòng)播放事先已經(jīng)存放好的歌曲,歌曲播放完畢之后自動(dòng)返回至鍵盤掃描程序,繼續(xù)等待是否有鍵按下</p><p><b>  程序簡(jiǎn)易流程圖</b></p><p><b>  否</b></p><p&g

18、t;<b>  是</b></p><p><b>  否</b></p><p><b>  是</b></p><p><b>  彈奏程序流程圖</b></p><p>  自動(dòng)播放歌曲程序流程圖</p><p>  Y

19、 </p><p><b>  N</b></p><p>  Y </p><p><b>  Y</b></p><p><b>  N</b></p><p>  六、硬件總體方

20、案及說(shuō)明</p><p>  51單片機(jī)P1口通過(guò)連接4*4的矩陣鍵盤,作為琴鍵鍵盤;P2.0接播放音樂(lè)鍵;P3.0口接喇叭,通過(guò)執(zhí)行相應(yīng)的功能程序使電子琴發(fā)出不同音色的聲音。</p><p><b>  (一)芯片介紹:</b></p><p>  在本次電子琴設(shè)計(jì)中,我們組成員單片機(jī)芯片選用了AT89C51芯片,而89C51系列的兼容性也比

21、較好。</p><p>  P3口也可作為AT89C51的一些特殊功能口,如下表所示:</p><p>  P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。</p><p><b> ?。ǘ┯布泳€:</b></p><p> ?。?)利用P1口為按鍵接入口,形成4×4組成16個(gè)按鍵矩陣,設(shè)計(jì)成16個(gè)音,下圖

22、所示:</p><p> ?。?)p3.0口音頻輸出,接一個(gè)喇叭。</p><p> ?。?)復(fù)位電路我們本來(lái)在方案選擇的時(shí)候有兩種選擇的,上電復(fù)位和按扭復(fù)位,上電復(fù)位是利用電容充電來(lái)實(shí)現(xiàn)的,而按扭復(fù)位是電源對(duì)外節(jié)電容的充電使RST為高電平,復(fù)位松開(kāi)后,電容通過(guò)下拉電阻放電,使RST恢復(fù)低電平。為了制作軟件的方便我們還是選擇用按扭復(fù)位,因?yàn)樗容^直觀。</p><p&g

23、t; ?。?)電路設(shè)計(jì)圖如下:</p><p>  七、設(shè)計(jì)儀器、設(shè)備和材料清單</p><p><b>  主要儀器設(shè)備:</b></p><p>  個(gè)人計(jì)算機(jī)和相關(guān)的軟件</p><p>  主要元器件: 獨(dú)立按鍵16個(gè)</p><p>  單片機(jī)芯片AT80C51一片</p>

24、<p><b>  12MHz晶振一個(gè)</b></p><p>  S8550三極管一個(gè)</p><p><b>  不同阻值電阻數(shù)個(gè)</b></p><p><b>  開(kāi)關(guān)一個(gè)</b></p><p><b>  USB電源插口一個(gè)</b>

25、;</p><p><b>  喇叭一個(gè)</b></p><p>  10uF、30pF電容數(shù)個(gè)</p><p><b>  電路板一塊</b></p><p><b>  電烙鐵一個(gè)等</b></p><p><b>  八、設(shè)計(jì)源程序<

26、;/b></p><p>  BUFF EQU 30H</p><p>  STH0 EQU 31H</p><p>  STL0 EQU 32H</p><p>  TEMP EQU 33H</p><p><b>  ORG 00H</b>

27、;</p><p>  LJMP START</p><p><b>  ORG 0BH</b></p><p>  LJMP INT_T0</p><p><b>  ORG 001BH</b></p><p><b>  LJMP TIM1</b>&

28、lt;/p><p>  START: MOV TMOD,#01H ;設(shè)置T0工作方式</p><p><b>  SETB ET0</b></p><p>  SETB EA ;啟動(dòng)T0</p><p><b>  MAIN: </b></p><p

29、>  MOV P1,#0FFH ;P1全置1</p><p>  CLR P1.4 ;開(kāi)始掃描第一行</p><p><b>  MOV A,P1</b></p><p>  ANL A,#0FH ;屏蔽高四位</p><p>  XRL A,#0FH

30、 ;低位 有”0”則有鍵按下,否則無(wú)</p><p>  JZ KKEY1 ; 判斷有無(wú)鍵按下,有則繼續(xù),沒(méi)有則轉(zhuǎn)移到KKEY1</p><p>  LCALL DELY10MS ;調(diào)用延時(shí)程序</p><p>  MOV A,P1 ;重新開(kāi)始判斷有無(wú)鍵按下</p><p>  ANL A,#0FH&l

31、t;/p><p>  XRL A,#0FH</p><p><b>  JZ KKEY1</b></p><p><b>  MOV A,P1</b></p><p>  ANL A,#0FH ;求鍵值</p><p>  CJNE A,#0EH,CKK1 ;相等說(shuō)明

32、該行第一列有鍵按下,不等則轉(zhuǎn)移</p><p>  MOV BUFF,#0 ;該鍵值為0</p><p>  LJMP NDK1 ;跳到NDK1執(zhí)行相應(yīng)的功能程序</p><p>  CKK1: CJNE A,#0DH,KK2;相等說(shuō)明該行第二列有鍵按下,不等則轉(zhuǎn)移</p><p>  MOV BUFF,#1;該

33、鍵值為1</p><p>  LJMP NDK1;跳到NDK1執(zhí)行相應(yīng)的功能程序</p><p>  KK2: CJNE A,#0BH,KK3;相等說(shuō)明該行第三列有鍵按下,不等則轉(zhuǎn)移</p><p>  MOV BUFF,#2;該鍵值為2</p><p>  LJMP NDK1;跳到NDK1執(zhí)行相應(yīng)的功能程序</p>

34、<p>  KK3: CJNE A,#07H,KK4;相等說(shuō)明該行第四列有鍵按下,不等則轉(zhuǎn)移</p><p>  MOV BUFF,#3;該鍵值為2</p><p>  LJMP NDK1;跳到NDK1執(zhí)行相應(yīng)的功能程序</p><p>  KK4: NOP</p><p>  NDK1:

35、 MOV A,BUFF </p><p>  MOV DPTR,#TABLE</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P0,A</b></p><p>  MOV A,BUFF</p><p><b>  MOV B,#2</b&

36、gt;</p><p><b>  MUL AB</b></p><p>  MOV TEMP,A</p><p>  MOV DPTR,#TABLE1</p><p>  MOVC A,@A+DPTR</p><p>  MOV STH0,A</p><p><b&

37、gt;  MOV TH0,A</b></p><p><b>  INC TEMP</b></p><p>  MOV A,TEMP</p><p>  MOVC A,@A+DPTR</p><p>  MOV STL0,A</p><p><b>  MOV TL0,A&l

38、t;/b></p><p><b>  SETB TR0</b></p><p>  NDK1A: MOV A,P1</p><p>  ANL A,#0FH</p><p>  XRL A,#0FH</p><p><b>  JNZ NDK1A</b>&

39、lt;/p><p><b>  CLR TR0</b></p><p><b>  KKEY1: </b></p><p>  MOV P1,#0FFH ;開(kāi)始掃描第二行</p><p><b>  CLR P1.5</b></p><p>&

40、lt;b>  MOV A,P1</b></p><p>  ANL A,#0FH</p><p>  XRL A,#0FH</p><p><b>  JZ KKEY2</b></p><p>  LCALL DELY10MS</p><p><b>  MOV A,P

41、1</b></p><p>  ANL A,#0FH</p><p>  XRL A,#0FH</p><p><b>  JZ KKEY2</b></p><p><b>  MOV A,P1</b></p><p>  ANL A,#0FH</p>

42、<p>  CJNE A,#0EH,KK5</p><p>  MOV BUFF,#4</p><p><b>  LJMP NDK2</b></p><p>  KK5: CJNE A,#0DH,KK6</p><p>  MOV BUFF,#5</p><p>&l

43、t;b>  LJMP NDK2</b></p><p>  KK6: CJNE A,#0BH,KK7</p><p>  MOV BUFF,#6</p><p><b>  LJMP NDK2</b></p><p>  KK7: CJNE A,#07H,KK8</p&

44、gt;<p>  MOV BUFF,#7</p><p><b>  LJMP NDK2</b></p><p>  KK8: NOP</p><p><b>  NDK2: </b></p><p>  MOV A,BUFF</p><p>

45、;  MOV DPTR,#TABLE</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P0,A</b></p><p>  MOV A,BUFF</p><p><b>  MOV B,#2</b></p><p><b>  

46、MUL AB</b></p><p>  MOV TEMP,A</p><p>  MOV DPTR,#TABLE1</p><p>  MOVC A,@A+DPTR</p><p>  MOV STH0,A</p><p><b>  MOV TH0,A</b></p>

47、<p><b>  INC TEMP</b></p><p>  MOV A,TEMP</p><p>  MOVC A,@A+DPTR</p><p>  MOV STL0,A</p><p><b>  MOV TL0,A</b></p><p><b&

48、gt;  SETB TR0</b></p><p>  NDK2A: MOV A,P1</p><p>  ANL A,#0FH</p><p>  XRL A,#0FH</p><p><b>  JNZ NDK2A</b></p><p><b>  CLR

49、TR0</b></p><p><b>  KKEY2:</b></p><p>  MOV P1,#0FFH ;開(kāi)始掃描第三行</p><p><b>  CLR P1.6</b></p><p><b>  MOV A,P1</b></p>&

50、lt;p>  ANL A,#0FH</p><p>  XRL A,#0FH</p><p><b>  JZ KKEY3</b></p><p>  LCALL DELY10MS</p><p><b>  MOV A,P1</b></p><p>  ANL A,#

51、0FH</p><p>  XRL A,#0FH</p><p><b>  JZ KKEY3</b></p><p><b>  MOV A,P1</b></p><p>  ANL A,#0FH</p><p>  CJNE A,#0EH,KK9</p>&

52、lt;p>  MOV BUFF,#8</p><p><b>  LJMP NDK3</b></p><p>  KK9: CJNE A,#0DH,KK10</p><p>  MOV BUFF,#9</p><p><b>  LJMP NDK3</b></p>

53、<p>  KK10: CJNE A,#0BH,KK11</p><p>  MOV BUFF,#10</p><p><b>  LJMP NDK3</b></p><p>  KK11: CJNE A,#07H,KK12</p><p>  MOV BUFF,#11</p>

54、;<p><b>  LJMP NDK3</b></p><p>  KK12: NOP</p><p><b>  NDK3:</b></p><p>  MOV A,BUFF</p><p>  MOV DPTR,#TABLE</p><p> 

55、 MOVC A,@A+DPTR</p><p><b>  MOV P0,A</b></p><p>  MOV A,BUFF</p><p><b>  MOV B,#2</b></p><p><b>  MUL AB</b></p><p>  M

56、OV TEMP,A</p><p>  MOV DPTR,#TABLE1</p><p>  MOVC A,@A+DPTR</p><p>  MOV STH0,A</p><p><b>  MOV TH0,A</b></p><p><b>  INC TEMP</b>&

57、lt;/p><p>  MOV A,TEMP</p><p>  MOVC A,@A+DPTR</p><p>  MOV STL0,A</p><p><b>  MOV TL0,A</b></p><p><b>  SETB TR0</b></p><p

58、>  NDK3A: MOV A,P1</p><p>  ANL A,#0FH</p><p>  XRL A,#0FH</p><p><b>  JNZ NDK3A</b></p><p><b>  CLR TR0</b></p><p><b&

59、gt;  KKEY3:</b></p><p>  MOV P1,#0FFH;開(kāi)始掃描第四行</p><p><b>  CLR P1.7</b></p><p><b>  MOV A,P1</b></p><p>  ANL A,#0FH</p><p>  

60、XRL A,#0FH</p><p><b>  JZ KKEY4</b></p><p>  LCALL DELY10MS</p><p><b>  MOV A,P1</b></p><p>  ANL A,#0FH</p><p>  XRL A,#0FH</p&

61、gt;<p><b>  JZ KKEY4</b></p><p><b>  MOV A,P1</b></p><p>  ANL A,#0FH</p><p>  CJNE A,#0EH,KK13</p><p>  MOV BUFF,#12</p><p>

62、;<b>  LJMP NDK4</b></p><p>  KK13: CJNE A,#0DH,KK14</p><p>  MOV BUFF,#13</p><p><b>  LJMP NDK4</b></p><p>  KK14: CJNE A,#0BH,KK15&

63、lt;/p><p>  MOV BUFF,#14</p><p><b>  LJMP NDK4</b></p><p>  KK15: CJNE A,#07H,KK16</p><p>  MOV BUFF,#15</p><p><b>  LJMP NDK4</b&g

64、t;</p><p>  KK16: NOP</p><p><b>  NDK4: </b></p><p>  MOV A,BUFF</p><p>  MOV DPTR,#TABLE</p><p>  MOVC A,@A+DPTR</p><p><b

65、>  MOV P0,A</b></p><p>  MOV A,BUFF</p><p><b>  MOV B,#2</b></p><p><b>  MUL AB</b></p><p>  MOV TEMP,A</p><p>  MOV DPTR,

66、#TABLE1</p><p>  MOVC A,@A+DPTR</p><p>  MOV STH0,A</p><p><b>  MOV TH0,A</b></p><p><b>  INC TEMP</b></p><p>  MOV A,TEMP</p>

67、;<p>  MOVC A,@A+DPTR</p><p>  MOV STL0,A</p><p><b>  MOV TL0,A</b></p><p><b>  SETB TR0</b></p><p>  NDK4A: MOV A,P1</p>&l

68、t;p>  ANL A,#0FH</p><p>  XRL A,#0FH</p><p><b>  JNZ NDK4A</b></p><p><b>  CLR TR0</b></p><p>  KKEY4: MOV A,#0FFH</p><p><

69、;b>  MOV P2,A </b></p><p><b>  MOV A,P2</b></p><p>  JB ACC.0, KKEY5</p><p>  LCALL DELY10MS</p><p><b>  MOV A,P2</b></p><p&

70、gt;  JB ACC.0, KKEY5</p><p>  MOV BUFF,#16</p><p>  LJMP START22</p><p>  START22: MOV A,BUFF</p><p>  CJNE A,#16,KKEY5</p><p>  LJMP START2</p>

71、<p>  KKEY5: LJMP MAIN </p><p>  START2: MOV TMOD,#10H ;設(shè)T1在M1 </p><p>  MOV IE,#88H ;中斷使能 </p><p>  START0: MOV 30H,#00 ;取簡(jiǎn)譜碼指針 </p><p>  NEXT: MOV

72、A,30H ;簡(jiǎn)譜碼指針載入A </p><p>  MOV DPTR,#TAB ;至TAB取簡(jiǎn)譜碼 </p><p>  MOVC A,@A+DPTR ;</p><p>  MOV R2,A ;渠道的簡(jiǎn)譜碼暫存于R2 </p><p>  JZ END0 ;是否渠道00(結(jié)束碼) </p><p>  ANL A,

73、#0FH ;不是,則取低4位(節(jié)拍碼) </p><p>  MOV R5,A ;將節(jié)拍碼存入R5 </p><p>  MOV A,R2 ;將取到的簡(jiǎn)譜碼再載入A </p><p>  SWAP A ;高低4位交換 </p><p>  ANL A,#0FH ;取低4位(音符碼) </p><p>  JNZ SIN

74、G ;取到的音符碼是否為0? </p><p>  CLR TR1 ;開(kāi)始,則不發(fā)音 </p><p>  SJMP D1 ;跳至D1 </p><p>  SING: DEC A ;取到的音符碼減1(不含0) </p><p>  MOV 22H,A ;存入(22H) </p><p><b>

75、  RL A ;乘2 </b></p><p>  MOV DPTR,#TAB1 ;至TABLE1取相對(duì)的高位字節(jié)計(jì)數(shù)值 </p><p>  MOVC A,@A+DPTR ; </p><p>  MOV TH1,A ;取到的高位字節(jié)存入TH0 </p><p>  MOV 21H,A ;取到的高位字節(jié)存入(21H) </

76、p><p>  MOV A,22H ;在載入取到的音符碼 </p><p><b>  RL A ;乘2 </b></p><p>  INC A ;加1 </p><p>  MOVC A,@A+DPTR ;至TABLE1取相對(duì)的低位字節(jié)計(jì)數(shù)值 </p><p>  MOV TL1,A ;取到的低位

77、字節(jié)存入TL0 </p><p>  MOV 20H,A ;取到的低位字節(jié)存入(20H) </p><p>  SETB TR1 ;啟動(dòng)TIMER0</p><p>  D1: LCALL DELAY ;其本單位時(shí)間1/4拍187毫秒 </p><p>  INC 30H ;取簡(jiǎn)譜碼指針加1 </p><p

78、>  JMP NEXT ;取下一個(gè)簡(jiǎn)譜碼 </p><p>  END0: CLR TR1 ;停止TIMER0 </p><p>  LJMP MAIN ;重復(fù)循環(huán) </p><p>  TIM1: PUSH ACC ;將A的值暫存于堆棧 </p><p>  PUSH PSW ;將PSW的值暫存于堆棧 </

79、p><p>  MOV TL1,20H ;重設(shè)計(jì)數(shù)值 </p><p>  MOV TH1,21H ; </p><p>  CPL P3.0 ;將P1.0位反相,控制蜂鳴器發(fā)聲 </p><p>  POP PSW ;至堆棧取回PSW的值 </p><p>  POP ACC ;至堆棧取回A的值 </p>

80、<p><b>  RETI </b></p><p>  DELAY: MOV R7,#02 </p><p>  D2: MOV R4,#187 </p><p>  D3: MOV R3,#248 </p><p>  DJNZ R3,$ </p><p>  DJNZ R

81、4,D3 </p><p>  DJNZ R7,D2 </p><p><b>  RET </b></p><p><b>  DELY10MS:</b></p><p>  MOV R6,#10</p><p>  D10: MOV R7,#248</

82、p><p><b>  DJNZ R7,$</b></p><p>  DJNZ R6,D10</p><p><b>  RET</b></p><p><b>  INT_T0:</b></p><p>  MOV TH0,STH0</p>

83、<p>  MOV TL0,STL0</p><p><b>  CPL P3.0</b></p><p><b>  RETI</b></p><p>  TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H</p><p>  DB 7FH,6F

84、H,77H,7CH,39H,5EH,79H,71H</p><p>  TABLE1: DW 64021,64103,64260,64400</p><p>  DW 64524,64580,64684,64777</p><p>  DW 64820,64898,64968,65030</p><p>  DW 65058,65110

85、,65157,65178</p><p>  TAB1: ;決定節(jié)拍 </p><p>  DW 64260,64400,64521,64580 </p><p>  DW 64684,64777,64820,64898 </p><p>  DW 64968,65030,65058,65110 </p><p> 

86、 DW 65157,65178,65217 </p><p>  TAB: ;樂(lè)曲 </p><p>  DB 02H,82H,62H,52H,48H,02H,52H,32H,22H,18H </p><p>  DB 83H,91H,72H,62H,51H,61H,71H,61H,83H,61H </p><p>  DB 81H,51H

87、,61H,71H,61H,51H,46H,82H,32H,52H </p><p>  DB 22H,42H,16H,21H,41H,18H,0E4H,13H,21H,43H </p><p>  DB 51H,21H,41H,12H,83H,81H,61H,81H,58H,53H </p><p>  DB 61H,31H,22H,13H,21H,42H,52H,

88、0E2H,42H,21H </p><p>  DB 11H,91H,41H,18H,63H,81H,32H,52H,21H,41H </p><p>  DB 16H,0E4H,11H,21H,31H,51H,26H,11H,21H,43H </p><p>  DB 51H,82H,62H,52H,61H,51H,42H,21H,11H,0E4H </p

89、><p>  DB 44H,21H,41H,21H,11H,0E1H,11H,21H,41H,18H </p><p>  DB 61H,81H,51H,61H,51H,41H,32H,21H,41H,18H </p><p>  DB 08H,0H,04H ;曲子最后靜音5拍長(zhǎng)的時(shí)間 </p><p>  DB 00H ;樂(lè)曲結(jié)束 <

90、;/p><p><b>  END</b></p><p><b>  九、心得體會(huì):</b></p><p>  這次設(shè)計(jì)從軟件方面來(lái)講不是很難,程序相對(duì)長(zhǎng)一點(diǎn),但都是書本上所學(xué)的知識(shí),主要是中端及其服務(wù)程序的編寫。在protues上仿真,則起到很好的效果,因?yàn)樵骷际抢硐霠顟B(tài)的,但做出實(shí)物來(lái)卻沒(méi)有那么簡(jiǎn)單啦。經(jīng)過(guò)多次調(diào)試

91、、修改才得以出結(jié)果。將程序燒入芯片,調(diào)試成功后,可任意彈奏自己想要的旋律。同時(shí)可以播放一首示例歌曲,但是也有不足之處的,聲音雜音時(shí)而有點(diǎn)大,不穩(wěn)定。</p><p>  經(jīng)過(guò)本次課程設(shè)計(jì),我們比較好的把理論知識(shí)與實(shí)踐相結(jié)合,而我們?cè)谝脖敬卧O(shè)計(jì)中收獲不少。設(shè)計(jì)過(guò)程中,首先,對(duì)于匯編語(yǔ)言多了一層了解,其次,還有硬件的接線,還有8051芯片的引腳方面,都讓我們收獲不少。加強(qiáng)了自身的動(dòng)手能力。</p>&l

溫馨提示

  • 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. 眾賞文庫(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)論