'ATMEGA128'에 해당되는 글 32건

  1. 2011.05.04 Switch 4개를 각각 누를 때마다 FND 카운터 증가
  2. 2011.04.08 WATSIM128 이란? 7

 

Switch 4개를 각각 누를 때마다 FND 카운터 증가

 

 

Anode 4-digit FND (4401ASR2)를 PORTC 에 연결하고 COM 은 PORT0~ PORT3에 연결하여

스위치를 누를 때마다 각 자리수의 값이 증가하는 예제입니다.

 

 

 

< 시작 화면: 모든 값이 0으로 표시됩니다 >

 

 

 

 

 

< PA7 1번, PA6 2번, PA5는 8 번, PA4 는 5번 눌렀을 경우 >

 

 

 

 

전체 소스 AVR Studio 4.7 용

   

   

     

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

 

//PA4~7에switch연결

// PA7 : FND 자리수증가

// PA6 : FND 자리수증가

// PA5 : FND 자리수증가

// PA4 : FND 자리수증가

// 스위치를누르면각각의FND 표시값증가( 0부터9까지반복표시)

 

 

Tools : AVR Studio 4.16

http://watsim.tistory.com

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

 

 

#include <avr/io.h>

#include <avr/interrupt.h>

 

 

void DisplayFND();

void InitPort();

void GetSW( );

 

unsigned char g_Dig1=0,g_Dig2=0,g_Dig3=0,g_Dig4=0; // 각자리마다표시할수(범위: 0 ~9)

 

// FND DATA (FND 4401ASR2 용)

const unsigned char num[10]={

    0b00010100,        //0

    0b11010111,        //1

    0b01001100,        //2

    0b01000101,        //3

    0b10000111,        //4

    0b00100101,        //5

    0b00100100,        //6

    0b01010111,        //7

    0b00000100,        //8

    0b00000101        //9

};

 

// 스위치(키)의입력값이변경되었는지와마지막값확인용

unsigned char keyvalue = -1; // -1 은입력된값이없을때

unsigned char lastkeyvalue = -1; // -1 은입력된값이없을때

 

 

int main()

{

    InitPort();

 

    while(1)

    {

        GetSW();

        DisplayFND();

 

    }

}

 

void InitPort()

{

    DDRC = 0xFF;

    DDRA = 0x0F;

    DDRD = 0xFF;

 

    PORTC = 0x00;

    PORTA = 0xF0;

    PORTD = 0x55;

}

 

void DisplayFND()

{

    int i=0;

 

    PORTD = 1;

    PORTC = num[g_Dig1];

 

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

    {

        asm volatile(" PUSH R0 ");        

        asm volatile(" POP R0 ");        

 

    }

 

    PORTD = 2;

    PORTC = num[g_Dig2];

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

    {

        asm volatile(" PUSH R0 ");        

        asm volatile(" POP R0 ");        

 

    }

 

 

    PORTD = 4;

    PORTC = num[g_Dig3];

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

    {

        asm volatile(" PUSH R0 ");        

        asm volatile(" POP R0 ");        

 

    }

 

    PORTD = 8;

    PORTC =num[g_Dig4];

 

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

    {

        asm volatile(" PUSH R0 ");        

        asm volatile(" POP R0 ");        

 

    }

}

 

void GetSW()

{

 

    keyvalue = PINA >> 4;

 

 

    // switch 의값이변경되었을때만처리하자.

 

    if( keyvalue != lastkeyvalue)

    {

 

        if((lastkeyvalue& 0x08) && !(keyvalue & 0x08))

        {

            g_Dig1 ++;

            if(g_Dig1>9) g_Dig1 = 0;

        }    

 

        if((lastkeyvalue& 0x04) && !(keyvalue & 0x04))

        {

            g_Dig2 ++;

            if(g_Dig2>9) g_Dig2 = 0;

        }

        if((lastkeyvalue& 0x02) && !(keyvalue & 0x02))

        {

            g_Dig3 ++;

            if(g_Dig3>9) g_Dig3 = 0;

        }

        

        if((lastkeyvalue& 0x01) && !(keyvalue & 0x01))

        {

            g_Dig4 ++;

            if(g_Dig4>9) g_Dig4 = 0;

        }

 

 

        lastkeyvalue = keyvalue;

    }

 

 

}

 

 

 

 

 

주요 부품

ATMEGA128 - 1EA

FND 4401ASR2 ( Anode type ) – 1 EA

Switch – 4EA

POWER 5V/1A

 

 


실행파일 다운로드


이번 예제가 추가되면서 실행파일이 업데이트 되었습니다.

4401ASR2
부품을 사용하기 위해서는 패치 하시기 바랍니다.


Posted by WhiteAT
,

WATSIM128 이란?

WATSIM:소개 2011. 4. 8. 20:27

 

WATSIM128 이란?

 

ATMEGA128 (AVR) 마이크로 컨트롤러를 가상의 보드에서 시뮬레이션 할 수 있는 툴입니다.

 

 

일정 시간마다 1씩 증가하는 카운터

 

 

 

 

 

스위치 누름 상태에 따른 LED ON/OFF

 

 

 


 

 

 


































필독!!!! 주의 사항(2011 - 04 - 08 현재)

 

- WATSIM128 은 아직 안정화되지 않은 상태입니다.

- switch, LED, Charater LCD, Resister, FND 만 연결할 수 있습니다.

- 시간이 부정확합니다. ( 회로에 따라서 실제시간 1초에 보드 시간 1us 만 실행 될수 있습니다.)

좌측 하단에 00m 00s 062ms 로 나타나는 것이 보드의 경과 시간입니다.

- 오동작할 수 있습니다.

 

현재는 ATMEGA128 공부를 시작하시는 분이나 그냥 맛보기만 하실 분만 사용하시기 바랍니다.

 

 

 

다운로드

 

 설치용 : zip 파일을 압축풀어 설치를 합니다.

 

 실행용 : 아무곳에나 폴더를 만든후 아래 파일을 다운받은 후 실행하면 됩니다.

 

 

 AVR 펌웨어 소스 및 프로젝트 파일





설치 방법

 

압축을 풀면 setup.exe을 실행하면 설치됩니다.

 

 

 

 

에러 발생시

 

http://msdn.microsoft.com/ko-kr/vbasic/bb735936 에서 Visual Basic Power Packs 를 설치해야 합니다.

 

 

 

 

 

버그 및 문의사항

 

여기 댓글로 남겨 주십시오.

 

감사합니다.

Posted by WhiteAT
,