• ESP8266 + SN74HC595N(8位移位寄存器)


    目录

    介绍

        使用SN74HC595N 为 ESP8266 扩展 
    
    • SN74HC595N(8位移位寄存器IC)

       1. Vcc 16引脚 电压输入 (必须)
       2. GND 地 (必须)
       3. OE 需要接GND(必须)
       4. MR 需要接高电压(必须)
       5. Q0 ~ Q7 并行输出引脚,一般是5v
       6. 12引脚 ST大平台
       7. 11引脚 SH活塞
       8. 14引脚 DS数据
       9. 9引脚 扩充使用
      
    • SN74HC595N (实物图DC图)

    • SN74HC595N(简洁图)

    准备

    • 面包板
    • 杜邦线
    • SN74HC595N
    • ESP8266
    • LED * 8
    • 200k电阻 * 8

    连线

      根据原理图,把 SN74HC595N 模块分为 4大块
      1. 大平台(ST)
      2. 数据(DS)
      3. 活塞(SH)
      4. GPIO引脚
    
    • ST(大平台) 连接 ESP8266引脚 5
    • DS(数据) 连接 ESP8266引脚 4
    • SH(活塞) 连接 ESP8266引脚 0
    • Vcc 连接 ESP8266引脚3V或者5V
    • GND 连接 ESP8266引脚 GND
    • OE 连接 GND(必须)
    • MR 连接 Vcc(必须)
    • Q0 ~ Q7 连接 LED灯和电阻

    代码

    #include <Arduino.h>
    // SN74HC595 简称 N74
    // ST 大平台  5
    // DS 数据 4
    // SH 活塞  0
    const short N74_ST_BIG = 5;
    const short N74_DS_DATA = 4;
    const short N74_SH_PUSH = 0;
    
    void setup()
    {
      pinMode(N74_ST_BIG, OUTPUT);
      pinMode(N74_DS_DATA, OUTPUT);
      pinMode(N74_SH_PUSH, OUTPUT);
    }
    
    void loop()
    {
      digitalWrite(N74_ST_BIG, LOW); // 放下大平台
    
      digitalWrite(N74_SH_PUSH, LOW);  // 活塞拉回
      digitalWrite(N74_DS_DATA, 0);    // 放入数据
      digitalWrite(N74_SH_PUSH, HIGH); // 活塞推动数据
    
      digitalWrite(N74_SH_PUSH, LOW);
      digitalWrite(N74_DS_DATA, 1);
      digitalWrite(N74_SH_PUSH, HIGH);
    
      digitalWrite(N74_SH_PUSH, LOW);
      digitalWrite(N74_DS_DATA, 0);
      digitalWrite(N74_SH_PUSH, HIGH);
    
      digitalWrite(N74_SH_PUSH, LOW);
      digitalWrite(N74_DS_DATA, 1);
      digitalWrite(N74_SH_PUSH, HIGH);
    
      digitalWrite(N74_SH_PUSH, LOW);
      digitalWrite(N74_DS_DATA, 0);
      digitalWrite(N74_SH_PUSH, HIGH);
    
      digitalWrite(N74_SH_PUSH, LOW);
      digitalWrite(N74_DS_DATA, 1);
      digitalWrite(N74_SH_PUSH, HIGH);
    
      digitalWrite(N74_SH_PUSH, LOW);
      digitalWrite(N74_DS_DATA, 0);
      digitalWrite(N74_SH_PUSH, HIGH);
    
      digitalWrite(N74_SH_PUSH, LOW);
      digitalWrite(N74_DS_DATA, 1);
      digitalWrite(N74_SH_PUSH, HIGH);
    
      digitalWrite(N74_ST_BIG, HIGH); // 拉起大平台
    }
    

    代码优化

    #include <Arduino.h>
    // SN74HC595 简称 N74
    // ST 大平台  5
    // DS 数据 4
    // SH 活塞  0
    const short N74_ST_BIG = 5;
    const short N74_DS_DATA = 4;
    const short N74_SH_PUSH = 0;
    
    const int LED[] = {0, 1, 0, 1, 0, 1, 0, 1};
    
    void pull_push_data(short num); // 数据活塞 num:0或1
    
    void setup()
    {
      pinMode(N74_ST_BIG, OUTPUT);
      pinMode(N74_DS_DATA, OUTPUT);
      pinMode(N74_SH_PUSH, OUTPUT);
    }
    
    void loop()
    {
      digitalWrite(N74_ST_BIG, LOW); // 放下大平台
    
      for (unsigned short i = 0; i < 8; i++)
      {
        pull_push_data(LED[i]);
      }
    
      digitalWrite(N74_ST_BIG, HIGH); // 拉起大平台
    }
    
    void pull_push_data(short num)
    {
      digitalWrite(N74_SH_PUSH, LOW);  // 活塞拉回
      digitalWrite(N74_DS_DATA, num);  // 放入数据
      digitalWrite(N74_SH_PUSH, HIGH); // 活塞推动数据
    }
    

    运行

    ok

    问题

    总结

  • 相关阅读:
    switch的使用
    ArrayAdapter的使用
    android的xml中怎么实现按钮按下去变颜色
    Intent跳转的设置和Bundle的使用
    监听JList列表项的单击事件
    草稿
    Android背景图覆盖状态栏(我的手机安卓版本是4.2.2)
    RSA加密解密 (输入数值)
    仿射密码加密解密 (输入字母数值)
    Intent.ACTION_PICK
  • 原文地址:https://www.cnblogs.com/sjie/p/16249877.html
Copyright © 2020-2023  润新知