久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 10427|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

基于51單片機(jī)的電子音樂(lè)盒的設(shè)計(jì)與實(shí)現(xiàn)(文檔下載)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:453219 發(fā)表于 2018-12-24 10:57 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
基于單片機(jī)的電子音樂(lè)盒的設(shè)計(jì)與實(shí)現(xiàn)
一、設(shè)計(jì)目的
為證明單片機(jī)可以通過(guò)軟件程序控制硬件電路實(shí)現(xiàn)簡(jiǎn)單音樂(lè)播放器的功能,以此證明單片機(jī)的功能強(qiáng)大。
二、設(shè)計(jì)概述
   本課題是一個(gè)基于51單片機(jī)的電子音樂(lè)盒,依據(jù)單片機(jī)控制技術(shù)原理,設(shè)計(jì)出一個(gè)可以播放多首音樂(lè)的數(shù)字音樂(lè)盒,通過(guò)數(shù)碼管顯示當(dāng)前是第幾首音樂(lè),系統(tǒng)設(shè)計(jì)了三個(gè)按鍵,具體功能:S1:暫停/播放;S2:加一首(下一首);S3:減一首(上一首)。通過(guò)硬件電路制作以及以及軟件編程,設(shè)計(jì)制作出一個(gè)多功能的電子音樂(lè)盒。
三、設(shè)計(jì)方案
在這個(gè)系統(tǒng)的設(shè)計(jì)中,單片機(jī)采用51兼容系列的STC89C52RC。有以下幾部分構(gòu)成:電源電路、單片機(jī)最小系統(tǒng)、發(fā)聲系統(tǒng)、鍵盤控制電路、顯示電路。經(jīng)過(guò)論證后我確定的系統(tǒng)框圖,如下圖所示:




四、設(shè)計(jì)原理
1、原理
本系統(tǒng)由單片機(jī)系統(tǒng),獨(dú)立按鍵、數(shù)碼管組成。利用I/O口產(chǎn)生一定頻率的方波,驅(qū)動(dòng)揚(yáng)聲器,發(fā)生不同的音調(diào),從而實(shí)現(xiàn)樂(lè)曲的演奏。系統(tǒng)能通過(guò)功能鍵完成選擇樂(lè)曲、播放、暫停、和復(fù)位的基本功能。在播放樂(lè)曲的同時(shí)LCD上顯示所播放的歌曲序號(hào),可以通過(guò)復(fù)位鍵使音樂(lè)盒從第一首歌曲重新播放,本系統(tǒng)成本低廉,功能強(qiáng)大實(shí)用。
2、音樂(lè)基礎(chǔ)簡(jiǎn)介
<1>音樂(lè)頻率表
低音
頻率
中音
頻率
高音
頻率
11
262
1
523
11
1046
22
294
2
587
22
1175
33
330
3
659
33
1318
44
349
4
698
44
1397
55
392
5
784
55
1568
66
440
6
880
66
1760
77
494
7
988
77
1967
<2>音調(diào)表建立
由于單片機(jī)輸出為方波輸入信號(hào),波形圖如下:
高低電平各占1/2,根據(jù)單片機(jī)定時(shí)器工作原理。
定時(shí)時(shí)間=(滿值-初值)X機(jī)器周期
    初值=滿值-定時(shí)時(shí)間/機(jī)器周期
        =216-(1/f)X(1/2)X106
以低音11為例,初值為=216-(1/262)X(1/2)X106
                    =63627.6
                    =63628
同理得其他音調(diào)值,具體如下:
Unsigned int code table[]={0,63628,63835,64021,64103,64260,64399,64523,64579,64684,64777,64819,64898,64968,65030,65058,65110,65157,65178,65217,65252,65282};
<3>音樂(lè)表的建立
我們以兩只老虎音樂(lè)為例子,然后我們就會(huì)得到該音樂(lè)表
Uchar code music1[]={8,4,9,4,10,4,8,4,9,4,10,4,8,4,10,4,11,4,12,8,10,4,11,4,12,8,12,3,13,1,12,3,11,1,10,4,8,4,12,3,13,1,12,3,11,1,10,4,8,4,9,4,5,4,8,8,9,4,5,4,8,8,0,0xff};
3、硬件電路設(shè)計(jì)
  • 單片機(jī)最小系統(tǒng)
在基于單片機(jī)的應(yīng)用系統(tǒng)中,其核心是單片機(jī)的最小系統(tǒng),而單片機(jī)又是最小系統(tǒng)的核心,為了方便起見(jiàn),采用的型號(hào)是:STC89C52RC,內(nèi)部資源有:8kbflash,512b sram,4個(gè)8位I/O口,2個(gè)TC,1個(gè)UART,帶ISP和IAP功能。是近年來(lái)流行的低端51單片機(jī)。時(shí)鐘電路采用12MHz晶體,復(fù)位電路采用簡(jiǎn)單的RC復(fù)位電路。R4=1KΩ,R3=10KΩ,C5=10Uf。
  • 發(fā)聲控制電路
