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); } }