74HC595驱动数码管时间程序
          
            时间:06-10 10:47 阅读:5106次
*温馨提示:点击图片可以放大观看高清大图
                
         
        
		  
               简介:本文主要为74HC595驱动数码管时间程序,希望对你的学习有所帮助。
               
                        
          
            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<6;i++)
 movebit[i]=ledcode[datas[i]];
 // P1=0;
 delay(1);
 for(i=0;i<6;i++) //数据移位
 {
 test=movebit[i];
 for(j=0;j<8;j++)
 {
 testb=test&0x80;
 test=test<<1;
 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;
 
}