音樂(lè)的發(fā)生器采用小喇叭,使用PNP型三極管。
  • 鍵盤控制電路
通過(guò)安按鍵來(lái)控制樂(lè)曲的暫停/播放、加+、減-。S1、S2、S3的功能設(shè)定如下。S1暫停/播放;S2樂(lè)曲/+;S3樂(lè)曲/-。
  • 音樂(lè)數(shù)目顯示電路
顯示當(dāng)前的樂(lè)曲序列。為了直觀的觀察室哪一首曲子的效果,設(shè)置一位數(shù)碼管顯示,數(shù)碼管需要接一個(gè)200-100Ω的電阻起分壓作用。
4、程序流程圖


五、仿真結(jié)果
所仿真出來(lái)的結(jié)果,去掉N2905,聲音變小了,加上之后聲音變大了,額,第一首是兩只老虎,第二首,我換成通天大道,不過(guò)沒(méi)找到樂(lè)譜規(guī)律,錯(cuò)了,第三首是小兔子快開門,第四首新年好,第五首歌曲接連被放出來(lái)。效果不錯(cuò)。
六、總結(jié)
通過(guò)本次仿真作圖,以及程序編寫,仿真原圖,和自己再畫圖,和程序再組合效果,依然不錯(cuò),原圖只是作為參考,其次,通過(guò)本次作業(yè),明白,每一門課代表以后的每項(xiàng)工作,而這門課開設(shè)的原因估計(jì)是要我們認(rèn)為,在一臺(tái)機(jī)器,里面通過(guò)芯片,芯片的程序帶動(dòng)硬件,一件成品就出來(lái)了。所以,軟件和硬件屬于相輔相成,在未來(lái)的世界中,是屬于硬件和軟件共存的時(shí)代,沒(méi)有軟件,硬件別想動(dòng);同理硬件也是一樣的。認(rèn)可了工程師的偉大,以及程序員的厲害之處。
七、附錄
1、元件清單
元件清單:2N2905、2W10G、7SEG-MPX2-CA  A700127M004ATE018、AT89C52、BUTTON、BUZZER、CAP  CRYSTAL、 DIODE-LED、 RES、 SW-SPDT
2、電路圖


