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

下載本文檔

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

文檔簡介

1、<p><b>  單片機課程設(shè)計報告</b></p><p><b>  名 稱:</b></p><p><b>  院 系:</b></p><p><b>  班 級:</b></p><p><b>  學(xué)生

2、姓名:</b></p><p><b>  同組姓名:</b></p><p><b>  日 期:</b></p><p><b>  1、設(shè)計方案</b></p><p>  設(shè)計一個基于MCS-51系列單片機的音樂盒,利用試驗板上的開關(guān),按開關(guān)切換演奏出

3、不同的樂曲。蜂鳴器發(fā)出某個音調(diào),與之相對應(yīng)的LED亮起。使用兩個按鍵,一個用來切換歌曲,另一個切換八路LED的變化花樣。</p><p><b>  2、實現(xiàn)功能:</b></p><p>  1)電路有兩種工作模式:演奏音樂模式和花樣燈模式。</p><p>  演奏音樂模式:演奏完整的一首的歌曲,八路LED隨著音樂變化。</p>

4、<p>  花樣燈模式:八路LED變化出各種花樣,蜂鳴器隨著發(fā)出“嘀嘀”聲</p><p>  2)按下按鍵1進入演奏音樂模式,再按切換歌曲,共兩首歌曲。</p><p>  3)按下按鍵2進入花樣燈模式,再按切換LED花樣,共四種花樣。</p><p>  此電路的程序只占用了1K左右,可編制更多的音樂和LED花樣,使系統(tǒng)的功能更加強大。</p

5、><p><b>  3、硬件電路設(shè)計</b></p><p><b>  電路原理圖</b></p><p>  由于51單片機的電流驅(qū)動能力較弱,而蜂鳴器的工作電流為幾十MA,故驅(qū)動蜂鳴器需用一個pnp三極管。單片機給P3.0低電平,則蜂鳴器開;給高電平則蜂鳴器關(guān)。</p><p>  LED接到單

6、片機的P1口,拉低IO口,可使LED亮起。</p><p>  兩個按鍵的一端接單片機的IO口,另一端接地。不按下去時與按鍵相連的IO口被單片機內(nèi)部上拉電阻拉高,按下則與之相連的IO口變成低電平,引發(fā)單片機中斷。</p><p><b>  4、軟件設(shè)計</b></p><p>  程序設(shè)置了兩個標(biāo)志——count1和count2,分別初始化為

7、1和0。按鍵1使得count1在1和2之間切換,按鍵2使得count2在1~4之間切換。程序檢測count1的值,count1等于1時播放第一首歌曲,等于2時播放第二首。另一方面根據(jù)count2的值來切換LED的花樣。Count1和count2的值是互斥的,設(shè)置count1等于1、2時,count2同時設(shè)置為0;設(shè)置count2等于1~4時,count1也同時設(shè)置為0。</p><p>  歌曲簡譜的編碼規(guī)則:&

8、lt;/p><p>  do re mi fa so la si分別編碼為1~7,重音do編為8,重音re編為9,停頓編為0。播放長度以十六分音符為單位(在本程序中為165ms),一拍即四分音符等于4個十六分音符,編為4,其它的播放時間以此類推。音調(diào)作為編碼的高4位,而播放時間作為低4位,如此音調(diào)和節(jié)拍就構(gòu)成了一個編碼。以0xff作為曲譜的結(jié)束標(biāo)志。</p><p>  舉例1:音調(diào)do,發(fā)音

9、長度為兩拍,即二分音符,將其編碼為0x18。</p><p>  舉例2:音調(diào)re,發(fā)音長度為半拍,即八分音符,將其編碼為0x22</p><p>  歌曲播放的設(shè)計。先將歌曲的簡譜進行編碼,儲存在一個數(shù)據(jù)類型為unsigned char 的數(shù)組中。程序從數(shù)組中取出一個數(shù),然后分離出高4位得到音調(diào),接著找出相應(yīng)的值賦給定時器0,使之定時操作蜂鳴器,得出相應(yīng)的音調(diào);接著分離出該數(shù)的低4位,得

10、到延時時間,接著調(diào)用軟件延時。</p><p>  確定定時器0對應(yīng)于音調(diào)的初值:</p><p>  假設(shè)要得到500HZ的聲音。500HZ的聲音信號每個周期為2ms,即2000us。假設(shè)單片機采用12MHZ的晶振,每個機器周期的時間為12/12M=1 us。故單片機操作(對與蜂鳴器相連的IO口取反)一次蜂鳴器的時間間隔為2000us/1us/2=1000個機器周期,故給工作在方式1的定

