51单片机驱动74hc595芯片的程序
          
            时间:09-13 11:04 阅读:2306次
*温馨提示:点击图片可以放大观看高清大图
                
         
        
		  
               简介:本文主要为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; 
}