找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2454|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机电子琴实物与源代码

[复制链接]
跳转到指定楼层
楼主
51单片机电子琴实物图:


单片机源程序如下:
  1. #include<reg52.h>
  2. unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  3. unsigned char temp;
  4. unsigned char key;
  5. unsigned char i,j;
  6. unsigned char STH0;
  7. unsigned char STL0;
  8. unsigned int code tab[]={64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178};
  9. sbit P3_4=P3^4;
  10. sbit P3_5=P3^5;
  11. sbit P3_6=P3^6;
  12. sbit P3_7=P3^7;
  13. sbit P1_0=P1^0;

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

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

所有资料51hei提供下载:
新建 Microsoft Word 97 - 2003 文档.doc (29 KB, 下载次数: 15)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表