본문 바로가기

개발자/Arduino

SSD 1306 OLED 디스플레이 원리

반응형

 

 

SSD 1306 OLED 디스플레이 원리 

 

SSD1306 OLED 디스플레이 소개

 

  • OLED는 전류에 반응하여 빛을 방출하는 유기 발광 다이오드입니다. OLED 디스플레이는 백라이트없이 작동하므로 딥 블랙 레벨을 표시 할 수 있습니다. 액정 디스플레이보다 크기가 작고 무게가 가볍습니다.
  • 128x64 OLED 디스플레이는 단순한 도트 매트릭스 그래픽 디스플레이입니다. 128 개의 열과 64 개의 행이있어 총 128x64 = 8192 픽셀을 표시합니다. 이 픽셀의 LED를 켜고 끄면 모든 모양의 그래픽 이미지를 표시 할 수 있습니다.

 

128x64 OLED 디스플레이 SSD1306

 

SSD1306 드라이버 IC로 구동되는 OLED 디스플레이. SSD1306은 OLED 도트 매트릭스 그래픽 디스플레이 시스템 용 컨트롤러가있는 CMOS OLED 드라이버입니다. SSD1306 드라이버를 사용하기 때문에 필요한 외부 구성 요소의 수와 전력 소비가 감소했습니다.

 

  • OLED 디스플레이는 텍스트, 이미지 및 다양한 패턴을 표시하는 데 사용됩니다. 또한 휴대폰 서브 디스플레이, MP3 플레이어, 계산기 등에 적합합니다.
  • OLED 디스플레이에는 밝기 제어를위한 256 단계가 있습니다.
  • OLED 디스플레이는 128x32, 128x64와 같은 다양한 해상도로도 제공됩니다. 위 이미지의 OLED 디스플레이의 해상도는 128x64 픽셀입니다.

 

OLED에 사용 가능한 인터페이스

OLED 디스플레이 모듈은 아래에 주어진 세 가지 인터페이스를 사용하여 마이크로 컨트롤러와 인터페이스 할 수 있습니다.

 

6800/8000 시리즈 호환 병렬 인터페이스

이 인터페이스에서 8 비트 데이터 송수신은 병렬 라인 즉, D0-D7을 통해 수행 될 수 있습니다.

 

I2C 인터페이스

이 인터페이스에서 데이터 송수신은 SDA 라인을 통해 직렬로 수행 할 수 있습니다.

 

직렬 주변기기 인터페이스

이 인터페이스에서 데이터 송수신은 SDI 및 SDO 라인을 통해 직렬로 수행 될 수 있습니다.

 

참고 : 여기에 설명 된 모듈에는 I2C 인터페이스 핀이 있으므로 아래의 모든 논의에서는 I2C를 인터페이스 표준으로 고려하고 있습니다.

 

다양한 해상도, 통신 프로토콜 (위의 OLED 용 사용 가능한 인터페이스 섹션 에서 논의 됨 ) 및 픽셀 색상 (예 : 파란색, 노란색, 흰색)을 갖는 다양한 유형의 OLED 모듈이 시장에 나와 있습니다 . 일부 모듈은 다중 색상도 지원합니다.

 

OLED 디스플레이 핀 (I2C 인터페이스)

 

OLED 디스플레이 핀

 

SDA (Serial Data) :

 

SDA는 마스터와 슬레이브간에 데이터를 전송하는 데 사용됩니다. 데이터 및 승인은 SDA를 통해 전송됩니다.

 

SCL (Serial Clock) :

 

시계 신호입니다. 이 핀은 클럭을 슬레이브 SCL로 전송합니다. 시계 틱 이벤트시 데이터가 다른 장치로 전송됩니다. 마스터 장치 만이 SCL 라인을 제어합니다.

 

VCC : 이것은 전원 공급 장치 핀입니다. + 3.3V 전원이 필요합니다. 3.3V 이상의 공급은 디스플레이를 손상시킬 수 있습니다.

 

GND : 이것은 접지 핀입니다. 이 핀에 공급 접지를 연결합니다.

 

OLED 디스플레이의 I2C 주소

 

