Tìm hiểu Vi Điều Khiển PIC16F877A: Thông Số, Sơ Đồ Chân và Ứng Dụng

PIC16F877A là một trong những vi điều khiển PIC phổ biến nhất hiện nay nhờ tính linh hoạt, dễ dàng tìm kiếm và giá cả phải chăng. Bài viết này của Sen Tây Hồ sẽ cung cấp cho bạn cái nhìn tổng quan và chi tiết về PIC16F877A, từ thông số kỹ thuật, sơ đồ chân, đến các ứng dụng và cách lập trình.

Vi điều khiển PIC16F877AVi điều khiển PIC16F877A

PIC16F877A Là Gì?

PIC16F877A là một vi điều khiển 40 chân thuộc họ PIC, được sử dụng rộng rãi trong các dự án điện tử và ứng dụng nhúng. Với 5 cổng (từ A đến E), 3 bộ định thời (2 bộ 8-bit và 1 bộ 16-bit), và hỗ trợ nhiều giao thức giao tiếp (nối tiếp, song song, I2C), PIC16F877A là lựa chọn lý tưởng cho nhiều ứng dụng khác nhau. Vi điều khiển này cũng hỗ trợ cả ngắt chân phần cứng và ngắt bộ định thời, tăng thêm tính linh hoạt trong quá trình lập trình.

Thông Số Kỹ Thuật Chi Tiết Của PIC16F877A

Để hiểu rõ hơn về khả năng của PIC16F877A, hãy cùng xem xét các thông số kỹ thuật quan trọng sau:

  • CPU: PIC 8 bit
  • Cấu trúc: 8 bit
  • Kích thước bộ nhớ chương trình: 14 Kbyte
  • RAM: 368 bytes
  • EEPROM: 256 bytes
  • Số chân: 40
  • Tốc độ CPU tối đa: 20 MHz
  • Số bộ so sánh: 2
  • Số kênh ADC: 14
  • Độ phân giải ADC tối đa: 10 bit
  • Số bộ định thời 8 bit: 2
  • Số bộ định thời 16 bit: 1
  • Số module UART: 1
  • Số module SPI: 1
  • Số module I2C: 1
  • Điện áp hoạt động: 2 – 5.5 V
  • Nhiệt độ hoạt động: -40°C đến 125°C

Sơ Đồ Chân Và Chức Năng Của Từng Chân

Sơ đồ chân PIC16F877A là yếu tố quan trọng để thiết kế mạch và kết nối với các thiết bị ngoại vi. Mỗi chân có thể đảm nhiệm nhiều chức năng khác nhau, tùy thuộc vào cấu hình và mục đích sử dụng.

Sơ đồ chân PIC16F877ASơ đồ chân PIC16F877A

Dưới đây là bảng mô tả chi tiết về từng chân:

STT chân Tên chân Mô tả
1 MCLR / Vpp Chân reset, sử dụng trong quá trình lập trình
2 RA0 / AN0 Chân analog 0 hoặc chân 0 của PORTA
3 RA1 / AN1 Chân analog 1 hoặc chân 1 của PORTA
4 RA2 / AN2 / Vref- Chân analog 2 hoặc chân 2 của PORTA
5 RA3 / AN3 / Vref + Chân analog 3 hoặc chân 3 của PORTA
6 RA4 / T0CKI / C1out Chân 4 của PORTA
7 RA5/AN4/SS/C2out Chân analog 4 hoặc chân 5 của PORTA
8 RE0 / RD / AN5 Chân analog 5 hoặc chân 0 của PORTE
9 RE1 / WR / AN6 Chân analog 6 hoặc chân 1 của PORTE
10 RE2/CS/AN7 Chân 7 của PORTE
11 Vdd Chân nguồn dương (+5V)
12 Vss Chân nối đất (GND)
13 OSC1 / CLKI Chân đầu vào bộ dao động bên ngoài / clock
14 OSC2 / CLKO Chân đầu ra bộ dao động bên ngoài / clock
15 RC0 / T1OSO / T1CKI Chân 0 của PORTC
16 RC1 / T1OSI / CCP2 Chân 1 của PORTC hoặc chân Timer / PWM
17 RC2 / CCP1 Chân 2 của PORTC hoặc chân Timer / PWM
18 RC3 / SCK / SCL Chân 3 của PORTC, Serial Clock Line (I2C)
19 RD0 / PSP0 Chân 0 của PORTD
20 RD1 / PSPI Chân 1 của PORTD
21 RD2 / PSP2 Chân 2 của PORTD
22 RD3 / PSP3 Chân 3 của PORTD
23 RC4 / SDI / SDA Chân 4 của PORTC, Serial Data Line (I2C)
24 RC5 / SDO Chân 5 của PORTC
25 RC6 / Tx / CK Chân 6 của PORTC, chân truyền dữ liệu (UART)
26 RC7 / Rx / DT Chân 7 của PORTC, chân nhận dữ liệu (UART)
27 RD4 / PSP4 Chân 4 của PORTD
28 RD5/PSP5 Chân 5 của PORTD
29 RD6/PSP6 Chân 6 của PORTD
30 RD7/PSP7 Chân 7 của PORTD
31 Vss Chân nối đất (GND)
32 Vdd Chân nguồn dương (+5V)
33 RB0/INT Chân 0 của PORTB, chân ngắt ngoài
34 RB1 Chân 1 của PORTB
35 RB2 Chân 2 của PORTB
36 RB3/PGM Chân 3 của PORTB, kết nối với programmer
37 RB4 Chân 4 của PORTB
38 RB5 Chân 5 của PORTB
39 RB6/PGC Chân 6 của PORTB, kết nối với programmer
40 RB7/PGD Chân 7 của PORTB, kết nối với programmer

