2014-12-10 8 views
0

저는 PIC 마이크로 컨트롤러 & C 프로그래밍을 처음 사용하고 독점적으로 작동하는 자체 키패드 스캐닝 방법을 만드는 작업을 설정했습니다 포트 C (16F877A 마이크로 컨트롤러). 특히,이 방법을 사용하는 프로그램은 숫자 1, 2, 4 및 5 만 사용하므로 효율적으로 스캐너 메서드는 RC0, RC1, RC2 및 RC3을 지정된 입력/출력으로 사용합니다 (허용되지 않습니다) RC4-RC7 사용). 이것은 기본적으로 4x4 키패드를 2x2 키패드로 변환합니다.PIC 마이크로 컨트롤러 : C에서 포트 C RC0-RC3 만 사용하여 4x4 키패드에서 입력을 스캔

나는 스캔 할 때 포트 행이 행에서 높게 설정되고 행이 입력 열로 설정된다는 것을 알고 있습니다. 버튼을 누를 때 포트의 낮은 니블을 읽음으로써 버튼을 감지합니다.

불행히도, 나는 위에 명시된 포트 라인을 사용하여 C에서 이것을 코딩하는 법을 모릅니다. 아무도 문제에 대해 밝히고 올바른 방향으로 나를 가리킬 수 있습니까? 감사합니다.

+0

Andrew Medico가 실제로 실제로 질문에 대답했습니다.질문의 제목을 변경하고 싶을 수도 있습니다. 4x4 키패드와 관련이 없습니다. 4x4 키패드의 3 사분면은 사용자의 경우 "불량"입니다. 행에 Y0 Y1 Y2 Y3을 지정하고 열에 X0 X1 X2 X3을 지정하면 Y0 Y1 및 X0 X1 만 필요합니다. 여기에서 2x2 키보드 용 코드 템플릿을 사용할 수 있습니다. PIC16F877A (MPLAB, XC, HI-TECH, microC ...)에 대한 C의 다양한 변형이 있습니다. PIC 인식 C의 특정 변형에 대한 솔루션을 찾고 있다면 http : //electronics.stackexchange에서 더 좋은 답변을 얻을 수 있습니다 .com –

답변

2

하나 개의 가능한 접근법 :

하드웨어 : 컬럼 1에

  1. 와이어 RC0 칼럼 1
  2. 와이어 RC2 로우 0
  3. 와이어 RC1 로우 0
  4. 와이어 RC3

소프트웨어 :

설정 : 입력으로

  1. 구성 RC0과 RC1 출력
  2. 구성 RC2로하고 RC3

읽기 : 높은

  1. 설정 RC0, RC1 낮은
  2. RC2를 읽으십시오. 높으면 1을 누르십시오.
  3. RC3을 읽으십시오. 높으면 2을 누르는 중
  4. RC0을 낮게 설정하면 RC1이 높음
  5. RC2를 읽습니다. 높으면 4을 누르십시오.
  6. RC3을 읽으십시오. 높으면 5을 누르는 중입니다.

적절한 풀업/풀다운 및 디 바운싱 추가는 독자의 연습 과제로 남겨 둡니다.

0

작동 방식은 4의 한 열에 출력 전압을 설정하는 것입니다. 그런 다음 4 비트 행 데이터를 읽어 회로를 완료하는 데 필요한 키를 결정하십시오. 그런 다음 다른 열을 순환합니다. 그런 다음 어떤 키 매트릭스 위치 키를 눌렀는지 확인하기 위해 하나 이상의 (또는 그 이상) 키가 닫힌 * 4 + 행 열을 사용할 수 있습니다. 일반적으로 원하는 키 값에 직접 매핑되지 않으므로 조회 테이블을 사용하여 변환하거나 일부 #define 문을 사용합니다. 또한 논리가 반전 될 수 있습니다.