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

下載本文檔

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

文檔簡介

1、<p><b>  設(shè)計(jì)目的</b></p><p>  提高51單片機(jī)理論知識</p><p><b>  學(xué)會(huì)如何設(shè)計(jì)電子琴</b></p><p><b>  提高編程能力</b></p><p><b>  設(shè)計(jì)要求</b></p&

2、gt;<p>  1.設(shè)計(jì)一個(gè)(4×4)的鍵盤,并將16個(gè)鍵設(shè)計(jì)成16個(gè)音</p><p>  2.可彈奏想要表達(dá)的音樂</p><p>  3.該電子琴包含1首示例音樂,接通電源可播放示例音樂</p><p><b>  設(shè)計(jì)過程</b></p><p><b>  主要芯片功能描述&

3、lt;/b></p><p>  AT89C51是在一塊芯片中集成了CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器和多種功能的I/O線等一臺計(jì)算機(jī)所需要的基本部件。其內(nèi)包含下列幾個(gè)部件: 1).一個(gè)8位CPU ; 2).一個(gè)片內(nèi)振蕩器及時(shí)鐘電路; 3).4K字節(jié)ROM程序存儲器; 4).128字節(jié)RAM數(shù)據(jù)存儲器 5).可尋址64K外部數(shù)據(jù)存儲器和64K外部程序存儲器空間的控制電路;

4、 6).32條可編程的I/O線(四個(gè)8為并行I/O端口); 7).具有五個(gè)中斷源、兩個(gè)優(yōu)先級嵌套結(jié)構(gòu);</p><p><b>  其外型如圖示:</b></p><p><b>  2.音樂頻率</b></p><p>  一首音樂是許多不同的音階組成的,而每個(gè)音階對應(yīng)著不同的頻率,這樣我們就可以利用不同的頻

5、率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對于單片機(jī)來產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來產(chǎn)生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應(yīng)頻率關(guān)系弄正確即可。單片機(jī)12MHZ晶振,高中低音符與單片機(jī)計(jì)數(shù)T0相關(guān)的計(jì)數(shù)值如下表所示 : </p><p><b>  3.設(shè)計(jì)硬件部分</b></p><p>  如下圖所示,硬件部分采用的

6、是逐列掃描,右邊16個(gè)按鍵對應(yīng)16個(gè)音。不斷檢測十六個(gè)按鍵,當(dāng)某個(gè)按鍵被按下,先檢測出是哪一列被按下,再判斷哪個(gè)鍵被按下。左邊的三個(gè)按鍵是我設(shè)置的三個(gè)功能鍵,P1.0是歌曲《祝你生日快樂》, P1.1是歌曲《找朋友》,當(dāng)檢測到按鍵被按下時(shí),P1.0和P1.1接地,所以歌曲就播放。P1.2是一個(gè)暫停/啟動(dòng)按鍵,當(dāng)歌曲播放時(shí),按下它就啟動(dòng);當(dāng)歌曲再次按下,它就停止播放。</p><p><b>  軟件設(shè)計(jì)

7、部分</b></p><p>  程序設(shè)計(jì)的流程圖如下圖,不斷檢測16個(gè)音階鍵或功能鍵哪個(gè)被按下,當(dāng)音階鍵被按下時(shí),發(fā)出對應(yīng)的音;當(dāng)功能鍵被按下時(shí),執(zhí)行相應(yīng)的功能。然后再檢測按鍵釋放成不成功,也就是平時(shí)所說的松手檢測,不成功就不斷再檢測,成功就停止工作。</p><p><b>  設(shè)計(jì)心得</b></p><p>  通過本次課程

8、設(shè)計(jì),遇到了許多問題,也提高了自己的實(shí)踐能力。如設(shè)計(jì)硬件部分,我用了另外三個(gè)獨(dú)立功能鍵,雖然這樣做簡單很多,但是浪費(fèi)了IO口的資源;設(shè)計(jì)軟件部分,發(fā)現(xiàn)自己的編程能力還有很多問題,改了又改,特別是實(shí)現(xiàn)功能鍵,花了很多時(shí)間。在這次課程設(shè)計(jì)中,之所以存在著很多的問題,最主要是課外知識不夠廣,電子方面的知識比較欠缺,認(rèn)識到了自己的弱點(diǎn),在接下來的時(shí)間會(huì)針對這方面努力?;仡櫰鸫舜螁纹瑱C(jī)課程設(shè)計(jì),至今我仍感慨頗多,科技日益更新,我們要跟上時(shí)代的步伐

9、就要掌握好知識,努力向上。</p><p><b>  附錄 </b></p><p><b>  設(shè)計(jì)源程序:</b></p><p>  #include<reg52.h></p><p>  #define uchar unsigned char</p><p

10、>  #define uint unsigned int</p><p>  sbit beep=P2^3; //定義蜂鳴器</p><p>  uchar temp,key;</p><p>  sbit s1=P1^0; //定義功能鍵1 </p

