이 튜토리얼에서는 ATMEGA32A 마이크로 컨트롤러와 4x4 (16 키) 키패드를 인터페이스 할 것입니다. 우리는 키패드가 전자 프로젝트에 사용되는 가장 중요한 입력 장치 중 하나라는 것을 알고 있습니다. 키패드는 전자 시스템에 명령이나 지침을 제공하는 가장 쉬운 방법 중 하나입니다.
필요한 구성 요소
하드웨어: ATMEGA32, 전원 공급 장치 (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), 100uF 커패시터, 100nF 커패시터, 10KΩ 저항기 (8 개).
소프트웨어: Atmel studio 6.1 또는 Atmel studio 6.2, progisp 또는 flash magic.
회로도 및 작동 설명
ATMEGA32의 회로 PORTB는 데이터 포트 LCD에 연결됩니다. 여기서 PORTC를 일반 통신 포트로 사용하려면 퓨즈 바이트를 변경하여 PORTC 또는 ATMEGA에서 JTAG 통신을 비활성화해야합니다. 16x2 LCD에는 백라이트가 있으면 전체적으로 16 개의 핀이 있고, 백라이트가 없으면 14 개의 핀이 있습니다. 백라이트 핀에 전원을 공급하거나 남겨 둘 수 있습니다. 이제 14 핀에는 8 개의 데이터 핀 (7-14 또는 D0-D7), 2 개의 전원 공급 장치 핀 (1 & 2 또는 VSS & VDD 또는 gnd & + 5v), 대비 제어를위한 3 번째 핀 (VEE- 문자의 두께 제어)이 있습니다. 표시) 및 3 개의 제어 핀 (RS & RW & E).
회로에서 내가 두 개의 제어 핀만 사용했음을 알 수 있습니다. 이것은 유연성을 제공하고 대비 비트 및 READ / WRITE는 자주 사용되지 않으므로 접지로 단락 될 수 있습니다. 이렇게하면 LCD가 가장 높은 명암비 및 읽기 모드가됩니다. ENABLE 및 RS 핀을 제어하여 문자와 데이터를 적절하게 전송하면됩니다.
LCD에 대해 수행되는 연결은 다음과 같습니다.
접지에 대한 PIN1 또는 VSS
PIN2 또는 VDD 또는 VCC ~ + 5v 전원
PIN3 또는 VEE to ground (초보자에게 최상의 대비를 제공)
uC의 PD6에 PIN4 또는 RS (등록 선택)
PIN5 또는 RW (읽기 / 쓰기)를 접지 (LCD를 읽기 모드로 설정하여 사용자의 통신을 용이하게 함)
PIN6 또는 E (활성화)-uC의 PD5
uC의 PIN7 또는 D0 ~ PB0
uC의 PIN8 또는 D1 ~ PB1
uC의 PIN9 또는 D2에서 PB2
uC의 PIN10 또는 D3 ~ PB3
uC의 PIN11 또는 D4 ~ PB4
uC의 PIN12 또는 D5 ~ PB5
uC의 PIN13 또는 D6 ~ PB6
uC의 PIN14 또는 D7to PB7
회로에서는 8 비트 통신 (D0-D7)을 사용했음을 알 수 있지만 이는 필수 사항은 아니며 4 비트 통신 (D4-D7)을 사용할 수 있지만 4 비트 통신 프로그램은 약간 복잡해집니다. 따라서 위의 표만 살펴보면 LCD의 10 핀을 컨트롤러에 연결하는 것으로 8 핀은 데이터 핀이고 2 핀은 제어용입니다.
이제 키패드에 대해 이야기 해 봅시다. 키패드는 다중화 된 키일뿐입니다. 제어 시스템의 핀 사용량을 줄이기 위해 버튼이 다중 형태로 연결됩니다.
4x4 키패드가 있고이 키패드에는 16 개의 버튼이 있고 일반적인 경우 16 개의 버튼을 인터페이스하려면 16 개의 컨트롤러 핀이 필요하지만 제어 시스템 관점에서는 좋지 않습니다. 이 핀 사용량은 버튼을 다중 형태로 연결하여 줄일 수 있습니다.
예를 들어 16 개의 버튼이 있고이 버튼을 컨트롤러에 연결하여 키패드를 형성한다고 가정합니다. 이러한 키는 그림과 같이 배열됩니다.
이러한 버튼은 그림과 같이 공통 열로 연결됩니다.
그림에서 볼 수 있듯이 4 개의 버튼마다 표시되지 않은 끝을 드래그하여 열을 형성하므로 16 개의 키에 대해 4 개의 열이 있습니다.
위의 열 연결을 잊어 버리고 4 개의 버튼마다 공통 표시된 끝을 연결하여 행을 형성하는 경우:
그림과 같이 16 개의 키에 대해 그림과 같이 4 개의 행이 있습니다.
이제 둘 다 함께 볼 때 아래 회로와 같은 것을 얻습니다.
여기에서는 컨트롤러의 핀 사용량을 줄이기 위해 16 개의 키를 다중 형태로 연결했습니다. 연결된 16 개 키의 첫 번째 경우와 비교할 때 컨트롤러에 16 핀이 필요했지만 이제 멀티플렉싱 후 16 개의 키를 연결하려면 컨트롤러의 8 핀만 필요합니다.
일반적으로 이것은 키패드 내부에 표시됩니다.
위의 그림에서 볼 수 있듯이 위의 키패드에는 16 개의 키가 있으며 각 키는 다중 버튼 구성의 버튼을 나타냅니다. 또한 다중 연결을 상징하는 위의 그림과 같이 8 개의 핀 연결이 있습니다.
이제 작업:
여기의 키패드는 4 개의 열과 4 개의 행이 있는데, 눌린 버튼을 식별하기 위해 상호 참조 방법을 사용할 것입니다. 여기에서 먼저 모든 열 또는 모든 행을 vcc에 연결하므로 행이 공통 vcc에 연결되어 있으면 열을 컨트롤러에 대한 입력으로 사용합니다.
이제 그림과 같이 버튼 1을 누르면:
그 후 아래 그림과 같이 전류가 회로를 통해 흐릅니다.
그래서 우리는 버튼 누름을 위해 높은 C1을 가지고 있습니다. 바로이 순간에 우리는 전원과 입력 포트를 이동시킬 것입니다. 즉, 열에 전원을 공급하고 행을 입력으로 가져갈 것입니다.
이에 따라 아래 그림과 같이 전력 흐름이 발생합니다.
따라서 행의 경우 R1이 높습니다.
현재로서는 첫 번째 경우에는 C1이 높고 두 번째 경우에는 R1이 높으므로 버튼의 매트릭스 위치가 있으므로 숫자 "1"이됩니다.
두 번째 버튼을 누르면 C1이 열로 표시되지만 공통 열에서 얻는 높은 논리는 'R2'가됩니다. 따라서 C1과 R2가 있으므로 두 번째 버튼의 행렬 위치를 갖게됩니다.
이것이 우리가 프로그램을 작성하는 방법입니다. 8 개의 키패드 핀을 컨트롤러의 8 개 핀에 연결합니다. 시작을 위해 4 개의 키패드 행에 전원을 공급하기 위해 컨트롤러의 4 개 핀에 전원을 공급합니다. 이때 다른 4 개의 핀은 입력으로 사용됩니다. 버튼을 누르면 해당 열 핀이 당겨지고 컨트롤러 핀이 당겨지면 입력을 전원으로, 전원을 입력으로 변경하는 것으로 인식되어 입력으로 행을 갖게됩니다.
이것에 의해 우리는 사용자가 버튼을 눌렀습니다. 이 매트릭스 주소는 해당 번호로 지정되며이 번호는 LCD에 표시됩니다.
avr 마이크로 컨트롤러와 인터페이스하는 키패드의 작동은 아래 주어진 C 코드에서 단계별로 설명됩니다. 또한 다음을 확인할 수 있습니다. 8051 마이크로 컨트롤러와의 키패드 인터페이스.