文档库 最新最全的文档下载
当前位置:文档库 › 74HC595动态扫描4位数码管例程

74HC595动态扫描4位数码管例程

/***********74HC595动态扫描4位数码管例程************/
//MCU:AT89S52
//晶振:11.0592M.
//采用4位共阳极数码管
/***************************************************/
#include
//#include
#define uint unsigned int
#define uchar unsigned char
#define nop() _nop_();_nop_();

sbit CLK=P2^0;
sbit DAT=P2^1;
sbit RCLK=P2^2;
sbit CS1=P2^3;
sbit CS2=P2^4;
sbit CS3=P2^5;
sbit CS4=P2^6;

uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0};//0-9,-,全灭,全亮——共阳极数码管

void write595(unsigned char word)
{
uchar num,c;
num=tab[word];
for(c=0;c<8;c++)
{
CLK=0;
DAT=num&0x80;
num=num<<1;
CLK=1;
}
RCLK=0;
// nop();
// nop();
RCLK=1;
}

void select1(void)
{
CS1=0;
CS2=1;
CS3=1;
CS4=1;
}
void select2(void)
{
CS1=1;
CS2=0;
CS3=1;
CS4=1;
}
void select3(void)
{
CS1=1;
CS2=1;
CS3=0;
CS4=1;
}
void select4(void)
{
CS1=1;
CS2=1;
CS3=1;
CS4=0;
}

int main(void)
{
//unsigned char i;
while(1)
{
write595(12);
select1();
//for(i=0;i<10;i++) _nop_();
write595(2);
select2();
//for(i=0;i<10;i++) _nop_();
write595(3);
select3();
//for(i=0;i<10;i++) _nop_();
write595(4);
select4();
//for(i=0;i<10;i++) _nop_();
}

}

相关文档
相关文档 最新文档