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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3245|回復: 0
打印 上一主題 下一主題
收起左側

51單片機音樂花樣燈數組方法實現 帶仿真與源碼

[復制鏈接]
跳轉到指定樓層
樓主
51單片機課程設計分享,制作音樂花樣燈數組法法的仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機花樣燈源程序如下:
  1.                                            /*12Mhz晶振*/
  2. #include <reg52.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit key2=P3^3;//key2外部中斷1 控制花樣燈的切換速度
  6. sbit key1=P3^2;//key1外部中斷0 控制播放哪首曲子
  7. sbit voice=P3^7;//蜂鳴器定義
  8. uchar code sound[]={0xff,                 //每個音階  不同拍子的數據
  9. 0x60,0x10,0x55,0x10,0x4c,0x10,0x48,0x10,0x40,0x10,0x39,0x10,0x33,0x10,
  10. 0x30,0x10,0x2b,0x10,0x26,0x10,0x24,0x10,0x20,0x10,0x1c,0x10,0x19,0x10,
  11. 0x18,0x10,0x15,0x10,0x13,0x10,0x12,0x10,0x10,0x10,0x0e,0x10,0x0d,0x10,//1/4拍子低音1到高音7
  12. 0x60,0x20,0x55,0x20,0x4c,0x20,0x48,0x20,0x40,0x20,0x39,0x20,0x33,0x20,
  13. 0x30,0x20,0x2b,0x20,0x26,0x20,0x24,0x20,0x20,0x20,0x1c,0x20,0x19,0x20,
  14. 0x18,0x20,0x15,0x20,0x13,0x20,0x12,0x20,0x10,0x20,0x0e,0x20,0x0d,0x20,//2/4拍子低音1到高音7
  15. 0x60,0x30,0x55,0x30,0x4c,0x30,0x48,0x30,0x40,0x30,0x39,0x30,0x33,0x30,
  16. 0x30,0x30,0x2b,0x30,0x26,0x30,0x24,0x30,0x20,0x30,0x1c,0x30,0x19,0x30,
  17. 0x18,0x30,0x15,0x30,0x13,0x30,0x12,0x30,0x10,0x30,0x0e,0x30,0x0d,0x30,//3/4拍子低音1到高音7
  18. 0x60,0x40,0x55,0x40,0x4c,0x40,0x48,0x40,0x40,0x40,0x39,0x40,0x33,0x40,
  19. 0x30,0x40,0x2b,0x40,0x26,0x40,0x24,0x40,0x20,0x40,0x1c,0x40,0x19,0x40,
  20. 0x18,0x40,0x15,0x40,0x13,0x40,0x12,0x40,0x10,0x40,0x0e,0x40,0x0d,0x40,//4/4拍子低音1到高音7
  21. 0x60,0x60,0x55,0x60,0x4c,0x60,0x48,0x60,0x40,0x60,0x39,0x60,0x33,0x60,
  22. 0x30,0x60,0x2b,0x60,0x26,0x60,0x24,0x60,0x20,0x60,0x1c,0x60,0x19,0x60,
  23. 0x18,0x60,0x15,0x60,0x13,0x60,0x12,0x60,0x10,0x60,0x0e,0x60,0x0d,0x60,//5/4拍子低音1到高音7
  24. 0x60,0x80,0x55,0x80,0x4c,0x80,0x48,0x80,0x40,0x80,0x39,0x80,0x33,0x80,
  25. 0x30,0x80,0x2b,0x80,0x26,0x80,0x24,0x80,0x20,0x80,0x1c,0x80,0x19,0x80,
  26. 0x18,0x80,0x15,0x80,0x13,0x80,0x12,0x80,0x10,0x80,0x0e,0x80,0x0d,0x80,//6/4拍子低音1到高音7
  27. 0x60,0xc0,0x55,0xc0,0x4c,0xc0,0x48,0xc0,0x40,0xc0,0x39,0xc0,0x33,0xc0,
  28. 0x30,0xc0,0x2b,0xc0,0x26,0xc0,0x24,0xc0,0x20,0xc0,0x1c,0xc0,0x19,0xc0,
  29. 0x18,0xc0,0x15,0xc0,0x13,0xc0,0x12,0xc0,0x10,0xc0,0x0e,0xc0,0x0d,0xc0,//7/4拍子低音1到高音7
  30. 0xff,0x10,0xff,0x20,0xff,0x30,0xff,0x40,0xff,0x60,0xff,0x80,0xff,0xc0,//休止符,延時不同
  31. 0x00};
  32. uchar code kanong[]={0xff,                //卡農  
  33. 0x13,0x20,0x15,0x20,0x18,0x20,0x19,0x20,0x1c,0x20,0x20,0x20,0x1c,0x20,0x19,0x20,//第一行
  34. 0x18,0x20,0x19,0x20,0x1c,0x20,0x20,0x20,0x24,0x20,0x26,0x20,0x24,0x20,0x2b,0x20,//第二行
  35. 0x18,0x08,0x19,0x08,0x18,0x08,0x30,0x08,0x33,0x08,0x20,0x08,0x2b,0x08,0x26,0x08,//第三行
  36. 0x30,0x08,0x18,0x08,0x19,0x08,0x1c,0x08,0x19,0x08,0x13,0x08,0x10,0x08,0x0e,0x08,
  37. 0x12,0x08,0x13,0x08,0x15,0x08,0x12,0x08,0x12,0x08,0x13,0x08,0x18,0x08,0x19,0x08,
  38. 0x1c,0x08,0x20,0x08,0x24,0x08,0x26,0x08,0x2b,0x08,0x24,0x08,0x26,0x08,0x2b,0x08,
  39. 0x30,0x08,0x2b,0x08,0x26,0x08,0x24,0x08,0x20,0x08,0x2b,0x08,0x20,0x08,0x24,0x08,//第四行
  40. 0x26,0x08,0x1c,0x08,0x20,0x08,0x24,0x08,0x20,0x08,0x24,0x08,0x26,0x08,0x2b,0x08,
  41. 0x30,0x08,0x39,0x08,0x1c,0x08,0x19,0x08,0x18,0x08,0x19,0x08,0x1c,0x08,0x20,0x08,
  42. 0x24,0x08,0x26,0x08,0x2b,0x08,0x1c,0x08,0x20,0x08,0x1c,0x08,0x20,0x08,0x24,0x08,
  43. 0x26,0x10,0x13,0x10,0x15,0x20,0x18,0x20,0x15,0x20,0x18,0x10,0x13,0x10,0x15,0x10,0x12,0x10,//第五行
  44. 0x10,0x08,0x13,0x04,0x12,0x04,  0x10,0x08,0x13,0x04,0x12,0x04,  0x10,0x04,0x20,0x04,0x1c,0x04,0x19,0x04,  0x18,0x04,0x15,0x04,0x13,0x04,0x12,0x04,//第六行
  45. 0x13,0x08,0x18,0x04,0x15,0x04,  0x13,0x08,0x26,0x04,0x24,0x04,  0x20,0x04,0x1c,0x04,0x20,0x04,0x24,0x04,  0x20,0x04,0x26,0x04,0x24,0x04,0x20,0x04,
  46. 0x24,0x08,0x1c,0x04,0x20,0x04,  0x24,0x08,0x26,0x04,0x2b,0x04,  0x26,0x04,0x2b,0x04,0x30,0x04,0x2b,0x04,  0x26,0x04,0x24,0x04,0x20,0x04,0x1c,0x04,
  47. 0x24,0x08,0x1c,0x04,0x20,0x04,  0x1c,0x08,0x19,0x04,0x18,0x04,  0x20,0x04,0x1c,0x04,0x19,0x04,0x18,0x04,  0x15,0x04,0x13,0x04,0x12,0x04,0x10,0x04,//第七行
  48. 0x13,0x08,0x18,0x04,0x15,0x04,  0x13,0x08,0x15,0x04,0x18,0x04,  0x15,0x04,0x19,0x04,0x18,0x04,0x15,0x04,  0x13,0x04,0x15,0x04,0x18,0x04,0x19,0x04,
  49. 0x18,0x08,0x1c,0x04,0x19,0x04,  0x18,0x08,0x30,0x04,0x2b,0x04,  0x26,0x04,0x24,0x04,0x26,0x04,0x2b,0x04,  0x26,0x04,0x18,0x04,0x19,0x04,0x18,0x04,
  50. 0x1c,0x08,0x18,0x04,0x19,0x04,  0x1c,0x08,0x20,0x04,0x24,0x04,  0x20,0x04,0x24,0x04,0x26,0x04,0x24,0x04,  0x20,0x04,0x1c,0x04,0x19,0x04,0x30,0x04,//第八行
  51. 0x1c,0x08,0x18,0x04,0x19,0x04,  0x18,0x08,0x19,0x04,0x1c,0x04,  0x19,0x04,0x18,0x04,0x15,0x04,0x18,0x04,  0x19,0x04,0x18,0x04,0x1c,0x04,0x19,0x04,
  52. 0x13,0x08,0x26,0x08,0x24,0x08,0x26,0x08,  0x2b,0x08,0x15,0x08,0x13,0x08,0x15,0x08,  0x18,0x08,0x26,0x08,0x30,0x08,0x1c,0x08,  0x20,0x08,0x40,0x08,0x48,0x08,0x40,0x08,//第九行
  53. 0x39,0x08,0x1c,0x08,0x19,0x08,0x1c,0x08,  0x19,0x08,0x40,0x08,0x48,0x08,0x40,0x08,  0x39,0x08,0x1c,0x08,0x20,0x08,0x1c,0x08,  0x19,0x08,0x19,0x08,0x1c,0x08,0x19,0x08,
  54. 0x30,0x08,0x18,0x08,0x15,0x08,0x18,0x08,  0x19,0x08,0x33,0x08,0x30,0x08,0x33,0x08,  0x39,0x08,0x1c,0x08,0x20,0x08,0x1c,0x08,  0x19,0x08,0x33,0x08,0x26,0x08,0x2b,0x08,//第十行
  55. 0x30,0x08,0x18,0x08,0x15,0x08,0x12,0x08,  0x13,0x08,0x26,0x08,0x20,0x08,0x13,0x08,  0x18,0x08,0x12,0x08,0x13,0x08,0x12,0x08,  0x15,0x08,0x20,0x08,0x24,0x08,0x20,0x08,
  56. 0x26,0x08,0x18,0x04,0x19,0x04,  0x18,0x08,0x26,0x08,  0x20,0x08,0x20,0x04,0x1c,0x04,  0x19,0x08,0x20,0x08,//第十一行
  57. 0x26,0x08,0x18,0x04,0x15,0x04,  0x13,0x08,0x18,0x08,  0x13,0x08,0x13,0x04,0x15,0x04,  0x18,0x08,0x19,0x08,  
  58. 0x1c,0x08,0x1c,0x04,0x20,0x04,  0x1c,0x08,0x19,0x08,  0x18,0x08,0x13,0x04,0x15,0x04,  0x18,0x08,0x13,0x08,
  59. 0x00};
  60. code unsigned long Pattern[]={         //24顆LED燈花樣數據
  61. 0x00fffffc,0x00fffff9,0x00fffff3,0x00ffffe7,//兩個燈順時針流水
  62. 0x00ffffcf,0x00ffff9f,0x00ffff3f,0x00fffe7f,
  63. 0x00fffcff,0x00fff9ff,0x00fff3ff,0x00ffe7ff,
  64. 0x00ffcfff,0x00ff9fff,0x00ff3fff,0x00fe7fff,
  65. 0x00fcffff,0x00f9ffff,0x00f3ffff,0x00e7ffff,
  66. 0x00cfffff,0x009fffff,0x003fffff,0x007fffff,0x00ffffff,
  67. 0x00e7e7e7,0x00dbdbdb,0x00bdbdbd,0x007e7e7e,0x00bdbdbd,0x00dbdbdb,0x00e7e7e7,0x00ffffff,//
  68. 0x00e7e7e7,0x00c3c3c3,0x00818181,0x00000000,0x00818181,0x00c3c3c3,0x00e7e7e7,0x00ffffff,//
  69. 0x00aaaaaa,0x00ffffff,0x00555555,0x00ffffff,0x00aaaaaa,0x00ffffff,0x00555555,//錯位點亮
  70. 0x00181818,0x00818181,0x00181818,0x00818181,//三個相連的燈移位
  71. 0x00181818,0x00818181,0x00181818,0x00818181,0x00ffffff,
  72. 0x00f0f0f0,0x000f0f0f,0x00000000,0x00ffffff,
  73. 0x00f8f8f8,0x00f1f1f1,0x00e3e3e3,0x00c7c7c7,0x008f8f8f,0x001f1f1f,0x003f3f3f,0x007f7f7f,0x007f7f7f,//三個相連的燈流水
  74. 0x003f3f3f,0x001f1f1f,0x008f8f8f,0x00c7c7c7,0x00e3e3e3,0x00f1f1f1,0x00f8f8f8,0x00ffffff,
  75. 0x00000000,0x00000000,0x00ffffff,0x00ffffff,//全亮全滅
  76. 0x000f0f0f,0x00f0f0f0,0x000f0f0f,0x00f0f0f0,//相連的四個燈全亮全滅
  77. 0x00fffffe,0x00fffffd,0xfffffffb,0x00fffff7,//一個燈順時針流
  78. 0x00ffffef,0x00ffffdf,0x00ffffbf,0x00ffff7f,
  79. 0x00fffeff,0x00fffdff,0x00fffbff,0x00fff7ff,
  80. 0x00ffefff,0x00ffdfff,0x00ffbfff,0x00ff7fff,
  81. 0x00feffff,0x00fdffff,0x00fbffff,0x00f7ffff,
  82. 0x00efffff,0x00dfffff,0x00bfffff,0x007fffff,0x00ffffff,       
  83. 0x00fffffe,0x00fffffc,0x00fffff8,0x00fffff0,//順時針從一個亮到全部亮
  84. 0x00ffffe0,0x00ffffc0,0x00ffff80,0x00ffff00,
  85. 0x00fffe00,0x00fffc00,0x00fff800,0x00fff000,
  86. 0x00ffe000,0x00ffc000,0x00ff8000,0x00ff0000,
  87. 0x00fe0000,0x00fc0000,0x00f80000,0x00f00000,
  88. 0x00e00000,0x00c00000,0x00800000,0x00000000};
  89. uchar zdjs=0,jp,i=0;
  90. uchar num=0,numtop=5,count=0;
  91. void del(yj);
  92. void delay(uint z);
  93. void play(void)
  94. {
  95.         uint dpjs=0;
  96.         uchar yj;
  97.         while(1)
  98.         {  
  99.                 zdjs=0;  
  100.                 if(count==0)
  101.                 {       
  102.                         TR0=0;
  103.                         break;
  104.                 }
  105.                 if(count==1)        //選曲
  106.                 {
  107.                         dpjs++; yj=sound[dpjs];    //取出音階的頻率
  108.                         dpjs++; jp=sound[dpjs];           //取出延時時長
  109.                 }
  110.                 if(count==2)
  111.                 {
  112.                         dpjs++; yj=kanong[dpjs];
  113.                         dpjs++; jp=kanong[dpjs];
  114.                         jp=jp*4;   //這句是調音的
  115.                 }                  

  116.                          while(zdjs!=(jp))
  117.                          {
  118.                                  if(yj!=0xff)
  119.                                  {
  120.                                          if(yj!=0)  //判斷音樂是否播放完畢
  121.                                          {
  122.                                                  voice=!voice;
  123.                                                  del(yj);
  124.                                          }
  125.                                          else
  126.                                          {
  127.                                                  dpjs=0;
  128.                                                  break;
  129.                                          }
  130.                                  }
  131.                                  else
  132.                                  {
  133.                                          voice=0;
  134.                                          del(jp);
  135.                                  }
  136.                         }
  137.                  }
  138. }
  139. void Time0() interrupt 1  using 1           //產生音樂基準
  140. {
  141.         TH0=0xd8, TL0=0xf0;
  142.         zdjs++;
  143. }
  144. void Time1() interrupt 3                             //控制花樣燈的切換
  145. {
  146.        
  147.         TH1=0x3C, TL1=0xB0;
  148.         num++;
  149.         if(num==numtop)
  150.         {
  151.                 num=0;
  152.                 P0=Pattern[i];
  153.                 P1=Pattern[i]>>8;
  154.                 P2=Pattern[i]>>16;
  155.                 i++;
  156.                 if(i==135) i=0;
  157.         }
  158. }                         
  159. void int0() interrupt 0                 //key1外部中斷0 控制播放哪首曲子
  160. {
  161.         del(5);         
  162.         EA=0;
  163.         if(key1==0)
  164.         {
  165.                 count++;                  //count決定播放哪一首曲子
  166.                 while(!key1);
  167.                 if(count==4) count=0;       
  168.         }
  169.         EA=1;
  170. }
  171. void int1() interrupt 2                   //key2外部中斷1 控制花樣燈的切換速度
  172. {
  173.         del(5);  //去抖
  174.         EA=0;    //關總中斷
  175.         numtop++;
  176. //        while(!key2);         //去抖動
  177.         if(numtop==10) numtop=0;                //numtop 代表最長延時時間
  178.         EA=1;  //開總中斷
  179. }                                  
  180. void del(yj)                 //簡單延時函數
  181. {
  182.         uchar yj2=2;
  183.     while(yj!=0)
  184.     {      
  185.             while(yj2!=0)
  186.         {
  187.                 yj2--;
  188.         }
  189.         yj2=2;
  190.         yj--;  
  191.     }
  192.    
  193. }
  194. void main()
  195. {
  196.                 TMOD=0x11,IE=0x8a;
  197.                 TH0=0xd8, TL0=0xf0;  //10ms音樂基準
  198.                 TH1=0x3C, TL1=0xB0;  //50MS
  199.                 EX0=1;//開外部中斷0
  200.                 IT0=0;//外部中斷0下降沿觸發方式
  201.                 EX1=1;//開外部中斷1
  202.                 IT1=0;//外部中斷1下降沿觸發方式          
  203.                 TR0=1; TR1=1;
  204.             play();
  205. }


