找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10509|回复: 4
收起左侧

求大神,单片机流水灯右移循环3次,左移循环2次的程序怎么写。

[复制链接]
回帖奖励 1 黑币 回复本帖可获得 1 黑币奖励! 每人限 1 次
ID:338427 发表于 2018-5-27 22:05 | 显示全部楼层 |阅读模式
任务一:花样流水灯(15分)
流水灯的左移右移,八个发光二极管LED1-LED8分别接在单片机的P1口,重复循环3次右移。然后左移2次,间隔闪烁2次,延时时间可调(初始延时时间为0.5S)。



这是实训的任务,第一道题就把我难倒了。来个能秒杀这道题的大神,有黑币哦!!!

回复

使用道具 举报

ID:317135 发表于 2018-5-28 10:58 | 显示全部楼层
本帖最后由 loading88 于 2018-5-28 14:34 编辑

#include "reg52.h"
#include "intrins.h"
#define led P1
typedef unsigned char u8;
typedef unsigned int  u16;
void delay(u16 i)
{
    while(i--);
}
void main()
{
  u8 i;
  led=P1;
  led=0x01;
  delay(500000);
  while(1)
  {
         for(i=0;i<7;i++)
     {
     led=_cror_(led,1);
     delay(50000);
         }
         for(i=0;i<7;i++)
     {
     led=_cror_(led,1);
     delay(50000);
         }
         for(i=0;i<7;i++)
     {
     led=_cror_(led,1);
     delay(50000);
         }              //右移循环三次
         led=0x00;
         delay(50000);
         led=0xff;
         delay(50000);

         led=0x00;
         delay(50000);
         led=0xff;
         delay(50000);  //闪烁两次

         led=0x01;

         for(i=0;i<7;i++)
         {
     led=_crol_(led,1);
     delay(50000);
     }
         for(i=0;i<7;i++)
         {
     led=_crol_(led,1);
     delay(50000);
     }                           //左移循环两次
  }
}
回复

使用道具 举报

ID:317135 发表于 2018-5-28 11:33 | 显示全部楼层
#include "reg52.h"
#include "intrins.h"
#define led P1
typedef unsigned char u8;
typedef unsigned int  u16;
void delay(u16 i)
{
    while(i--);
}
void main()
{
  u8 i;
  led=P1;
  led=0x01;
  delay(500000);
  while(1)
  {
         for(i=0;i<7;i++)
     {
     led=_cror_(led,1);
     delay(50000);
         }
         for(i=0;i<7;i++)
     {
     led=_cror_(led,1);
     delay(50000);
         }
         for(i=0;i<7;i++)
     {
     led=_cror_(led,1);
     delay(50000);
         }              //右移循环三次
         led=0x00;
         delay(50000);
         led=0xff;
         delay(50000);

         led=0x00;
         delay(50000);
         led=0xff;
         delay(50000);   //间隔两次
         
     led=0x01;
     

         for(i=0;i<7;i++)
         {
     led=_crol_(led,1);
     delay(50000);
     }
         for(i=0;i<7;i++)
         {
     led=_crol_(led,1);
     delay(50000);
     }                           //左移循环三次
  }
}

仿真图片

仿真图片
回复

使用道具 举报

ID:317135 发表于 2018-5-28 11:57 | 显示全部楼层
仿真实验如图

仿真实验

仿真实验
回复

使用道具 举报

ID:338427 发表于 2018-5-30 20:14 | 显示全部楼层

缺少一个延时可调,不过还是感谢大佬写的程序,我会认真参考的。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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