인간 세계와 기계 세계 사이에 좋은 의사 소통을 구축하기 위해 디스플레이 장치가 중요한 역할을합니다. 따라서 그들은 임베디드 시스템의 중요한 부분입니다. 디스플레이 장치-크든 작든 동일한 기본 원리로 작동합니다. 그래픽 디스플레이 및 3D 디스플레이와 같은 복잡한 디스플레이 장치 외에도 16x1 및 16x2 장치와 같은 간단한 디스플레이로 작업하는 것을 알아야합니다. 16x1 디스플레이 장치는 16 자이며 한 줄로 표시됩니다. 16x2 LCD는 16in 1st 라인과 16in 2nd 라인 에 총 32 개의 문자가 있습니다.선. 여기서는 각 문자에 5x10 = 50 픽셀이 있으므로 한 문자를 표시하려면 50 픽셀 모두가 함께 작동해야한다는 것을 이해해야합니다. 하지만 디스플레이 장치에 픽셀을 제어하는 다른 컨트롤러 (HD44780)가 있기 때문에 걱정할 필요가 없습니다. (LCD 유닛에서 볼 수 있으며 뒷면의 검은 눈입니다).
필요한 구성 요소
하드웨어:
ATmega32 마이크로 컨트롤러
전원 공급 장치 (5v)
AVR-ISP 프로그래머
JHD_162ALCD (16x2 LCD)
100uF 커패시터.
소프트웨어:
Atmel 스튜디오 6.1
Progisp 또는 플래시 매직
회로도 및 설명
에 나타낸 바와 같이 ATmega32 회로와 인터페이스 LCD, 당신은 ATMEGA32의 PORTA 데이터 포트 LCD에 연결되어 있음을 볼 수 있습니다. 여기서 PORTC를 일반 통신 포트로 사용하려면 퓨즈 바이트를 변경하여 ATMEGA의 PORTC에서 JTAG 통신을 비활성화해야합니다. 16x2 LCD에는 전체적으로 16 개의 핀이 있고, 백라이트가 있으면 백라이트가 없으면 14 개의 핀이 있습니다. 백라이트 핀에 전원을 공급하거나 남겨 둘 수 있습니다. 이제 14 핀에는 8 개의 데이터 핀 (7-14 또는 D0-D7), 2 개의 전원 공급 장치 핀 (1 & 2 또는 VSS & VDD 또는 gnd & + 5v), 대비 제어를위한 3 번째 핀 (VEE- 문자의 두께 제어)이 있습니다. 그림), 3 개의 제어 핀 (RS & RW & E)
AVR 마이크로 컨트롤러와 16x2 LCD 를 인터페이스 하는 위의 회로에서 두 개의 제어 핀만 사용하는 것을 볼 수 있습니다. 이것은 더 나은 이해의 유연성을 제공합니다. 대비 비트와 READ / WRITE는 자주 사용되지 않으므로 접지로 단락 될 수 있습니다. 이렇게하면 LCD가 가장 높은 명암비 및 읽기 모드가됩니다. ENABLE 및 RS 핀을 제어하여 문자와 데이터를 적절하게 전송하면됩니다.
ATmega32 마이크로 컨트롤러와 16x2 LCD 간의 연결은 다음과 같습니다.
PIN1 또는 VSS-접지
PIN2 또는 VDD 또는 VCC-+ 5v 전원
PIN3 또는 VEE-접지 (초보자에게 최상의 대비를 제공)
PIN4 또는 RS (레지스터 선택)-마이크로 컨트롤러의 PD6
PIN5 또는 RW (읽기 / 쓰기)-접지 (LCD를 읽기 모드로 설정하여 사용자의 통신을 용이하게 함)
PIN6 또는 E (활성화)-마이크로 컨트롤러의 PD5
PIN7 또는 D0-마이크로 컨트롤러의 PA0
PIN8 또는 D1-PA1
PIN9 또는 D2-PA2
PIN10 또는 D3-PA3
PIN11 또는 D4-PA4
PIN12 또는 D5-PA5
PIN13 또는 D6-PA6
PIN14 또는 D7-PA7
회로에서 우리는 8bit 통신 (D0-D7)을 사용했지만 이것은 필수는 아니며 4bit 통신 (D4-D7)도 사용할 수 있지만 4bit 통신 프로그램을 사용하면 초보자에게는 약간 복잡 해져서 8 비트 통신.
따라서 위의 표에서 관찰 한 것만으로도 LCD의 10 핀을 컨트롤러에 연결하고 있는데 8 핀은 데이터 핀이고 2 핀은 제어용입니다.
일
이제 시작하려면 16x2 LCD의 10 핀 (데이터 핀 8 개 + 제어 핀 2 개) 의 기능을 알아야합니다. 8 개의 데이터 핀은 데이터 또는 명령을 LCD로 보내기위한 것입니다. 두 개의 제어 핀에서:
1. RS (Register selection) 핀은 LCD에 데이터를 보낼 것인지 명령을 보내는 것인지를 LCD에 알리는 것입니다.
예를 들면:
위의 표 1에서 데이터 포트 (D7-D0) 값 "0b0010 1000 또는 0x28"은 LCD에 "("기호를 표시하도록 지시합니다. 표 2에서 동일한 0x28 값은 LCD에 "당신은 5x7 도트 LCD이고 같은 값에 대해 사용자는 두 가지를 정의 할 수 있습니다. 이제이 상황은 Register Selection 핀에 의해 무력화됩니다. RS 핀이 낮게 설정되면 LCD는 우리가 명령을 보내는 것으로 인식합니다. RS 핀을 높음으로 설정하면 LCD는 우리가 데이터를 보내고 있음을 이해하므로 두 경우 모두 LCD는 RS 핀 값에 따라 데이터 포트 값을 존중합니다.
2. E (Enable) 핀은 단순히“PC의 전원 표시 LED”를 알리기위한 것이며,이 핀은“컨트롤러의 데이터 포트에서 데이터를 수신하도록”LCD에 알리기 위해 하이로 설정됩니다. 이 핀이 하이 후 로우가되면 LCD는 수신 된 데이터를 처리하고 해당 결과를 표시합니다. 따라서이 핀은 데이터를 전송하기 전에 하이로 설정되고 데이터를 전송 한 후 접지로 내려갑니다.
이제 하드웨어를 연결 한 후 Atmel studio를 시작하고 프로그램 작성을위한 새 프로젝트를 시작합니다. 이제 프로그래밍 화면을 열고 프로그램 작성을 시작합니다. 프로그램은 다음과 같이 따라야합니다.
먼저 데이터 및 LCD 제어에 사용중인 포트를 컨트롤러에 알려줍니다. 그런 다음 RS 및 E 핀을 사용하여 데이터 또는 명령을 보낼시기를 컨트롤러에 알립니다.
프로그램에 사용 된 개념에 대한 간략한 설명:
1. E는 높게 설정되고 (LCD에 데이터 수신) RS는 낮게 설정 됨 (LCD에 명령을 내림)
2. 화면을 지우는 명령으로 데이터 포트에 값 0x01 제공
3. E는 높게 설정되고 (LCD에 데이터 수신) RS는 높게 (LCD에 데이터를 제공하고 있음)
4. 문자열의 각 문자를 하나씩 보내는 문자열을 가져옵니다.
5. E가 낮게 설정 됨 (LCD에 데이터 전송이 완료되었음을 알립니다)
6. 마지막 명령 후 LCD는 통신을 종료하고 데이터를 처리하고 화면에 문자열을 표시합니다.
이 시나리오에서 우리는 문자를 차례로 보낼 것입니다. 문자는 ASCII 코드 (정보 교환을위한 미국 표준 코드)로 LCD에 제공됩니다.
ASCII 코드 표는 위에 나와 있습니다. LCD에 "@"문자가 표시 되려면 16 진수 코드 "64"를 보내야합니다. LCD에 '0x62'를 보내면 '>'기호가 표시됩니다. 이렇게 우리는 이름을 표시하기 위해 적절한 코드를 LCD에 보낼 것입니다.
LCD와 ATmega32 AVR 마이크로 컨트롤러 간의 통신 방법은 아래의 C 코드를 단계별로 설명하는 것이 가장 좋습니다.