상품 상세 정보
상품명 K_FND KUT-128 응용 모듈
제조사 자체제작
판매가 13,200원
적립금 130원 (1%)
상품코드 AP00BA0002
사용후기 0
상품 옵션

 

K_FND1 메뉴얼

 

♣ [10핀 모렉스 커넥터1] - 패턴 제어신호

핀번호

1

2

3

4

5

6

7

8

9

10

핀명

5V

a

b

c

d

e

f

g

dp

GND

 

♣ [10핀 모렉스 커넥터2] - 세그먼트 ON 제어신호

핀번호

1

2

3

4

5

6

7

8

9

10

핀명

5V

SEG1

SEG2

SEG3

SEG4

SEG5

SEG6

SEG7

SEG8

GND

 

♣ [10핀 Flat 케이블 커넥터1] - 패턴 제어신호

핀번호

1

3

5

7

9

핀명

5V

b

d

f

dp

핀번호

2

4

6

8

10

핀명

a

c

e

g

GND

 

♣ [10핀 Flat 케이블 커넥터2] - 세그먼트 ON 제어신호

핀번호

1

3

5

7

9

핀명

5V

SEG2

SEG4

SEG6

SEG8

핀번호

2

4

6

8

10

핀명

SEG1

SEG3

SEG5

SEG7

GND

 

♣ [세그먼트 ON 제어신호]

 

제어 신호

 

'0' (0V)

'1' (5V)

세그먼트 전원

OFF

ON

 

♣ [패턴(a, b, c, d, e, f, g, dp) 제어신호]

 

제어 신호

 

'0' (0V)

'1' (5V)

a, b, c, d, e, f, g, dp

OFF

ON

 

패턴

제어신호

g

f

e

d

c

b

a

'0'

0

1

1

1

1

1

1

'1'

0

0

0

0

1

1

0

'2'

1

0

1

1

0

1

1

'3'

1

0

0

1

1

1

1

'4'

1

1

0

0

1

1

0

'5'

1

1

0

1

1

0

1

'6'

1

1

1

1

1

0

1

'7'

0

0

0

0

1

1

1

'8'

1

1

1

1

1

1

1

'9'

1

1

0

1

1

1

1

 

 

♣ [테스트 프로그램1]

// 파일명 : seg.c

// 7-Segment 모듈 테스트 프로그램(CodeVisionAVR C 컴파일러 이용)

// 7-Segment에 0-9999까지 출력하기

// SEG2 : 업카운터, SEG1 : 다운 카운터

// PC0-SEG2_DIG4, PC1-SEG2_DIG3, PC2-SEG2_DIG2, PC3-SEG2_DIG1

// PC4-SEG1_DIG4, PC5-SEG1_DIG3, PC6-SEG1_DIG2, PC7-SEG1_DIG1

// PA0-a, PA1-b, PA2-c, PA3-d

// PA4-e, PA5-f, PA6-g, PA7-dp

 

#include <mega128.h>

#include <delay.h>

flash unsigned char seg_pat[10]= {0x3f, 0x06, 0x5b, 0x4f, 0x66,

0x6d, 0x7d, 0x07, 0x7f, 0x6f};

void Seg8_out(int); // 8개 세그먼트 표시

 

void main(void)

{

int num = 0; // 표시 초기값

 

DDRA = 0xFF; // 포트A 출력 설정

DDRC = 0xFF; // 포트C 출력 설정

 

while(1){ // 무한 반복

Seg8_out(num); // 8개 세그먼트 표시

num++; // 표시값 +1

if(num > 9999) num = 0; // 상한치 99 체크

}

}

// 4개의 7-세그먼트에 0~9999 표시하기

void Seg8_out(int num)

{

int i, buf;

int S1_1000, S1_100, S1_10, S1_1;

int S2_1000, S2_100, S2_10, S2_1;

// SEG2 4자리 출력값 산출 => 업 카운터

S2_1000 = num / 1000; // 1000자리

buf = num % 1000;

S2_100 = buf / 100; // 100자리

buf = buf % 100;

S2_10 = buf / 10; // 10자리

S2_1 = buf % 10; // 1자리

// SEG1의 4자리값(9999 - SEG1) => 다운 카운터

S1_1000 = 9 - S2_1000;

S1_100 = 9 - S2_100;

S1_10 = 9 - S2_10;

S1_1 = 9 - S2_1;

 

for(i = 0;i < 5;i++){

PORTC = 0b00000001; // SEG2_DIG4(맨 우측 1자리) Segment ON

PORTA = seg_pat[S2_1];

delay_ms(2);

PORTC = 0b00000010; // SEG2_DIG3 Segment(10자리) ON

PORTA = seg_pat[S2_10];

delay_ms(2);

PORTC = 0b00000100; // SEG2_DIG2 Segment(100자리) ON

PORTA = seg_pat[S2_100];

delay_ms(2);

PORTC = 0b00001000; // SEG2_DIG1 Segment(1000자리) ON

PORTA = seg_pat[S2_1000];

delay_ms(2);

PORTC = 0b00010000; // SEG1_DIG4(맨 우측 1자리) Segment ON

PORTA = seg_pat[S1_1];

delay_ms(2);

PORTC = 0b00100000; // SEG1_DIG3 Segment(10자리) ON

PORTA = seg_pat[S1_10];

delay_ms(2);

PORTC = 0b01000000; // SEG1_DIG2 Segment(100자리) ON

PORTA = seg_pat[S1_100];

delay_ms(2);

PORTC = 0b10000000; // SEG1_DIG1 Segment(1000자리) ON

PORTA = seg_pat[S1_1000];

delay_ms(2);

}

}

 

 

