51单片机驱动74hc595电路图

51单片机驱动74hc595芯片的程序

下面是51单片机驱动74hc595芯片的程序:

#include //包含51单片机的头文件

#include

#define uint unsigned int

#define uchar unsigned char

//sbit sin_595 =P1^0;

//sbit rclk_595 =P1^1;

//sbit sclk_595 =P1^2;

//sbit s_clr =P1^3;

sbit a_cp_595 =P2^4; //串行移位时钟脉冲 sh_cp_595

sbit b_cp_595 =P2^3; //输出锁存器控制脉冲 st_cp_595

//sbit _oe_595 =P1^5; //8位并行输出使能/禁止(高阻态)

sbit ds_595 =P2^2; //串行数据输入

extern uchar datas[6]; //存放6个数码管的显示数字

uchar ledcode[]={

0xC0, // 0

0xF9, // 1

0xA4, // 2

0xB0, // 3

0x99, // 4

0x92, // 5

0x82, // 6

0xF8, // 7

0x80, // 8

0x90, // 9

0x88, // A

0x83, // B

0xC6, // C

0xA1, // D

0x86, // E

0x8E // F

};

void delay(uint z)

{

uint t1,y;

for(t1=z;t1>0;t1--)

for(y=110;y>0;y--);

}

void led_display(void)

{

uchar i,j;

bit testb;

uchar bdata movebit[6];

uchar bdata test;

//_oe_595=0; //选中数码管

for(i=0;i

movebit=ledcode[datas];

// P1=0;

delay(1);

for(i=0;i

{

test=movebit;

for(j=0;j

{

testb=test&0x80;

test=test

if(testb)

{

ds_595=1;

}

else

{

ds_595=0;

}

a_cp_595=1;

a_cp_595=0;

} //数据移位

}

b_cp_595=0;

b_cp_595=1;

b_cp_595=0;

}