两个595怎么控制16个数据,坐等
时间:10-02
整理:3721RD
点击:
这个是单个595控制8位数据的c程序
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit Sh_cp=P2^0;
sbit Ds=P2^1;
sbit St=P2^2;
sbit Sh_cp1=P1^0;
sbit Ds1 =P1^1;
sbit St1 =P1^2;
uchar temp;
uchar temp1;
void In_Data(void)
{
unsigned char i;
for(i=0;i<8;i++)
{
Sh_cp=0;
_nop_();_nop_();
temp=temp<<1;Ds=CY;
Sh_cp=1;
_nop_();_nop_();
Sh_cp=0;
_nop_();_nop_();
}
}
void Out_Data(void)
{
St=0;
_nop_();_nop_();
St=1; //é?éy???íμ???′??÷
_nop_();_nop_();
St=0; //??′???ê?
}
void DelayMS(unsigned int ms)
{
unsigned char i;
while(ms--)
for(i=0;i<120;i++);
}
void main()
{
uchar i;
while(1)
{
for(i=0;i<8;i++)
{
temp=1<<i;
In_Data();
Out_Data();
DelayMS(1000);
}
// DelayMS(2000);
}
}
我把两个595的锁存和移位都连在一起,效果变成第二个595继承了第一个595的数据,第一个595接受新数据,想让两个595同时移位,控制16位数据怎么做呢,求指点~~~
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit Sh_cp=P2^0;
sbit Ds=P2^1;
sbit St=P2^2;
sbit Sh_cp1=P1^0;
sbit Ds1 =P1^1;
sbit St1 =P1^2;
uchar temp;
uchar temp1;
void In_Data(void)
{
unsigned char i;
for(i=0;i<8;i++)
{
Sh_cp=0;
_nop_();_nop_();
temp=temp<<1;Ds=CY;
Sh_cp=1;
_nop_();_nop_();
Sh_cp=0;
_nop_();_nop_();
}
}
void Out_Data(void)
{
St=0;
_nop_();_nop_();
St=1; //é?éy???íμ???′??÷
_nop_();_nop_();
St=0; //??′???ê?
}
void DelayMS(unsigned int ms)
{
unsigned char i;
while(ms--)
for(i=0;i<120;i++);
}
void main()
{
uchar i;
while(1)
{
for(i=0;i<8;i++)
{
temp=1<<i;
In_Data();
Out_Data();
DelayMS(1000);
}
// DelayMS(2000);
}
}
我把两个595的锁存和移位都连在一起,效果变成第二个595继承了第一个595的数据,第一个595接受新数据,想让两个595同时移位,控制16位数据怎么做呢,求指点~~~

自顶~~~~坐等指点
想让灯泡从上往下亮
呼呼,一看小编就没仔细看595的数据手册啊~~~~~~
仔细看OE使能端:H电平是禁止,可以理解为关闭芯片。你图里将两个芯片的OE都置L电平,也就是都开启芯片,那数据来了自然是去两路了。
将两个串在一起的话,8位寄存器就变成16位了,在主函数for循环中i=16,不知道对不对?望大神解答!