I2C에서 인터페이스 장치는 슬레이브 주소로 인식됩니다. OLED 디스플레이에는 아래 이미지와 같이 슬레이브 주소 형식이 있습니다.

 

OLED 디스플레이 용 주소 등록

 

 SA0 (Slave Address) 비트 :

 

이 비트는 선택할 수있는 두 개의 슬레이브 주소 옵션을 제공합니다.

 

R / W (읽기 / 쓰기) 비트 :

 

이 비트는 I2C 쓰기 또는 I2C 읽기 작업과 같은 작동 모드를 결정하는 데 사용됩니다. 읽기 작업의 경우 1이고 쓰기 작업의 경우 0입니다.

 

이제 SA0 비트가 0 이면 마이크로 컨트롤러는 아래 I2C 주소를 사용하여 OLED 디스플레이로 읽기 / 쓰기 작업을 수행 할 수 있습니다.

 

I2C 쓰기 주소는 0x78입니다.

I2C 읽기 주소는 0x79입니다.

 

디스플레이 구조

 

OLED 디스플레이는 SSD1306의 GDDRAM과 매핑됩니다.

 

SSD1306의 GDDRAM 페이지 구조

 

GDDRAM (Graphics Display Data RAM)은 비트 맵 정적 RAM입니다. 표시 할 비트 패턴을 보유합니다.

 

OLED RAM 구조 OLED 디스플레이의 Pixelwise 구조

 

  • GDDRAM의 크기는 128 x 64 비트이며 PAGE0에서 PAGE7까지 8 페이지로 나뉘며, 위 그림과 같이 단색 128x64 도트 매트릭스 디스플레이에 사용됩니다.
  • 데이터 바이트 (D0-D7)가 GDDRAM에 기록되면 현재 열의 동일한 페이지의 모든 행 데이터 픽셀이 채워집니다. 데이터 비트 D0은 맨 위 행에 기록되고 데이터 비트 D7은 그림과 같이 맨 아래 행에 기록됩니다.

 

OLED의 행 및 열 매핑

 

  • 디스플레이에는 총 8 페이지, 64 행 및 128 열이 있습니다.
  • 위 그림과 같이 각 페이지에는 8 행과 128 열이 있습니다.
  • 디스플레이에는 세그먼트라고하는 총 128 개의 열이 있습니다.
  • 첫 번째 위치에 데이터를 표시하려면 페이지 주소를 0으로, 열 주소를 0으로 설정합니다. 페이지와 열의 끝 주소도 선택해야합니다.
  • 페이지의 최대 끝 주소는 07H이고 최대 열 주소는 7F H입니다.

 

SSD1306 용 명령

 

참고 : 여기에 제공된 명령 및 초기화 순서는 일반화되었으며 우리에게 효과적이었습니다.

 

디스플레이 클록 분할 비율 / 오실레이터 주파수 설정 (0xD5 h) :

 

  • 비트 3 ~ 0 : 디스플레이 클록 분할 비율 (D) CLK에서 DCLK (디스플레이 클록)를 생성하도록 분할 비율을 설정합니다. 분할 비율은 1 ~ 16이며 재설정 값은 1입니다.
  • 비트 7 ~ 4 : 오실레이터 주파수를 설정합니다. 4 비트 값은 16 개의 다른 주파수 설정을 생성합니다. 기본 설정은 1000b입니다.

 

멀티 플렉스 비율 설정 (0xA8 h) :

  • 이 명령은 기본 63 멀티 플렉스 모드를 16에서 63까지의 멀티 플렉스 비율로 전환합니다.

 

디스플레이 시작 라인 설정 (0x40 H ~ 0x7F H) :

  • 이 명령은 디스플레이 시작 라인 레지스터를 설정하여 0에서 63 사이의 값을 선택하여 디스플레이 RAM의 시작 주소를 결정합니다. 프로그램에서이 값을 0으로 설정하고 RAM 행 0을 COM 0에 매핑합니다.

 

메모리 주소 지정 모드 설정 (0x20 H) :

 

