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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機的電子琴代碼和PCB與原理圖(有實物)

[復制鏈接]
跳轉到指定樓層
樓主
基于單片機的電子琴(電子系統設計的題目),希望可以幫到大家
制作成功的實物圖:

Altium Designer畫的電子琴原理圖和PCB圖如下:(51hei附件中可下載工程文件)


單片機源程序如下:
  1. #include <reg51.h>
  2. #include "lcd.h"
  3. #include "key.h"
  4. //---重定義關鍵詞---//
  5. #ifndef u8
  6. #define u8 unsigned char
  7. #endif

  8. #ifndef u32
  9. #define        u32 unsigned int
  10. #endif

  11. sbit BEEP = P2^0;

  12. u8 m,n;
  13. u8 i=0;
  14. u8 play_flag = 1;
  15. u8 num;

  16. u8 code T[49][2]={{0,0},
  17.         {0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9},{0xFB,0x03},{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B},
  18.         {0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},{0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05},
  19.         {0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{0xFE,0xC0},{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02},
  20.         {0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},{0xFF,0x60},{0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81}
  21. };
  22. u8 code music_xyj[][2]=
  23. {
  24.         {17,8},{17,8},{10,16},{13,8},{10,4},{8,4},{10,8},{0,8},
  25.         {10,4},{13,4},{13,4},{13,4},{13,8},{13,4},{10,4},{13,8},
  26.         {15,4},{17,4},{17,16},{17,8},{20,8},{10,8},{13,8},{10,8},
  27.         {10,4},{8,4},{5,16},{15,4},{15,4},{15,4},{17,2},{17,2},
  28.         {8,8},{12,8},{10,24},{22,4},{22,4},{22,4},{22,4},{17,8},
  29.         {20,2},{20,6},{20,4},{20,4},{17,4},{22,4},{20,4},{0,8},
  30.         {18,4},{18,4},{18,4},{18,4},{18,8},{13,2},{13,6},{13,4},
  31.         {15,4},{13,4},{15,4},{17,12},{22,4},{22,4},{22,4},{22,4},
  32.         {17,8},{20,2},{20,6},{20,4},{20,4},{17,4},{22,4},{20,4},
  33.         {0,8},{22,4},{22,4},{22,4},{22,4},{22,2},{20,6},{20,4},
  34.         {20,4},{20,4},{17,4},{20,12},{15,4},{15,4},{13,4},{15,4},
  35.         {17,4},{15,4},{13,4},{15,2},{15,2},{17,4},{15,4},{17,4},
  36.         {20,20},{13,4},{15,4},{17,4},{20,4},{20,8},{12,8},{10,24},
  37.         {0xFF,0xFF}
  38. };



  39. u8 code music_htys[][2] =
  40. {
  41.         {0,4},{13,4},{13,8},{10,4},{8,8},{10,8},{13,8},{13,4},
  42.         {15,4},{17,16},{15,4},{15,8},{13,4},{13,4},{15,8},{15,4},
  43.         {20,4},{20,4},{17,4},{17,4},{15,4},{17,16},{13,4},{13,8},
  44.         {10,4},{8,8},{20,8},{17,4},{15,4},{17,4},{15,4},{13,16},
  45.         {15,4},{15,8},{13,4},{15,4},{15,8},{17,4},{15,4},{13,4},
  46.         {10,4},{15,4},{13,16},{13,4},{13,8},{10,4},{8,8},{10,8},
  47.         {13,4},{13,8},{15,4},{17,16},{15,4},{15,8},{13,4},{15,8},
  48.         {15,4},{20,4},{20,4},{17,4},{17,4},{15,4},{17,16},{13,4},
  49.         {13,4},{13,4},{10,4},{8,8},{8,8},{17,4},{15,4},{17,4},
  50.         {15,4},{13,16},{15,4},{15,8},{13,4},{15,4},{15,8},{17,4},
  51.         {15,4},{13,4},{10,4},{15,4},{13,16},{17,4},{20,8},{20,4},
  52.         {20,8},{20,8},{22,4},{20,4},{17,4},{15,4},{13,16},{22,4},
  53.         {25,4},{22,4},{20,4},{17,4},{15,4},{13,4},{10,4},{15,8},
  54.         {15,4},{17,4},{17,4},{15,12},{17,4},{20,8},{20,4},{20,8},
  55.         {20,8},{22,4},{20,4},{17,4},{15,4},{13,16},{10,4},{13,4},
  56.         {10,4},{8,4},{15,8},{17,8},{13,24},{0,8},{0xFF,0xFF}
  57. };

  58. u8 code music_cq[][2]=
  59. {
  60.         {0,4},{13,2},{13,2},{13,4},{17,4},{15,4},{15,2},{15,2},
  61.         {13,2},{13,4},{13,2},{15,4},{15,4},{13,2},{10,2},{10,4},
  62.         {10,16},{0,4},{12,2},{12,2},{12,4},{13,2},{15,2},{15,4},
  63.         {12,4},{10,2},{8,4},{5,2},{5,16},{0,8},{0,8},{0,4},
  64.         {17,2},{15,2},{17,4},{17,2},{15,2},{15,4},{15,2},{13,2},
  65.         {13,8},{15,4},{10,4},{10,2},{10,2},{15,2},{13,2},{13,8},
  66.         {0,8},{0,4},{12,2},{12,2},{12,4},{13,2},{15,2},{15,4},
  67.         {15,4},{10,2},{8,6},{5,16},{0,8},{0,8},{20,6},{15,2},
  68.         {15,4},{17,4},{20,6},{15,2},{15,4},{13,4},{10,16},{0,8},
  69.         {0,8},{15,6},{10,2},{10,4},{17,4},{15,6},{13,2},{13,4},
  70.         {13,4},{8,16},{0,8},{0,8},{20,6},{15,2},{15,4},{17,4},
  71.         {20,6},{15,2},{15,4},{13,4},{10,16},{0,8},{0,8},{15,6},
  72.         {10,2},{10,4},{17,4},{15,6},{13,2},{13,4},{13,2},{15,2},
  73.         {15,16},{0,8},{0,8},{0,4},{13,2},{13,2},{13,4},{8,2},
  74.         {13,2},{13,4},{20,4},{18,4},{17,4},{15,6},{13,2},{13,16},
  75.         {0,2},{13,2},{17,2},{20,2},{22,4},{20,2},{23,2},{22,2},
  76.         {20,6},{22,4},{20,2},{17,2},{17,2},{15,4},{17,2},{17,16},
  77.         {0,8},{0,8},{0,4},{13,2},{13,2},{13,4},{8,2},{13,2},
  78.         {13,4},{20,4},{18,4},{17,4},{15,6},{13,2},{13,16},{0,2},
  79.         {13,2},{17,2},{20,2},{22,4},{20,2},{22,2},{22,2},{20,6},
  80.         {22,4},{20,4},{17,2},{20,6},{20,24},{0,4},{13,2},{13,2},
  81.         {13,4},{17,4},{15,4},{15,2},{15,2},{13,2},{13,4},{13,2},
  82.         {15,4},{15,4},{15,2},{13,4},{10,2},{10,16},        {0xFF,0xFF}
  83. };




  84. void delay(u8 p)
  85. {
  86.     u8 i,j;
  87.     for(;p>0;p--)
  88.     for(i=181;i>0;i--)
  89.     for(j=181;j>0;j--);
  90. }

  91. void pause()
  92. {
  93.     u8 i,j;
  94.     for(i=150;i>0;i--)
  95.     for(j=150;j>0;j--);
  96. }

  97. void T0_int() interrupt 1
  98. {
  99.         if((play_flag == 4)&&(num == 0))
  100.         {
  101.                 //消除雜音 - 靜音
  102.         }else
  103.         {
  104.                 BEEP =! BEEP;
  105.         }
  106.        
  107.         if(play_flag != 4)
  108.         {
  109.                 TH0 = T[m][0];
  110.                 TL0 = T[m][1];       
  111.         }else
  112.         {
  113.                 switch(num)
  114.                 {
  115.                         case 1:m=13;   TH0=T[m][0];TL0=T[m][1];break;           //音調‘1’
  116.                         case 2:m=15;   TH0=T[m][0];TL0=T[m][1];break;           //音調‘2’
  117.                         case 3:m=17;   TH0=T[m][0];TL0=T[m][1];break;           //音調‘3’
  118.                         case 4:m=18;   TH0=T[m][0];TL0=T[m][1];break;           //音調‘4’
  119.                         case 5:m=20;   TH0=T[m][0];TL0=T[m][1];break;           //音調‘5’
  120.                         case 6:m=22;   TH0=T[m][0];TL0=T[m][1];break;           //音調‘6’
  121.                         case 7:m=24;   TH0=T[m][0];TL0=T[m][1];break;           //音調‘7’
  122.                         case 8:m=25;   TH0=T[m][0];TL0=T[m][1];break;           //音調‘8’
  123.                         default:break;
  124.                 }               
  125.         }
  126. }



  127. void play_music(u8 _play_flag)
  128. {
  129.         if(_play_flag == 1)
  130.         {
  131.                 m = music_xyj[i][0];
  132.                 n = music_xyj[i][1];
  133.                 if(m == 0x00)
  134.                 {
  135.                         TR0=0;
  136.                         delay(n);
  137.                         i++;
  138.                 }else if(m == 0xFF)
  139.                 {
  140.                         TR0=0;
  141.                         delay(30);
  142.                         i=0;
  143.                 }else if(m == music_xyj[i+1][0])
  144.                 {
  145.                         TR0=1;
  146.                         delay(n);
  147.                         TR0=0;
  148.                         pause();
  149.                         i++;
  150.                 }else
  151.                 {
  152.                         TR0=1;
  153.                         delay(n);
  154.                         i++;
  155.                 }                       
  156.         }else if(_play_flag == 2)
  157.         {
  158.                 m = music_htys[i][0];
  159.                 n = music_htys[i][1];
  160.                 if(m == 0x00)
  161.                 {
  162.                         TR0=0;
  163.                         delay(n);
  164.                         i++;
  165.                 }else if(m == 0xFF)
  166.                 {
  167.                         TR0=0;
  168.                         delay(30);
  169.                         i=0;
  170.                 }else if(m == music_htys[i+1][0])
  171.                 {
  172.                         TR0=1;
  173.                         delay(n);
  174.                         TR0=0;
  175.                         pause();
  176.                         i++;
  177.                 }else
  178.                 {
  179.                         TR0=1;
  180.                         delay(n);
  181.                         i++;
  182.                 }                       
  183.         }else if(_play_flag == 3)
  184.         {
  185.                 m = music_cq[i][0];
  186.                 n = music_cq[i][1];
  187.                 if(m == 0x00)
  188.                 {
  189.                         TR0=0;
  190.                         delay(n);
  191.                         i++;
  192.                 }else if(m == 0xFF)
  193.                 {
  194.                         TR0=0;
  195.                         delay(30);
  196.                         i=0;
  197.                 }else if(m == music_cq[i+1][0])
  198.                 {
  199.                         TR0=1;
  200.                         delay(n);
  201.                         TR0=0;
  202.                         pause();
  203.                         i++;
  204.                 }else
  205.                 {
  206.                         TR0=1;
  207.                         delay(n);
  208.                         i++;
  209.                 }                       
  210.         }else
  211.         {
  212. //                TR0=0;
  213.         }

  214. }


  215. void Timer0Init()
  216. {
  217.         TMOD &= 0xF0;
  218.         TMOD |= 0x01;  
  219.         EA = 1;
  220.         ET0 = 1;
  221. }

  222. void IntInit()
  223. {
  224.         IT0 = 1;
  225.         EX0 = 1;
  226.         IT1 = 1;
  227.         EX1 = 1;       
  228.         EA = 1;//打開總中斷       
  229. }



  230. sbit K_1 = P3^2;
  231. sbit K_2 = P3^3;
  232. bit updata_flag = 1;
  233. void main(void)
  234. {
  235.         Timer0Init();
  236.         IntInit();
  237.         LcdInit();
  238.        
  239.         LcdWriteCom(0x80);
  240.         LcdWriteData('M');
  241.         LcdWriteData('u');
  242.         LcdWriteData('s');
  243.         LcdWriteData('i');
  244.         LcdWriteData('c');
  245.         LcdWriteData(':');
  246.        
  247.         while(1)
  248.         {
  249.                 play_music(play_flag);
  250.                
  251.                 if(updata_flag == 1)
  252.                 {
  253.                         updata_flag = 0;
  254.                        
  255.                         switch(play_flag)
  256.                         {
  257.                                 case 1:
  258.                                         LcdWriteCom(0x80+6);
  259.                                         LcdWriteData('x');
  260.                                         LcdWriteData('y');
  261.                                         LcdWriteData('j');
  262.                                         LcdWriteData(' ');
  263.                                         break;
  264.                                 case 2:
  265.                                         LcdWriteCom(0x80+6);
  266.                                         LcdWriteData('h');
  267.                                         LcdWriteData('t');
  268.                                         LcdWriteData('y');
  269.                                         LcdWriteData('s');
  270.                                         break;
  271.                                 case 3:
  272.                                         LcdWriteCom(0x80+6);
  273.                                         LcdWriteData('c');
  274.                                         LcdWriteData('q');
  275.                                         LcdWriteData(' ');
  276.                                         LcdWriteData(' ');
  277.                                         break;
  278.                                 case 4:
  279.                                         LcdWriteCom(0x80+6);
  280.                                         LcdWriteData('n');
  281.                                         LcdWriteData('u');
  282.                                         LcdWriteData('l');
  283.                                         LcdWriteData('l');
  284.                                         break;
  285.                         }
  286. ……………………

  287. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼



所有資料51hei提供下載:
14基于C51單片機電子琴設計.zip (9.55 MB, 下載次數: 45)


評分

參與人數 2黑幣 +55 收起 理由
阿斯頓噶事 + 5
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 婷婷综合色 | av国产在线观看 | 蜜桃精品在线 | 久久精品国产亚洲 | 久久久www成人免费精品 | 国产精品视频免费看 | 337p日本欧洲亚洲大胆 | 亚洲精品3 | 91青娱乐在线 | 色婷婷久久久久swag精品 | 日韩av在线免费 | 97影院2| 国产一区二区免费在线 | 一区在线观看视频 | 国产精品久久久久久久久免费软件 | 久久综合伊人一区二区三 | 狠狠影院| 日本久久精品视频 | 亚洲精品日韩精品 | 国产农村妇女精品一二区 | 国产乱码精品一区二区三区五月婷 | 在线看av网址 | 美女黄18岁以下禁止观看 | 在线一区视频 | 中文字幕亚洲区一区二 | 超级黄色一级片 | 久久久久久久久久久高潮一区二区 | 国产精品亚洲欧美日韩一区在线 | 欧美中文一区 | 中文字幕av一区二区三区 | 国产最新网址 | 一级黄色夫妻生活 | 亚洲综合天堂 | 国产精品久久久久永久免费观看 | 久国久产久精永久网页 | www.日本精品 | 亚洲国产一区二区三区四区 | 人人干在线视频 | 欧美啪啪 | 国产一区二区三区四区在线观看 | 婷婷开心激情综合五月天 |