Lab-06-Using a 7-segment display with Arduino

 

1. 이론

1.1 7-segment

 

 

7-segment 두가지 타입

- anode cathode 가지 타입이 있음.

- anode 경우 단자에 –V(off) 불이 켜지게 되고 cathode 반대로 +V(on) 동작.

- common-anode type 

 

a

b

c

d

e

f

g

0

0

0

0

0

0

0

1

1

1

0

0

1

1

1

1

2

0

0

1

0

0

1

0

3

0

0

0

0

1

1

0

4

1

0

0

1

1

0

0

5

0

1

0

0

1

0

0

6

0

1

0

0

0

0

0

7

0

0

0

1

1

1

1

8

0

0

0

0

1

0

0

    

-  common-cathode type

 

a

b

c

d

e

f

g

0

1

1

1

1

1

1

0

1

0

1

1

0

0

0

0

2

1

1

0

1

1

0

1

3

1

1

1

1

0

0

1

4

0

1

1

0

0

1

1

5

1

0

1

1

0

1

1

6

1

0

1

1

1

1

1

7

1

1

1

0

0

0

0

8

1

1

1

1

0

1

1

 

       

- 숫자별 7-segment 설정

 

2. 실습
2.1
7-segment 동작 실습

 

회로도

 

 

int leds[]= 2, 3, 4, 5, 6, 7, 8, 9;

// 2-8 까지 leds[] 사용

 

int num[10][8] =

     0,0,0,0,0,0,1,1,        //0

     1,0,0,1,1,1,1,1,        //1

     0,0,1,0,0,1,0,1,        //2

     0,0,0,0,1,1,0,1,        //3

     1,0,0,1,1,0,0,1,        //4

     0,1,0,0,1,0,0,1,        //5

     0,1,0,0,0,0,0,1,        //6

     0,0,0,1,1,1,1,1,        //7

     0,0,0,0,0,0,0,1,        //8

     0,0,0,0,1,0,0,1         //9

     ;

//anode 타입을 사용할 경우임. cathod e타입의 경우 0 1 반대로 쓴다.

 

void setup()

     for (int i = 0 ; i < 8 ; i++)

           pinMode(leds[i], OUTPUT);

    

 

//7세그먼트의 각각 LED 연결된 핀을 모두 OUTPUT으로 사용

void loop()

     for (int i = 0 ; i < 10 ; i++)

           for (int j = 0 ; j < 8 ; j++)

                digitalWrite(leds[j], num[i][j]);

          

           delay(1000);

    

 

//7-segment 0부터 9까지 1초간격으로 출력하기 위한 설정.

 

2.2 CD4511[7-segment Decoder] 사용하여 7-segment 동작 실습.

 

회로도

 

int num[10][4]=

     0,0,0,0,    //0

     0,0,0,1,    //1

     0,0,1,0,    //2

     0,0,1,1,    //3

     0,1,0,0,    //4

     0,1,0,1,    //5

     0,1,1,0,    //6

     0,1,1,1,    //7

     1,0,0,0,    //8

     1,0,0,1          //9

     ;

//cathode 타입을 사용해야함

 

int datapin[4] = 5,4,3,2;    //D3(Din), D2(Cin), D1(Bin), D0(Ain)

 

void setup()

  for(int i=0;i<4;i++)

    pinMode(datapin[i], OUTPUT);

   

 

//4개의 data핀을 모두 OUTPUT으로 사용.

 

void loop()

  for(int i=0;i<10;i++)

    for(int j=0;j<4;j++)

      digitalWrite(datapin[j],num[i][j]);

   

    delay(1000);

 

 

//0부터 9까지 출력.

 

2.3 74HC595 이용하여 3개의 핀을 사용하여 7-segment 0부터 9까지 동작시키기.

 

(3개의 핀을 사용하여 8개의 출력을 내보내는 74HC595 4개의 핀을 사용하여 7개의 출력을 내보내는 CD4511[7-segment Decoder] 동시에 사용하면 3개의 핀으로 2개의 7-segment 제어 있다.)


cd4511 진리표

 

cd4511 로직 다이어그램