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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機電子琴程序 通過輸出不同頻率的方波產生不同音色

[復制鏈接]
跳轉到指定樓層
樓主
ID:84299 發表于 2015-11-11 20:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關鍵是頻譜,通過輸出不同頻率的方波產生不同音色。
  1.   #include <AT89X51.H>
  2. unsigned char code table[]={0x3f,0x06,0x5b,0x4f,
  3.                             0x66,0x6d,0x7d,0x07,
  4.                             0x7f,0x6f,0x77,0x7c,
  5.                             0x39,0x5e,0x79,0x71};
  6. unsigned char temp;
  7. unsigned char key;
  8. unsigned char i,j;
  9. unsigned char STH0;
  10. unsigned char STL0;
  11. unsigned int code tab[]={64021,64103,64260,64400,
  12.                           64524,64580,64684,64777,
  13.                           64820,64898,64968,65030,
  14.                           65058,65110,65157,65178};

  15. void main(void)
  16. {
  17.   TMOD=0x01;
  18.   ET0=1;
  19.   EA=1;

  20.   while(1)
  21.     {
  22.       P3=0xff;
  23.       P3_4=0;
  24.       temp=P3;
  25.       temp=temp & 0x0f;
  26.       if (temp!=0x0f)
  27.         {
  28.           for(i=50;i>0;i--)
  29.           for(j=200;j>0;j--);
  30.           temp=P3;
  31.           temp=temp & 0x0f;
  32.           if (temp!=0x0f)
  33.             {
  34.               temp=P3;
  35.               temp=temp & 0x0f;              
  36.               switch(temp)
  37.                 {
  38.                   case 0x0e:
  39.                     key=0;
  40.                     break;
  41.                   case 0x0d:
  42.                     key=1;
  43.                     break;
  44.                   case 0x0b:
  45.                     key=2;
  46.                     break;
  47.                   case 0x07:
  48.                     key=3;
  49.                     break;
  50.                 }
  51.               temp=P3;
  52.               P1_0=~P1_0;
  53.               P0=table[key];
  54.               STH0=tab[key]/256;
  55.               STL0=tab[key]%256;
  56.               TR0=1;
  57.               temp=temp & 0x0f;              
  58.               while(temp!=0x0f)
  59.                 {
  60.                   temp=P3;
  61.                   temp=temp & 0x0f;              
  62.                 }
  63.               TR0=0;
  64.             }
  65.         }

  66.       P3=0xff;
  67.       P3_5=0;
  68.       temp=P3;
  69.       temp=temp & 0x0f;
  70.       if (temp!=0x0f)
  71.         {
  72.           for(i=50;i>0;i--)
  73.           for(j=200;j>0;j--);
  74.           temp=P3;
  75.           temp=temp & 0x0f;
  76.           if (temp!=0x0f)
  77.             {
  78.               temp=P3;
  79.               temp=temp & 0x0f;              
  80.               switch(temp)
  81.                 {
  82.                   case 0x0e:
  83.                     key=4;
  84.                     break;
  85.                   case 0x0d:
  86.                     key=5;
  87.                     break;
  88.                   case 0x0b:
  89.                     key=6;
  90.                     break;
  91.                   case 0x07:
  92.                     key=7;
  93.                     break;
  94.                 }
  95.               temp=P3;
  96.               P1_0=~P1_0;
  97.               P0=table[key];
  98.               STH0=tab[key]/256;
  99.               STL0=tab[key]%256;
  100.               TR0=1;
  101.               temp=temp & 0x0f;              
  102.               while(temp!=0x0f)
  103.                 {
  104.                   temp=P3;
  105.                   temp=temp & 0x0f;              
  106.                 }
  107.               TR0=0;
  108.             }
  109.         }

  110.       P3=0xff;
  111.       P3_6=0;
  112.       temp=P3;
  113.       temp=temp & 0x0f;
  114.       if (temp!=0x0f)
  115.         {
  116.           for(i=50;i>0;i--)
  117.           for(j=200;j>0;j--);
  118.           temp=P3;
  119.           temp=temp & 0x0f;
  120.           if (temp!=0x0f)
  121.             {
  122.               temp=P3;
  123.               temp=temp & 0x0f;              
  124.               switch(temp)
  125.                 {
  126.                   case 0x0e:
  127.                     key=8;
  128.                     break;
  129.                   case 0x0d:
  130.                     key=9;
  131.                     break;
  132.                   case 0x0b:
  133.                     key=10;
  134.                     break;
  135.                   case 0x07:
  136.                     key=11;
  137.                     break;
  138.                 }
  139.               temp=P3;
  140.               P1_0=~P1_0;
  141.               P0=table[key];
  142.               STH0=tab[key]/256;
  143.               STL0=tab[key]%256;
  144.               TR0=1;
  145.               temp=temp & 0x0f;              
  146.               while(temp!=0x0f)
  147.                 {
  148.                   temp=P3;
  149.                   temp=temp & 0x0f;              
  150.                 }
  151.               TR0=0;
  152.             }
  153.         }

  154.       P3=0xff;
  155.       P3_7=0;
  156.       temp=P3;
  157.       temp=temp & 0x0f;
  158.       if (temp!=0x0f)
  159.         {
  160.           for(i=50;i>0;i--)
  161.           for(j=200;j>0;j--);
  162.           temp=P3;
  163.           temp=temp & 0x0f;
  164.           if (temp!=0x0f)
  165.             {
  166.               temp=P3;
  167.               temp=temp & 0x0f;              
  168.               switch(temp)
  169.                 {
  170.                   case 0x0e:
  171.                     key=12;
  172.                     break;
  173.                   case 0x0d:
  174.                     key=13;
  175.                     break;
  176.                   case 0x0b:
  177.                     key=14;
  178.                     break;
  179.                   case 0x07:
  180.                     key=15;
  181.                     break;
  182.                 }
  183.               temp=P3;
  184.               P1_0=~P1_0;
  185.               P0=table[key];
  186.               STH0=tab[key]/256;
  187.               STL0=tab[key]%256;
  188.               TR0=1;
  189.               temp=temp & 0x0f;              
  190.               while(temp!=0x0f)
  191.                 {
  192.                   temp=P3;
  193.                   temp=temp & 0x0f;              
  194.                 }
  195.               TR0=0;
  196.             }
  197.         }      
  198.     }
  199. }

  200. void t0(void) interrupt 1 using 0
  201. {
  202.   TH0=STH0;
  203.   TL0=STL0;
  204.   P1_0=~P1_0;
  205. }
