2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩10頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  課</b></p><p><b>  程</b></p><p><b>  設(shè)</b></p><p><b>  計(jì)</b></p><p><b>  報(bào)</b></p><p

2、><b>  告</b></p><p><b>  一、概述:</b></p><p>  本系統(tǒng)設(shè)計(jì)制作一個(gè)可演奏的電子琴。綜合應(yīng)用了兩項(xiàng)設(shè)計(jì):</p><p> ?。?)能產(chǎn)生純音,了解音調(diào)高低的控制方法,用鍵盤(pán)代替電子琴的鍵盤(pán),控制演奏音樂(lè)。</p><p> ?。?)演奏一支樂(lè)曲(天

3、空之城)。</p><p>  那音階要怎么使用C51單片機(jī)產(chǎn)生呢?C51在這項(xiàng)工作中運(yùn)用它哪些資源呢?我們?cè)趺磳?shí)現(xiàn)一個(gè)按鍵對(duì)應(yīng)一個(gè)音階呢?</p><p><b>  二、系統(tǒng)描述:</b></p><p> ?。?)我們從初中開(kāi)始就知道,聲音是由振動(dòng)產(chǎn)生的,基本的這7個(gè)音階的頻率之間滿(mǎn)足某種數(shù)學(xué)關(guān)系由低到高排列的自然音,所以我們可以通過(guò)改變

4、單片機(jī)輸出頻率就可以得到不同的音階;(2)為了得到精確的頻率(周期的倒數(shù)),我們可以使用C51單片機(jī)定時(shí)中斷模塊。(3)通過(guò)判斷按鍵是否被按下,然后執(zhí)行該按鍵按下時(shí)的函數(shù)(在程序中是改變T1的初值得到實(shí)現(xiàn))。</p><p>  需要注意的是,在該程序中讓8051的內(nèi)部定時(shí)器使其工作在計(jì)數(shù)器模式MODE1下,改變記數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法。例如頻率為523HZ,其周期T=1/523=1912微秒,因

5、此只要令計(jì)數(shù)器定時(shí)956/1=956在每記數(shù)9次時(shí)將I/O口反相,就可得到中音D0(523HZ)。</p><p>  記數(shù)脈沖值與頻率的關(guān)系公式如下:</p><p>  N=Fi/2/Fr N:記數(shù)值</p><p>  Fi:內(nèi)部計(jì)時(shí)一次為1微秒.故其頻率為1MHZ</p><p><b>  Fr;要產(chǎn)生的頻率<

6、/b></p><p>  起記數(shù)值的求法如下:</p><p>  T=65536-N=65536-Fi/2/Fr</p><p>  例如:設(shè)K=65536,F(xiàn)=1000000=Fi=1MHZ,求低音D0(523HZ),高音的D0(1046HZ)的記數(shù)值。</p><p>  T=65536-N=65536-Fi/2/Fr=6553

7、6-1000000/2/Fr=65536-500000/Fr</p><p>  低音D0的T=65536-500000/262=63627</p><p>  中音D0的T=65536-500000/523=64580</p><p>  低音D0的T=65536-500000/1047=65059</p><p>  詳細(xì)的音階頻率與計(jì)數(shù)

8、初值可參考附錄一;</p><p><b>  三、電路設(shè)計(jì)</b></p><p>  1.單片機(jī)最小系統(tǒng)模塊</p><p>  2.三極管信號(hào)放大模塊</p><p>  揚(yáng)聲器發(fā)出對(duì)應(yīng)音符模塊如下:</p><p><b>  3.按鍵電路模塊:</b></p&

9、gt;<p><b>  四.程序設(shè)計(jì):</b></p><p>  本系統(tǒng)的程序流程圖如下:</p><p><b>  程序如下:</b></p><p>  #include <reg51.h></p><p>  #define uchar unsigned cha

10、r</p><p>  #define uint unsigned int</p><p>  sbit kongzhi=P1^1;</p><p>  sbit fm=P1^0; //蜂鳴器輸出的IO口</p><p>  uchar timeh,timel,i=8,t; //timeh,time

