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

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

QQ登錄

只需一步,快速開(kāi)始

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

絕對(duì)干貨 單片機(jī)8鍵電子琴設(shè)計(jì)(源碼+仿真)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:265962 發(fā)表于 2018-12-29 11:38 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
當(dāng)初的設(shè)計(jì)親自試驗(yàn),可用,歡迎需要的小伙伴下載

制作出來(lái)的實(shí)物圖如下:



仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include <reg52.h>                 //調(diào)用單片機(jī)頭文件
  2. #define uchar unsigned char  //無(wú)符號(hào)字符型 宏定義        變量范圍0~255
  3. #define uint  unsigned int         //無(wú)符號(hào)整型 宏定義        變量范圍0~65535

  4. sbit beep  = P2^5;           //蜂鳴器定義

  5. sbit K1=P1^0;//給P1^0定義,控制DO的發(fā)音
  6. sbit K2=P1^1;//給P1^1定義,控制XI的發(fā)音
  7. sbit K3=P1^2;//給P1^2定義,控制LA的發(fā)音
  8. sbit K4=P1^3;//給P1^3定義,控制SO的發(fā)音
  9. sbit K5=P3^4;//給P3^4定義,控制FA的發(fā)音
  10. sbit K6=P3^5;//給P3^5定義,控制MI的發(fā)音
  11. sbit K7=P3^6;//給P3^6定義,控制RE的發(fā)音
  12. sbit K8=P3^7;//給P3^7定義,控制DO的發(fā)音

  13. sbit K9=P2^0;//音樂(lè)播放按鍵
  14. uchar flag_en = 0;           //開(kāi)始放歌
  15. uchar flag_i = 0;

  16. //數(shù)碼管段選定義       0    1    2    3   4           5        6         7          8           9        
  17. uchar code smg_du[]={0xde,0x90,0xcd,0xd9,0x93,0x5b,0x5f,0xd0,0xdf,0xdb
  18. //                                           A        B         C          D           E   F        不顯示
  19.                                          };         //斷碼        

  20. uchar m,n;
  21. uchar code T[49][2]={{0,0},
  22. {0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9},{0xFB,0x03},{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B},
  23. {0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},{0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05},
  24. {0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{0xFE,0xC0},{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02},
  25. {0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},{0xFF,0x60},{0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81}
  26. };
  27. uchar code music1[][2]={{0,4},           //青花瓷
  28. {0,4},{24,4},{24,4},{21,4},{19,4},{21,4},{14,8},{19,4},{21,4},{24,4},{21,4},{19,16},{0,4},{24,4},{24,4},{21,4},{19,4},{21,4},{12,8},{19,4},{21,4},{24,4},{19,4},{17,16},{0,4},{17,4},{19,4},{21,4},
  29. {24,4},{26,4},{24,4},{22,4},{24,4},{21,4},{21,4},{19,4},{19,16},{0,4},
  30. {17,4},{19,4},{17,4},{17,4},{19,4},{17,4},{19,4},{19,4},{21,8},{24,4},{21,4},{21,12},{0,4},{24,4},{24,4},{21,4},{19,4},{21,4},{14,8},{19,4},{21,4},{24,4},{21,4},{19,16},{0,4},{24,4},{24,4},{21,4},
  31. {19,4},{21,4},{12,8},{19,4},{21,4},{24,4},{19,4},{17,16},{0,4},{17,4},{19,4},{21,4},{24,4},{26,4},{24,4},{22,4},{24,4},{21,4},{21,4},{19,4},{19,12},{12,4},{21,8},{19,4},{19,8},{17,16},
  32. {0xFF,0xFF}};

  33. uchar code music2[][2]={{0,4},          //生日快樂(lè)
  34. {17,6},{17,2},{19,8},{17,8},{22,8},{21,16},
  35. {17,6},{17,2},{19,8},{17,8},{24,8},{22,16},{17,6},{17,2},{29,8},{26,8},{22,8},{21,8},{19,8},{27,6},{27,2},{26,8},{22,8},{24,8},{22,16},
  36. {0xFF,0xFF}};

  37. uchar code music3[][2]={{0,4},         //愛(ài)情買賣
  38. {22,4},{22,4},{17,4},{15,4},{15,4},{17,12},
  39. {15,4},{15,2},{17,2},{15,4},{13,4},{13,4},{15,12},{0,4},
  40. {20,4},{20,4},{20,4},{17,4},{20,4},{20,4},{20,4},{17,4},
  41. {22,4},{17,4},{17,4},{15,4},{15,4},{17,12},
  42. {22,4},{22,4},{17,4},{15,4},{15,4},{17,12},
  43. {15,4},{15,2},{17,2},{15,4},{13,4},{13,4},{15,12},
  44. {20,4},{20,4},{20,2},{17,2},{17,4},{20,4},{20,4},{20,2},{17,2},{17,2},{17,2},
  45. {24,4},{20,4},{20,2},{17,2},{17,4},{20,4},{22,12},
  46. {17,4},{22,4},{25,4},{25,4},{17,4},{22,4},{25,8},
  47. {24,4},{22,2},{24,2},{22,4},{20,4},{15,4},{17,12},
  48. {15,4},{15,4},{15,4},{10,4},{15,4},{17,4},{20,8},
  49. {17,4},{24,4},{24,4},{20,4},{15,4},{17,12},
  50. {17,4},{22,4},{25,4},{25,4},{17,4},{22,4},{25,8},
  51. {29,4},{27,2},{29,2},{27,4},{25,4},{25,4},{27,12},
  52. {29,4},{29,2},{27,4},{25,4},{27,6},{27,2},{25,4},{24,4},
  53. {20,4},{20,2},{17,2},{20,4},{20,2},{22,2},{22,16},
  54. {0xFF,0xFF}};
  55. void delay(uchar p)
  56. {
  57.     uchar i,j;
  58.     for(;p>0;p--)
  59.     for(i=181;i>0;i--)
  60.     for(j=181;j>0;j--);
  61. }

  62. void pause()
  63. {
  64.     uchar i,j;
  65.     for(i=150;i>0;i--)
  66.     for(j=150;j>0;j--);
  67. }


  68. /***********************1ms延時(shí)函數(shù)*****************************/
  69. void delay_1ms(uint q)
  70. {
  71.         uint i,j;
  72.         for(i=0;i<q;i++)
  73.                 for(j=0;j<120;j++);
  74. }

  75. /******************按鍵程序*************************/
  76. void key()          //按鍵程序
  77. {
  78.         if(K1==0)
  79.         {
  80.                 delay_1ms(10);         //按鍵去抖動(dòng)
  81.                 if(K1==0)
  82.                 {
  83.                         P0=smg_du[0];//使數(shù)碼管顯示該音調(diào)的字符
  84.                         while(!K1)
  85.                         {
  86.                                 m = 8;
  87.                                 TR0 = 1;           //打開(kāi)定時(shí)器
  88.                         }//使蜂鳴器發(fā)出相應(yīng)頻率的聲音;
  89.                         TR0 = 0;              //關(guān)閉定時(shí)器
  90.                 }
  91.         }
  92.         if(K2==0)
  93.         {
  94.                 delay_1ms(10);         //按鍵去抖動(dòng)
  95.                 if(K2==0)
  96.                 {
  97.                         P0=smg_du[1];//使數(shù)碼管顯示該音調(diào)的字符
  98.                         while(!K2)
  99.                         {
  100.                                 m = 9;
  101.                                 TR0 = 1;           //打開(kāi)定時(shí)器
  102.                         }//使蜂鳴器發(fā)出相應(yīng)頻率的聲音;
  103.                         TR0 = 0;              //關(guān)閉定時(shí)器
  104.                 }
  105.         }
  106.         if(K3==0)
  107.         {
  108.                 delay_1ms(10);         //按鍵去抖動(dòng)
  109.                 if(K3==0)
  110.                 {
  111.                         P0=smg_du[2];//使數(shù)碼管顯示該音調(diào)的字符
  112.                         while(!K3)
  113.                         {
  114.                                 m = 10;
  115.                                 TR0 = 1;           //打開(kāi)定時(shí)器
  116.                         }//使蜂鳴器發(fā)出相應(yīng)頻率的聲音;
  117.                         TR0 = 0;              //關(guān)閉定時(shí)器
  118.                 }
  119.         }
  120.         if(K4==0)
  121.         {
  122.                 delay_1ms(10);         //按鍵去抖動(dòng)
  123.                 if(K4==0)
  124.                 {
  125.                         P0=smg_du[3];//使數(shù)碼管顯示該音調(diào)的字符               
  126.                         while(!K4)
  127.                         {
  128.                                 m = 11;
  129.                                 TR0 = 1;           //打開(kāi)定時(shí)器
  130.                         }//使蜂鳴器發(fā)出相應(yīng)頻率的聲音;
  131.                         TR0 = 0;              //關(guān)閉定時(shí)器
  132.                 }
  133.         }
  134.         if(K5==0)
  135.         {
  136.                 delay_1ms(10);         //按鍵去抖動(dòng)
  137.                 if(K5==0)
  138.                 {
  139.                         P0=smg_du[4];//使數(shù)碼管顯示該音調(diào)的字符
  140.                         while(!K5)               
  141.                         {
  142.                                 m = 12;
  143.                                 TR0 = 1;           //打開(kāi)定時(shí)器
  144.                         }//使蜂鳴器發(fā)出相應(yīng)頻率的聲音;
  145.                         TR0 = 0;              //關(guān)閉定時(shí)器
  146.                 }
  147.         }
  148.         if(K6==0)
  149.         {
  150.                 delay_1ms(10);         //按鍵去抖動(dòng)
  151.                 if(K6==0)
  152.                 {
  153.                         P0=smg_du[5];//使數(shù)碼管顯示該音調(diào)的字符
  154.                         while(!K6)         
  155.                         {
  156.                                 m = 13;
  157.                                 TR0 = 1;           //打開(kāi)定時(shí)器
  158.                         }//使蜂鳴器發(fā)出相應(yīng)頻率的聲音;
  159.                         TR0 = 0;              //關(guān)閉定時(shí)器
  160.                 }
  161.         }
  162.         if(K7==0)
  163.         {
  164.                 delay_1ms(10);         //按鍵去抖動(dòng)
  165.                 if(K7==0)
  166.                 {
  167.                         P0=smg_du[6];//使數(shù)碼管顯示該音調(diào)的字符
  168.                         while(!K7)
  169.                         {
  170.                                 m = 14;
  171.                                 TR0 = 1;           //打開(kāi)定時(shí)器
  172.                         }//使蜂鳴器發(fā)出相應(yīng)頻率的聲音;
  173.                         TR0 = 0;              //關(guān)閉定時(shí)器
  174.                 }
  175.         }
  176.         if(K8==0)
  177.         {
  178.                 delay_1ms(10);         //按鍵去抖動(dòng)
  179.                 if(K8==0)
  180.                 {
  181.                         P0=smg_du[7];//使數(shù)碼管顯示該音調(diào)的字符
  182.                         while(!K8)
  183.                         {
  184.                                 m = 15;
  185.                                 TR0 = 1;           //打開(kāi)定時(shí)器
  186.                         }//使蜂鳴器發(fā)出相應(yīng)頻率的聲音;
  187.                         TR0 = 0;              //關(guān)閉定時(shí)器
  188.                 }
  189.         }
  190.         P0 = 0x20;
  191.         K9 = 1;           
  192.         if(K9==0)
  193.         {
  194.                 delay_1ms(10);         //按鍵去抖動(dòng)
  195.                 if(K9==0)
  196.                 {
  197.                         flag_en ++;
  198.                         flag_i = 0;
  199.                         if(flag_en > 3)
  200.                         {
  201.                                 flag_en = 0;        
  202.                                 TR0 = 0;
  203.                         }        
  204.                         while(!K9)
  205.                         {
  206.                         }//使蜂鳴器發(fā)出相應(yīng)頻率的聲音;
  207.                 }
  208.         }
  209. }


  210. /******************主程序**********************/           
  211. void main()
  212. {
  213.         P0 = P1 = P2 = P3 = 0xff;
  214.         TMOD=0x01;  EA=1; ET0=1;    //定時(shí)器0初始化
  215.         while(1)
  216.         {
  217.                 key();          //按鍵程序
  218.                 if(flag_en == 1)         //青花瓷
  219.                 {
  220.                         m=music1[flag_i][0];n=music1[flag_i][1];            //放歌
  221.                         P0 = smg_du[m % 8];          //顯示
  222.                         if(m==0x00)
  223.                         {
  224.                                 TR0=0;
  225.                                 beep = 1;
  226.                                 delay(n);
  227.                                 flag_i++;
  228.                         }
  229.                         else if(m==0xFF)                                 //放歌結(jié)束
  230.                         {
  231.                                 TR0=0;beep = 1;delay(30);flag_i=0;flag_en = 0;}
  232.                         else if(m==music1[flag_i+1][0])
  233.                                 {TR0=1;delay(n);TR0=0;beep = 1;pause();flag_i++; }
  234.                         else
  235.                                 {TR0=1;delay(n);flag_i++;}
  236.                 }
  237.                 else
  238.                         beep = 1 ;

  239.                 if(flag_en == 2)         //生日歌
  240.                 {
  241.                         m=music2[flag_i][0];n=music2[flag_i][1];            //放歌
  242.                         P0 = smg_du[m % 8];          //顯示
  243.                         if(m==0x00)
  244.                         {
  245.                                 TR0=0;
  246.                                 beep = 1;
  247.                                 delay(n);
  248.                                 flag_i++;
  249.                         }
  250.                         else if(m==0xFF)                                 //放歌結(jié)束
  251.                         {
  252.                                 TR0=0;beep = 1;delay(30);flag_i=0;flag_en = 0;}
  253.                         else if(m==music2[flag_i+1][0])
  254.                                 {TR0=1;delay(n);TR0=0;beep = 1;pause();flag_i++; }
  255.                         else
  256.                                 {TR0=1;delay(n);flag_i++;}
  257.                 }
  258.                 else
  259. ……………………

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

程序等資料51hei附件下載:
單片機(jī)8鍵電子琴.7z (1.46 MB, 下載次數(shù): 752)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:449377 發(fā)表于 2018-12-30 18:18 | 只看該作者
有沒(méi)有16鍵的啊
回復(fù)

使用道具 舉報(bào)

板凳
ID:483705 發(fā)表于 2019-3-4 09:49 | 只看該作者

真的會(huì)唱好多歌曲!!!酷斃了啊!!!
回復(fù)

使用道具 舉報(bào)

地板
ID:497882 發(fā)表于 2019-4-1 19:45 | 只看該作者
樓主你的這個(gè)可以直接放8節(jié)音嗎?doremifa這幾個(gè)就夠了的。
回復(fù)

使用道具 舉報(bào)

5#
ID:531751 發(fā)表于 2019-5-9 17:13 | 只看該作者
贊一個(gè)!!!
回復(fù)

使用道具 舉報(bào)

6#
ID:531751 發(fā)表于 2019-5-9 20:25 來(lái)自手機(jī) | 只看該作者
左下角是啥呀?
回復(fù)

使用道具 舉報(bào)

7#
ID:182775 發(fā)表于 2019-6-12 23:00 | 只看該作者
謝謝樓主,很有用!!!!!!!!!!!
回復(fù)

使用道具 舉報(bào)

8#
ID:621345 發(fā)表于 2019-10-9 20:25 | 只看該作者
可以,很有幫助,謝謝
回復(fù)

使用道具 舉報(bào)

9#
ID:624669 發(fā)表于 2019-10-31 14:50 來(lái)自手機(jī) | 只看該作者
開(kāi)始參考,坐等焊接
回復(fù)

使用道具 舉報(bào)

10#
ID:624669 發(fā)表于 2019-10-31 14:50 來(lái)自手機(jī) | 只看該作者
感謝大佬!都是現(xiàn)成的
回復(fù)

使用道具 舉報(bào)

11#
ID:624669 發(fā)表于 2019-10-31 15:06 | 只看該作者
這個(gè)電路圖貌似在哪家店見(jiàn)過(guò)
回復(fù)

使用道具 舉報(bào)

12#
ID:624669 發(fā)表于 2019-10-31 15:12 | 只看該作者
這個(gè)是可以直接播放音樂(lè)的嗎,也可以通過(guò)按鍵發(fā)聲音
回復(fù)

使用道具 舉報(bào)

13#
ID:624669 發(fā)表于 2019-10-31 15:24 | 只看該作者
仿真軟件用multisim可以嗎
回復(fù)

使用道具 舉報(bào)

14#
ID:539658 發(fā)表于 2019-11-2 20:56 | 只看該作者
厲害,謝謝
回復(fù)

使用道具 舉報(bào)

15#
ID:634898 發(fā)表于 2019-11-3 20:19 | 只看該作者
這個(gè)真的酷斃了,感謝樓主分享
回復(fù)

使用道具 舉報(bào)

16#
ID:634994 發(fā)表于 2019-11-3 21:00 | 只看該作者
酷斃了  好多歌都能弄出來(lái)
回復(fù)

使用道具 舉報(bào)

17#
ID:642523 發(fā)表于 2019-11-19 14:18 | 只看該作者
感謝樓主
回復(fù)

使用道具 舉報(bào)

18#
ID:659058 發(fā)表于 2019-12-8 20:12 | 只看該作者
感謝樓主
回復(fù)

使用道具 舉報(bào)

19#
ID:24810 發(fā)表于 2019-12-23 11:23 | 只看該作者
以前看到一個(gè)程序,用STC15K單片機(jī),可以存 真實(shí)音色進(jìn)去,通過(guò)DA轉(zhuǎn)換出來(lái)的,聲音更真實(shí)。
回復(fù)

使用道具 舉報(bào)

20#
ID:423971 發(fā)表于 2019-12-24 11:35 | 只看該作者
贊!!下載來(lái)看看 多謝樓主
回復(fù)

使用道具 舉報(bào)

21#
ID:672981 發(fā)表于 2019-12-25 14:57 | 只看該作者
請(qǐng)問(wèn)大佬 有原理圖講解視頻嗎?很需要哦
回復(fù)

使用道具 舉報(bào)

22#
ID:781068 發(fā)表于 2020-6-16 15:14 | 只看該作者
下下來(lái)看看
回復(fù)

使用道具 舉報(bào)

23#
ID:783877 發(fā)表于 2020-6-19 10:14 | 只看該作者
大佬厲害 向大佬學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

24#
ID:784300 發(fā)表于 2020-6-20 19:07 | 只看該作者
836219677 發(fā)表于 2019-11-3 21:00
酷斃了  好多歌都能弄出來(lái)

可以播放嗎?為啥我下載了播放不出來(lái)啊
回復(fù)

使用道具 舉報(bào)

25#
ID:855035 發(fā)表于 2020-12-5 23:33 來(lái)自手機(jī) | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

26#
ID:888052 發(fā)表于 2021-3-3 15:45 | 只看該作者
厲害呀樓主,不錯(cuò)不錯(cuò),學(xué)到了
回復(fù)

使用道具 舉報(bào)

27#
ID:935529 發(fā)表于 2021-6-9 17:17 | 只看該作者
沃德哇咔 發(fā)表于 2019-12-25 14:57
請(qǐng)問(wèn)大佬 有原理圖講解視頻嗎?很需要哦

有講解嗎?
回復(fù)

使用道具 舉報(bào)

28#
ID:936280 發(fā)表于 2021-7-30 19:45 | 只看該作者
仿真怎么打開(kāi)呀?
回復(fù)

使用道具 舉報(bào)

29#
ID:561301 發(fā)表于 2021-8-5 10:53 | 只看該作者
剛學(xué)單片機(jī),學(xué)著搞一個(gè)玩
回復(fù)

使用道具 舉報(bào)

30#
ID:350104 發(fā)表于 2021-8-9 11:26 | 只看該作者
很好的應(yīng)用 推薦一下
回復(fù)

使用道具 舉報(bào)

31#
ID:976016 發(fā)表于 2021-11-29 13:26 | 只看該作者
這個(gè)板子還在嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩国产黄色片 | 日韩三 | 日韩精品一区二区三区中文在线 | 欧美一级久久 | 亚洲综合五月天婷婷 | 精品视频一区二区三区在线观看 | 亚洲精视频| 国产精品久久久久久网站 | 欧美精品免费观看二区 | 欧美色999 | 中文字幕一区二区三区四区五区 | 国产精品69毛片高清亚洲 | 中文字幕一区二区三区四区五区 | 欧美日韩综合一区 | 二区三区视频 | 亚洲精品视频一区二区三区 | 亚洲iv一区二区三区 | 中文字幕在线观看视频网站 | 欧美性猛交一区二区三区精品 | 国产一区二区三区 | 免费视频久久 | 国产乱码精品一区二区三区五月婷 | 成人在线看片 | 高清av一区| 龙珠z国语版在线观看 | 亚洲三区在线播放 | 一区二区三区高清 | 欧美日韩国产高清 | h片在线播放 | 五月天激情电影 | 久久999 | 国产电影一区二区在线观看 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 九九在线精品视频 | 又黑又粗又长的欧美一区 | 国产精品成人69xxx免费视频 | 亚洲一区二区在线播放 | 久热电影| 国产精品无码专区在线观看 | 亚洲欧美激情精品一区二区 | 国产精品日韩欧美一区二区三区 |