♣ [테스트 프로그램2]

// 파일명 : seg_time.c

// 7-Segment 모듈 테스트 프로그램(CodeVisionAVR C 컴파일러 이용)

// 7-Segment에 0-9999까지 출력하기

// SEG2 : 업카운터, SEG1 : 다운 카운터

// => 타이머/카운터0 이용하여 일정시간 간격으로 세그먼트 1개씩 구동

// PC0-SEG2_DIG4, PC1-SEG2_DIG3, PC2-SEG2_DIG2, PC3-SEG2_DIG1

// PC4-SEG1_DIG4, PC5-SEG1_DIG3, PC6-SEG1_DIG2, PC7-SEG1_DIG1

// PA0-a, PA1-b, PA2-c, PA3-d

// PA4-e, PA5-f, PA6-g, PA7-dp

 

#include <mega128.h>

#include <delay.h>

 

// '0'-'9' 표시 패턴값

flash unsigned char seg_pat[10]= {0x3f, 0x06, 0x5b, 0x4f, 0x66,

0x6d, 0x7d, 0x07, 0x7f, 0x6f};

 

// 세그먼트 on 출력값

flash unsigned char seg_on[8] = {0x01, 0x02, 0x04, 0x08,

0x10, 0x20, 0x40, 0x80};

 

int seg_val[8]; // 출력할 자리값

int disp_no = 0; // 출력할 Segment 자리

void Seg_cal(int); // 출력할 자리값 계산

 

void main(void)

{

int num = 0;

 

DDRA = 0xFF; // 포트 A 출력 설정

DDRC = 0xFF; // 포트 C 출력 설정

 

TCCR0 = 0x07; // 1024분주

ASSR = 0x0; // 타이머/카운터0 타이머 동작

TCNT0 = 225; // 1/16us * 1024 * (256 - 225) = 1.98ms

TIMSK = 0x01; // 타이머/카운터0 오버플로우 인터럽트 인에이블

 

Seg_cal(num); // 출력할 자리값 계산

SREG= 0x80; // 인터럽트 인에이블

 

while(1){

delay_ms(100); // 100ms 지연

num++; // 출력값 +1

if(num > 9999) num = 0; // 표시값 제한

Seg_cal(num); // 출력할 자리값 계산

}

}

 

// 파일명 : seg_time.c

// 7-Segment 모듈 테스트 프로그램(CodeVisionAVR C 컴파일러 이용)

// 7-Segment에 0-9999까지 출력하기

// SEG2 : 업카운터, SEG1 : 다운 카운터

// => 타이머/카운터0 이용하여 일정시간 간격으로 세그먼트 1개씩 구동

// PC0-SEG2_DIG4, PC1-SEG2_DIG3, PC2-SEG2_DIG2, PC3-SEG2_DIG1

// PC4-SEG1_DIG4, PC5-SEG1_DIG3, PC6-SEG1_DIG2, PC7-SEG1_DIG1

// PA0-a, PA1-b, PA2-c, PA3-d

// PA4-e, PA5-f, PA6-g, PA7-dp

 

#include <mega128.h>

#include <delay.h>

 

// '0'-'9' 표시 패턴값

flash unsigned char seg_pat[10]= {0x3f, 0x06, 0x5b, 0x4f, 0x66,

0x6d, 0x7d, 0x07, 0x7f, 0x6f};

 

// 세그먼트 on 출력값

flash unsigned char seg_on[8] = {0x01, 0x02, 0x04, 0x08,

0x10, 0x20, 0x40, 0x80};

 

int seg_val[8]; // 출력할 자리값

int disp_no = 0; // 출력할 Segment 자리

void Seg_cal(int); // 출력할 자리값 계산

 

void main(void)

{

int num = 0;

 

DDRA = 0xFF; // 포트 A 출력 설정

DDRC = 0xFF; // 포트 C 출력 설정

 

TCCR0 = 0x07; // 1024분주

ASSR = 0x0; // 타이머/카운터0 타이머 동작

TCNT0 = 225; // 1/16us * 1024 * (256 - 225) = 1.98ms

TIMSK = 0x01; // 타이머/카운터0 오버플로우 인터럽트 인에이블

 

Seg_cal(num); // 출력할 자리값 계산

SREG= 0x80; // 인터럽트 인에이블

 

while(1){

delay_ms(100); // 100ms 지연

num++; // 출력값 +1

if(num > 9999) num = 0; // 표시값 제한

Seg_cal(num); // 출력할 자리값 계산

}

}