디스플레이는 사용자가 시스템의 상태를 알 수 있도록 돕고 시스템에서 생성 된 출력 또는 경고 메시지를 표시하므로 임베디드 시스템 애플리케이션에서 매우 중요한 부분입니다. 7 세그먼트 디스플레이, LCD 디스플레이, TFT 터치 스크린 디스플레이, LED 디스플레이 등과 같은 전자 제품에 사용되는 많은 유형의 디스플레이가 있습니다.
이전 튜토리얼에서 이미 ARM7-LPC2148과 16x2 LCD를 인터페이스했습니다. 오늘이 튜토리얼 에서는 ARM7-LPC2148과 7 세그먼트 디스플레이를 인터페이스 할 것 입니다. 자세히 설명하기 전에 7 세그먼트 모듈을 제어하여 원하는 수의 문자를 표시하는 방법을 살펴 보겠습니다.
7 세그먼트 디스플레이
7 세그먼트 디스플레이 는 숫자와 문자를 표시하는 가장 간단한 디스플레이 장치 중 하나입니다. 일반적으로 숫자를 표시하는 데 사용되며 도트 매트릭스 디스플레이보다 조명이 더 밝고 구성이 간단합니다. 그리고 더 밝은 조명으로 인해 LCD보다 더 먼 거리에서 출력을 볼 수 있습니다. 위의 7 세그먼트 디스플레이 이미지에서 볼 수 있듯이 8 개의 LED로 구성되어 있으며, 각 LED는 유닛의 한 세그먼트를 비추는 데 사용되며 8 번째 LED는 7 세그먼트 디스플레이에서 DOT를 비추는 데 사용됩니다. 8thLED는 예를 들어 (0.1)을 표시하기 위해 2 개 이상의 7- 세그먼트 모듈이 사용될 때 사용됩니다. 단일 모듈은 단일 숫자 또는 문자를 표시하는 데 사용됩니다. 두 개 이상의 숫자 또는 문자를 표시하기 위해 여러 7 세그먼트가 사용됩니다.
7 세그먼트 디스플레이의 핀
8 개의 핀이 a, b, c, d, e, f, g 및 h / dp를 참조하는 데 사용되는 10 개의 핀이 있으며, 두 개의 중간 핀은 모든 LED의 공통 양극 / 음극입니다. 이러한 공통 양극 / 음극은 내부적으로 단락되어 있으므로 하나의 COM 핀만 연결하면됩니다.
연결에 따라 7-Segment를 두 가지 유형으로 분류합니다.
공통 음극
여기에서 모든 8 개 LED의 모든 음극 단자 (음극)는 COM으로 명명 된 함께 연결됩니다 (아래 다이어그램 참조). 그리고 모든 양극 단자는 그대로 두거나 마이크로 컨트롤러 핀에 연결됩니다. 마이크로 컨트롤러를 사용하는 경우 로직을 HIGH로 설정하여 특정 조명을 비추고 LOW를 LED를 끄도록 설정합니다.
공통 양극
여기에서 모든 8 개 LED의 모든 양극 단자 (양극)는 COM으로 명명 된 함께 연결됩니다. 그리고 모든 네거티브 열은 그대로 두거나 마이크로 컨트롤러 핀에 연결됩니다. 마이크로 컨트롤러를 사용하는 경우 로직을 LOW로 설정하여 특정 항목을 비추고 로직을 High로 설정하여 LED를 끕니다.
따라서 핀 값에 따라 특정 세그먼트 또는 7 세그먼트의 선을 켜거나 끄면 원하는 숫자 또는 알파벳을 표시 할 수 있습니다. 예를 들어 0 자리를 표시 하려면 핀 ABCDEF를 HIGH로 설정 하고 G 만 LOW 로 설정해야합니다. 마찬가지로 ABCDEF LED가 ON이고 G가 OFF 인 이러한 형태의 0 자리 7 세그먼트 모듈이다. (이것은 공통 음극, 공통 양극의 경우 반대입니다).
아래 표는 공통 음극 구성에 대한 LPC2148 핀 에 따른 HEX 값과 해당 숫자를 보여줍니다.
숫자 |
LPC2148에 대한 HEX 값 |
ㅏ |
비 |
씨 |
디 |
이자형 |
에프 |
지 |
0 |
0xF3 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0x12 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
2 |
0x163 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
삼 |
0x133 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
4 |
0x192 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
5 |
0x1B1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
6 |
0x1F1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
7 |
0x13 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
8 |
0x1F3 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
9 |
0x1B3 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
중요: 위의 표에서 LPC2148에서 사용한 핀에 따라 HEX 값을 지정했습니다. 아래 회로도를 확인하십시오. 원하는 핀을 사용할 수 있지만 그에 따라 16 진수 값을 변경할 수 있습니다.
7 세그먼트 디스플레이에 대한 자세한 내용은 링크를 참조하십시오. 다른 마이크로 컨트롤러와의 7 세그먼트 디스플레이 인터페이스도 확인하십시오.
- Raspberry Pi와 인터페이스하는 7 세그먼트 디스플레이
- PIC 마이크로 컨트롤러와 인터페이싱하는 7 세그먼트 디스플레이
- Arduino와 인터페이스하는 7 세그먼트 디스플레이
- 8051 마이크로 컨트롤러와 인터페이싱하는 7 세그먼트 디스플레이
- AVR 마이크로 컨트롤러를 사용하는 0-99 카운터
필요한 재료
하드웨어
- ARM7-LPC2148
- 7 세그먼트 디스플레이 모듈 (1 자리)
- 브레드 보드
- 전선 연결
소프트웨어
- Keil uVision5
- 플래시 매직
회로도
7- 세그먼트를 LPC2148과 인터페이스하기 위해 아래 회로도에 표시된 것처럼 외부 구성 요소가 필요하지 않습니다.
아래 표는 7-Segment 모듈과 LPC2148 간의 회로 연결을 보여줍니다.
7 개의 세그먼트 모듈 핀 |
LPC2148 핀 |
ㅏ |
P0.0 |
비 |
P0.1 |
씨 |
P0.4 |
디 |
P0.5 |
이자형 |
P0.6 |
에프 |
P0.7 |
지 |
P0.8 |
흔한 |
GND |
ARM7 LPC2148 프로그래밍
이전 튜토리얼에서 Keil을 사용하여 ARM7-LPC2148을 프로그래밍하는 방법을 배웠습니다. 여기에서 동일한 Keil uVision 5를 사용하여 코드를 작성하고 16 진 파일을 만든 다음 플래시 매직 도구를 사용하여 16 진 파일을 LPC2148에 업로드합니다. USB 케이블을 사용하여 전원을 공급하고 LPC2148에 코드를 업로드합니다.
비디오 설명이 포함 된 완전한 코드는이 튜토리얼의 끝에 제공됩니다. 여기서는 코드의 몇 가지 중요한 부분을 설명합니다.
먼저 LPC214x 시리즈 마이크로 컨트롤러 용 헤더 파일을 포함해야합니다.
#포함
다음으로 핀을 출력으로 설정
IO0DIR = IO0DIR-0xffffffff
이렇게하면 P0.0 ~ P0.31 핀이 출력으로 설정되지만 핀 (P0.0, P0.1, P0.4, P0.5, P0.6, P0.7 및 P0.8) 만 사용합니다..
그런 다음 표시 할 숫자에 따라 특정 핀을 LOGIC HIGH 또는 LOW로 설정합니다. 여기서는 (0에서 9)까지의 값을 표시합니다. 0에서 9까지의 값에 대해 HEX 값으로 구성된 배열을 사용합니다.
unsigned int a = {0xf3,0x12,0x163,0x133,0x192,0x1b1,0x1f1,0x13,0x1f3,0x1b3};
while 루프 에 코드가 입력되었으므로 값이 계속 표시됩니다.
while (1) { for (i = 0; i <= 9; i ++) { IO0SET = IO0SET-a; // 해당 핀 설정 HIGH delay (9000); // 지연 함수 호출 IO0CLR = IO0CLR-a; // 해당 핀을 LOW로 설정 } }
여기서 IOSET 및 IOCLR 은 각각 HIGH 및 LOW 핀을 설정하는 데 사용됩니다. PORT0 핀 을 사용 했으므로 IO0SET 및 IO0CLR이 있습니다.
For 루프는 각 반복 에서 i 를 증가시키는 데 사용되며 i가 증가 할 때마다 7 세그먼트도 표시되는 숫자를 증가시킵니다.
지연 기능은 SET과 CLR 간의 지연 시간 을 생성 하는 데 사용됩니다.
void delay (int k) // 지연을 만드는 함수 { int i, j; for (i = 0; i
전체 코드와 작동하는 비디오 설명이 아래에 나와 있습니다. 또한 여기에서 모든 7-Segment Display 관련 프로젝트를 확인하십시오.