找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16296|回复: 6
收起左侧

51单片机32位心形流水灯仿真与程序源码设计

  [复制链接]
ID:387867 发表于 2018-8-19 17:47 | 显示全部楼层 |阅读模式
51单片机主控的32位心形流水灯仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png 0.png

单片机源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>

  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. void delay(uchar shu);
  6. void sszzgdl();
  7. void sszzgxm();
  8. void lmtsdl();
  9. void lmtsxm();
  10. void bgdlxh();
  11. void lgbgdlxh();

  12. uchar code shuzhu1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
  13. uchar code shuzhu2[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
  14. uchar code shuzhu3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
  15. uchar code shuzhu4[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};

  16. void main()
  17. {
  18.         while(1)
  19.         {
  20.                 sszzgdl();
  21.                 sszzgxm();
  22.                 sszzgdl();
  23.                 sszzgxm();
  24.                 lmtsdl();
  25.                 lmtsxm();
  26.                 lmtsdl();
  27.                 lmtsxm();
  28.                 bgdlxh();
  29.                 lgbgdlxh();        
  30.         }
  31. }
  32. ///////延时函数///////
  33. void delay(uchar shu)
  34. {
  35.         uchar i,j;
  36.         for(i=0;i<shu;i++)
  37.         for(j=0;j<120;j++);
  38. }
  39. ///////顺时针逐个点亮/////////
  40. void sszzgdl()
  41. {
  42.         uchar i;
  43.         for(i=0;i<8;i++)
  44.         {
  45.                 P2=shuzhu1[i];
  46.                 delay(500);               
  47.         }
  48.         for(i=0;i<8;i++)
  49.         {
  50.                 P3=shuzhu1[i];
  51.                 delay(500);               
  52.         }
  53.         for(i=0;i<8;i++)
  54.         {
  55.                 P1=shuzhu1[i];
  56.                 delay(500);               
  57.         }
  58.         for(i=0;i<8;i++)
  59.         {
  60.                 P0=shuzhu2[i];
  61.                 delay(500);               
  62.         }                        
  63. }
  64. ///////顺时针逐个熄灭/////////
  65. void sszzgxm()
  66. {
  67.         uchar i;
  68.         for(i=0;i<8;i++)
  69.         {
  70.                 P2=shuzhu3[i];
  71.                 delay(500);        
  72.         }
  73.         for(i=0;i<8;i++)
  74.         {
  75.                 P3=shuzhu3[i];
  76.                 delay(500);        
  77.         }
  78.         for(i=0;i<8;i++)
  79.         {
  80.                 P1=shuzhu3[i];
  81.                 delay(500);        
  82.         }
  83.         for(i=0;i<8;i++)
  84.         {
  85.                 P0=shuzhu4[i];
  86.                 delay(500);        
  87.         }
  88. }
  89. ///////俩面同时点亮/////////
  90. void lmtsdl()
  91. {
  92.         uchar i;
  93.         for(i=0;i<8;i++)
  94.         {
  95.                 P2=shuzhu1[i];
  96.                 P0=shuzhu1[i];
  97.                 delay(500);
  98.         }
  99.         for(i=0;i<8;i++)
  100.         {
  101.                 P3=shuzhu1[i];
  102.                 P1=shuzhu2[i];
  103.                 delay(500);
  104.         }
  105. }
  106. ///////俩面同时熄灭/////////
  107. void lmtsxm()
  108. {
  109.         uchar i;
  110.         for(i=0;i<8;i++)
  111.         {
  112.                 P2=shuzhu3[i];
  113.                 P0=shuzhu3[i];
  114.                 delay(500);
  115.         }
  116.         for(i=0;i<8;i++)
  117.         {
  118.                 P3=shuzhu3[i];
  119.                 P1=shuzhu4[i];
  120.                 delay(500);
  121.         }
  122. }
  123. ///////8个点亮循环/////////
  124. void bgdlxh()
  125. {
  126.         uchar i;

  127.         for(i=0;i<8;i++)
  128.         {
  129.                 P2=shuzhu1[i];
  130.                 delay(500);
  131.         }

  132.         for(i=0;i<8;i++)
  133.         {
  134.                 P2=shuzhu3[i];
  135.                 P3=shuzhu1[i];
  136.                 delay(500);
  137.         }
  138.         for(i=0;i<8;i++)
  139.         {
  140.                 P3=shuzhu3[i];
  141.                 P1=shuzhu1[i];
  142.                 delay(500);
  143.         }
  144.         for(i=0;i<8;i++)
  145.         {
  146.                 P1=shuzhu3[i];
  147.                 P0=shuzhu2[i];
  148.                 delay(500);
  149.         }
  150.         for(i=0;i<8;i++)
  151.         {
  152.                 P0=shuzhu4[i];
  153.                 P2=shuzhu1[i];
  154.                 delay(500);
  155.         }
  156.         for(i=0;i<8;i++)
  157.         {
  158.                 P2=shuzhu3[i];
  159.                 P3=shuzhu1[i];
  160.                 delay(500);
  161.         }
  162.         for(i=0;i<8;i++)
  163.         {
  164.                 P3=shuzhu3[i];
  165.                 P1=shuzhu1[i];
  166.                 delay(500);
  167.         }
  168.         for(i=0;i<8;i++)
  169.         {
  170.                 P1=shuzhu3[i];
  171.                 P0=shuzhu2[i];
  172.                 delay(500);
  173.         }
  174.         for(i=0;i<8;i++)
  175.         {
  176.                 P0=shuzhu4[i];
  177.                 delay(500);
  178.         }
  179.         sszzgdl();
  180.         sszzgxm();
  181. }
  182. ///////俩个8个点亮循环/////////
  183. void lgbgdlxh()
  184. {
  185.         uchar i;
  186.         for(i=0;i<8;i++)
  187.         {
  188.                 P2=shuzhu1[i];
  189.                 P1=shuzhu1[i];
  190.                 delay(500);
  191.         }
  192.         for(i=0;i<8;i++)
  193.         {
  194.                 P2=shuzhu3[i];
  195.                 P1=shuzhu3[i];
  196.                 P3=shuzhu1[i];
  197.                 P0=shuzhu2[i];
  198.                 delay(500);
  199.         }
  200.         for(i=0;i<8;i++)
  201.         {
  202.                 P3=shuzhu1[i];
  203.                 P0=shuzhu4[i];
  204.                 P2=shuzhu1[i];
  205.                 P1=shuzhu1[i];
  206.                 delay(500);
  207.         }
  208.         for(i=0;i<8;i++)
  209.         {
  210.                 P2=shuzhu3[i];
  211.                 P1=shuzhu3[i];
  212.                 P3=shuzhu1[i];
  213.                 P0=shuzhu2[i];
  214.                 delay(500);
  215.         }
  216.         for(i=0;i<8;i++)
  217.         {
  218.                 P3=shuzhu3[i];
  219.                 P0=shuzhu4[i];
  220.                 delay(500);
  221.         }               
  222. }
复制代码

Proteus仿真只能用7.5版本:
01 单片机32位流水灯设计.rar (48.95 KB, 下载次数: 241)
回复

使用道具 举报

ID:262 发表于 2022-3-28 05:43 | 显示全部楼层
元宝66 发表于 2022-3-28 00:13
您好,您的最后一组灯没有跑通 跑到一半就停止了

这个还是几年前的老帖,作者当时用的是Proteus的老版本做的,我刚用Proteus7.5打开正常,你看我发的gif
51hei.gif
回复

使用道具 举报

ID:539230 发表于 2019-5-19 13:58 | 显示全部楼层
没有仿真的文件啊
回复

使用道具 举报

ID:505219 发表于 2019-5-23 23:00 | 显示全部楼层
很棒!
回复

使用道具 举报

ID:486527 发表于 2019-6-24 10:59 | 显示全部楼层
不错
回复

使用道具 举报

ID:716845 发表于 2020-3-27 14:48 | 显示全部楼层
真棒AAAAAA
回复

使用道具 举报

ID:1013575 发表于 2022-3-28 00:13 | 显示全部楼层
您好,您的最后一组灯没有跑通 跑到一半就停止了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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