www.pudn.com > adc-disp.rar > led-disp.c


/* 
	主程序  
	led-disp.c 
	硬件:avr-51 
	时钟:内部1MHz 
	ATmega8 
	苏丹 2008-05-09 
*/ 
 
#include  
#include  
 
#define uchar unsigned char 
#define uint  unsigned int 
 
#define FREQ   4 
 
#define SER_PORT	PORTD 
#define SER_DAT	PD4 
#define SER_RCK	PD5 
#define SER_SCK	PD6 
 
//显示码 
uchar g_aDisplayBuf[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; 
 
void DelayMs(uint t) 
{ 
	uint i; 
	for(i=0;i>4];//高位 
		buf[1]=g_aDisplayBuf[num&0x0f];//低位 
	} 
	else//十进制 
	{ 
		buf[1]=g_aDisplayBuf[num%10]; 
		temp=num%100; 
		buf[0]=g_aDisplayBuf[temp/10]; 
		temp=num/100; 
		 
		if(temp>0) 
			buf[1]|=0x80; //第一个数码管小数点表示百位1 
		if(temp>1) 
			buf[0]|=0x80;//两个数码管小数点表示百位2 
	} 
	 
	//串行发送数据 
	ser_out(buf[0]); 
	ser_out(buf[1]); 
 
	//显示 
	SER_PORT|=_BV(SER_RCK); 
	DelayMs(1); 
	SER_PORT&=~_BV(SER_RCK); 
} 
 
int main(void) 
{ 
	uchar i=0; 
	DDRD=_BV(SER_DAT)|_BV(SER_SCK)|_BV(SER_RCK); 
//	DDRB=_BV(PB0)|_BV(PB1); 
	 
	while(1) 
	{ 
		display_number(i++,1); 
		_delay_us(1000); 
	} 
}