11、時器0賦的初值為TH0=(65536-1000)/256,TL0=(65536-1000)%256。</p><p>  下面給出定時器0工作在方式1對應(yīng)各音調(diào)的初值,假定使用的晶振是12MHZ:</p><p><b>  5、程序流程圖</b></p><p><b>  主程序流程圖</b></p>&

12、lt;p>  播放音樂子程序流程圖</p><p><b>  6、調(diào)試</b></p><p>  音樂盒的程序設(shè)計過程中,遇到了很多問題,但是通過不斷調(diào)試仿真,最終都得到解決。問題是出在蜂鳴器與單片機的輸出端口上,在這個環(huán)節(jié)消耗了很多時間。之前這些程序通過星研軟件編譯沒有錯誤,而且通過ptotues仿真成功,但在實驗板上調(diào)試運行時卻不行。最終在遲老師的指導(dǎo)下

13、發(fā)現(xiàn)問題的所在,就是在單片機輸出端口出現(xiàn)問題,由于實驗箱中單片機芯片的P2口在實驗箱中被其他硬件電路所占用,所以我們在使用此端口時沒有達到我們預(yù)想的效果,當(dāng)我們把程序中單片機給蜂鳴器的信號輸出端修改為由P3口輸出信號,問題最終得到了解決。</p><p><b>  7、心得體會</b></p><p>  做單片機課程設(shè)計是十分有意義的,而且是十分必要的。我們在課堂

14、上掌握的僅僅是專業(yè)課的理論知識,如何去鍛煉我們的實踐能力?如何把我們所學(xué)的專業(yè)基礎(chǔ)課理論知識運用到實踐中去呢?我想做類似的課程設(shè)計就為我們提供了良好的實踐平臺。</p><p>  通過這次單片機課程設(shè)計,我們不僅加深了對單片機理論的理解,將理論很好地應(yīng)用到實際當(dāng)中去,同時也使我們認(rèn)識到自身存在的不足之處,無論是理論上還是遇到問題的處理能力上都還有待提高,而且這也激發(fā)了我們今后努力學(xué)習(xí)的興趣。</p>

15、<p>  此次課程設(shè)計結(jié)果能夠符合要求,成功完成了此次課程設(shè)計任務(wù)。但我們不只在乎這一結(jié)果,更加在乎的是這個過程。這個過程中,我們花費了大量的時間和精力,更重要的是,我們在學(xué)會創(chuàng)新的基礎(chǔ)上,同時還懂得合作精神的重要性,在團隊中,我們互幫互助,對整個課程設(shè)計來說,這是至關(guān)重要的,缺少每一個人都會對我們的設(shè)計產(chǎn)生影響。還有要感謝指導(dǎo)老師在我們遇到困難時,給予我們的建議與鼓勵。</p><p>  此次

16、課程設(shè)計結(jié)束了,但是從中學(xué)到的知識會讓我受益終身。發(fā)現(xiàn)問題、提出問題、分析問題、解決問題和實踐能力的提高都會受益于我在以后的學(xué)習(xí)、工作和生活中。</p><p><b>  8、參考文獻</b></p><p>  [1] 單片機演奏音樂時音調(diào)和節(jié)拍的確定方法 偉納電子 www.willar.com</p><p>  [2]音樂和簡譜知識

17、 網(wǎng)絡(luò)資源</p><p>  [3]《千年之戀》及《寂寞沙洲冷》的簡譜 網(wǎng)絡(luò)資源</p><p>  [3]芯片資料下載網(wǎng)站——三毛電子世界、21IC中國電子網(wǎng)等</p><p><b>  9、附錄</b></p><p><b>  軟件源程序:</b></p><p&g

18、t;  #include <reg52.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit duan=P2^6;</p><p>  sbit key1=P3^2;//按key1可切換花樣</

19、p><p>  sbit key2=P3^3;//按key2可切換歌曲</p><p>  sbit fm=P3^7;//蜂鳴器連續(xù)的IO口</p><p>  sbit P34=P3^4;//矩陣鍵盤的一列</p><p>  uchar code huayang1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0

