74HC595芯片串转并
作用:只用一个接口控制8个输出口。(实现了I/O口的扩展)
具体实现看下图:
端口介绍:
SER(14):串行数据输入端。
比方说串行数据是0x01(0000 0001),那么这个端口就是接收这个数据的,当然,一次只能接收一个,要分八次接收。(因为他就一个引脚,只能分辨高低)
SRCLK(11):上升的时候移位。也就是说我上升一次,就把SER口上的电平情况保存下来。
RCLK(12):上升的时候输出。就是当芯片内8个串行数据都接收到以后将数据输出。
/SRCLK (10):低电平时重置芯片(数据清零)。一般都默认接高电平。
/OE(13):高电平时禁止输出。一般默认低电平。
代码如下
功能:led流水效果
#include 《REGX52.H》
#include 《intrins.h》
***it sck=P0^1;
***it ser=P0^0;
***it rck=P0^2;
//typedef P1 led;
typedef unsigned char u8;
void _74hc595(u8 a)
{
u8 i;
for(i=0;i《8;i++)
{
ser=a》》7;
a《《=1;
sck=0;
_nop_();
_nop_();
sck=1;
}
rck=0;
_nop_();
_nop_();
rck=1;
}
void delay300ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=123;c》0;c--)
for(b=116;b》0;b--)
for(a=9;a》0;a--);
}
int main()
{
u8 i;
while(1)
{
u8 led=0x01;
for( i=0;i《8;i++)
{
_74hc595(~led);
delay300ms();
led《《=1;
}
}
}
74HC595芯片串转并
作用:只用一个接口控制8个输出口。(实现了I/O口的扩展)
具体实现看下图:
端口介绍:
SER(14):串行数据输入端。
比方说串行数据是0x01(0000 0001),那么这个端口就是接收这个数据的,当然,一次只能接收一个,要分八次接收。(因为他就一个引脚,只能分辨高低)
SRCLK(11):上升的时候移位。也就是说我上升一次,就把SER口上的电平情况保存下来。
RCLK(12):上升的时候输出。就是当芯片内8个串行数据都接收到以后将数据输出。
/SRCLK (10):低电平时重置芯片(数据清零)。一般都默认接高电平。
/OE(13):高电平时禁止输出。一般默认低电平。
代码如下
功能:led流水效果
#include 《REGX52.H》
#include 《intrins.h》
***it sck=P0^1;
***it ser=P0^0;
***it rck=P0^2;
//typedef P1 led;
typedef unsigned char u8;
void _74hc595(u8 a)
{
u8 i;
for(i=0;i《8;i++)
{
ser=a》》7;
a《《=1;
sck=0;
_nop_();
_nop_();
sck=1;
}
rck=0;
_nop_();
_nop_();
rck=1;
}
void delay300ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=123;c》0;c--)
for(b=116;b》0;b--)
for(a=9;a》0;a--);
}
int main()
{
u8 i;
while(1)
{
u8 led=0x01;
for( i=0;i《8;i++)
{
_74hc595(~led);
delay300ms();
led《《=1;
}
}
}
举报