欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > 74HC165芯片验证

74HC165芯片验证

2024/10/24 7:31:57 来源:https://blog.csdn.net/qq_53381910/article/details/140145112  浏览:    关键词:74HC165芯片验证

目录

  • 0x01 74HC165芯片介绍
  • 0x02 编程实现

0x01 74HC165芯片介绍

74HC165的引脚定义如下,长这个样子
在这里插入图片描述

ABCDEFGH是它的八个输入引脚,例如你可以将它连接按键,让它来读取8个按键值。也可以将他级联其它的74165,无需增加单片机GPIO引脚

使用方法:

    1. 在准备读取它的数据时,先将PL拉低,让Q0-Q7的数据加载至存储器,随后将PL拉高,这会达到锁存的效果,然后可以开始读取数据。
    1. 随后读取Q7引脚的数据
    1. 读完Q7的数据,操作第二个引脚(CLK)让它产生一个上升沿来使数据移位。注意在移位后,Q0的数据被移动到Q1,Q1的数据被移动到Q2,以此类推。

0x02 编程实现

当读取第一个74HC165的时候,应该使用ReadOn165(1),读取后方的74165应该传入参数0。

如果你要读第三个74HC165,那么你需要调用三次函数,建议使用数组来存数据,这样可以收集到所有的采样数据。

代码验证过了没有问题,在下面贴出来

/*传入参数1:读取第一个74165
传入参数2:读取非第一个74165*/
uint8_t ReadOn165(uint32_t num) {  uint8_t data = 0; //用于存储读取到的8位数据  //循环读取8次数据if((num){    // 读取Q7引脚的状态  if(gpio_input_bit_get(GPIO_PORT_165QH, GPIO_PIN_165QH) == SET)//等于1即并行输入D7引脚的按键被按下data |= 0x01;elsedata |= 0x00;for (int i = 0; i < 7; i++) {data = data << 1;//CP产生一个上升沿(低 -> 高),数据移位gpio_bit_reset(GPIO_PORT_165CP,GPIO_PIN_165CP); // SHCP设置为低电平 delay_1us(20); gpio_bit_set(GPIO_PORT_165CP,GPIO_PIN_165CP);   // SHCP设置为高电平delay_1us(20);   if(gpio_input_bit_get(GPIO_PORT_165QH, GPIO_PIN_165QH) == SET)data |= 0x01;elsedata |= 0x00;} }else{for (int i = 0; i < 8; i++) {data = data << 1;//CP产生一个上升沿(低 -> 高),数据移位gpio_bit_reset(GPIO_PORT_165CP,GPIO_PIN_165CP); // SHCP设置为低电平 delay_1us(20); gpio_bit_set(GPIO_PORT_165CP,GPIO_PIN_165CP);   // SHCP设置为高电平delay_1us(20);   if(gpio_input_bit_get(GPIO_PORT_165QH, GPIO_PIN_165QH) == SET)data |= 0x01;elsedata |= 0x00;} }return data; 
}          

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com