找回密码
 立即注册

QQ登录

只需一步,快速开始

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

哪位大神会写流水灯的程序,急需,问题如下。

[复制链接]
跳转到指定楼层
楼主
ID:338427 发表于 2018-5-25 22:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
任务一:花样流水灯
流水灯的左移右移,八个发光二极管LED1-LED8分别接在单片机的P1口,重复循环3次右移。然后左移2次,间隔闪烁2次,延时时间可调(初始延时时间为0.5S)。


单片机型号:15f2k60s2



要实训了,之前学的程序忘了怎么写了,需要恶补一下,求论坛的大神教一下,非常感谢!!!!

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

使用道具 举报

沙发
ID:164602 发表于 2018-5-26 08:41 | 只看该作者
一个例子,自己改
/*******************************************************************************
* 实 验 名                 : 左右流水灯实验
* 使用的IO             : P2
* 实验效果       : 点亮的LED从右边往左边移动,到达左边再往右边移动,依此循环。
* 注    意                 :
*******************************************************************************/
#include<reg51.h>
#include<intrins.h>                //因为要用到左右移函数,所以加入这个头文件                                 

#define GPIO_LED P2                //将P2口另外取名为GPIO_LED

void Delay10ms(unsigned int);   //误差 0us
/*******************************************************************************
* 函 数 名       : main
* 函数功能                 : 主函数
* 输    入       : 无
* 输    出              : 无
*******************************************************************************/

void main(void)
{
        unsigned char n;
        GPIO_LED=0xfe;//1111_1110->1111_1101
        while(1)
        {
                for(n=0;n<7;n++)                                                 //左移7次,这样子就会到达最左边
                {
                        GPIO_LED=_crol_(GPIO_LED,1); //将GPIO_LED左移一位
                        Delay10ms(50);                                                         //延时
                }
                for(n=0;n<7;n++)                                                         //右移7次,这样子就会到达最右边
                {
                        GPIO_LED=_cror_(GPIO_LED,1);        //将GPIO_LED右移一位
                        Delay10ms(50);                                                                //延时
                }       
        }       
}
/*******************************************************************************
* 函 数 名         : Delay10ms
* 函数功能                   : 延时函数,延时10ms
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void Delay10ms(unsigned int c)   //误差 0us
{
    unsigned char a,b;
    for(;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}
回复

使用道具 举报

板凳
ID:338530 发表于 2018-5-26 10:10 | 只看该作者
//flow light and beep
#include <reg51.h>
#include <intrins.h>
unsigned char a,b,k,j;
sbit beep=P2^3;
void delay10ms()
  {
    for(a=100;a>0;a--)
      for(b=225;b>0;b--);
   }
void main()
{
  k=0xfe;
  while(1)
  {
      delay10ms();
      
      beep=0;
      delay10ms();
      beep=1;
      j=_crol_(k,1);
      k=j;
      P1=j;
   }
}
回复

使用道具 举报

地板
ID:338427 发表于 2018-5-26 13:47 | 只看该作者
floodchen 发表于 2018-5-26 10:10
//flow light and beep
#include
#include

求解。
回复

使用道具 举报

5#
ID:338427 发表于 2018-5-26 14:10 | 只看该作者
HC6800-ES-V2.0 发表于 2018-5-26 08:41
一个例子,自己改
/*******************************************************************************
...

大神,延时时间可调是哪个程序,前面的我看懂了,后面定义a b c没看懂
回复

使用道具 举报

6#
ID:7485 发表于 2018-5-28 08:52 | 只看该作者
会写流水灯......大神?
回复

使用道具 举报

7#
ID:317135 发表于 2018-5-28 14:21 | 只看该作者
自己按需修改


#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);
     }                           //左移循环三次
  }
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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