74HC165芯片验证

目录

  • [0x01 74HC165芯片介绍](#0x01 74HC165芯片介绍)
  • [0x02 编程实现](#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,那么你需要调用三次函数,建议使用数组来存数据,这样可以收集到所有的采样数据。

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

c 复制代码
/*传入参数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;
        else
            data |= 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;
	        else
	            data |= 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;
	        else
	            data |= 0x00;
        } 
	}
	return data; 
}          
相关推荐
weixin_452600698 分钟前
如何为老化的汽车铅酸电池充电
开发语言·单片机·安全·汽车·电机·电源模块·充电桩
极客小张2 小时前
ESP32 步进电机精准控制:打造高精度 DIY 写字机器人,实现流畅书写体验
单片机·嵌入式硬件·mcu·物联网·机器人·硬件工程
XD7429716366 小时前
【TB作品】51单片机 Proteus仿真 超声波 LCD1602显示实验
嵌入式硬件·51单片机·proteus
赟赟、嵌入式7 小时前
linux RTC时钟时间出现了明显的偏移
linux·驱动开发·嵌入式硬件·实时音视频
是梅梅森7 小时前
GPIO配置-PIN_Speed的理解
stm32
Jack153027682798 小时前
什么是上拉电阻器?上拉和下拉电阻的典型应用
stm32·单片机·嵌入式硬件·智能家居·医疗器械·新能源汽车充电枪锁
Anin蓝天(北京太速科技-陈)9 小时前
116-基于5VLX110T FPGA FMC接口功能验证6U CPCI平台
图像处理·嵌入式硬件·fpga开发
极客小张10 小时前
Zigbee智能家居数据中心:微信小程序实时掌控家居传感器信息
javascript·单片机·嵌入式硬件·物联网·硬件架构·硬件工程
Naiva10 小时前
单片机关键任务优先级的实现学习
单片机·嵌入式硬件·学习
XD74297163611 小时前
【TB作品】温湿度监控系统设计,ATMEGA16单片机,Proteus仿真
单片机·proteus·温湿度监控系统设计