www.pudn.com > LED16x32_595.rar > LED16x32_595.c


//2005-8-10 
//移位寄存器用74LS595 
 
#include  
 
#define SCK		P0_0 
#define SCLR 	P0_1 
#define RCK		P0_2 
#define OEN		P0_3 
#define SER		P0_4 
 
unsigned char code table_zhu[]={ 
0xF7,0xBF,0x77,0xBB,0xAC,0x0B,0xDF,0xB7, 
0xAF,0xAF,0x68,0x01,0xF7,0xBF,0xE7,0x7F, 
0xD6,0x03,0xB4,0xFB,0x72,0xFB,0xF6,0x03, 
0xF6,0xFB,0xEE,0xFB,0xAE,0x03,0xDE,0xFB};/*"猪",0*/ 
unsigned char code table_tou[]={ 
0xFF,0x7F,0xEF,0x7F,0xF3,0x7F,0xFB,0x7F, 
0xEF,0x7F,0xF3,0x7F,0xF7,0x7F,0xFF,0x7F, 
0x00,0x01,0xFF,0x7F,0xFE,0xBF,0xFD,0xDF, 
0xFB,0xCF,0xF7,0xE7,0xEF,0xF3,0xDF,0xF7};/*"头",1*/ 
void display(unsigned char); 
void delay1ms(void); 
 
void main (void) 
{ 
	unsigned char i; 
 
	while (1) 
	{ 
		for(i=0;i<16;i++) 
		{ 
			P2=0x00+i; 
			OEN=1; 
			SCLR=0; 
			SCLR=1; 
			display(table_tou[2*i+1]); 
			display(table_tou[2*i]); 
			display(table_zhu[2*i+1]); 
			display(table_zhu[2*i]); 
			RCK=0; 
			RCK=1; 
			OEN=0; 
			delay1ms(); 
		} 
	} 
} 
 
void display(unsigned char dispcode) 
{ 
 
	unsigned char i; 
	unsigned char temp; 
	for (i=0;i<8;i++) 
	{ 
		temp=dispcode&0x80;//一定要用变量代换; 
		if (temp==0x80) 
		{ 
			SER=1; 
		} 
		else 
		{ 
			SER=0; 
		} 
		SCK=0; 
		SCK=1; 
		dispcode=dispcode<<1;//dispcode移位,不是temp移位; 
	} 
} 
 
void delay1ms(void) 
{ 
	unsigned char j,k; 
//	for(i=20;i>0;i--) 
		for(j=2;j>0;j--) 
			for(k=248;k>0;k--); 
}