找回密码
 立即注册

QQ登录

只需一步,快速开始

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

16键单片机电子琴电路图+程序

[复制链接]
跳转到指定楼层
楼主
电路原理图如下:


单片机源程序:
  1. /******心形流水灯******/
  2. /**********************/
  3. #include <reg52.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. uchar code table1[]={
  7. 0x01,0x02,0x04,0x08,
  8. 0x10,0x20,0x40,0x80};
  9. uchar code table2[]={
  10. 0x01,0x02,0x04,0x08,
  11. 0x10,0x20};
  12. uchar code table3[]={
  13. 0x80,0xc0,0xe0,0xf0,
  14. 0xf8,0xfc,0xfe,0xff};
  15. uchar code table4[]={
  16. 0x00,0x01,0x03,0x07,
  17. 0x0f,0x1f,0x3f};
  18. void loudou_0();                   //左右流水递增
  19. void loudou_1();                   //左右流水
  20. void loudou_2();                   //左右流水
  21. void shanshuo();                   //加减速闪烁
  22. void quanliang();                   //全量
  23. void banshan();                           //左右半闪
  24. void liushui_vleft();           //逆时针加速转
  25. void liushui_vright();           //顺时针加速转
  26. void liushui_left();           //逆时针
  27. void liushui_right();           //顺时针
  28. void delay(uint z)
  29. {
  30.         uint i,j;
  31.         for(i=z;i>0;i--)
  32.                 for(j=110;j>0;j--);
  33. }
  34. void main()
  35. {

  36.         while(1)
  37.         {
  38.         loudou_0();
  39.         loudou_1();
  40.         loudou_2();
  41.         loudou_0();
  42.         banshan();
  43.         quanliang();
  44.         shanshuo();
  45.         liushui_right();
  46.         liushui_vright();
  47.         liushui_left();
  48.         liushui_vleft();
  49.         }

  50. }
  51. /**********************/
  52. /*半闪*/
  53. void banshan()
  54. {
  55.         uint x;
  56.         for(x=0;x<=3;x++)
  57. {
  58.         P1=0xff;
  59.         P3=0x00;
  60.         delay(1000);
  61.         P1=0x81;
  62.         P3=0x3f;
  63.         delay(1000);
  64.   }
  65. }
  66. /**********************/
  67. /**********************/
  68. /*流水左右分往下*/
  69. void loudou_0()
  70. {
  71.         uint i,j,z;
  72.         for(z=1;z<=8;z++)
  73.         {
  74.                 i=1;
  75.                   for(j=6;j>=z;j--)
  76.                 {
  77.                    P1=(table1[i])|(table3[z-1]);
  78.                    P3=(table2[j-1])|(table4[z-1]);
  79.                    delay(800);
  80.                    i++;
  81.                 }
  82.         }

  83. }

  84. /**********************/
  85. /**********************/
  86. /*流水左右分往下*/
  87. void loudou_2()
  88. {
  89.         uint i,j,z;
  90. for(z=0;z<=1;z++)
  91. {
  92.         i=1;
  93.         P1=0x01;
  94.         delay(600);
  95.           for(j=6;j>=1;j--)
  96.         {
  97.            P1=table1[i];
  98.            P3=table2[j-1];
  99.            delay(600);
  100.            i++;
  101.         }
  102.         P3=0x00;
  103.         P1=0x00;
  104.         P1=0x80;
  105.     delay(600);
  106. }
  107. }
  108. /**********************/
  109. /**********************/
  110. /*流水左右分往下*/
  111. void loudou_1()
  112. {
  113.         uint i,j,z;
  114. for(z=0;z<=2;z++)
  115. {
  116.         i=1;
  117.         P1=0xfe;
  118.         delay(600);
  119.           for(j=6;j>=1;j--)
  120.         {
  121.            P1=~table1[i];
  122.            P3=~table2[j-1];
  123.            delay(600);
  124.            i++;
  125.         }
  126.         P3=0xff;
  127.         P1=0xff;
  128.         P1=0x7f;
  129.     delay(600);
  130. }
  131. }

  132. /**********************/
  133. /**********************/
  134. /*流水右转*/
  135. void liushui_right()
  136. {
  137.         uint i,j;
  138. //        for(x=0;x<=1;x++)
  139. //        {  
  140.                 for(j=6;j>=1;j--)
  141.                 {
  142.                    P3=~table2[j-1];
  143.                    P1=0xff;
  144.                    delay(800);
  145.                 }
  146.                 P3=0x00;
  147.                 for(i=8;i>=1;i--)
  148.                 {
  149.                    P1=~table1[i-1];
  150.                    P3=0xff;
  151.                    delay(800);
  152.                 }
  153.                 P1=0x00;
  154.         
  155. //        }
  156. }
  157. /**********************/
  158. /**********************/
  159. /*流水左转*/
  160. void liushui_left()
  161. {
  162.         uint i,j;
  163. //        for(x=0;x<=1;x++)
  164. //        {
  165.                 for(i=0;i<=7;i++)
  166.                 {
  167.                    P1=~table1[i];
  168.                    P3=0xff;
  169.                    delay(800);
  170.                 }
  171.                 P1=0x00;
  172.                 for(j=0;j<=5;j++)
  173.                 {
  174.                    P3=~table2[j];
  175.                    P1=0xff;
  176.                    delay(800);
  177.                 }
  178.                 P3=0x00;
  179.         
  180. //        }
  181. }
  182. /**********************/
  183. /**********************/
  184. /*流水加速*/
  185. void liushui_vleft()
  186. {
  187.         uint i,j,y;
  188. //        for(x=0;x<=1;x++)
  189. //        {
  190.                 y=900;
  191.                 for(i=0;i<=7;i++)
  192.                 {
  193.                    P1=~table1[i];
  194.                    P3=0xff;
  195.                    delay(y);
  196.                    y=y-100;
  197.                 }
  198.                 P1=0x00;
  199.                 for(j=0;j<=5;j++)
  200.                 {
  201.                    P3=~table2[j];
  202.                    P1=0xff;
  203.                    delay(y);
  204.                    y=y+150;
  205.                 }
  206.                 P3=0x00;        
  207. //        }
  208. }
  209. /**********************/
  210. /**********************/
  211. /*流水加速*/
  212. void liushui_vright()
  213. {
  214.         uint i,j,y;
  215. //        for(x=0;x<=1;x++)
  216. //        {  
  217.                 y=900;
  218.                 for(j=6;j>=1;j--)
  219.                 {
  220.                    P3=~table2[j-1];
  221.                    P1=0xff;
  222.                    delay(y);
  223.                    y=y-100;
  224.                 }
  225.                 P3=0x00;
  226.                 for(i=8;i>=1;i--)
  227.                 {
  228.                    P1=~table1[i-1];
  229.                    P3=0xff;
  230.                    delay(y);
  231.                    y=y+150;
  232.                 }
  233.                 P1=0x00;
  234.         
  235. //        }
  236. }
  237. /**********************/
  238. void quanliang()
  239. {
  240.            P1=0xff;
  241.            P3=0xff;
  242.            delay(1000);
  243. }
  244. /**********************/
  245. void shanshuo()
  246. {
  247.         uint i,j=1000;
  248.         uchar aa=0xff;
  249.         for(i=20;i>0;i--)
  250.         {
  251.                 P1=aa;
  252.                 P3=aa;
  253.                 delay(j);
  254.                 j=j-50;
  255.                 aa=~aa;
  256.                
  257.         }
  258.                 for(i=20;i>0;i--)
  259.         {
  260.                 P1=aa;
  261.                 P3=aa;
  262.                 delay(j);
  263.                 j=j+50;
  264.                 aa=~aa;
  265.                
  266.         }
  267. }
  268. /**********************/
复制代码

全部资料51hei下载地址:
1.rar (737 Bytes, 下载次数: 32)


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

使用道具 举报

沙发
ID:1 发表于 2018-12-17 22:39 | 只看该作者
补全仿真文件或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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