74HC595使用:
#include<reg52.h> //52系列单片机头文件
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
sbit SE=P2^0;
sbit SC=P2^1;
sbit RC=P2^2;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值
uchar code table2[]={0xfe,0xfd,0x0fb,0xf7,0xef,0xdf,0xbf,0x7f};//送入位选
void delayms(uint); //子函数声明
void in(uchar temp)
{
uchar i;
for(i=0;i<8;i++)
{
SC=0; //移位寄存器引脚置0
SE=temp&0x80; //取数据最高位
SC=1; //移位寄存器引脚置1,产生位移时钟上升沿,数据寄存器移位
temp<<=1; //数据次高位移到最高位
}
}
void out()
{
RC=0; //存储器引脚置0
RC=1; //存储器引脚置1,产生上升沿,移位寄存器进入数据存储器,更新数据
}
void main()
{
uchar i,n;
n=0;
while(1)
{
for(i=0;i<8;i++)
{ while(n==8)
{n=0;}
in(table2[n]);
in(table[i]);
out();
n++;
delayms(2);
}
}
}
void delayms(uint xms) //延时函数
{
uint i , j;
for(i=xms; i>0;i--)
for(j=110; j>0;j--);
}