'분류 전체보기'에 해당되는 글 113건

  1. 2011.01.25 00 ~ 99까지 FND 2개에 출력하기
  2. 2011.01.22 카운트 다운을 FND에 출력
  3. 2011.01.22 5101ASR , FND Anode

00 ~ 99 까지 FND 2개에 출력하기

 

00 ~ 99 까지 무한히 반복하는 카운터 입니다.

PORTA 를 FND1(일의 자리)에 연결하였고

PORTB 를 FND2(십의 자리)에 연결합니다.

 

 

 

 

 

 

 

전체 소스 Codevision 용

 

 

/*********************************************

00 ~ 99 까지 무한히 반복

PORTA ==> FND1 에 출력

PORTB ==> FND2 에 출력

 

Tools : Codevision

http://watsim.tistory.com

*********************************************/

 

 

#include <mega128.h>

 

// FND 에 출력할 실제 데이터

int g_iCountData;

 

 

// 1초 계산을 위한 변수

int g_iTimer0Counter = 0;

 

    

void FndDisplay1(char byteData); // 1 자리 출력

void FndDisplay1(char byteData){

 

    switch( byteData){

    case 0: PORTA = 0b10001000; break;

    case 1: PORTA = 0b11101011; break;

    case 2: PORTA = 0b01001100; break;

    case 3: PORTA = 0b01001001; break;

    case 4: PORTA = 0b00101011; break;

    case 5: PORTA = 0b00011001; break;

    case 6: PORTA = 0b00011000; break;

    case 7: PORTA = 0b11001011; break;

    case 8: PORTA = 0x00| 0x08; break;

    case 9: PORTA = 0x01|0x08; break;

    default : PORTA = 0b11111000; break;

    }

}

 

void FndDisplay2(char byteData); // 10 자리 출력

void FndDisplay2(char byteData){

 

    switch( byteData){

    case 0: PORTB = 0b10001000; break;

    case 1: PORTB = 0b11101011; break;

    case 2: PORTB = 0b01001100; break;

    case 3: PORTB = 0b01001001; break;

    case 4: PORTB = 0b00101011; break;

    case 5: PORTB = 0b00011001; break;

    case 6: PORTB = 0b00011000; break;

    case 7: PORTB = 0b11001011; break;

    case 8: PORTB = 0x00| 0x08; break;

    case 9: PORTB = 0x01|0x08; break;

    default : PORTB = 0b11111000; break;

    }

}

 

// Timer 0 output compare interrupt service routine

interrupt [TIM0_COMP] void timer0_comp_isr(void)

{

    g_iTimer0Counter ++;

    if(g_iTimer0Counter>5) {

         if(++g_iCountData> 99) g_iCountData=0;

        g_iTimer0Counter = 0;

    }

}

 

void main(void)

{

char byteFND1;

    char byteFND2;

 

    g_iTimer0Counter = 0;

    g_iCountData = 0;

 

    DDRA=0xFF;

    DDRB=0xFF;

 

    ASSR=0x00;

    TCCR0=0x01;

    TCNT0=0x00;

    OCR0=0x20;

    

    // Timer(s)/Counter(s) Interrupt(s) initialization

    TIMSK=0x02;

    ETIMSK=0x00;

 

    ACSR=0x80;

    SFIOR=0x00;

 

    #asm("sei")

 

    while (1)

    {

         byteFND2 = (unsigned char)g_iCountData/10 ;

    byteFND1 = (unsigned char)g_iCountData%10;

         FndDisplay2(byteFND2);

        FndDisplay1(byteFND1);

}

}

 

 

주요 부품

 

Posted by WhiteAT
,

 

카운트 다운을 FND에 출력

 

9 ~ 0 까지 무한히 반복하는 카운트다운 입니다.

 

 

 

 

전체 소스 Codevision 용

 

 

/*********************************************

9 ~0 까지 무한히 반복

FND 에 출력

 

Tools : Codevision

http://watsim.tistory.com

*********************************************/

 

#include <mega128.h>

 

// time delay for us

void Delay_us(char time_us)        

{

    register char i;

    for(i = 0; i < time_us; i++)            // 4 cycle +

    {

    #asm

         PUSH R0 ;         // 2 cycle +

         POP R0 ;         // 2 cycle +

         PUSH R0 ;         // 2 cycle +

         POP R0 ;         // 2 cycle +

         PUSH R0 ;         // 2 cycle +

         POP R0 ;         // 2 cycle = 16 cycle = 1 us for 16MHz

    #endasm

    }

}

 

// time delay for ms

void Delay_ms(unsigned int time_ms)    

{

    register unsigned int i;

    for(i = 0; i < time_ms; i++)

    {

        Delay_us(250);

        Delay_us(250);

        Delay_us(250);

        Delay_us(250);

    }

}

 

// Display to FND

void FndDisplay1(char byteData);

void FndDisplay1(char byteData){

    switch( byteData){

    case 0: PORTA = 0b10001000; break;

    case 1: PORTA = 0b11101011; break;

    case 2: PORTA = 0b01001100; break;

    case 3: PORTA = 0b01001001; break;

    case 4: PORTA = 0b00101011; break;

    case 5: PORTA = 0b00011001; break;

    case 6: PORTA = 0b00011000; break;

    case 7: PORTA = 0b11001011; break;

    case 8: PORTA = 0x00| 0x08; break;

    case 9: PORTA = 0x01|0x08; break;

    default : PORTA = 0b11111000; break;

    }

}

 

void main(void)

{

    signed char byteA=9;

 

    PORTA=0x00;

    DDRA=0xFF; // output

 

    while (1)

    {

        FndDisplay1(byteA);

        Delay_ms(100);

      

        if(--byteA <0) byteA = 9;

    }

}

 

 

 

 

주요 부품

Posted by WhiteAT
,

 
기본 정보

 

  • 7세그먼트
  • 색상:Red(빨강)
  • 타입:Anode
  • 사이즈: 12.7mm x 19mm

 

 

 


부품 제공업체

http://devicemart.co.kr/mart7/mall.php?cat=052013001&query=view&no=19647 

'데이터시트' 카테고리의 다른 글

ATMEGA8A-AU  (0) 2012.03.07
Package information - SO16−28 [WIDE]  (0) 2011.08.28
키 패드 제어, 매트릭스 키, 스위치 제어  (0) 2011.07.15
가변저항(Potentiometer) 3362  (1) 2011.07.07
LED ON  (0) 2011.01.30
Posted by WhiteAT
,