/********************************************* This program was produced by the CodeWizardAVR V1.23.3 Standard Automatic Program Generator © Copyright 1998-2002 HP InfoTech s.r.l. http://www.hpinfotech.ro e-mail:office@hpinfotech.ro , hpinfotech@xmail.ro Project : Display 0 to 9 in 8x5 Matrix Led Version : 1 Date : 6/27/2002 Author : Thomas Lui Company : Thomtronics Technology Company Comments: This program is a demonstration, can be made much shorter, Connection: col 1-----------col 5 |------------------| row 1 | matrix | | | Led 8x5 | Top view row8 |------------------| r3 r1 c4 c3 r4 c1 r2 |-------------------| | matrix | | Led 8x5 | Bottom view |-------------------| r7 c5 r5 c3 c2 r8 r6 7 SEGMENTS LED PORTB.0 -- r8 PORTB.1 -- r7 PORTB.2 -- r6 PORTB.3 -- r5 PORTB.4 -- r4 PORTB.5 -- r3 PORTB.6 -- r2 PORTB.7 -- r1 PORTD.0 -- c1 PORTD.1 -- c2 PORTD.2 -- c3 PORTD.3 -- c4 Chip type : ATmega128 Program type : Application Clock frequency : 16.000000 MHz Memory model : Small Internal SRAM size : 4096 External SRAM size : 0 Data Stack size : 1024 *********************************************/ #include #include // Declare your global variables here flash unsigned char global_array0[]={0xff,0x81,0x81,0x81,0xff};//char 0 flash unsigned char global_array1[]={0x00,0x00,0xff,0x00,0x00};//char 1 flash unsigned char global_array2[]={0xe1,0x91,0x89,0x85,0x83};//char 2 flash unsigned char global_array3[]={0x81,0x89,0x89,0x89,0xff};//char 3 flash unsigned char global_array4[]={0x10,0x18,0x14,0x12,0xff};//char 4 flash unsigned char global_array5[]={0x8f,0x89,0x89,0x89,0xf9};//char 5 flash unsigned char global_array6[]={0xff,0x89,0x89,0x89,0xf9};//char 6 flash unsigned char global_array7[]={0x01,0x01,0x01,0x01,0xff};//char 7 flash unsigned char global_array8[]={0xff,0x89,0x89,0x89,0xff};//char 8 flash unsigned char global_array9[]={0x8f,0x89,0x89,0x89,0xff};//char 9 unsigned char i,j,scan; void disp_0(void) { for(j=0;j<70;j++) { scan=0x01; for(i=0;i<=5;i++) { PORTD=~scan; PORTB=(global_array0[i]); delay_us(1000); scan<<=1; PORTD=0; PORTB=0; } } return; } void disp_1(void) { for(j=0;j<70;j++) { scan=0x01; for(i=0;i<=5;i++) { PORTD=~scan; PORTB=(global_array1[i]); delay_us(1000); scan<<=1; PORTD=0; PORTB=0; } } return; } void disp_2(void) { for(j=0;j<70;j++) { scan=0x01; for(i=0;i<=5;i++) { PORTD=~scan; PORTB=(global_array2[i]); delay_us(1000); scan<<=1; PORTD=0; PORTB=0; } } return; } void disp_3(void) { for(j=0;j<70;j++) { scan=0x01; for(i=0;i<=5;i++) { PORTD=~scan; PORTB=(global_array3[i]); delay_us(1000); scan<<=1; PORTD=0; PORTB=0; } } return; } void disp_4(void) { for(j=0;j<70;j++) { scan=0x01; for(i=0;i<=5;i++) { PORTD=~scan; PORTB=(global_array4[i]); delay_us(1000); scan<<=1; PORTD=0; PORTB=0; } } return; } void disp_5(void) { for(j=0;j<70;j++) { scan=0x01; for(i=0;i<=5;i++) { PORTD=~scan; PORTB=(global_array5[i]); delay_us(1000); scan<<=1; PORTD=0; PORTB=0; } } return; } void disp_6(void) { for(j=0;j<70;j++) { scan=0x01; for(i=0;i<=5;i++) { PORTD=~scan; PORTB=(global_array6[i]); delay_us(1000); scan<<=1; PORTD=0; PORTB=0; } } return; } void disp_7(void) { for(j=0;j<70;j++) { scan=0x01; for(i=0;i<=5;i++) { PORTD=~scan; PORTB=(global_array7[i]); delay_us(1000); scan<<=1; PORTD=0; PORTB=0; } } return; } void disp_8(void) { for(j=0;j<70;j++) { scan=0x01; for(i=0;i<=5;i++) { PORTD=~scan; PORTB=(global_array8[i]); delay_us(1000); scan<<=1; PORTD=0; PORTB=0; } } return; } void disp_9(void) { for(j=0;j<70;j++) { scan=0x01; for(i=0;i<=5;i++) { PORTD=~scan; PORTB=(global_array9[i]); delay_us(1000); scan<<=1; PORTD=0; PORTB=0; } } return; } void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTC=0x00; DDRC=0x00; // Port D initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTD=0x00; DDRD=0x00; // Port E initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTE=0x00; DDRE=0x00; // Port F initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTF=0x00; DDRF=0x00; // Port G initialization // Func0=In Func1=In Func2=In Func3=In Func4=In // State0=T State1=T State2=T State3=T State4=T PORTG=0x00; DDRG=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00; ASSR=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // OC1C output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; OCR1CH=0x00; OCR1CL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected TCCR2=0x00; ASSR=0x00; TCNT2=0x00; OCR2=0x00; // Timer/Counter 3 initialization // Clock source: System Clock // Clock value: Timer 3 Stopped // Mode: Normal top=FFFFh // OC3A output: Discon. // OC3B output: Discon. // OC3C output: Discon. TCCR3A=0x00; TCCR3B=0x00; TCNT3H=0x00; TCNT3L=0x00; OCR3AH=0x00; OCR3AL=0x00; OCR3BH=0x00; OCR3BL=0x00; OCR3CH=0x00; OCR3CL=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; ETIMSK=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off // Analog Comparator Output: Off ACSR=0x80; SFIOR=0x00; while(1) { DDRB=0xff; DDRD=0xff; disp_0(); disp_1(); disp_2(); disp_3(); disp_4(); disp_5(); disp_6(); disp_7(); disp_8(); disp_9(); } }