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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5453|回復(fù): 2
收起左側(cè)

單片機(jī)電子琴proteus仿真及源碼和教程

[復(fù)制鏈接]
ID:137190 發(fā)表于 2016-9-27 18:32 | 顯示全部樓層 |閱讀模式
實驗及實踐課題(22) 電子琴
實驗任務(wù)
(1.      由4X4組成16個按鈕矩陣,設(shè)計成16個音。
(2.      可隨意彈奏想要表達(dá)的音樂。

可以運(yùn)行,但很占CPU資源。按下鍵后隔短時間才有反映。
0.png 0.png

源程序:
  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=3;
  40.                     break;
  41.                   case 0x0d:
  42.                     key=2;
  43.                     break;
  44.                   case 0x0b:
  45.                     key=1;
  46.                     break;
  47.                   case 0x07:
  48.                     key=0;
  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.   
  67.       P3=0xff;
  68.       P3_5=0;
  69.       temp=P3;
  70.       temp=temp & 0x0f;
  71.       if (temp!=0x0f)
  72.         {
  73.           for(i=50;i>0;i--)
  74.           for(j=200;j>0;j--);
  75.           temp=P3;
  76.           temp=temp & 0x0f;
  77.           if (temp!=0x0f)
  78.             {
  79.               temp=P3;
  80.               temp=temp & 0x0f;              
  81.               switch(temp)
  82.                 {
  83.                   case 0x0e:
  84.                     key=7;
  85.                     break;
  86.                   case 0x0d:
  87.                     key=6;
  88.                     break;
  89.                   case 0x0b:
  90.                     key=5;
  91.                     break;
  92.                   case 0x07:
  93.                     key=4;
  94.                     break;
  95.                 }
  96.               temp=P3;
  97.               //多P1_0=~P1_0;
  98.               P0=table[key];
  99.               STH0=tab[key]/256;
  100.               STL0=tab[key]%256;
  101.               TR0=1;
  102.               temp=temp & 0x0f;              
  103.               while(temp!=0x0f)
  104.                 {
  105.                   temp=P3;
  106.                   temp=temp & 0x0f;              
  107.                 }
  108.               TR0=0;
  109.             }
  110.         }
  111.   
  112.       P3=0xff;
  113.       P3_6=0;
  114.       temp=P3;
  115.       temp=temp & 0x0f;
  116.       if (temp!=0x0f)
  117.         {
  118.           for(i=50;i>0;i--)
  119.           for(j=200;j>0;j--);
  120.           temp=P3;
  121.           temp=temp & 0x0f;
  122.           if (temp!=0x0f)
  123.             {
  124.               temp=P3;
  125.               temp=temp & 0x0f;              
  126.               switch(temp)
  127.                 {
  128.                   case 0x0e:
  129.                     key=11;
  130.                     break;
  131.                   case 0x0d:
  132.                     key=10;
  133.                     break;
  134.                   case 0x0b:
  135.                     key=9;
  136.                     break;
  137.                   case 0x07:
  138.                     key=8;
  139.                     break;
  140.                 }
  141.               temp=P3;
  142.               //多P1_0=~P1_0;
  143.               P0=table[key];
  144.               STH0=tab[key]/256;
  145.               STL0=tab[key]%256;
  146.               TR0=1;
  147.               temp=temp & 0x0f;              
  148.               while(temp!=0x0f)
  149.                 {
  150.                   temp=P3;
  151.                   temp=temp & 0x0f;              
  152.                 }
  153.               TR0=0;
  154.             }
  155.         }
  156.   
  157.       P3=0xff;
  158.       P3_7=0;
  159.       temp=P3;
  160.       temp=temp & 0x0f;
  161.       if (temp!=0x0f)
  162.         {
  163.           for(i=50;i>0;i--)
  164.           for(j=200;j>0;j--);
  165.           temp=P3;
  166.           temp=temp & 0x0f;
  167.           if (temp!=0x0f)
  168.             {
  169.               temp=P3;
  170.               temp=temp & 0x0f;              
  171.               switch(temp)
  172.                 {
  173.                   case 0x0e:
  174.                     key=15;
  175.                     break;
  176.                   case 0x0d:
  177.                     key=14;
  178.                     break;
  179.                   case 0x0b:
  180.                     key=13;
  181.                     break;
  182.                   case 0x07:
  183.                     key=12;
  184.                     break;
  185.                 }
  186.               temp=P3;
  187.              //多P1_0=~P1_0;
  188.               P0=table[key];
  189.               STH0=tab[key]/256;
  190.               STL0=tab[key]%256;
  191.               TR0=1;
  192.               temp=temp & 0x0f;              
  193.               while(temp!=0x0f)
  194.                 {
  195.                   temp=P3;
  196.                   temp=temp & 0x0f;              
  197.                 }
  198.               TR0=0;
  199.             }
  200.         }      
  201.     }
  202. }
  203.   
  204. void t0(void) interrupt 1 using 0
  205. {
  206.   TH0=STH0;
  207.   TL0=STL0;
  208.   P1_0=~P1_0;
  209. }
復(fù)制代碼

0.png

所有資料下載:
電子琴.rar (129.71 KB, 下載次數(shù): 80)

評分

參與人數(shù) 1黑幣 +5 收起 理由
s979462478 + 5 很給力!

查看全部評分

回復(fù)

使用道具 舉報

ID:191759 發(fā)表于 2017-4-20 19:03 | 顯示全部樓層
1111212121
回復(fù)

使用道具 舉報

ID:261423 發(fā)表于 2017-12-14 10:33 | 顯示全部樓層
程序不對
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久69精品久久久久久久电影好 | 天天草天天爱 | 特黄特色大片免费视频观看 | 久久久久久黄 | 瑟瑟视频在线看 | 一级毛片视频在线 | 九九在线| 国产精品中文字幕在线 | 欧美成人激情视频 | 久久精品伊人 | 一级国产精品一级国产精品片 | 岛国精品 | 亚洲一区二区中文字幕 | 成人三级在线播放 | av在线一区二区三区 | 国产欧美性成人精品午夜 | 国产一区二 | 久久这里有精品 | 亚洲最大av网站 | 亚洲精品日韩综合观看成人91 | 亚洲精品永久免费 | 亚洲精品亚洲人成人网 | 国产精品久久久久久久7777 | 国产精品自拍视频网站 | 久在线视频播放免费视频 | 欧美日韩在线综合 | 日韩欧美在线观看 | 日日干日日操 | 亚洲视频一区在线观看 | 国色天香综合网 | 国产成人精品一区二 | 亚洲一区二区久久 | 亚洲成人二区 | 日韩美香港a一级毛片免费 国产综合av | 精品国产女人 | 日韩欧美在线一区二区 | 国产精品中文字幕在线播放 | 超级碰在线 | 中文字幕第二区 | 草久在线 | 在线观看日韩精品视频 |