復制代碼

所有資料51hei提供下載:
51單片機課程制作數組法.rar (745.65 KB, 下載次數: 26)


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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧洲精品久久久久毛片完整版 | 国产成年人视频 | 美女视频黄的免费 | 欧美精品久久 | 欧美久久精品一级c片 | 狠狠狠色丁香婷婷综合久久五月 | xxx国产精品视频 | 国产精品一区二区在线 | 日产精品久久久一区二区福利 | 国产激情在线 | 国内91在线 | 亚洲欧洲成人av每日更新 | 亚洲综合大片69999 | 国产精品久久国产精品久久 | 一区二区免费在线观看 | 一区二区三区在线观看视频 | av在线播放网 | 国产精品视频二区三区 | 午夜电影网站 | 亚洲精品66| 麻豆久久久 | 鸳鸯谱在线观看高清 | 日韩欧美专区 | 欧美视频网| 久久精品免费看 | 亚洲精品视频免费观看 | 男人的天堂在线视频 | 国产ts一区 | 欧州一区二区三区 | www.天天干.com| 最新免费黄色网址 | 看a网站| 欧美一区二区三区视频在线观看 | 狠狠综合网 | 伊人影院在线观看 | 亚洲成av人片在线观看 | 精品国产乱码久久久久久牛牛 | 九九在线| 国产成人精品免费视频 | 国产高清精品一区二区三区 | 日本一区二区高清视频 |