11、><p>  sbit s2=P1^1; //定義功能鍵2</p><p>  sbit s3=P1^2; //定義功能鍵3</p><p>  uint code table[]={64021,64103,64260,64400,</p><p&g

12、t;  64524,64580,64684,64777,</p><p>  64820,64898,64968,65030,</p><p>  65058,65110,65157,65178}; //頻率</p><p>  void delay(uint z) //延時(shí)程序</p><p>&l

13、t;b>  {</b></p><p><b>  uint x,y;</b></p><p>  for(x=z;x>0;x--)</p><p>  for(y=110;y>0;y--);</p><p><b>  }</b></p><p&g

14、t;  void main()</p><p><b>  {</b></p><p>  TMOD=0x01; </p><p>  EA=1; //開總中斷</p><p>  ET0=1;

15、 //開定時(shí)器0中斷</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  P3=0xfe; </p><p><b>  temp=

16、P3;</b></p><p>  temp=temp&0xf0;</p><p>  if(temp!=0xf0) //檢測第一行按鍵 </p><p><b>  {</b></p><p>  delay(10);</p><p>

17、;<b>  temp=P3;</b></p><p>  temp=temp&0xf0;</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p><p>  temp=P3;</p><p>  switch(temp)

18、</p><p>  { </p><p>  case 0xee:</p><p><b>  key=0;</b></p><p><b>  break;</b></p><p>  case 0xde:</p><p&

19、gt;<b>  key=1;</b></p><p><b>  break;</b></p><p>  case 0xbe:</p><p><b>  key=2;</b></p><p><b>  break;</b></p>&

20、lt;p>  case 0x7e:</p><p><b>  key=3;</b></p><p>  break;</p><p><b>  }</b></p><p>  TH0=table[key]/256;</p><p>  TL0=ta

21、ble[key]%256;</p><p>  TR0=1;</p><p>  while(temp!=0xf0) //松手檢測</p><p><b>  {</b></p><p><b>  temp=P3;</b></p>

22、<p>  temp=temp&0xf0;</p><p><b>  }</b></p><p><b>  TR0=0;</b></p><p>  beep=1;</p><p><b>  }</b></p>

23、<p><b>  }</b></p><p>  P3=0xfd; //檢測第二行按鍵 </p><p><b>  temp=P3;</b></p><p>  temp=temp&0xf0;</p&g

24、t;<p>  if(temp!=0xf0)</p><p><b>  {</b></p><p>  delay(10);</p><p><b>  temp=P3;</b></p><p>  temp=temp&0xf0;</p><p>  

25、if(temp!=0xf0)</p><p><b>  {</b></p><p>  temp=P3;</p><p>  switch(temp)</p><p>  { </p><p>  case 0xed:</p><p>

26、<b>  key=4;</b></p><p><b>  break;</b></p><p>  case 0xdd:</p><p><b>  key=5;</b></p><p><b>  break;</b></p><

27、p>  case 0xbd:</p><p><b>  key=6;</b></p><p><b>  break;</b></p><p>  case 0x7d:</p><p><b>  key=7;</b></p><p><b

28、>  break;</b></p><p><b>  }</b></p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%256;</p><p>  TR0=1;</p><p>  while(

29、temp!=0xf0)</p><p><b>  {</b></p><p><b>  temp=P3;</b></p><p>  temp=temp&0xf0;</p><p><b>  }</b></p><p><b&

30、gt;  TR0=0;</b></p><p>  beep=1;</p><p><b>  }</b></p><p>  }</p><p>  P3=0xfb; //檢測第三行按鍵

31、 </p><p><b>  temp=P3;</b></p><p>  temp=temp&0xf0;</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p><p>  d

32、elay(10);</p><p><b>  temp=P3;</b></p><p>  temp=temp&0xf0;</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p><p>  temp=P3;</p

33、><p>  switch(temp)</p><p>  { </p><p>  case 0xeb:</p><p><b>  key=8;</b></p><p><b>  break;</b></p><p>

34、  case 0xdb:</p><p><b>  key=9;</b></p><p><b>  break;</b></p><p>  case 0xbb:</p><p><b>  key=10;</b></p><p><b>

35、  break;</b></p><p>  case 0x7b:</p><p><b>  key=11;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  TH0=ta

36、ble[key]/256;</p><p>  TL0=table[key]%256;</p><p>  TR0=1;</p><p>  while(temp!=0xf0)</p><p><b>  {</b></p><p><b>  temp=P3;

37、</b></p><p>  temp=temp&0xf0;</p><p><b>  }</b></p><p><b>  TR0=0;</b></p><p>  beep=1;</p><p><b&

38、gt;  }</b></p><p>  }</p><p>  P3=0xf7; //檢測第四行按鍵 </p><p><b>  temp=P3;</b></p><p>  

39、temp=temp&0xf0;</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p><p>  delay(10);</p><p><b>  temp=P3;</b></p><p>  temp=temp&0

