Sơ đồ khối mạch điều khiển LCD 3 dây sử dụng thanh ghi dịch.
Sơ đồ khối mạch điều khiển LCD 3 dây sử dụng thanh ghi dịch.

TivaC로 쉬프트 레지스터에 직렬 데이터 입력하기

TivaC 마이크로컨트롤러는 쉬프트 레지스터를 포함한 다양한 주변 장치와 통신해야 하는 임베디드 애플리케이션에 자주 사용됩니다. 이 글에서는 TivaC를 사용하여 74HC595 쉬프트 레지스터에 직렬 데이터를 입력하는 방법을 설명합니다.

74HC595 쉬프트 레지스터는 직렬 데이터를 병렬 데이터로 변환하는 데 널리 사용되는 IC입니다. LED, LCD 화면 및 기타 주변 장치와 같은 장치를 제어하는 데 사용할 수 있는 8비트 출력을 제공합니다. 쉬프트 레지스터를 사용하면 마이크로컨트롤러에 필요한 I/O 핀 수를 줄일 수 있습니다.

74HC595에 직렬 데이터를 입력하려면 TivaC는 직렬 데이터(DS), 클럭 펄스(SH_CP) 및 래치 신호(ST_CP)의 세 가지 신호를 생성해야 합니다.

직렬 데이터는 DS 핀을 통해 한 번에 한 비트씩 전송됩니다. SH_CP 핀의 각 클럭 펄스는 데이터를 쉬프트 레지스터로 한 비트씩 이동시킵니다. 8비트가 모두 이동되면 ST_CP 핀의 펄스가 쉬프트 레지스터의 데이터를 저장 레지스터에 고정하고 데이터가 병렬 출력 핀(Q0-Q7)에 나타납니다.

74HC595와 통신하기 위한 TivaC의 핀 구성은 초기화 과정에서 수행되어야 합니다. DS, SH_CP 및 ST_CP에 대해 선택된 세 개의 핀은 디지털 출력으로 구성되어야 합니다. 예를 들어, DS에 PA2 핀, SH_CP에 PA3 핀, ST_CP에 PA4 핀을 사용하는 경우 초기화 코드는 다음과 같습니다(TivaWare 라이브러리 사용).

// 핀 선언
#define DATA_PIN GPIO_PIN_2
#define CLOCK_PIN GPIO_PIN_3
#define LATCH_PIN GPIO_PIN_4

// GPIO 포트 A 활성화
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOA));

// 핀을 디지털 출력으로 구성
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, DATA_PIN | CLOCK_PIN | LATCH_PIN);

핀을 구성한 후에는 각 비트를 전송하고 해당 클럭 펄스를 생성하는 루프를 사용하여 74HC595에 데이터를 전송할 수 있습니다.

예를 들어, 0x55(2진수 01010101) 값을 쉬프트 레지스터에 전송하려면 다음 코드를 사용합니다.

uint8_t data = 0x55;

// 래치 핀을 로우 레벨로 설정
GPIOPinWrite(GPIO_PORTA_BASE, LATCH_PIN, 0);

// 각 비트 전송
for (int i = 7; i >= 0; i--) {
  // 데이터 설정
  GPIOPinWrite(GPIO_PORTA_BASE, DATA_PIN, (data >> i) & 1);

  // 클럭 펄스 생성
  GPIOPinWrite(GPIO_PORTA_BASE, CLOCK_PIN, 1);
  GPIOPinWrite(GPIO_PORTA_BASE, CLOCK_PIN, 0);
}


// 출력 업데이트를 위해 래치 핀을 하이 레벨로 설정
GPIOPinWrite(GPIO_PORTA_BASE, LATCH_PIN, LATCH_PIN);

위 코드는 최상위 비트(MSB)부터 시작하여 데이터의 각 비트를 반복합니다. 각 비트는 DATA_PIN에 기록된 다음 CLOCK_PIN에서 클럭 펄스가 생성되어 비트를 쉬프트 레지스터로 이동시킵니다. 마지막으로 LATCH_PIN을 하이 레벨로 설정하여 데이터를 고정하고 74HC595의 출력을 업데이트합니다.

TivaC를 사용하여 74HC595 쉬프트 레지스터를 통해 주변 장치를 제어하려면 쉬프트 레지스터의 작동 방식과 TivaC에서 GPIO 핀을 구성하는 방법을 잘 이해해야 합니다. TivaWare 라이브러리 함수와 간단한 제어 로직을 사용하면 다양한 주변 장치와 쉽게 통신할 수 있습니다.

Comments

No comments yet. Why don’t you start the discussion?

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다