모든 마이크로 컨트롤러 프로젝트의 경우 디스플레이 장치와 인터페이스를 연결하면 프로젝트가 훨씬 쉽고 사용자가 상호 작용할 수 있습니다. 마이크로 컨트롤러에 가장 일반적으로 사용되는 디스플레이 장치는 16x2 알파 숫자 디스플레이입니다. 이러한 유형의 디스플레이는 사용자에게 중요한 정보를 표시하는 데 유용 할뿐만 아니라 프로젝트의 초기 개발 단계에서 디버깅 도구 역할을 할 수도 있습니다. 따라서이 튜토리얼 에서는 16 × 2 LCD 디스플레이를 STM32F103C8T6 STM32 개발 보드 와 인터페이스 하고 Arduino IDE를 사용하여 프로그래밍 하는 방법을 배웁니다. Arduino에 익숙한 사람들에게이 튜토리얼은 둘 다 매우 유사하기 때문에 케이크 산책이 될 것입니다. 또한 STM32 Blue Pill Board에 대해 자세히 알아 보려면 시작 자습서를 따르십시오.
필요한 재료
- STM32 Blue Pill 개발 보드
- 16 × 2 LCD 디스플레이
- FTDI 프로그래머
- 전선 연결
- LCD
16 × 2 도트 매트릭스 LCD 디스플레이에 대한 간략한 소개
앞서 말했듯이 Energia IDE는 인터페이스를 케이크 조각으로 만드는 아름다운 라이브러리를 제공하므로 디스플레이 모듈에 대해 아는 것이 필수가 아닙니다. 하지만 우리가 무엇을 사용하고 있는지 보여주는 것이 흥미롭지 않았을까요 !!
16 × 2라는 이름은 디스플레이에 16 개의 열과 2 개의 행이 있으며 함께 (16 * 2) 32 개의 상자를 형성 함을 의미합니다. 하나의 상자는 아래 그림과 같이 보입니다.
단일 상자에는 5 행과 8 열의 행렬 순서로 40 픽셀 (도트)이 있으며이 40 픽셀은 함께 하나의 문자를 형성합니다. 마찬가지로 모든 상자를 사용하여 32자를 표시 할 수 있습니다. 이제 핀아웃을 살펴 보겠습니다.
LCD에는 위와 같이 총 16 개의 핀이 있으며 다음과 같이 4 개의 그룹으로 나눌 수 있습니다.
소스 핀 (1, 2 및 3): 이 핀은 디스플레이의 전원 및 대비 레벨을 제공합니다.
제어 핀 (4, 5 및 6): 이 핀은 LCD 인터페이스 IC의 레지스터를 설정 / 제어합니다 (자세한 내용은 아래 링크에서 찾을 수 있음).
데이터 / 명령 핀 (7 ~ 14): 이 핀은 LCD에 표시되어야하는 정보에 대한 데이터를 제공합니다.
LED 핀 (15 및 16): 이 핀은 필요한 경우 LCD 백라이트를 비추는 데 사용됩니다 (옵션).
이 모든 16 핀 중에서 LCD 디스플레이에 대해 더 많이 알고 싶다면 LCD의 올바른 작동을 위해 10 개의 핀만 필수로 사용해야합니다.이 16x2 LCD 기사로 이동하십시오.
회로도 및 연결
STM32F103C8T6 STM32 Blue Pill 보드 와 16 * 2 도트 매트릭스 LCD 를 인터페이스하는 회로도 는 아래와 같습니다. 그것은 Fritzing 소프트웨어를 사용하여 만들어졌습니다.
보시다시피 브레드 보드를 통해 완전한 연결이 이루어집니다. STM32 마이크로 컨트롤러를 프로그래밍하려면 FTDI 보드가 필요합니다. 이전 튜토리얼과 유사하게 FTDI 보드를 STM32에 연결했으며 FDTI 프로그래머의 Vcc 및 접지 핀은 STM32의 5V 핀과 접지 핀에 각각 연결됩니다. 둘 다 + 5V를 수용 할 수 있으므로 STM32 보드와 LCD에 전원을 공급하는 데 사용됩니다. FTDI 보드의 Rx 및 Tx 핀은 STM32의 A9 및 A10 핀에 연결되어 있으므로 부트 로더없이 직접 보드를 프로그래밍 할 수 있습니다.
다음으로 LCD를 STM32 보드에 연결해야합니다. 우리가 사용하고자하는 4 비트 모드 LCD를 우리는 4 개 개의 데이터를 연결할 필요가 있으므로 도시 한 바와 같이 (DB7에 DB4) 및 STM32 보드 개의 제어 핀 (RS 및 EN) 핀 비트 STM32F103C8T6의 LCD 인터페이스 회로 위의 다이어그램. 또한 아래 표는 연결하는 데 도움이 될 것입니다.
LCD 핀 번호 |
LCD 핀 이름 |
STM32 핀 이름 |
1 |
접지 (Gnd) |
접지 (G) |
2 |
VCC |
5V |
삼 |
VEE |
접지 (G) |
4 |
등록 선택 (RS) |
PB11 |
5 |
읽기 / 쓰기 (RW) |
접지 (G) |
6 |
활성화 (EN) |
PB10 |
7 |
데이터 비트 0 (DB0) |
연결 없음 (NC) |
8 |
데이터 비트 1 (DB1) |
연결 없음 (NC) |
9 |
데이터 비트 2 (DB2) |
연결 없음 (NC) |
10 |
데이터 비트 3 (DB3) |
연결 없음 (NC) |
11 |
데이터 비트 4 (DB4) |
PB0 |
12 |
데이터 비트 5 (DB5) |
PB1 |
13 |
데이터 비트 6 (DB6) |
PC13 |
14 |
데이터 비트 7 (DB7) |
PC14 |
15 |
LED 긍정적 |
5V |
16 |
LED 네거티브 |
접지 (G) |
연결이 완료되면 Arduino IDE를 열고 프로그래밍을 시작할 수 있습니다.
Arduino를 사용하여 LCD 용 STM32 프로그래밍
이 튜토리얼에서 말했듯이 우리는 Arduino IDE를 사용하여 STM32 마이크로 컨트롤러를 프로그래밍 할 것 입니다. 그러나 기본적으로 Arduino IDE에는 STM32 보드가 설치되어 있지 않으므로 패키지를 다운로드하고 Arduino IDE를 준비해야합니다. 이것은 Arduino IDE를 사용하여 STM32F103C8T6을 시작하는 이전 자습서에서 수행 한 작업입니다. 따라서 필수 패키지를 설치하지 않은 경우이 튜토리얼로 돌아가서 계속 진행하기 전에 따르십시오.
Arduino IDE에 STM32 보드가 설치되면 프로그래밍을 시작할 수 있습니다. 이 프로그램은 Arduino 보드와 매우 유사하며 STM32 및 Arduino에 대한 표기법이 다르기 때문에 변경되는 유일한 것은 핀 이름 입니다. 전체 프로그램은이 페이지의 끝에 제공되지만 프로그램을 설명하기 위해 아래와 같이 의미있는 작은 스 니펫으로 분할했습니다.
Arduino를 사용하여 마이크로 컨트롤러를 프로그래밍 할 때 눈에 띄는 이점 중 하나는 Arduino가 거의 모든 유명한 센서 및 액추에이터를위한 기성 라이브러리가 있다는 것입니다. 그래서 여기서 우리 는 프로그래밍을 훨씬 쉽게 만드는 LCD 라이브러리 를 포함하여 프로그램을 시작합니다.
#포함
다음 줄 에서는 LCD 디스플레이 컨트롤과 데이터 라인을 연결 한 STM32의 GPIO 핀 을 지정해야합니다. 이를 위해 하드웨어를 확인해야합니다. STM32의 GPIO 핀에 대한 LCD의 핀 이름을 나열하는 상단에 제공된 표를 참조 할 수도 있습니다. 핀을 언급 한 후 LiquidCrystal 기능을 사용하여 LCD를 초기화 할 수 있습니다. 또한 아래와 같이 LCD의 이름을 " lcd "로 지정합니다.
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // LCD로 핀 이름을 언급하면 LiquidCrystal lcd에 연결됩니다 (rs, en, d4, d5, d6, d7); // LCD 초기화
다음으로 설정 기능에 들어갑니다. 먼저 우리가 사용하고있는 LCD의 유형을 언급했습니다. 16 * 2 LCD 이므로 lcd.begin (16,2) 라인을 사용합니다 . void setup 함수 내부의 코드 는 한 번만 실행됩니다. 그래서 우리는 이것을 사용하여 2 초 동안 화면에 나타난 후 지워지 는 소개 텍스트 를 표시합니다. 텍스트는 우리가 함수 사용 표시하는 위치 언급 lcd.setcursor을 우리가 사용하는 텍스트 인쇄 lcd.print의 기능을. 예를 들어 lcd.setCursor (0,0) 은“ Interfacing LCD ”와 함수 lcd.setCursor (0,1)을 인쇄하는 첫 번째 행과 첫 번째 열에 커서를 설정합니다. 커서를 두 번째 행 첫 번째 열로 이동하여“ CircuitDigest ” 줄을 인쇄합니다.
void setup () {lcd.begin (16, 2); // 우리는 16 * 2 LCD를 사용하고 있습니다. lcd.setCursor (0, 0); // 첫 번째 행 첫 번째 열에서 lcd.print ("Interfacing LCD"); //이 lcd를 인쇄합니다.setCursor (0, 1); // 두 번째 행 첫 번째 열에서 lcd.print ("-CircuitDigest"); //이 지연 인쇄 (2000); // 2 초 동안 대기 lcd.clear (); // 화면 지우기}
소개 텍스트를 표시 한 후 사용자가 소개 메시지를 읽을 수 있도록 지연을 만들어 2 초 동안 프로그램을 보류합니다. 이 지연은 라인 지연 (2000)에 의해 생성됩니다. 여기서 2000은 밀 초 단위의 지연 값입니다. 지연 후 LCD의 모든 텍스트를 제거하여 LCD를 지우는 lcd.clear () 함수를 사용하여 LCD를 지 웁니다.
마지막으로, 내부에 공극 루프, 우리는 첫 번째 라인과 두 번째 줄에 초간의 값에 「파란 STM32 필 "을 표시. second 값은 millis () 함수 에서 얻을 수 있습니다. 밀리 ()는 MCU가 전원이 때부터 증가 권리를 유도 할 수있는 타이머입니다. 값은 밀리 초 형식이므로 LCD에 표시하기 전에 1000으로 나눕니다.
void loop () { lcd.setCursor (0, 0); // 첫 번째 행 첫 번째 열에서 lcd.print ("STM32 -Blue Pill"); //이 lcd를 인쇄합니다 .setCursor (0, 1); // 두 번째 행 첫 번째 열에서 lcd.print (millis () / 1000); // 초의 값을 출력 }
STM32F103C8T6에 프로그램 업로드
위 단락에서 설명했듯이 코드가 업로드되는 즉시 출력을 확인할 수 있어야합니다. 그러나이 프로그램은 보드가 여전히 프로그래밍 모드에 있기 때문에 다음에 보드 전원을 켤 때 작동하지 않습니다. 따라서 프로그램이 업로드되면 부팅 0의 점퍼는 아래에 표시된대로 다시 0 위치로 변경되어야합니다. 또한 이제 프로그램이 STM32 보드에 이미 업로드되었으므로 FTDI 보드가 필요하지 않으며 전체 설정은 아래에 표시된 것처럼 STM32 보드의 마이크로 USB 포트를 통해 전원을 공급받을 수 있습니다.
이것은 STM32 보드와 함께 LCD 디스플레이를 사용하는 데 도움이되는 간단한 인터페이스 프로젝트 일 뿐이지 만이를 사용하여 멋진 프로젝트를 만들 수 있습니다. 튜토리얼을 이해하고 유용한 것을 배우 셨기를 바랍니다. 작동하는 데 문제가있는 경우 댓글 섹션을 사용하여 문제를 게시하거나 다른 기술 질문에 대한 포럼을 사용하십시오. STM32를 사용한 LCD 디스플레이 의 전체 작동은 아래 비디오에서도 확인할 수 있습니다.