今天学习一下用74HC595 一种IO 口扩展方式-串转并,使用的芯片是74HC595。开发板板载4 个74HC595 芯片,通过芯片级联扩展了32 个IO。
74HC595芯片中文资料.pdf
目标:使用开发板上的74HC595 模块中74HC595(A)控制LED。
当MR为高电平,OE为低电平时,数据在SHCP上升沿进入移位寄存器,在STCP上升沿输出到并行端口。
代码语言:javascript复制#include"reg52.h"
#include"intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit SRCLK=P3^6;
sbit R1CLK=P3^5;
sbit SER=P3^4;
void delay_ms(int n) //延时
{
unsigned int i=0,j=0;
for(i=0;i<n;i )
for(j=0;j<123;j );
}
void Hc595SendByte(u8 dat)
{
u8 a;
SRCLK = 1;
R1CLK = 1;
for(a=0;a<8;a ) //发送8 位数
{
SER = dat >> 7; //从最高位开始发送
dat <<= 1;
SRCLK = 0; //发送时序
_nop_();
_nop_();
SRCLK = 1;
}
R1CLK = 0;
_nop_();
_nop_();
R1CLK = 1;
}
void main(){
u8 ledNum;
ledNum = ~0x01;
while(1)
{
Hc595SendByte(ledNum);
ledNum = _crol_(ledNum, 1); //左移函数
delay_ms(50);
}
}