11、l為定時(shí)器高低4位,i為演奏音符個(gè)數(shù)</p><p>  uchar code yinyue[]={</p><p>  0x63,0x71,0x83,0x71,0x82,0xA2,0x76,0x32,0x32,0x63,0x51,0x62,0x82,0x54,0x32,0x32,0x42,0x32,0x42,0x11,</p><p>  0x32,0x81,0x

12、81,0x81,0x73,0x41,0x41,0x71,0x74,0x63,0x71,0x83,0x71,0x82,0xA2,0x74,0x31,0x31,0x63,0x51,0x62,0x82,</p><p>  0x54,0x31,0x42,0x83,0x71,0x71,0x83,0x91,0x91,0xA1,0x82,0x83,0x71,0x61,0x61,0x72,0x51,0x66,0xff};<

13、;/p><p>  //---------------------------簡(jiǎn)譜---------------------------------------</p><p>  //1-7代表中音do~si,8代表高音do</p><p>  uchar code yinfu[]={0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x81,0x

14、ff};</p><p>  //----------------------------簡(jiǎn)譜音調(diào)對(duì)應(yīng)的定時(shí)器初值---------------------------</p><p>  uchar code cuzhi[]={ 0xff,0xff, //占位符</p><p>  0xFC,0x44,0xFC,0xAD,0xF

15、D,0x0A,0xFD,0x34,0xFD,0x83,0xFD,0xC8,0xFE,0x06,</p><p>  //中音do~si的T計(jì)數(shù)初值</p><p>  0xFE,0x22,0xFE,0x57,0xFE,0x85,0xFE,0x9B,0xFE,0xC2,0xFE,0xE4,0xFF,0x03}; //高音d

16、o的T計(jì)數(shù)初值</p><p>  void delay1ms(unsigned int ms); //延時(shí)ms毫秒子程序</p><p>  void delay165ms(uint z); //延時(shí)165ms,即1/4拍子程序</p><p>  void keysong();

17、 //演奏子程序</p><p>  int key();</p><p>  void song();</p><p><b>  main()</b></p><p>  {kongzhi=1;</p><p>  EA=1;

18、 //開(kāi)總中斷</p><p>  ET0=1; //開(kāi)定時(shí)器0</p><p>  TMOD=0x01; //定時(shí)器0工作在方式1</p><p><b>  TH

19、0=0;</b></p><p><b>  TL0=0;</b></p><p><b>  TR0=1;</b></p><p><b>  P3=0xff;</b></p><p><b>  while(1)</b></p>

20、<p>  {if(kongzhi==0){song();}</p><p><b>  else{</b></p><p><b>  key();</b></p><p>  keysong();}</p><p><b>  }</b></p>

21、<p><b>  }</b></p><p>  void song()</p><p><b>  {</b></p><p>  uint temp;</p><p>  uchar jp; //jp是簡(jiǎn)譜1~8的變量</p&

22、gt;<p><b>  t=0;</b></p><p><b>  while(1)</b></p><p>  {temp=yinyue[t];</p><p>  if(temp==0xff) break; //到曲終則跳出循環(huán) </p>

23、<p>  jp=temp/16; //取數(shù)的高4位作為音調(diào)</p><p><b>  if(jp!=0)</b></p><p><b>  {</b></p><p>  timeh=cuzhi[jp*2];

24、 //取T的高4位值</p><p>  timel=cuzhi[jp*2+1]; //取T的低4位值</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b&g

25、t;</p><p><b>  TR0=0;</b></p><p>  fm=1; //關(guān)蜂鳴器</p><p><b>  }</b></p><p>  delay165ms(temp%16);

26、 //取數(shù)的低4位作為節(jié)拍</p><p>  TR0=0; //唱完一個(gè)音停10ms</p><p><b>  fm=1;</b></p><p>  delay1ms(10); </p><p><b>  TR0=

27、1; </b></p><p><b>  t++;</b></p><p><b>  }</b></p><p><b>  TR0=0;</b></p><p><b>  fm=1;</b></p><p>&l

28、t;b>  }</b></p><p>  void timer0() interrupt 1 //定時(shí)器0溢出中斷子程序用于產(chǎn)生各種音調(diào)</p><p><b>  {</b></p><p>  TH0=timeh;</p><p>  TL0=timel;</p>

29、<p>  fm=~fm; //產(chǎn)生方波</p><p><b>  }</b></p><p>  void keysong()</p><p><b>  {</b></p><p>  uint temp;</p>&l

30、t;p>  uchar jp; //jp是簡(jiǎn)譜1~8的變量</p><p><b>  i=key();</b></p><p>  delay1ms(50);</p><p><b>  if(i!=8)</b></p><p><b&g