20、xfe,</p><p>  0xfd,0xfb,0xf7,0xef,0xdf,0xbf};//花樣1</p><p>  uchar code huayang2[]={0x7f,0xfe,0xbf,0xfd,0xdf,0xfb,0xef,0xf7,</p><p>  0xef,0xfb,0xdf,0xfd,0xbf,0xfe};//花樣2</p>

21、<p>  uchar code huayang3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x0,</p><p>  0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};</p><p>  char code huayang4[]={ 0x55,0xaa,0xcc,0x33,0x99,0x66,0x0f,0x

22、f0};</p><p>  uchar count1;//花樣標(biāo)志</p><p>  uchar count2;//歌曲標(biāo)志</p><p>  uchar timeh,timel,i;</p><p>  //================簡譜====================</p><p>  /

23、/編程規(guī)則:字節(jié)高位是簡譜,低位是持續(xù)時間,</p><p>  //代表多少個十六分音符</p><p>  //1-7代表中央C調(diào),8-E代表高八度,0代表停頓</p><p>  //最后的0是結(jié)束標(biāo)志</p><p>  uchar code qnzl[]={ //千年之戀</p><p>  0x12,0x

24、22,0x34,0x84,0x74,0x54,0x38,0x42,0x32,0x22,0x42,0x34,0x84,0x72,0x82,0x94,0xA8,0x08,</p><p><b>  //前奏</b></p><p>  0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,</p><p&

25、gt;  //竹林的燈火 到過的沙漠</p><p>  0x32,0x31,0x21,0x32,0x82,0x71,0x81,0x71,0x51,0x32,0x22,</p><p>  //七色的國度 不斷飄逸風(fēng)中</p><p>  0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,</p>&l

26、t;p>  //有一種神秘 灰色的旋渦</p><p>  0x32,0x31,0x21,0x32,0x83,0x82,0x71,0x72,0x02,</p><p>  //將我卷入了迷霧中</p><p>  0x63,0xA1,0xA2,0x62,0x92,0x82,0x52,</p><p><b>  //看不清的雙

27、手</b></p><p>  0x31,0x51,0x63,0x51,0x63,0x51,0x63,0x51,0x62,0x82,0x7C,0x02,</p><p>  //一朵花傳來誰經(jīng)過的溫柔</p><p>  0x61,0x71,0x82,0x71,0x62,0xA2,0x71,0x76,</p><p><b&

28、gt;  //穿越千年的傷痛</b></p><p>  0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36,</p><p><b>  //只為求一個結(jié)果</b></p><p>  0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53,</p>&l

29、t;p>  //你留下的輪廓 指引我</p><p>  0x42,0x63,0x83,0x83,0x91,0x91,</p><p><b>  //黑夜中不寂寞</b></p><p>  0x61,0x71,0x82,0x71,0x62,0x0A2,0x71,0x76,</p><p><b>  

30、//穿越千年的哀愁</b></p><p>  0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36,</p><p><b>  //是你在盡頭等我</b></p><p>  0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53,</p><p&g

31、t;  //最美麗的感動 會值得</p><p>  0x42,0x82,0x88,0x02,0x74,0x93,0x89,0xff//結(jié)束標(biāo)志</p><p><b>  //用一生守候</b></p><p><b>  };</b></p><p>  uchar code jmszl[]={

32、 //寂寞沙洲冷</p><p>  0x12,0x12,0x22,0x32,0x31,0x22,0x21,0x22,</p><p><b>  //自你走后心憔悴</b></p><p>  0x21,0x31,0x51,0x52,0x31,0x52,0x61,0x15,0x14,</p><p>  //白色油桐風(fēng)

33、中紛飛</p><p>  0x51,0x52,0x31,0x52,0x62,0x13,0x11,0x13,0x32,0x28,0x08,0x28,</p><p>  //落花似人有情 這個季節(jié)</p><p>  0x31,0x32,0x31,0x32,0x11,0x21,0x51,0x52,0x51,0x52,</p><p>  //

34、河畔的風(fēng)放肆拼命地吹</p><p>  0x51,0x51,0x31,0x32,0x31,0x32,0x81,0x72,0x63,</p><p>  //不斷撥弄離人的眼淚</p><p>  0x62,0x71,0x81,0x72,0x61,0x61,0x52,0x31,0x21,0x32,0x51,0x54,</p><p>  //