單片機(jī)源程序如下:
  1. #include"reg52.h"
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit buzzer=P2^7;
  5. void delay(uint z);
  6. void scan();
  7. sbit S1=P3^1;
  8. sbit S2=P3^2;
  9. sbit S3=P3^3;
  10. bit flag=1;
  11. uchar buf,high,low,n;
  12. char i;
  13. uint sound;
  14. uchar code num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  15. uint code table[]={0,63628,63835,64021,64103,64260,64399,64523,64579,64684,64777,64819,64898, 64968,65030,65058,65110,65157,65178,65217,65252,65282};
  16. uchar code music1[]={8,4,9,4,10,4,8,4,9,4,10,4,8,4,10,4,11,4,12,8,10,4,11,4,12,8,12,3,13,1,12,3,11,1,10, 4,8,4,12,3,13,1,12,3,11,1,10,4,8,4,9,4,5,4,8,8,9,4,5,4,8,8,0xff};
  17. uchar code music2[]={10,10,10,9,8,9,10,12,10,10,9,8,9,10,20,19,20,17,19,19,19,15,20,19,17,19,19,19, 15,16,17,16,19,17,16,15,16,19,8,20,19,19,8,20,19,17,19,20,8,8,20,19,10,10,12,9,8,8,0xff};
  18. uchar code music3[]={12,4,15,2,13,2,12,4,12,4,10,2,12,2,13,2,15,4,12,4,12,4,13,4,12,2,10,2,9,4,9,4,10, 4,12,2,10,2,9,2,10,2,8,4,13,4,12,4,13,4,12,4,13,4,12,4,10,4,13,4,12,4,12,2,12,2,10,2,9,2,8,2,8,8,2,8,2,9,2,10,2,8,8,0xff};
  19. uchar code music4[]={8,3,8,3,8,3,5,3,10,3,10,3,10,3,8,4,8,3,10,3,12,3,12,4,10,3,11,3,10,3,9,6,9,3,10,3, 11,3,11,4,10,3,9,3,10,3,8,4,8,3,10,3,9,3,5,4,7,3,9,3,8,6,0xff};
  20. uchar code music5[]={0,2,8,2,10,2,11,2,12,2,12,2,11,2,12,4,13,2,14,2,15,2,10,2,10,2,11,2,12,8,13,4,12, 2,11,2,12,2,15,2,15,4,13,4,13,2,14,2,15,4,14,4,12,4,10,2,11,2,10,2,11,2,12,4,13,2,14,2,15,4,14,2,13,2,12,8,12,2,13,24,9,8,16,0xff};
  21. uchar code *menu[]={0,music1,music2,music3,music4,music5};
  22. uchar *p;
  23. char j;
  24. void int0() interrupt 0
  25. {if(S2==0)
  26.    {delay(1);
  27.      if(S2==0)
  28.               {j++;
  29.          if(j==6)
  30.                             {j=1;}            
  31.            P0=num[j];
  32. TR0=0;TR1=0;
  33. n=0;i=3;
  34. p=menu[j];
  35. }     
  36. delay(1);
  37. while(! S2);
  38.   }
  39. }
  40. void int1() interrupt 2
  41. {
  42.    if(S3==0)
  43.    {  delay(1);
  44. if(S3==0)
  45. { j--;
  46.   if(j==0){j=5;}
  47.    P0=num[j];TR0=0;TR1=0;n=0;i=3;p=menu[j];}
  48. delay(1);
  49. while(! S3);
  50. }
  51. }
  52. void t1() interrupt 3
  53. {
  54.               TH1=(65536-50000)/256;
  55.               TL1=(65536-50000)%256;
  56.               n--;
  57.               scan();
  58. }
  59. void t0() interrupt 1
  60. {
  61.               TH0=high;
  62.               TL0=low;
  63.               buzzer=!buzzer;
  64. }
  65. void init()
  66. {
  67.               TMOD=0x11;
  68.               TH1=(65536-50000)/256;
  69.               TL1=(65536-50000)%256;
  70.               EA=1;ET0=1;ET1=1;EX0=1;
  71.               EX1=1;IT0=1;IT1=1;
  72. }
  73. void main()
  74. {            
  75.               init();
  76.               while(1)
  77.               {
  78.               for(j=1;j<6;j++)
  79.               {P0=num[i];
  80.                 i=0;p=menu[j];
  81.                  delay(200);while(p[i]!=0)
  82.                  {
  83.                                           buf=p[i];
  84.                                           if(buf!=0)
  85.                                           {
  86.                                                                       sound=table[buf];
  87.                                                                       high=sound/256;
  88.                                                                       low=sound%256;
  89.                                                                       TH0=high;
  90.                                                                       TL0=low;
  91.                                                                       if(flag)
  92.                                                                       {
  93.                                                                         TR0=1;
  94.                                                                         }
  95.                                                                         else
  96.                                                                         {
  97.                                                                         while(!flag);
  98.                                                                         }
  99.                                               }
  100.                                                         else{
  101.                                                         TR0=0;
  102.                                                         }
  103.                                                         i++;
  104.                                                         n=p[i]*2;
  105.                                                         TR1=1;
  106.                                                         while(n!=0);
  107.                                                         i++;
  108.                      }
  109.                  }
  110.               }
  111. }
  112. void scan()
  113. {                           
  114.                             if(S1==0)
  115.                             {
  116.                                 delay(10);
  117.                                           if(S1==0)
  118.                                           {
  119.                                                                       flag=!flag;
  120.                                                                       TR0=~TR0;
  121.                                           }
  122.                                           while(!S1)
  123.                                           {
  124.                                              delay(10);
  125.                                           }
  126.                                              while(!S1);
  127.                             }
  128. }
  129. void delay(uint z)
  130. {uint x,y;
  131.               for(x=0;x<100;x++)
  132.                             for(y=0;y<z;y++);}
復(fù)制代碼

以上圖文的Word格式文檔下載(內(nèi)容和本網(wǎng)頁(yè)上的一模一樣,方便大家保存):
基于單片機(jī)的電子音樂(lè)盒的設(shè)計(jì)與實(shí)現(xiàn).docx (123.75 KB, 下載次數(shù): 115)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:770726 發(fā)表于 2020-6-9 09:25 | 只看該作者
如果把第二首音樂(lè)去掉,那其他代碼的哪些部分需要改動(dòng)呀
回復(fù)

使用道具 舉報(bào)

板凳
ID:777601 發(fā)表于 2020-6-21 09:53 | 只看該作者
有電路圖嗎
回復(fù)

使用道具 舉報(bào)

地板
ID:783980 發(fā)表于 2020-6-21 10:12 | 只看該作者
有資源包嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产综合久久 | 在线观看a视频 | av大片在线观看 | 成人a网| 欧区一欧区二欧区三免费 | 亚洲 中文 欧美 日韩 在线观看 | 性色av香蕉一区二区 | 天天综合久久网 | 天天综合久久网 | 亚洲人成在线播放 | 成人久久久 | 亚洲国产精品一区在线观看 | 99精品99| 在线免费观看黄色 | 第一福利社区1024 | 欧美日韩久久精品 | 中文字幕一区二区三区在线观看 | 国产日韩欧美在线观看 | 国产1区| 男女激情网 | 色男人的天堂 | 伊人久久国产 | 亚洲福利一区 | 国产精品亚洲综合 | 91 久久| 伊人伊成久久人综合网站 | 国产精品99久久久久久久久久久久 | 精品久久精品 | 青青草网站在线观看 | 国产精品视频一二三区 | 亚洲欧洲一区二区 | 亚洲国产精品美女 | 五月天婷婷综合 | 日韩精品a在线观看图片 | 欧美精品在线免费 | 尹人av | av手机在线免费观看 | 91精品福利 | 午夜丁香视频在线观看 | www国产成人免费观看视频,深夜成人网 | 日韩成人一区 |