1/实验目的、
单个595的使用;掌握时序图的阅读
3个595级联的效果。掌握595级联的特点;
2、接线
//****************************************************************************************************************引脚设置
sbit LEDtestpin=P1^7;
sbit HC595_LATCH = P1^5;//latch pin or rck pin STCP ss 595pin12
sbit datapin=P1^3;
sbit shcp=P1^0;
sbit HC595_OE= P1^1;//oe blank pin 595pin13
3、效果
```c
SendTo595(0x01);SendTo595(0x02);SendTo595(0x03);
HC595_LATCH = 0; //p10
Delay10us(); Delay10us(); Delay10us();
HC595_LATCH =1; //HC595_LATCH上升沿
Delay500ms();Delay500ms();Delay500ms(); Delay500ms();Delay500ms();Delay500ms();
Delay500ms();Delay500ms();Delay500ms(); Delay500ms();Delay500ms();Delay500ms();
Delay500ms();Delay500ms();Delay500ms(); Delay500ms();Delay500ms();Delay500ms();
Delay500ms();Delay500ms();Delay500ms(); Delay500ms();Delay500ms();Delay500ms();
Delay500ms();Delay500ms();Delay500ms(); Delay500ms();Delay500ms();Delay500ms();
![在这里插入图片描述](https://img-blog.csdnimg.cn/df11555a6104425788e3d9c1a63c5c0d.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/b72a7f17dd3942ddb835ec98d48b3802.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/ad2f47a1599d41e9b8b96e2659a39850.png)
分析
```c
#include <reg52.h>
#include <intrins.h>
#include <stdlib.h>
#include <stdio.h>
//***********************************************************************宏定义位显示
#define LongToBin(n) \
(\
((n >> 21) & 0x80) | \
((n >> 18) & 0x40) | \
((n >> 15) & 0x20) | \
((n >> 12) & 0x10) | \
((n >> 9) & 0x08) | \
((n >> 6) & 0x04) | \
((n >> 3) & 0x02) | \
((n ) & 0x01) \
)
#define B(n) LongToBin(0x##n##l)
//*******************************位操作
//取低字节
#define lowByte(w) ((w) & 0xff)
//取高字节
#define highByte(w) ((w) >> 8)
//读一个bit
#define bitRead(value, bit) (((value) >> (bit)) & 0x01)
//写一个bit
#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
//设置一个bit
#define bitSet(value, bit) ((value) |= (1UL << (bit)))
//清空一个bit
#define bitClear(value, bit) ((value) &= ~(1UL << (bit)))
//生成相应bit
#define bit(b) (1 << (b))
//******************************************位操作结束
//****************************************************************************************************************引脚设置
sbit LEDtestpin=P1^7;
sbit HC595_LATCH = P1^5;//latch pin or rck pin STCP ss 595pin12
sbit datapin=P1^3;
sbit shcp=P1^0;
sbit HC595_OE= P1^1;//oe blank pin 595pin13
void Delay10us() //@11.0592MHz
{
unsigned char i;
i = 2;
while (--i);
}
void Delay500ms() //@11.0592MHz
{
unsigned char i, j, k;
i = 4;
j = 129;
k = 119;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void SendTo595( unsigned char byteData)
{
char i=0;
for(;i<8;i++)
{
datapin = byteData>>7;
byteData= byteData<<1;
shcp = 0;
Delay10us(); Delay10us(); Delay10us();
shcp = 1; //上升沿
}
}
void main()
{
HC595_LATCH =1;
HC595_OE =0;
while(1)
{
//低电平亮
//发送数据,送到数据寄存器,先入后出0x01是最后面的595
SendTo595(0x01);SendTo595(0x02);SendTo595(0x03);
//输出数据,上升沿输出
HC595_LATCH = 0; //p10
Delay10us(); Delay10us(); Delay10us();
HC595_LATCH =1; //HC595_LATCH上升沿
Delay500ms();Delay500ms();Delay500ms(); Delay500ms();Delay500ms();Delay500ms();
Delay500ms();Delay500ms();Delay500ms(); Delay500ms();Delay500ms();Delay500ms();
Delay500ms();Delay500ms();Delay500ms(); Delay500ms();Delay500ms();Delay500ms();
Delay500ms();Delay500ms();Delay500ms(); Delay500ms();Delay500ms();Delay500ms();
Delay500ms();Delay500ms();Delay500ms(); Delay500ms();Delay500ms();Delay500ms();
SendTo595(0xaa);SendTo595(0xbb);SendTo595(0xcc);
HC595_LATCH = 0; //p10
Delay10us(); Delay10us(); Delay10us();
HC595_LATCH =1; //HC595_LATCH上升沿
Delay500ms();Delay500ms();Delay500ms(); Delay500ms();Delay500ms();Delay500ms();
Delay500ms();Delay500ms();Delay500ms(); Delay500ms();Delay500ms();Delay500ms();
Delay500ms();Delay500ms();Delay500ms(); Delay500ms();Delay500ms();Delay500ms();
Delay500ms();Delay500ms();Delay500ms(); Delay500ms();Delay500ms();Delay500ms();
Delay500ms();Delay500ms();Delay500ms(); Delay500ms();Delay500ms();Delay500ms();
}
}