35、那樣濃烈的愛再也無法給</p><p>  0x22,0x12,0x11,0x12,0x11,0x12,0x12,0x14,0x26,0x32,0x26,</p><p><b>  //傷感一夜一夜</b></p><p>  0x32,0x61,0x51,0x51,0x31,0x31,0x21,0x31,0x51,0x61,0x51,0x3

36、1,0x51,</p><p>  //當(dāng)記憶的線纏繞過往支離破碎</p><p>  0x02,0x32,0x81,0x81,0x81,0x81,0x62,0x52,0x34,</p><p>  //是慌亂占據(jù)了心扉 </p><p>  0x31,0x81,0x81,0x81,0x61,0x91,0x8

37、2,</p><p><b>  //有花兒伴著蝴蝶</b></p><p>  0x51,0x51,0x51,0x51,0x31,0x61,0x53,</p><p><b>  //孤雁可以雙飛</b></p><p>  0x21,0x11,0x21,0x11,0x22,0x11,0x21,

38、0x26,</p><p><b>  //夜深人靜獨徘徊</b></p><p>  0x32,0x61,0x51,0x51,0x31,0x31,0x21,0x31,0x51,0x61,0x51,0x31,0x51,0x52,</p><p>  //當(dāng)幸福戀人寄來紅色分享喜悅</p><p>  0x31,0x31,

39、0x81,0x81,0x81,0x61,0x91,0x81,0x61,0x31,0x56,</p><p>  //閉上雙眼難過頭也不敢回</p><p>  0x32,0x32,0x81,0x81,0x81,0x81,0x91,0x81,0x61,0x81,0x61,0x51,0x31,0x51,0x34,</p><p>  //仍然撿盡寒枝不肯安歇微帶著后悔&

40、lt;/p><p>  0x21,0x31,0x51,0x31,0x21,0x11,0x61,0x21,0x16,</p><p>  //寂寞沙洲我該思念誰</p><p><b>  0xff};</b></p><p>  //==============簡譜音調(diào)對應(yīng)的定時器初值=======</p>&

41、lt;p>  //適合11.0592M的晶振</p><p>  uchar code cuzhi[]={</p><p>  0xff,0xff,//占位</p><p>  0xFC,0x8E,//中央C調(diào)1-7</p><p>  0xFC,0xED,</p><p>  0xFD,0x43,</

42、p><p>  0xFD,0x6A,</p><p>  0xFD,0xB3,</p><p>  0xFD,0xF3,</p><p>  0xFE,0x2D,</p><p>  0xFE,0x47,//高八度1-7 </p><p>  0xFE,0x76,</p>

43、<p>  0xFE,0xA1,</p><p>  0xFE,0xC7,</p><p>  0xFE,0xD9,</p><p>  0xFE,0xF9,</p><p><b>  0xFF,0x16</b></p><p><b>  };</b><

44、/p><p>  uchar yinyue[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x0,0x0};</p><p>  //將音調(diào)轉(zhuǎn)化為對應(yīng)的LED樣式</p><p>  void delay1(uint z);//延時1MS</p><p>  void delay(uint z)

45、;//延時165MS,即十六分音符</p><p>  void song();</p><p>  void beep();//蜂鳴器叫一聲</p><p><b>  main()</b></p><p>  {uchar x;</p><p>  count1=0;//流水燈無花樣<

46、;/p><p>  count2=1;//唱第一首歌</p><p>  P34=0;//選取矩陣鍵盤的一列</p><p>  EA=1;//開總中斷</p><p>  EX0=1;//開外部中斷0</p><p>  IT0=1;//外部中斷0下降沿觸發(fā)方式</p><p>  EX1=1;/

47、/開外部中斷1</p><p>  IT1=1;//外部中斷1下降沿觸發(fā)方式</p><p>  TMOD=0x01;//定時器0工作在方式1</p><p><b>  TH0=0;</b></p><p><b>  TL0=0;</b></p><p><b>