SSD1306에는 세 가지 주소 지정 모드가 있습니다.

 

  1. 페이지 주소 지정 모드
  2. 수평 주소 지정 모드
  3. 수직 주소 지정 모드

 

1. 페이지 주소 지정 모드 :

 

  • 페이지 주소 지정 모드에서 디스플레이 RAM을 읽고 쓴 후 열 주소 포인터가 자동으로 1 씩 증가합니다.
  • 열 주소 포인터가 열 끝 주소에 도달하면 열 주소 포인터는 열 시작 주소로 재설정되지만 페이지 주소 포인터는 다음 페이지를 가리 키지 않습니다.
  • 따라서 다음 페이지 RAM 콘텐츠에 액세스하려면 새 페이지 및 열 주소를 설정해야합니다.
  • 페이지 주소 지정 모드에 대해 하위 2 비트를 '1'과 '0'으로 설정해야합니다 .

 

페이지 주소 지정 모드의 주소 포인터 이동

 

페이지 주소 지정 모드에서 시작 RAM 액세스 포인터 위치를 정의하려면 다음 단계가 필요합니다.

 

  • B0h ~ B7h 명령으로 대상 표시 위치의 페이지 시작 주소를 설정합니다.
  • 00h ~ 0Fh 명령으로 포인터의 하위 시작 열 주소를 설정합니다.
  • 10h ~ 1Fh 명령으로 포인터의 상위 시작 열 주소를 설정합니다.

 

예를 들어 페이지 주소가 B2h로 설정되어 있고 하단 열 주소가 03h이고 상단 열 주소가 10h이면 시작 열이 PAGE2의 SEG3임을 의미합니다. RAM 액세스 포인터는 그림과 같이 위치합니다. 입력 데이터 바이트는 열 3의 RAM 위치에 기록됩니다.

 

페이지 주소 지정 모드에서 GDDRAM 액세스 포인터 설정의 예

 

2. 수평 주소 지정 모드 :

 

  • 수평 주소 지정 모드에서 디스플레이 RAM을 읽고 쓴 후 열 주소 포인터가 자동으로 1 씩 증가합니다.
  • 열 주소 포인터가 열 끝 주소에 도달하면 열 주소 포인터가 열 시작 주소로 재설정되고 페이지 주소 포인터가 1 씩 증가합니다.
  • 열 및 페이지 주소 포인터가 모두 끝 주소에 도달하면 포인터가 열 시작 주소와 페이지 시작 주소로 재설정됩니다.
  • 수평 주소 지정 모드의 경우 마지막 두 자리를 '0'과 '0'으로 설정해야 합니다 .

 

수평 주소 지정 수평 주소 지정 모드의 주소 포인터 이동

 

수직 주소 지정 모드 :

 

  • 수직 주소 지정 모드에서 디스플레이 RAM을 읽고 쓴 후 페이지 주소 포인터가 자동으로 1 씩 증가합니다.
  • 페이지 주소 포인터가 페이지 끝 주소에 도달하면 페이지 주소 포인터가 페이지 시작 주소로 재설정되고 열 주소 포인터가 1 씩 증가합니다. 열 및 페이지 주소 포인터가 모두 끝 주소에 도달하면 포인터가 열 시작 주소와 페이지 시작 주소로 재설정됩니다. 수직 주소 지정 모드에서는 마지막 두 자리를 '0'과 '1'로 설정해야 합니다 .

 

수직 주소 지정 모드의 주소 포인터 이동

 

일반 디스플레이 데이터 RAM 읽기 또는 쓰기 및 수평 / 수직 주소 지정 모드에서 RAM 액세스 포인터 위치를 정의하려면 다음 단계가 필요합니다.

  • 21h 명령으로 대상 표시 위치의 열 시작 및 끝 주소를 설정합니다.
  • 22h 명령으로 대상 표시 위치의 페이지 시작 및 끝 주소를 설정합니다.

 

열 주소 설정 (0x21 H) :

 

  • 이것은 트리플 바이트 명령입니다. 첫 번째 바이트는 열 주소 (0x21 H) 설정 명령을 지정합니다.
  • 두 번째 바이트는 열 시작 주소를 지정하고 세 번째 바이트는 열 끝 주소를 지정합니다.
  • 이 명령은 또한 열 주소 포인터를 열 시작 주소로 설정합니다.

 

