嗷嗷鲤 2024-01-24 11:25 采纳率: 0%
浏览 15

关于hc165级联控制16个按键问题

最近做功能
关于HC165级联控制十六个按键 而HC595则输出165过来的状态进行开关闭合继电器的功能
配置165这块,有去参考手册及网上各类关于165级联控制的文章,
奈何最终调试结果还是不对
问题状况:
我是串口调试打印hc165每一位的状态 但是一上电是一直打印1 我是放定时中断里 每一秒返回一次按键每一位的状态 但是按键按下打印的状态数值也没有变化 理应的话 按下的那一位应该为0 仔细核验程序也没发现问题点 请各位帮忙查看

img

img

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-24 14:02
    关注

    【以下回答由 GPT 生成】

    问题描述中已经提到尝试了使用HC165级联控制16个按键,并且使用HC595输出165传输的状态以控制继电器。按键状态通过串口进行打印,但是无论按键是否按下,状态始终为1。下面将提供一些可能的解决方案。

    可能的原因

    1. 电路连接错误:检查HC165和HC595的连接是否正确,确保信号线连接正确,并且VCC、GND连接正常。
    2. 编程错误:可能是程序中存在错误,导致无法正确读取按键状态。

    解决方案

    1. 检查电路连接是否正确:确认HC165和HC595引脚与控制器的连接是否正确,确保信号线没有接错或者短路。可以使用万用表测试引脚之间的连接。
    2. 检查供电电压和电流:确保HC165和HC595的供电电压和电流是否符合规格要求。确保稳压器、滤波电容和电源连接正确。
    3. 检查程序中是否存在错误:请核对程序代码,确保读取HC165的状态的部分正确。下面给出一个示例代码:
    #include <Arduino.h>
    
    #define HC165_DATA_PIN   2
    #define HC165_CLK_PIN    3
    #define HC165_LATCH_PIN  4
    
    void setup() {
      Serial.begin(9600);
    
      pinMode(HC165_DATA_PIN, INPUT);
      pinMode(HC165_CLK_PIN, OUTPUT);
      pinMode(HC165_LATCH_PIN, OUTPUT);
    }
    
    void loop() {
      // 读取按键状态
      byte buttonState = readButtonState();
    
      // 输出按键状态
      Serial.println(buttonState, BIN);
    
      delay(1000);
    }
    
    byte readButtonState() {
      byte buttonState = 0;
    
      digitalWrite(HC165_LATCH_PIN, LOW);
      shiftIn(HC165_DATA_PIN, HC165_CLK_PIN, MSBFIRST); // 读取高8位
      shiftIn(HC165_DATA_PIN, HC165_CLK_PIN, MSBFIRST); // 读取低8位
      digitalWrite(HC165_LATCH_PIN, HIGH);
    
      // 将读取到的状态倒序存储到buttonState中
      for (int i = 0; i < 16; i++) {
        bitWrite(buttonState, 15 - i, bitRead(buttonState, i));
      }
    
      return buttonState;
    }
    

    以上是一个基本的Arduino示例代码,可以根据具体的开发板和库函数进行适当的修改。该代码中使用shiftIn函数从HC165读取按键状态,并进行反转方便后续使用。

    如果以上解决方案均不能解决问题,请检查使用的HC165和HC595芯片是否正常工作,并且与其他元件的兼容性。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 1月24日

悬赏问题

  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,
  • ¥15 angular项目错误