컨텐츠 바로가기



현재 위치

  1. 게시판
  2. 자료실

자료실

자료실입니다.

세그먼트 디스플레이 쉴드 (아두이노 호환) 소스 및 회로도
제목 세그먼트 디스플레이 쉴드 (아두이노 호환) 소스 및 회로도
작성자 (주)로보메카 (ip:)
  • 작성일 2012-11-02 22:24:29
  • 추천 추천 하기
  • 조회수 1735
  • 평점 0점

// PSD 세서 아날로그값 출력 예제

#define   pin_Data      7
#define   pin_Clock     9
#define   pin_Latch     8

#define   SegDriver1    10
#define   SegDriver2    11
#define   SegDriver3    12
#define   SegDriver4    13
//                    0,    1,   2,   3,    4,  5,     6,    7,   8,   9
int  SegData[10] = {0x40, 0xf9,0x24,0x30,0x19,0x12,  0x02, 0x58,  0, 0x10};
char SegPower;

int  adValue, tmp;
unsigned long CurTime, OldTime;
void setup()
{

    pinMode(pin_Data, OUTPUT);

    pinMode(pin_Clock, OUTPUT);

    pinMode(pin_Latch, OUTPUT);      

     

    pinMode(SegDriver1, OUTPUT);

    pinMode(SegDriver2, OUTPUT);

    pinMode(SegDriver3, OUTPUT);

    pinMode(SegDriver4, OUTPUT);  

    SegPower = 1;        

}
void loop()
{
    adValue = analogRead(A0);
    CurTime = millis();
    if(CurTime - OldTime > 500)
    {
        OldTime = CurTime;
        tmp = adValue;
    }
    SegDisplay(tmp, 1);   
}
void SegDisplay(int SegDigit, char attr)
{
    char SegDrv1, SegDrv2, SegDrv3, SegDrv4;
    char tmp, colon = 0;
    int  tmp1000, tmp100, tmp10;
    SegDrv1 = SegDigit / 1000;
    tmp1000 = SegDigit % 1000;
        
    SegDrv2 = tmp1000 / 100;
    tmp100 =  tmp1000 % 100;
   
    SegDrv3 = tmp100 / 10;   
    SegDrv4 = tmp100 % 10;
   
    if(attr == 0x01)     colon = 0x80;         // colon
    else if(attr == 0)
    {
        digitalWrite(SegDriver1, HIGH);
        digitalWrite(SegDriver2, HIGH);
        digitalWrite(SegDriver3, HIGH);
        digitalWrite(SegDriver4, HIGH);                 
        return;
    }
    switch(SegPower)
    {
        case 1:
          digitalWrite(pin_Latch, LOW);
          tmp = SegData[SegDrv1] | colon;
          shiftOut(pin_Data, pin_Clock, MSBFIRST, tmp);
          digitalWrite(pin_Latch, HIGH);           
          digitalWrite(SegDriver1, LOW);
          digitalWrite(SegDriver2, HIGH);
          digitalWrite(SegDriver3, HIGH);
          digitalWrite(SegDriver4, HIGH);           
          delay(2);
          digitalWrite(SegDriver1, HIGH);
          SegPower = 2;
        break;
        case 2:
          digitalWrite(pin_Latch, LOW);
          tmp = SegData[SegDrv2] | colon;         
          shiftOut(pin_Data, pin_Clock, MSBFIRST, tmp);
          digitalWrite(pin_Latch, HIGH);                   
          digitalWrite(SegDriver1, HIGH);
          digitalWrite(SegDriver2, LOW);
          digitalWrite(SegDriver3, HIGH);
          digitalWrite(SegDriver4, HIGH);           
          delay(2);
          digitalWrite(SegDriver2, HIGH);
          SegPower = 3;       
        break;
        case 3:
          digitalWrite(pin_Latch, LOW);
          tmp = SegData[SegDrv3] | colon;                   
          shiftOut(pin_Data, pin_Clock, MSBFIRST, tmp);
          digitalWrite(pin_Latch, HIGH);                   
          digitalWrite(SegDriver1, HIGH);
          digitalWrite(SegDriver2, HIGH);
          digitalWrite(SegDriver3, LOW);
          digitalWrite(SegDriver4, HIGH);           
          delay(2);
          digitalWrite(SegDriver3, HIGH);
          SegPower = 4;       
        break;
        case 4:
          digitalWrite(pin_Latch, LOW);
          tmp = SegData[SegDrv4] | colon;                   
          shiftOut(pin_Data, pin_Clock, MSBFIRST, tmp);
          digitalWrite(pin_Latch, HIGH);                   
          digitalWrite(SegDriver1, HIGH);
          digitalWrite(SegDriver2, HIGH);
          digitalWrite(SegDriver3, HIGH);
          digitalWrite(SegDriver4, LOW);           
          delay(2);
          digitalWrite(SegDriver4, HIGH);                             
          SegPower = 1;       
        break;
       
    }
}

첨부파일 Segmentshield.pdf
비밀번호 삭제하려면 비밀번호를 입력하세요.

목록

삭제 수정 답변

댓글 수정

비밀번호

수정 취소

/ byte


장바구니 0