proteus下仿真Arduino实现流水灯

62 篇文章 28 订阅
48 篇文章 19 订阅

一般来说,我们学习51还是Arduino估计都是从一个闪灯程序开始的,这就好比学习C++或者Java的第一个程序hello world一样。
估计闪灯程序之后紧接下来的就是流水灯了,实际流水灯的实现在很多初学者看来也不是很难,无非跟写数字一样,一字写一横,二字写二横,无非多写几横而已(哈哈哈哈)。

按照上面的思路程序很容易出来,如下:

int LED0=1;
int LED0=2;
int LED0=3;
int LED0=4;
int LED0=5;
int LED0=6;
int LED0=7;
int LED0=8;


void setup()
    {
    //设置管及管脚的pinMode
        pinMode(LED0,OUTPUT);
	    pinMode(LED1,OUTPUT);
	    pinMode(LED2,OUTPUT);
	    pinMode(LED3,OUTPUT);
	    pinMode(LED4,OUTPUT);
	    pinMode(LED5,OUTPUT);
	    pinMode(LED6,OUTPUT);
	    pinMode(LED7,OUTPUT);

    }
    void loop()
    {
   		  LED0 = 0;  
           delay(100);  
          LED0 = 1;  
            
         LED1 = 0;  
         delay(100):  
         LDE1 = 1;  
           
         LED2 = 0;  
         delay(100):  
         LDE2 = 1;  
      
         LED3 = 0;  
         delay(100):  
         LDE3 = 1;  
      
         LED4 = 0;  
         delay(100):  
         LDE4 = 1;  
      
         LED5 = 0;  
         delay(100):  
         LDE5 = 1;  
      
         LED6 = 0;  
         delay(100):  
         LDE6 = 1;  
      
         LED7 = 0;  
         delay(100):  
         LDE7 = 1; 
    }

但我们会发现,这样一来,我们的板子的端口很快就被占用完了,想再做点其他的事情恐怕就只能望着板子束手无策了。所以,我们这里介绍一种借助移位寄存器的办法来解决。这里用到的就是+74hc595,我们用proteus来仿真(对于proteus仿真不太熟悉的童鞋可以参看我前面写的proteus仿真Arduino的入门教程的博文),图如下:
在这里插入图片描述
程序如下:

int latchPin=8; //ST CP of 74HC595
int clockPin=12;//SH CP of 74HC595
int dataPin=11; //DS of 74HC595
char LED_pin=0x00;
void setup() {
      pinMode(latchPin, OUTPUT);
      pinMode(clockPin, OUTPUT);
      pinMode(dataPin, OUTPUT); 
}
void loop()
{
   for(int i=0; i<8; i++)
   {
      LED_pin=~(0x01<<i);
      digitalWrite(latchPin,LOW); //低电位表示启动
      shiftOut(dataPin,clockPin,LSBFIRST,~LED_pin);
      digitalWrite(latchPin,HIGH); //高电位表示停止
      delay(25);
   }
     LED_pin=0x01;
}

说明
1、 函数shiftout目的在于1个执行时间内输出第4个参数j的某一个位。1个字符有8个位,若希望从高位(左边)开始,第三个参数设定为MSBFIRST;若从低位右边)开始,则设定为LSBFIRST。前两个参数只是引脚定义。
2、这里直接采用的移位的方法来设置每一位的高低电平更加高效;

运行效果:、
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河西石头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值