74HC156芯片-单片机IO口扩展
文章简介: 作者:小谭 内容:简单叙述74HC165并行输入,串行输出并接收的使用方法
功能:八位移位寄存器,并行输入,互补串输出
-
芯片引脚 CLK,CLK INH: 时钟输入端(上升沿有效) A - H : 并行数据输入端 SER: 串行数据输入端 QH: 输出端 QH: 输出端 SH/LD: 移位控制/置入控制(低电平有效) -
说明 当移位/置入控制端(SH/LD )为低电平,并行数据(A-H)被置入寄存器中。 当SH/LD位高电平时,置入功能被禁止,执行移位功能。 -
使用方式 当单片机给SH/LD低电平时,74HC165处于并行接收状态。 当SH/LD位高电平时,74HC165处于串行输出状态。 -
代码的编写
#include "reg51.h"
#include "intrins.h"
typedef unsigned int u16;
typedef unsigned char u8;
#define GPIO_LED P0
sbit IN_PL = P1^6;
sbit IN_DATA = P1^7;
sbit SCK = P3^6;
u8 read74HC165(void)
{
u8 i;
u8 indata;
IN_PL = 0;
_nop_();
IN_PL = 1;
_nop_();
indata = 0;
for(i = 0 ; i < 8 ; i++)
{
indata = indata << 1;
SCK = 0;
_nop_();
indata |= IN_DATA;
SCK = 1;
}
return (indata);
}
void main()
{
u8 h165;
GPIO_LED = 0;
while(1)
{
h165 = read74HC165();
if(h165 != 0xFF)
{
GPIO_LED = ~h165;
}
}
}
- 思维导图
76HC165程序
read74HC165
输入步骤
解算输出步骤
移位\置入控制'SH\LD'置一,处于移位状态
使用_nop_指令保持产生脉冲
移位/置入控制'SH/LD'置一,处于移位状态
使用_nop_指令保持产生脉冲
将返回值初始化
使用for循环,循环读入数据
返回值移位
按位或后赋值
时钟置零
|