31、t;  {TR0=1;</b></p><p>  temp=yinfu[i];</p><p>  jp=temp/16; //取數(shù)的高4位作為音調(diào)</p><p><b>  if(jp!=0)</b></p><p><b>  

32、{</b></p><p>  timeh=cuzhi[jp*2]; //取T的高4位值</p><p>  timel=cuzhi[jp*2+1]; //取T的低4位值</p><p><b>  }</b></p><

33、p><b>  else</b></p><p><b>  {</b></p><p><b>  TR0=0;</b></p><p>  fm=1; //關(guān)蜂鳴器</p><p><b&

34、gt;  }</b></p><p>  delay165ms(temp%16); //取數(shù)的低4位作為節(jié)拍</p><p>  TR0=0; //唱完一個(gè)音停10ms</p><p><b>  fm=1;</b>&l

35、t;/p><p>  delay1ms(10); </p><p><b>  //TR0=1;</b></p><p><b>  //i++;</b></p><p><b>  }</b></p><p><b>  TR0=0;</b

36、></p><p><b>  fm=1;</b></p><p><b>  }</b></p><p><b>  int key()</b></p><p>  {switch(P2)</p><p><b>  {</b&

37、gt;</p><p>  case 0xfe: return 0;</p><p>  case 0xfd: return 1;</p><p>  case 0xfb: return 2;</p><p>  case 0xf7: return 3;</p><p>  case 0xef: return

38、 4;</p><p>  case 0xdf: return 5;</p><p>  case 0xbf: return 6;</p><p>  case 0x7f: return 7;</p><p>  default: return 8;</p><p><b>  }</b>

39、</p><p><b>  }</b></p><p>  //函數(shù)名:delay165ms</p><p>  //函數(shù)功能:采用軟件實(shí)現(xiàn)延時(shí)約z*165ms</p><p><b>  //形式參數(shù):無(wú) </b></p><p><b>  //返回值:無(wú)&l

40、t;/b></p><p>  void delay165ms(uint z) //延時(shí)165ms,即1/4拍</p><p><b>  {uint x;</b></p><p>  for(x=0;x<z;x++)</p><p>  delay1m

41、s(165);</p><p><b>  }</b></p><p>  //函數(shù)名:delay1ms</p><p>  //函數(shù)功能:采用軟件實(shí)現(xiàn)延時(shí)約ms*1ms</p><p><b>  //形式參數(shù):無(wú) </b></p><p><b>  //返回值

42、:無(wú)</b></p><p>  void delay1ms(unsigned int ms)</p><p>  { unsigned int i,j;</p><p>  for(j=0;j<ms;j++)</p><p>  for(i=0;i<0x100;i++);</p><p>&

43、lt;b>  }</b></p><p><b>  五.制作與調(diào)試:</b></p><p><b>  最后制作出的成品:</b></p><p><b>  六.測(cè)試結(jié)果。</b></p><p>  該成品外觀(guān)雖然不夠美觀(guān),但是播放音樂(lè)功能,一個(gè)按鍵對(duì)

44、應(yīng)一個(gè)音階的功能十分到位??偟膩?lái)說(shuō),對(duì)于該成品老師和同學(xué)達(dá)成了同一共識(shí):雖然丑了點(diǎn),但很“溫柔”(聲音較?。?lt;/p><p><b>  七.結(jié)論。</b></p><p>  本次綜合設(shè)計(jì)主要涉及硬件和軟件兩方面的內(nèi)容,通過(guò)這次課程,我的硬件和軟件開(kāi)發(fā)能力都獲得了提高。首先硬件方面,更加熟悉了51單片機(jī)的結(jié)構(gòu)以及它的實(shí)用,基本了解了電子產(chǎn)品的開(kāi)發(fā)流程和所要做的工作

45、。 通過(guò)課程設(shè)計(jì),我學(xué)到了很多,這些不僅僅局限于鞏固復(fù)習(xí)了課本上知識(shí)點(diǎn),還鍛煉了自己分析問(wèn)題以及動(dòng)手實(shí)際操作的能力,將以前學(xué)過(guò)的零散的知識(shí)串到一起,學(xué)以致用。本系統(tǒng)基本上實(shí)現(xiàn)了按下鍵盤(pán),揚(yáng)聲器播放對(duì)應(yīng)的音符,同時(shí)單個(gè)程序也能播放歌曲,不足之處在于不能將按鍵和播放音樂(lè)的程序不能完美融合,只能在一定范圍內(nèi)滿(mǎn)足按鍵或播放歌曲一種需要,且播放的聲音太小,放大電路的選擇方面的工作做得不是很好。</p><p><b&

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論