키패드는 다양한 전자 제품 및 임베디드 프로젝트에서 널리 사용되는 입력 장치입니다. 숫자와 알바 벳의 형태로 입력을 받아 추가 처리를 위해 시스템에 입력하는 데 사용됩니다. 이 튜토리얼에서는 4x4 매트릭스 키패드를 8051 마이크로 컨트롤러와 인터페이스 할 것 입니다.
4X4 매트릭스 키패드
키패드를 마이크로 컨트롤러와 인터페이스하기 전에 먼저 작동 방식을 이해해야합니다. 매트릭스 키패드는 상호 연결된 푸시 버튼 세트로 구성됩니다. 우리의 경우와 같이 4X4 매트릭스 키패드를 사용하고 있으며, 4 개의 행에 각각 4 개의 푸시 버튼이 있습니다. 그리고 푸시 버튼의 단자는 다이어그램에 따라 연결됩니다. 첫 번째 행에서는 4 개의 누름 버튼 중 하나의 단자가 함께 연결되고 4 개의 누름 버튼 중 다른 단자는 4 개의 열을 각각 나타내며 각 행에 대해 동일하게 표시됩니다. 그래서 우리는 마이크로 컨트롤러와 연결할 8 개의 터미널을 얻었습니다.
8051 마이크로 컨트롤러 (AT89S52)가있는 인터페이스 키패드
먼저 KEYPAD를 통해 공급 될 데이터를 표시하기 위해 LCD 모듈을 인터페이스해야하므로 KEYPAD를 인터페이스하기 전에 "LCD Interfacing with 8051 Microcontroller"문서를 참조하십시오.
위의 회로도에서와 같이 키패드를 인터페이스하려면 키패드의 8 개 단자를 마이크로 컨트롤러의 모든 포트 (8 핀)에 연결해야합니다. 키패드 터미널을 8051의 포트 1에 연결 한 것처럼 버튼을 누를 때마다 버튼의 위치를 가져와야합니다. 해당 ROW와 COLUMN 번호를 의미합니다. 버튼의 위치를 알아 내면 그에 따라 캐릭터를 인쇄 할 수 있습니다.
이제 질문은 눌린 버튼의 위치를 얻는 방법입니다. 아래 단계에서이를 설명하고 코드도 살펴 보도록하겠습니다.
1. 먼저 모든 행을 로직 레벨 0으로 만들고 모든 열을 로직 레벨 1로 설정했습니다.
2. 버튼을 누를 때마다 해당 버튼에 해당하는 열과 행이 단락되고 해당 열이 로직 레벨 0이됩니다. 해당 열이 로직 레벨 0에있는 행에 연결 (단락)되기 때문입니다. 열 번호. main () 함수를 참조하십시오.
3. 이제 행 번호를 찾아야하므로 각 열에 해당하는 4 개의 함수를 만들었습니다. 1 열의 버튼을 누르는 것처럼 row_finder1 () 함수를 호출하여 행 번호를 찾습니다.
4. row_finder1 () 함수에서 논리 레벨을 역전 시켰습니다. 즉, 이제 모든 행이 1이고 열이 0입니다. 이제 누른 버튼의 행이 버튼을 누른 열에 연결 (단락)되었으므로 0이되어야합니다., 모든 열은 0 논리에 있습니다. 따라서 모든 행에서 0을 스캔했습니다.
5. 따라서 로직 0에서 Row를 찾을 때마다 그것은 눌려진 버튼의 행임을 의미합니다. 이제 열 번호 (2 단계에서 얻음)와 행 번호가 있습니다. no를 인쇄 할 수 있습니다. lcd_data 기능을 사용하여 해당 버튼의.
버튼을 누를 때마다 동일한 절차를 따르며 while (1)을 사용하여 버튼을 눌렀는지 여부를 지속적으로 확인합니다.