40、xf0;</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p><p>  temp=P3;</p><p>  switch(temp)</p><p>  { </p><p>  case

41、 0xe7:</p><p><b>  key=12;</b></p><p><b>  break;</b></p><p>  case 0xd7:</p><p><b>  key=13;</b></p><p><b>  bre

42、ak;</b></p><p>  case 0xb7:</p><p><b>  key=14;</b></p><p><b>  break;</b></p><p>  case 0x77:</p><p><b>  key=15;</

43、b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%256;</p><p>  TR0=1;

44、</p><p>  while(temp!=0xf0)</p><p><b>  {</b></p><p><b>  temp=P3;</b></p><p>  temp=temp&0xf0;</p><p><b>  }</b

45、></p><p><b>  TR0=0;</b></p><p>  beep=1;</p><p><b>  }</b></p><p>  }</p><p>  if(s1==0)

46、 //功能鍵1</p><p><b>  {</b></p><p>  delay(10);</p><p><b>  if(s1==0)</b></p><p><b>  {</b></p><p><b>  TR0

47、=1;</b></p><p><b>  while(1)</b></p><p><b>  { </b></p><p>  if(s3==0) //功能鍵3</p><p><b>  {</b></p><p&

48、gt;<b>  delay(1);</b></p><p><b>  if(s3==0)</b></p><p><b>  {</b></p><p>  TR0=~TR0; //設(shè)置啟動(dòng)\暫停</p><p>  while(!s3);</p>

49、<p><b>  }</b></p><p><b>  }</b></p><p>  key=4; //祝你生日快樂</p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]

50、%256;</p><p>  delay(150); </p><p><b>  key=4;</b></p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%256; </p><p&g

51、t;  delay(150); </p><p><b>  key=5;</b></p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%256; </p><p>  delay(300); </p>&

52、lt;p><b>  key=4;</b></p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%256;</p><p>  delay(300); </p><p><b>  key=7;</b>&l

53、t;/p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%256;</p><p>  delay(300);</p><p><b>  key=6;</b></p><p>  TH0=table[key]/256;</p&

54、gt;<p>  TL0=table[key]%256;</p><p>  delay(600);</p><p><b>  key=4;</b></p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%256;

55、</p><p>  delay(150);</p><p><b>  key=4;</b></p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%256; </p><p>  delay(150);<

56、/p><p><b>  key=5;</b></p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%256; </p><p>  delay(300); </p><p><b>  key=4;<

57、/b></p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%256;</p><p>  delay(300); </p><p><b>  key=8;</b></p><p>  TH0=tab

58、le[key]/256;</p><p>  TL0=table[key]%256;</p><p>  delay(300);</p><p><b>  key=6;</b></p><p>  TH0=table[key]/256;</p><p>  TL0=table[ke

59、y]%256;</p><p>  delay(300);</p><p><b>  beep=1;</b></p><p>  while(!s1); //松手檢測</p><p><b>  }</b></p>

60、<p><b>  }</b></p><p><b>  }</b></p><p>  if(s2==0) //功能鍵2</p><p><b>  {</b></p><p>  dela

61、y(10);</p><p><b>  if(s2==0)</b></p><p><b>  {</b></p><p><b>  TR0=1;</b></p><p><b>  while(1)</b></p><p>&

62、lt;b>  {</b></p><p>  if(s3==0) //功能鍵3</p><p><b>  {</b></p><p>  delay(10);</p><p><b>  if(s3==0)</b></p>

63、<p><b>  {</b></p><p>  TR0=~TR0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  key=4; //找朋

64、友</p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%256;</p><p>  delay(400);</p><p><b>  key=5;</b></p><p>  TH0=table[key]/25

65、6;</p><p>  TL0=table[key]%256;</p><p>  delay(400);</p><p><b>  key=4;</b></p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%2

66、56;</p><p>  delay(400);</p><p><b>  key=5;</b></p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%256;</p><p>  delay(400)

67、;</p><p><b>  key=4;</b></p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%256;</p><p>  delay(800);</p><p><b&g

68、t;  key=4;</b></p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%256;</p><p>  delay(400);</p><p><b>  key=7;</b></p><p&g

69、t;  TH0=table[key]/256;</p><p>  TL0=table[key]%256;</p><p>  delay(400);</p><p><b>  key=6;</b></p><p>  TH0=table[key]/256;</p><

70、p>  TL0=table[key]%256;</p><p>  delay(400);</p><p><b>  key=5;</b></p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%256;</p>

71、<p>  delay(400);</p><p><b>  key=4;</b></p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%256;</p><p>  delay(800);<

72、/p><p><b>  key=2;</b></p><p>  TH0=table[key]/256;</p><p>  TL0=table[key]%256;</p><p>  delay(800);</p><p><b>  beep=1;</b&

73、gt;</p><p>  while(!s2); //松手檢測</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b&

74、gt;  }</b></p><p><b>  }</b></p><p>  void time() interrupt 1 //中斷</p><p><b>  {</b></p><p>  TH0=table[key]/256;</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論