페이지 주소 설정 (0x22 H) :

 

  • 이것은 트리플 바이트 명령입니다. 첫 번째 바이트는 페이지 주소 (0x22 H) 설정 명령을 지정합니다.
  • 두 번째 바이트는 페이지 시작 주소를 지정하고 세 번째 바이트는 페이지 끝 주소입니다.
  • 이 명령은 또한 페이지 시작 주소에 대한 페이지 주소 포인터를 설정합니다.

 

열 및 행 주소 포인터 이동의 예 :

 

다음 예에서는 수평 주소 지정 모드가 사용됩니다. 열 시작 주소는 2로 설정되고 열 끝 주소는 125로 설정됩니다.

 

  • 페이지 시작 주소는 1로 설정되고 끝 주소는 6으로 설정됩니다.이 경우 그래픽 표시 데이터 RAM 열 액세스 가능 범위는 열 2에서 열 125까지, 페이지 1에서 페이지 6까지입니다.
  • 또한 열 주소 포인터는 2로 설정되고 페이지 주소 포인터는 1로 설정됩니다. 데이터의 한 픽셀 읽기 / 쓰기가 끝나면 열 주소가 자동으로 1 씩 증가하여 다음 읽기 / 쓰기 작업을 위해 다음 RAM 위치에 액세스합니다. .
  • 열 주소 포인터가 끝 열 125에 대한 액세스를 완료 할 때마다 열 2로 다시 재설정되고 페이지 주소가 자동으로 1 씩 증가합니다.
  • 끝 페이지 6 및 끝 열 125 RAM 위치에 액세스하는 동안 페이지 주소는 다시 1로 재설정되고 열 주소는 다시 2로 재설정됩니다.

 

선택적 주소 지정 열 및 행 주소 포인터 이동의 예

 

대비 제어 설정 (0x81 H) :

  • 이 명령은 디스플레이의 대비 설정을 설정합니다. 이 칩에는 00h에서 FF H까지 256 개의 콘트라스트 스텝이 있습니다. 콘트라스트 스텝 값이 증가하면 세그먼트 출력 전류가 증가합니다.

 

사전 충전 기간 설정 (0xD9 H) :

  • 이 명령은 사전 충전 기간을 설정하는 데 사용됩니다. 간격은 DCLK 수로 계산되며 여기서 RESET은 2 DCLK와 같습니다.

 

VCOMH 선택 해제 수준 설정 (0xDB H) :

  • 이 명령은 VCOMH 레귤레이터 출력을 조정합니다.

 

전체 디스플레이 (0xA4 H / 0xA5 H) :

  • A4 h 명령은 전체 디스플레이 "ON"단계에서 디스플레이를 다시 시작합니다.
  • A5 h 명령은 디스플레이 데이터 RAM의 내용에 관계없이 전체 디스플레이를 "ON"으로 만듭니다.

 

일반 / 반전 디스플레이 설정 (0xA6h / 0xA7h) :

  • A6 h 명령은 일반 표시 용입니다.
  • A7 h 명령은 반전 표시 용입니다.

 

디스플레이 설정 / 해제 (0xAE H / 0xAF H) :

  • AE h : 디스플레이를 OFF로 설정합니다.
  • AF h : 디스플레이 켜기

 

참고 : 선택 취소하지 않으면 가비지 값을 인쇄 할 수 있으므로 OLED 디스플레이를 지 웁니다.

 

경고:

  1. 각 SCL 펄스 동안 전송되는 데이터 비트는 클럭 펄스의 "HIGH"기간 내에서 안정적인 상태를 유지해야합니다.
  2. 시작 또는 중지 조건을 제외하고 데이터 라인은 SCL이 LOW 일 때만 전환 될 수 있습니다.
  3. 데이터 라인 (SDA)과 클록 라인 (SCL)은 모두 외부 저항에 의해 풀업되어야합니다. 

 

 

참고

1. 번역하기 전 원문자료 

 

 

 

 

 

 

 

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