找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1863|回复: 0
收起左侧

基于51单片机的左右来回的流水灯Proteus仿真代码

[复制链接]
ID:1037536 发表于 2022-6-29 10:26 | 显示全部楼层 |阅读模式
非常基础的单片机的流水灯的仿真
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.gif

单片机源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit button=P1^2;
  6. sbit p2_0=P2^0;
  7. sbit p2_1=P2^1;
  8. sbit p2_2=P2^2;
  9. sbit p2_3=P2^3;
  10. sbit p2_4=P2^4;
  11. sbit p2_5=P2^5;
  12. sbit p2_6=P2^6;
  13. sbit p2_7=P2^7;
  14. uchar ID=1;

  15. void DelayMS(uint x)
  16. {
  17.         uchar t;
  18.         while(x--)
  19.         {
  20.                  for(t=120;t>0;t--);
  21.         }
  22. }

  23. void main()
  24. {
  25.         uchar i=0;
  26.         P2=0xff;
  27.          
  28.    while(1)
  29.          {
  30.      
  31.                  
  32.            if(button==0)
  33.                  {         
  34.                             ID++;
  35.                                   if(ID==6)ID=1;
  36.                             while(button==0);
  37.                                         P2=0x00;
  38.                                         i=0;
  39.                  }
  40.                  
  41.                  switch(ID)
  42.                  {
  43.                          case 1:
  44.                                  if(i < 8)
  45.                                          P2=0x01<<i;
  46.                                  else
  47.                                          P2=0x80>>(i - 8);
  48.                                  i++;
  49.                                  if(i == 16) i = 0;
  50.                                  DelayMS(150);
  51.                            break;
  52.                          case 2:
  53.                                  p2_0=~p2_0;
  54.                            p2_1=~p2_1;
  55.                            DelayMS(150);
  56.                            break;
  57.                          case 3:
  58.                                  p2_2=~p2_2;
  59.                            p2_3=~p2_3;
  60.                            DelayMS(150);
  61.                            break;
  62.                          case 4:
  63.                                  p2_4=~p2_4;
  64.                            p2_5=~p2_5;
  65.                            DelayMS(150);
  66.                            break;
  67.                          case 5:
  68.                                  p2_6=~p2_6;
  69.                            p2_7=~p2_7;
  70.                            DelayMS(150);
  71.                            break;
  72.                                  /*
  73.                                  for(i=0;i<8;i++)
  74.                  {
  75.        P2=0x01<<i;
  76.                          DelayMS(150);
  77.      }
  78.                  for(i=0;i<8;i++)
  79.                  {
  80.                    P2=0x80>>i;
  81.                    DelayMS(150);
  82.                  }
  83.                          */
  84.                                  
  85.                           
  86.                  }         
  87.                                  
  88.                  
  89.    }


  90. }
  91.        
  92.        
复制代码
51hei.png
Keil代码与Proteus8.8仿真下载:
多功能流水灯.7z (41.88 KB, 下载次数: 58)

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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