proteus中仿真arduino利用74hc595控制LED

48 篇文章 19 订阅

我们都知道,任何芯片的IO资源是有限的,往往有的器件,如数码管等简单的器件却需要大量的IO口,这样造成大量的IO资源被占用,而74hc595以及74hc164等芯片可以解决这样的简单器件对IO口的需求。

下面我们来看看一个最简单的例子,用595来实现LED的流水灯,连接图如下:
在这里插入图片描述

二进制模拟显示代码:



int latchPin=12;
int clockPin=8;
int dataPin=11;



void setup () {

pinMode(latchPin,OUTPUT);
pinMode(clockPin,OUTPUT);
pinMode(dataPin,OUTPUT);

}

void loop()
{

for(int x=0; x<255; x++)
{
    digitalWrite(latchPin,LOW); 
    shiftOut(dataPin,clockPin,MSBFIRST,x);
    digitalWrite(latchPin,HIGH); 
    delay(10); 
  }
}



}

流水灯显示代码:

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;
}

注意: 函数shiftout目的在于1个执行时间内输出第4个参数j的某一个位。1个字符有8个位,若希望从高位(左边)开始,第三个参数设定为MSBFIRST;若从低位右边)开始,则设定为LSBFIRST。前两个参数只是引脚定义。shiftOut的详细用法可以参看我的博文《Arduino中shiftOut怎么用?

下一篇,我们介绍利用595来控制数码管,请接续关注《proteus中仿真arduino利用74hc595控制数码管》。

  • 0
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

河西石头

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

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

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

打赏作者

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

抵扣说明:

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

余额充值