48、;  ET0=1;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  if(count1!=0)</p><p><b>  {</b></p><p>  switch

49、(count1)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  for(x=0;x<14;x++)</p><p><b>  {</b></p><p><b>  du

50、an=1;</b></p><p>  P1=huayang1[x];</p><p><b>  beep();</b></p><p>  delay1(300);</p><p><b>  duan=0;</b></p><p>  if(count1!=

51、1)</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  for(x=

52、0;x<14;x++)</p><p><b>  {</b></p><p><b>  duan=1;</b></p><p>  P1=huayang2[x];</p><p><b>  beep();</b></p><p>  dela

53、y1(300);</p><p><b>  duan=0;</b></p><p>  if(count1!=2)</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  bre

54、ak;</b></p><p><b>  case 3:</b></p><p>  for(x=0;x<16;x++)</p><p><b>  {</b></p><p><b>  duan=1;</b></p><p>  

55、P1=huayang3[x];</p><p><b>  beep();</b></p><p>  delay1(300);</p><p><b>  duan=0;</b></p><p>  if(count1!=3)</p><p><b>  brea

56、k;</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 4:</b></p><p>  for(x=0;x<8;x++)</p><p><

57、b>  {</b></p><p><b>  duan=1;</b></p><p>  P1=huayang4[x];</p><p><b>  beep();</b></p><p>  delay1(300);</p><p><b> 

58、 duan=0;</b></p><p>  if(count1!=4)</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b

59、>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  song();</b></p><p> 

60、 delay1(1000);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void int0() interrupt 0</p><p><b> 

61、 {</b></p><p>  EA=0;//關(guān)總中斷</p><p>  delay1(1);//去抖</p><p>  if(key1==0)</p><p><b>  {</b></p><p>  count2=0;//不讓蜂鳴器唱歌</p><p&g

62、t;<b>  TR0=0;</b></p><p><b>  count1++;</b></p><p>  if(count1==5)</p><p><b>  count1=1;</b></p><p><b>  }</b></p>

63、<p>  EA=1;//開總中斷</p><p><b>  }</b></p><p>  void int1() interrupt 2</p><p><b>  {</b></p><p>  EA=0;//關(guān)總中斷</p><p>  delay1(

64、1);//去抖</p><p>  if(key2==0)</p><p><b>  {</b></p><p>  count1=0;//流水燈無花樣</p><p><b>  TR0=1;</b></p><p>  i=0;//從頭開始唱</p>&l

65、t;p><b>  count2++;</b></p><p>  if(count2==3)</p><p><b>  count2=1;</b></p><p><b>  }</b></p><p>  EA=1;//開總中斷</p><p&g

66、t;<b>  }</b></p><p>  void timer0() interrupt 1 //用于產(chǎn)生各種音調(diào)</p><p><b>  {</b></p><p>  TH0=timeh;</p><p>  TL0=timel;</p><p><b&

67、gt;  fm=~fm;</b></p><p><b>  }</b></p><p>  void song()</p><p><b>  {</b></p><p>  uint temp;</p><p>  uchar jp;//jp是簡譜</p

68、><p><b>  i=0;</b></p><p><b>  while(1)</b></p><p>  {if(count2==0)</p><p><b>  {</b></p><p><b>  break;</b>

69、</p><p><b>  }</b></p><p>  if(count2==1)//選曲</p><p>  temp=qnzl[i];</p><p>  if(count2==2)</p><p>  temp=jmszl[i];</p><p>  if(t

70、emp==0xff)</p><p><b>  break;</b></p><p>  jp=temp/16; //取數(shù)的高4位</p><p><b>  duan=1;</b></p><p>  P1=yinyue[jp];</p><p><b>  d

71、uan=0;</b></p><p><b>  if(jp!=0)</b></p><p><b>  {</b></p><p>  timeh=cuzhi[jp*2];</p><p>  timel=cuzhi[jp*2+1];</p><p><b

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

73、}</b></p><p>  delay(temp%16); //取數(shù)的低4位</p><p>  TR0=0; //唱完一個音停10MS</p><p><b>  fm=1;</b></p><p>  delay1(10); </p><p><b>  TR0=1

74、; </b></p><p><b>  i++;</b></p><p><b>  }</b></p><p><b>  TR0=0;</b></p><p><b>  fm=1;</b></p><p><

75、;b>  }</b></p><p>  void delay(uint z)//延時165MS,即十六分音符</p><p>  {uint x,y;</p><p>  for(x=z;x>0;x--)</p><p>  for(y=19000;y>0;y--);</p><p>

76、;<b>  }</b></p><p>  void delay1(uint z)//延時1MS</p><p>  {uint x,y;</p><p>  for(x=z;x>0;x--)</p><p>  for(y=112;y>0;y--);</p><p><b

77、>  }</b></p><p>  void beep()//蜂鳴器叫一聲</p><p>  {uchar i;</p><p>  for(i=0;i<50;i++)</p><p><b>  {fm=~fm;</b></p><p>  delay1(1);

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論