PIC16F877 마스터하기: 특징, 핀아웃, 빠른 배선 가이드
PIC16F877은 이 마이크로컨트롤러를 초보자와 전문가 모두에게 훌륭하게 만드는 많은 기능을 가지고 있습니다.
PIC16F877A는 PIC16F877의 모든 것을 포함하며 내부 클럭 오실레이터, 더 나은 작동의 아날로그-디지털 변환 모듈(ADC) 등을 추가로 포함합니다!
이 문서에서는 PIC16F877 마이크로컨트롤러의 특징을 논의하고 입력/출력 포트와 간단한 연결을 소개합니다. 이를 통해 이러한 회로 장치를 이해하고 사용하는 방법을 돕습니다.
1. PIC 16F877 개요
PIC16F877은 이 PIC 마이크로컨트롤러가 소프트웨어의 도움으로 여러 작업을 수행할 수 있음을 의미합니다.
PIC 16F877의 설계는 독립형으로 사용하거나 다른 장치 회로에 추가하여 사용할 수 있도록 되어 있습니다. 예를 들어 RAMPS와 아두이노 보드. 독립적으로도 작동할 수 있습니다. 하지만 문제 없이 그렇게 하려면 크리스털 오실레이터(주파수)가 필요합니다.
PIC 16F877은 완전 정적 장치로, 제한된 플래시와 RAM으로 작동합니다. 또한 뛰어난 작동 유연성을 가지며 저렴하고 회로에서 가장 흔하게 사용됩니다.
(마이크로컨트롤러)
2. PIC 16F877의 특징
(마이크로칩)
PIC16F877의 일반적인 특징은 다음과 같습니다:
- 전력 절약 STOP 모드: 회로에서 제거하지 않고 PIC16F877을 정지시킬 수 있음
- 고속 PWM(펄스 폭 변조) 모듈: 최대 256 레벨 출력 생성 가능, 내장 클럭 프로그래머블 프리스케일러 보유
- I/O 회로용 내부 전압 레귤레이터 1개와 통합 오실레이터(크리스털 또는 세라믹 공진기) 1개
- 온칩 비교기 모듈 1개
- 아날로그-디지털 변환기: 12비트 해상도, 최대 4개 아날로그 입력 채널 동시 변환 가능
- 슬립 모드에서 장치를 깨우거나 기타 목적으로 사용되는 외부 인터럽트 지원
- 8가지 절전 모드
(분해된 마이크로컨트롤러)
- 아날로그 비교기 모듈
- 최대 23개 I/O 핀
- 1개 SPI 모드와 4개 UART 모듈(1개 전이중)
- 최대 14개 인터럽트 소스를 가진 인터럽트 컨트롤러
- 시간 간격 만료 시 인터럽트 생성하는 워치독 타이머
- 파워온 리셋 생성 회로
- 프로그래머블 브라운아웃 디텍터(BOD)
- 내부 보정된 오실레이터: 내부 RC 회로가 클럭 소스로 작동 가능
- 디버그와이어(debugWIRE) 인터페이스를 통한 인-서킷 직렬 프로그래밍 및 인-서킷 디버깅 기능
(마이크로컨트롤러)
PIC 16F877의 주요/핵심 특징은 다음과 같습니다:
- 최대 20MHz 내부 클럭 동작 주파수
- 5개(A-E) 기본 입/출력 포트 보유
- 8개 10비트 ADC 입력 채널
- 병렬 통신으로 PSP 보유
- PIC16F877A는 8KB 플래시 메모리 보유
- 두 개의 직렬 통신 인터페이스: 2선식 I²C 버스와 SMBus
- 368레벨 데이터 메모리 바이트, 256레벨(14비트) EEPROM 데이터 메모리
- 3개 타이머: 1개 16비트 타이머와 2개 8비트 타이머(타이머 또는 카운터 모드 사용 가능)
추가 특징
- C 언어로 프로그래밍 가능
- 마이크로컨트롤러는 16MHz 내부 오실레이터로 구동
- PIC16F877A는 마스터 또는 슬레이브로 구성 가능하며 SPI 모듈 탑재
3. PIC16F877A 마이크로컨트롤러 핀 다이어그램:
PIC16F877 칩은 다양한 설계와 유형으로 제공됩니다. 예를 들어 40핀 DIP, 44핀 TQFP, 44핀 QFN 설계. 이러한 차이는 다양한 용도와 응용 분야의 결과입니다. 아래 이미지는 PIC16F877A 기술과 핀을 보여줍니다.
(PIC 16877 칩 핀 다이어그램)
출처: Microchip Datasheetspdf.com
4. 입/출력 포트 설명 소개
마이크로컨트롤러의 각 포트는 두 개의 레지스터와 연관됩니다. 예를 들어 포트 C의 경우 레지스터는 PORTC와 TRISC입니다. TRISC 레지스터는 포트가 출력인지 입력인지 결정합니다. 또한 각 핀에 독립적으로 값을 할당할 수 있습니다.
마이크로컨트롤러 프로그래밍 시 소프트웨어 작업을 위해 컴파일러를 사용합니다. PIC16877A에 가장 적합한 컴파일러는 MPLAB XC8 COMPILER입니다.
- PORT A: 아날로그 입력 포트, 디지털 I/O, 또는 PWM 출력으로 기능 구성 가능. 포트 A는 핀 #2~#6, RA0~RA5로 레이블됨
- PORT B: 디지털 입력, 아날로그 입력, 타이머 입력 캡처, 타이머 출력 비교, PWM 입력으로 기능 구성. 포트 B는 8개 핀, 핀 #33~#40, RB0~RB7로 레이블됨
- PORT C: 카운터/타이머 모듈(입력 또는 출력), UART, SPI로 구성. 포트 C도 8개 핀. 처음 4개는 핀 #15~#18, 나머지 4개는 핀 #23~#26. RC0~RC7
(PIC16F877A 포트 일러스트)
출처: Theengineeringprojects.com
- PORT D: 디지털 입력 핀, 아날로그 입력, 타이머 출력으로 구성. 포트 D도 8개 핀. 처음 4개는 핀 #19~#22, 나머지는 핀 #27~#30. RD0~RD7
- PORT E: 공장용 예약. 3개 핀 #8~#10, RE0~RE2
- VDD와 VSS: 전원 공급 핀, MCLR: 마스터 클리어 핀
- PIC16F877A는 최대 18개 GPIO 핀을 가지며, 연관된 레지스터를 사용하여 컨트롤러를 입력 또는 출력으로 구성 가능
- GPIO 핀 외에도 PIC16F877A의 상단 표면에는 몇 개의 전용 핀이 있음
- VDD는 양의 공급 전압 핀, VSS는 그라운드 기준
- PIC16F877A는 23개 I/O 핀을 가지며, 뱅크 A와 뱅크 B 두 개의 뱅크로 나뉨
- 각 I/O 핀은 할당 시 입력 또는 출력으로 기능할 수 있는 고유 비트를 가짐
5. 이론에서 실전으로 - PIC16F877A로 LED 점멸하기
(PIC16F877A 회로도)
위 다이어그램은 PIC16F877A에 LED를 연결하는 방법과 연결 시 필요한 중요한 마이크로컨트롤러 핀을 보여줍니다. 빠른 연결을 위해:
- 첫째, 5V를 MCLR 핀 #1에 연결하고 10k옴 저항을 추가합니다.
- 또한 5V를 핀 #11(VDD)에 연결합니다. 반대편에는 5V를 핀 #32(VSS)에 연결합니다.
- VSS(핀 #12)에 그라운드를 제공합니다. 그런 다음 핀 #13(OSC1)과 #14(OSC2)를 16MHz 크리스털 오실레이터에 연결합니다.
- 이후 33pF 커패시터 2개를 그라운드에 연결합니다. 이제 핀 #31(VSS)을 그라운드에 연결합니다.
- 마지막으로 LED와 10k옴 저항을 핀 #21(RD2)에 연결하여 프로그램 업로드를 활성화합니다.
(전자 부품)
PIC16F877A로 LED를 점멸하려면 PORTD와 그라운드 사이에 LED를 연결합니다. 하나의 LED만 점멸하면 되므로 10k옴 저항과 결합할 수 있습니다. 출력 래치를 사용하여 높은-낮은 전이(high-to-low transition)로 PORT-D를 출력으로 구성하여 LED를 켭니다.
PORT-D를 낮은-높은 전이(low-to-high transition)로 설정하려면 데이터 방향 레지스터(DDRB)에 0x01을 씁니다. PORT-D를 높게 설정하려면 DDRB 레지스터에 0x00을 써야 하며, 이로 인해 LED가 켜집니다.
요약
이 문서에서 PIC 16F877, 그 특징, PIC16F877A의 입/출력 포트에 대해 배웠습니다. 즐겁게 읽으셨기를 바랍니다!
PIC 마이크로컨트롤러에 관심이 있으시다면 다른 기사도 읽어보세요. 또한 PIC16F877에 대한 질문이 있으시면 언제든지 연락 주세요.