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

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

QQ登錄

只需一步,快速開始

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

激光電子豎琴的制作過程 含單片機(jī)程序,原理圖,教程

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
一個(gè)非常漂亮的可彈奏激光電子豎琴,用手彈的時(shí)候遮擋住激光柱,就會(huì)發(fā)出相應(yīng)的聲音.包括制作過程,程序,原理,實(shí)物圖,有需要的話可以參考一下


電路原理圖:

激光豎琴制作教程:

單片機(jī)源程序如下:
  1. /*-----------------------------------------------
  2. 名稱:電子琴
  3. 編寫:Cgr
  4. 修改:無
  5. 內(nèi)容:7個(gè)激光束控制7個(gè)音符7個(gè)LED顯示,1個(gè)控制播放音樂,1個(gè)高中低音切換
  6.      
  7. ------------------------------------------------*/
  8. #include "reg52.h"
  9. #include "intrins.h"

  10. sbit SPK    = P3^4;
  11. sbit LED_L  = P3^7;
  12. sbit LED_M  = P3^6;
  13. sbit LED_H  = P3^5;
  14. sbit KEY    = P3^3;

  15. #define KEYDELAY 20
  16. #define KEY_PORT P2
  17. #define LED_PORT P1

  18. bit FT_1ms,FT_250ms;
  19. bit F_PlaySong,F_PlayTone,F_KeyDelay,F_Tone,F_KeyUp,F_Music_Ide;
  20. unsigned char Freq_H,Freq_L,SongLen,PlayIde,i;
  21. unsigned char KeyBuf,KeySure,KeyDelay_Cnt,Timer1_Cnt,KeyDelay_Cnt1;
  22. unsigned char k,Time,PortTemp;

  23.                          //世上只有媽媽好數(shù)據(jù)表
  24. code unsigned char MUSIC[]={6,2,6,     5,2,2,      3,2,4,    5,2,4,    1,3,4,    6,2,2,    5,2,2,
  25.                             6,2,8,      3,2,4,      5,2,2,    6,2,2,    5,2,4,   3,2,4,    1,2,2,
  26.                             6,1,2,      5,2,2,      3,2,2,    2,2,8,    2,2,6,   3,2,2,    5,2,4,
  27.                             5,2,2,      6,2,2,      3,2,4,    2,2,4,    1,2,8,   5,2,6,    3,2,2,
  28.                             2,2,2,      1,2,2,      6,1,2,   1,2,2,    5,1,12,   0,0,0
  29.                             };
  30. /***********************生日快樂**********************/
  31. code unsigned char MUSIC1[]={
  32.                                  5,1,2, 5,1,2, 6,1,4, 5,1,4, 1,2,4, 7,1,8,
  33.                                  5,1,2, 5,1,2, 6,1,4, 5,1,4, 2,2,4, 1,2,8,
  34.                                  5,1,2, 5,1,2, 5,2,4, 3,2,4, 1,2,4, 7,1,4,
  35.                                  6,1,8, 4,2,2, 4,2,2, 3,2,4, 1,2,4, 2,2,4,
  36.                                  1,2,12, 0,0,0};

  37.                          // 音階頻率表 高八位
  38. code unsigned char FREQH[]={
  39.                                 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
  40.                                 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
  41.                                 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
  42.                                 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
  43.                                } ;
  44.                          // 音階頻率表 低八位
  45. code unsigned char FREQL[]={
  46.                                  0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
  47.                                  0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
  48.                                  0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
  49.                                  0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
  50.                                 };

  51. void TimerInit(void)
  52. {   
  53.     TMOD = 0x11;
  54.     TH1  = (65536 - 1000) / 256;
  55.     TL1  = (65536 - 1000) % 256;
  56.     ET0  = 1;
  57.     ET1  = 1;
  58.     TR0 = 1;
  59.     TR1  = 1;
  60.     EA   = 1;
  61. }
  62. void ScanKey(void)
  63. {
  64.     if(F_KeyDelay)
  65.     {
  66.         KeyDelay_Cnt --;
  67.         if(KeyDelay_Cnt == 0)
  68.         {
  69.             F_KeyDelay = 0;
  70.             KeySure = KeyBuf;
  71.             F_KeyUp = 1;
  72.         }        
  73.     }
  74.     if(KeyBuf != KEY_PORT)
  75.     {
  76.         KeyBuf = KEY_PORT;
  77.         KeyDelay_Cnt = KEYDELAY;
  78.         F_KeyDelay = 1;
  79.     }

  80.     if(!KEY)
  81.     {
  82.         KeyDelay_Cnt1 --;
  83.         if(KeyDelay_Cnt1 == 0)
  84.         {
  85.             if(F_PlaySong == 0)
  86.                 {
  87.                 F_Music_Ide = !F_Music_Ide;
  88.                 F_PlaySong = 1;
  89.                 i = 0;
  90.                 }
  91.         }
  92.     }
  93.     else
  94.     {
  95.          KeyDelay_Cnt1 = KEYDELAY;
  96.     }
  97.     if(PlayIde == 1)
  98.     {
  99.         LED_L = 1;
  100.         LED_M = 0;
  101.         LED_H = 1;
  102.     }
  103.     if(PlayIde == 2)
  104.     {
  105.         LED_L = 1;
  106.         LED_M = 1;
  107.         LED_H = 0;
  108.     }
  109.     if(PlayIde == 0)
  110.     {
  111.         LED_L = 0;
  112.         LED_M = 1;
  113.         LED_H = 1;
  114.     }
  115. }
  116. void main(void)
  117. {
  118.     TimerInit();
  119.     F_PlayTone = 0;
  120.     PortTemp = 0x7f;
  121.     for(i = 0;i < 7;)
  122.     {
  123.         if(FT_250ms)
  124.         {
  125.             FT_250ms = 0;
  126.             i++;
  127.             PortTemp = _crol_(PortTemp,1);
  128.             LED_PORT= PortTemp;
  129.         }
  130.     }
  131.     for(i = 0;i < 7;)
  132.     {
  133.         if(FT_250ms)
  134.         {
  135.             FT_250ms = 0;
  136.             i++;
  137.             PortTemp = _cror_(PortTemp,1);
  138.             LED_PORT= PortTemp;
  139.         }
  140.     }
  141.     LED_PORT = 0xff;
  142.     i = 0;
  143.     while(1)
  144.     {
  145.         if(FT_1ms)
  146.         {
  147.             FT_1ms = 0;
  148.             WDT_CONTR = 0x38;
  149.             ScanKey();
  150.             if(F_PlaySong)
  151.                 {
  152.                 if(FT_250ms)
  153.                     {
  154.                     FT_250ms = 0;
  155.                     if(Time > 0)
  156.                             {
  157.                         Time --;
  158.                             }
  159.                     else
  160.                             {
  161.                         PortTemp = 0x01;
  162.                         F_PlayTone = 1;
  163.                         if(F_Music_Ide)
  164.                                 {
  165.                             k = MUSIC[i] + 7 * MUSIC[i + 1] - 1;//去音符振蕩頻率所需數(shù)據(jù)
  166.                             PlayIde = MUSIC[i + 1] - 1;
  167.                             PortTemp <<= (MUSIC[i]-1);
  168.                             Time = MUSIC[i+2] - 1;          //節(jié)拍時(shí)長           
  169.                             if(! MUSIC[i])
  170.                                         {
  171.                                     i = 0;
  172.                                 F_PlaySong = 0;
  173.                                 LED_PORT = 0xff;
  174.                                 F_PlayTone = 0;
  175.                                     SPK = 1;
  176.                                 PlayIde = 1;
  177.                                 Time = 4;
  178.                                         }
  179.                                 }
  180.                             else
  181.                                 {
  182.                             k = MUSIC1[i] + 7 * MUSIC1[i + 1] - 1;//去音符振蕩頻率所需數(shù)據(jù)
  183.                             PlayIde = MUSIC1[i + 1] - 1;
  184.                             PortTemp <<= (MUSIC1[i]-1);
  185.                             Time = MUSIC1[i+2] - 1;          //節(jié)拍時(shí)長     
  186.                             if(! MUSIC1[i])
  187.                                         {
  188.                                     i = 0;
  189.                                 F_PlaySong = 0;
  190.                                 LED_PORT = 0xff;
  191.                                 F_PlayTone = 0;
  192.                                     SPK = 1;
  193.                                 PlayIde = 1;
  194.                                 Time = 4;
  195.                                         }
  196.                                 }
  197.                         PortTemp = ~PortTemp;
  198.                         LED_PORT = PortTemp;
  199.                         Freq_H = FREQH[k];
  200.                         Freq_L = FREQL[k];
  201.                         i = i + 3;
  202.                     }                              
  203.                     }
  204.                 }
  205.             else
  206.             {               
  207.                 switch(KeySure)
  208.                     {
  209.                            
  210.                     case 0x81:  F_Tone = 0;F_PlayTone = 1;  Timer1_Cnt = 0;k=0; LED_PORT = 0xfe;
  211.                         break;
  212.                     case 0x41:  F_Tone = 0;F_PlayTone = 1;  Timer1_Cnt = 0;k=1; LED_PORT = 0xfd;
  213.                         break;
  214.                     case 0x21:  F_Tone = 0;F_PlayTone = 1;  Timer1_Cnt = 0;k=2; LED_PORT = 0xfb;
  215.                         break;
  216.                     case 0x11:  F_Tone = 0;F_PlayTone = 1;  Timer1_Cnt = 0;k=3; LED_PORT = 0xf7;
  217.                         break;
  218.                     case 0x09:  F_Tone = 0;F_PlayTone = 1;  Timer1_Cnt = 0;k=4; LED_PORT = 0xef;
  219.                         break;
  220.                     case 0x05:  F_Tone = 0;F_PlayTone = 1;  Timer1_Cnt = 0;k=5; LED_PORT = 0xdf;
  221.                         break;
  222.                     case 0x03:  F_Tone = 0;F_PlayTone = 1;  Timer1_Cnt = 0;k=6; LED_PORT = 0xbf;
  223.                         break;
  224.                     case 0x00:        
  225.                                 if(F_KeyUp)
  226.                                             {
  227.                                     F_KeyUp = 0;        
  228.                                     PlayIde++;        
  229.                                     if(PlayIde == 3)
  230.                                                 {               
  231.                                         PlayIde = 0;
  232.                                                     }
  233.                                             }
  234.                         break;
  235.                     default:         
  236.                         break;
  237.                 }         
  238.                 Freq_H = FREQH[(PlayIde * 7) + k];
  239.                 Freq_L = FREQL[(PlayIde * 7) + k];
  240.                 if(F_Tone)
  241.                     {
  242.                     F_Tone = 0;
  243.                     F_PlayTone = 0;
  244. ……………………

  245. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼


所有資料51hei提供下載(包含詳細(xì)的制作教程和完整代碼):
激光琴資料V2.0(以上資料打包下載).rar (19.6 MB, 下載次數(shù): 255)



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

使用道具 舉報(bào)

沙發(fā)
ID:203436 發(fā)表于 2017-6-28 15:59 | 只看該作者
那個(gè)原型的是喇叭么?
回復(fù)

使用道具 舉報(bào)

板凳
ID:96711 發(fā)表于 2017-6-28 16:44 | 只看該作者
很有創(chuàng)意哦,學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

地板
ID:215892 發(fā)表于 2017-6-29 17:41 | 只看該作者
很有創(chuàng)意哦,學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

5#
ID:215892 發(fā)表于 2017-6-29 17:42 | 只看該作者
很有創(chuàng)意哦,學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

6#
ID:210627 發(fā)表于 2017-9-6 16:51 | 只看該作者
WDT_CONTR = 0x38;這句語句什么意思,該怎么定義,編譯有錯(cuò)。
回復(fù)

使用道具 舉報(bào)

7#
ID:249545 發(fā)表于 2017-11-27 10:36 | 只看該作者
作品漂亮,老師軟件,硬件都能做,木工技術(shù)學(xué)得真好!
回復(fù)

使用道具 舉報(bào)

8#
ID:318951 發(fā)表于 2018-4-29 17:24 | 只看該作者
很有創(chuàng)意哦,學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

9#
ID:318951 發(fā)表于 2018-4-29 17:24 | 只看該作者

很有創(chuàng)意哦,學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

10#
ID:304350 發(fā)表于 2018-9-22 21:04 | 只看該作者
很有創(chuàng)意哦,值得學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

11#
ID:213599 發(fā)表于 2018-10-12 17:38 | 只看該作者
xydedanpianji 發(fā)表于 2017-6-28 15:59
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

耳麥上拆的,聲音會(huì)比較大
回復(fù)

使用道具 舉報(bào)

12#
ID:612620 發(fā)表于 2019-9-17 15:43 | 只看該作者
還可以哦
回復(fù)

使用道具 舉報(bào)

13#
ID:613217 發(fā)表于 2019-12-30 15:50 | 只看該作者
感覺還不錯(cuò)比較詳細(xì),請(qǐng)問這個(gè)能在isis7上模擬嗎
回復(fù)

使用道具 舉報(bào)

14#
ID:979932 發(fā)表于 2021-11-10 22:19 | 只看該作者
很有創(chuàng)意哦,學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲综合在线一区 | 免费在线观看一区二区 | 久久久久国产精品午夜一区 | a级大片免费观看 | 九九亚洲 | 国产精品极品美女在线观看免费 | 啪啪精品 | 在线欧美视频 | 日韩免费高清视频 | 欧美一级三级在线观看 | 97人人干| 欧美黄在线观看 | 人人干在线视频 | 亚洲精品国产一区 | 日韩中文字幕在线视频 | 久草视频网站 | 欧美国产日韩在线观看 | 亚洲精品国产电影 | 国产精品1区2区3区 中文字幕一区二区三区四区 | 久久中文字幕一区 | 国产高清精品一区二区三区 | 福利av在线 | 97碰碰碰| 午夜免费福利电影 | 一区视频| 亚洲网在线| 国产黄色在线观看 | 中文字幕丁香5月 | 成人在线免费电影 | 欧美成人一区二免费视频软件 | 99精品欧美一区二区三区 | 欧美亚洲视频 | 91精品国产自产精品男人的天堂 | 玖玖综合网 | 一级免费毛片 | 国产乱码精品一区二区三区五月婷 | 国精产品一区二区三区 | 欧美电影在线观看网站 | 精品美女久久久久久免费 | 国产精品一区一区 | 国产日韩欧美精品一区二区三区 |