Mạch Cơ Bản Cho PIC16F877A

Để PIC16F877A hoạt động, bạn cần thiết kế một mạch cơ bản, bao gồm các thành phần sau:

  • Nguồn điện: PIC16F877A hoạt động ở mức điện áp +5V.
  • Bộ dao động: Sử dụng bộ dao động tinh thể với tần số từ 4MHz đến 40MHz.
  • Điện trở và tụ điện: Các điện trở (ví dụ 10k-ohm cho chân MCLR) và tụ điện (ví dụ 33pF cho bộ dao động) được sử dụng để ổn định và bảo vệ mạch.

Mạch cơ bản PIC16F877AMạch cơ bản PIC16F877A

Giải thích mạch cơ bản:

  • Chân số 1 (MCLR): Cấp nguồn 5V thông qua điện trở 10k-ohm để tránh reset ngoài ý muốn.
  • Chân số 11 và 32 (Vdd): Cấp nguồn dương (+5V).
  • Chân số 12 và 31 (Vss): Nối đất (GND).
  • Chân số 13 và 14 (OSC1 và OSC2): Kết nối với bộ dao động tinh thể (ví dụ 16MHz) và tụ điện 33pF để cung cấp xung clock cho vi điều khiển.

Các Cổng (Ports) Của PIC16F877A

PIC16F877A có 5 cổng, mỗi cổng có các chân có thể được cấu hình làm đầu vào hoặc đầu ra:

  • Cổng A: 6 chân (RA0 – RA5)
  • Cổng B: 8 chân (RB0 – RB7)
  • Cổng C: 8 chân (RC0 – RC7)
  • Cổng D: 8 chân (RD0 – RD7)
  • Cổng E: 3 chân (RE0 – RE2)

Để cấu hình một chân là đầu vào hay đầu ra, bạn cần sử dụng các thanh ghi TRIS tương ứng (TRISA, TRISB, TRISC, TRISD, TRISE). Gán giá trị 0 cho chân đầu ra và 1 cho chân đầu vào. Ví dụ, TRISD = 0x01 sẽ cấu hình 7 chân đầu tiên của cổng D là đầu ra và chân cuối cùng là đầu vào.

Trình Biên Dịch Cho PIC16F877A

Trình biên dịch chính thức cho PIC16F877A là MPLAB XC8, có sẵn trên trang web của Microchip. Bạn viết code bằng ngôn ngữ C, sau đó biên dịch để tạo ra file hex. File hex này sẽ được nạp vào vi điều khiển PIC thông qua các programmer như PicKit.

Giao Tiếp Nối Tiếp (UART)

PIC16F877A hỗ trợ giao tiếp nối tiếp thông qua cổng UART. Chân RC6 (TX) được sử dụng để truyền dữ liệu và chân RC7 (RX) được sử dụng để nhận dữ liệu. Giao tiếp nối tiếp rất hữu ích cho việc truyền dữ liệu giữa PIC16F877A và các thiết bị khác như máy tính hoặc các vi điều khiển khác.

Giao Tiếp I2C

PIC16F877A cũng hỗ trợ giao tiếp I2C, một giao thức giao tiếp nối tiếp hai dây thường được sử dụng để kết nối vi điều khiển với các cảm biến và thiết bị ngoại vi khác. Chân RC3 (SCL) là đường xung clock nối tiếp và chân RC4 (SDA) là đường dữ liệu nối tiếp.

Ngắt (Interrupts) Trên PIC16F877A

PIC16F877A có nhiều nguồn ngắt khác nhau, cho phép vi điều khiển phản ứng với các sự kiện một cách nhanh chóng và hiệu quả. Các nguồn ngắt bao gồm:

  • Ngắt ngoài
  • Ngắt bộ định thời (Timer0 / Timer1)
  • Thay đổi trạng thái cổng B
  • Bộ chuyển đổi A/D
  • Nhận/truyền nối tiếp
  • PWM (CCP1 / CCP2)

Các ngắt được quản lý thông qua các thanh ghi như INTCON, PIE1, PIR1, PIE2, và PIR2.

Kết Luận

PIC16F877A là một vi điều khiển mạnh mẽ và linh hoạt, phù hợp cho nhiều ứng dụng khác nhau. Bằng cách hiểu rõ về thông số kỹ thuật, sơ đồ chân, và các tính năng của nó, bạn có thể tận dụng tối đa khả năng của PIC16F877A trong các dự án điện tử của mình. Hy vọng bài viết này của Sen Tây Hồ đã cung cấp cho bạn những thông tin hữu ích và cần thiết.