復制代碼


電子琴.rar

24.26 KB, 下載次數: 26, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:99130 發表于 2016-3-29 17:28 | 只看該作者
電子琴失敗了,重新做一個
回復

使用道具 舉報

板凳
ID:183450 發表于 2017-8-17 16:07 來自手機 | 只看該作者
應該是不同音調吧
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕日韩欧美 | 亚洲一区二区三区高清 | 九九热这里 | 亚洲色图在线观看 | 日韩国产欧美一区 | 狠狠av | 精品久久久久久亚洲综合网 | 91污在线| 国产成人免费视频 | 伊人伊成久久人综合网站 | 日本精品一区二区三区视频 | 九一在线 | 久久免费精品 | 伊人久久伊人 | 超碰成人av| 91视频18| 亚洲欧洲精品一区 | 日本精品视频一区二区 | 中文字幕不卡在线观看 | 国产精品久久久久久久久久免费看 | 高清久久久 | 青青草社区 | 自拍偷拍亚洲视频 | 欧美日韩在线播放 | 色精品 | 亚洲精品视频免费 | 亚洲欧美日本在线 | 真人毛片| 亚洲国产成人精品女人久久久 | 91综合在线观看 | 国产91在线 | 中日 | 天天操人人干 | 欧美精品乱码久久久久久按摩 | 国产在线一区观看 | 9久久精品| 91视频大全 | 国产电影一区 | 激情综合五月 | 久久亚洲精品国产精品紫薇 | 久久免费高清视频 | 中日韩av|