Giới thiệu tổng quan về PIC 16F877A, tìm hiểu PIC16F877A là gì, sơ đồ chân, chức năng các chân, thông số kỹ thuật, datasheet và nhiều thông tin hữu ích khác
Trong bài viết này, Điện Tử Tương Lai sẽ giới thiệu cho các bạn về PIC 16F877A. Đây là vi điều khiển PIC được sử dụng phổ biến nhất vì tính linh hoạt trong hoạt động, tính khả dụng và giá rẻ.
Bạn có thể tham khảo giá sản phẩm tại đây vi điều khiển PIC16F877A
Điện Tử Tương Lai đã nhận được rất nhiều yêu cầu về PIC16F877a từ các sinh viên kỹ thuật vì vi điều khiển PIC này được sử dụng nhiều trong các dự án kỹ thuật. Vì vậy, đó là lý do tại sao Điện Tử Tương Lai sẽ chia sẻ tất cả thông tin chi tiết về PIC16F877a.
PIC16F877A là gì
PIC16F877A là một Vi điều khiển PIC 40 chân và được sử dụng hầu hết trong các dự án và ứng dụng nhúng. Nó có năm cổng bắt đầu từ cổng A đến cổng E. Nó có ba bộ định thời trong đó có 2 bộ định thời 8 bit và 1 bộ định thời là 16 Bit. Nó hỗ trợ nhiều giao thức giao tiếp như giao thức nối tiếp, giao thức song song, giao thức I2C. PIC16F877A hỗ trợ cả ngắt chân phần cứng và ngắt bộ định thời.
Thông số kỹ thuật PIC16F877A
CPU |
PIC 8 bit |
Cấu trúc |
8 |
Kích thước bộ nhớ chương trình (Kbyte) |
14 |
RAM (bytes) |
368 |
EEPROM/HEF |
256/HEF |
Số chân |
40 |
Tốc độ CPU tối đa (MHz) |
20 |
Chọn chân ngoại vi (PPS) |
Không |
Bộ tạo dao động bên trong |
Không |
Số bộ so sánh |
2 |
Số opamp |
Không |
Số kênh ADC |
14 |
Độ phân giải ADC tối đa (bit) |
10 |
ADC với tính toán |
Không |
Số bộ chuyển đổi DAC |
0 |
Độ phân giải DAC tối đa |
0 |
Tham chiếu điện áp nội bộ |
Có |
Zero Cross Detect |
Không |
Số bộ định thời 8 bit |
2 |
Số bộ định thời 16 bit |
1 |
Bộ định thời đo tín hiệu |
0 |
Bộ định thời giới hạn phần cứng |
0 |
Số đầu ra PWM |
0 |
Độ phân giải PWM tối đa |
10 |
Bộ định thời góc |
Không |
Bộ tăng tốc toán học |
Không |
Số module UART |
1 |
Số module SPI |
1 |
Số module I2C |
1 |
Số module USB |
0 |
Bộ định thời giám sát có cửa sổ (WWDT) |
Không |
CRC/Scan |
Không |
Bộ tạo dao động được điều khiển bằng số |
0 |
Cap. Touch Channels |
11 |
LCD phân đoạn |
0 |
Nhiệt độ hoạt động tối thiểu (* C) |
-40 |
Nhiệt độ hoạt động tối đa (* C) |
125 |
Điện áp hoạt động tối thiểu (V) |
2 |
Điện áp hoạt động tối đa (V) |
5.5 |
Điện áp cao có thể |
Không |
Sơ đồ chân PIC16F877A
Hình dưới đây là Sơ đồ chân PIC16F877A. Ngoài ra còn có bảng thông tin chi tiết đi kèm số thứ tự của chân, tên tương ứng và mô tả sơ lược về chân.
STT chân |
Tên chân |
Mô tả |
1 |
MCLR / Vpp |
MCLR được sử dụng trong quá trình lập trình, chủ yếu được kết nối với programer như PicKit |
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 nối đất của MCU |
12 |
Vss |
Chân dương của MCU (+5V) |
13 |
OSC1 / CLKI |
Bộ dao động bên ngoài / chân đầu vào clock |
14 |
OSC2 / CLKO |
Bộ dao động bên ngoài / chân đầu vào clock |
15 |
RC0 / T1OSO / T1CKI |
Chân 0 của PORT C |
16 |
RC1 / T1OSI / CCP2 |
Chân 1 của POCTC hoặc chân Timer / PWM |
17 |
RC2 / CCP1 |
Chân 2 của POCTC hoặc chân Timer / PWM |
18 |
RC3 / SCK / SCL |
Chân 3 của POCTC |
19 |
RD0 / PSP0 |
Chân 0 của POCTD |
20 |
RD1 / PSPI |
Chân 1 của POCTD |
21 |
RD2 / PSP2 |
Chân 2 của POCTD |
22 |
RD3 / PSP3 |
Chân 3 của POCTD |
23 |
RC4 / SDI / SDA |
Chân 4 của POCTC hoặc chân Serial Data vào |
24 |
RC5 / SDO |
Chân 5 của POCTC hoặc chân Serial Data ra |
25 |
RC6 / Tx / CK |
Chân thứ 6 của POCTC hoặc chân phát của Vi điều khiển |
26 |
RC7 / Rx / DT |
Chân thứ 7 của POCTC hoặc chân thu của Vi điều khiển |
27 |
RD4 / PSP4 |
Chân 4 của POCTD |
28 |
RD5/PSP5 |
Chân 5 của POCTD |
29 |
RD6/PSP6 |
Chân 6 của POCTD |
30 |
RD7/PSP7 |
Chân 7 của POCTD |
31 |
Vss |
Chân dương của MCU (+5V) |
32 |
Vdd |
Chân nối đất của MCU |
33 |
RB0/INT |
Chân thứ 0 của POCTB hoặc chân ngắt ngoài |
34 |
RB1 |
Chân thứ 1 của POCTB |
35 |
RB2 |
Chân thứ 2 của POCTB |
36 |
RB3/PGM |
Chân thứ 3 của POCTB hoặc kết nối với programmer |
37 |
RB4 |
Chân thứ 4 của POCTB |
38 |
RB5 |
Chân thứ 5 của POCTB |
39 |
RB6/PGC |
Chân thứ 6 của POCTB hoặc kết nối với programmer |
40 |
RB7/PGD |
Chân thứ 7 của POCTB hoặc kết nối với programmer |
Bạn có thể thấy trong hình trên các chân của Vi điều khiển PIC có nhiều hơn một tên, vì mỗi chân của PIC có thể thực hiện nhiều nhiệm vụ.
Ví dụ, Chân số 25, nó có thể được sử dụng như một chân số 6 cổng C kỹ thuật số (RC6) và cũng có thể được sử dụng như một Bộ phát (TX) cho giao tiếp nối tiếp.
Vì vậy nó sẽ tùy thuộc vào cách bạn muốn sử dụng từng chân. Trong bài hướng dẫn này chúng ta sẽ kiểm tra hầu hết các chức năng của chân.
Mạch cơ bản PIC16F877A
Mỗi vi điều khiển PIC có một mạch cơ bản và nếu bạn không thiết kế mạch cơ bản thì nó sẽ không hoạt động.
Nó giống như cấp nguồn cho vi điều khiển PIC và nó hoạt động ở mức + 5V.
Nếu bạn muốn bật quạt thì bạn sẽ làm gì? Bạn chỉ cần cung cấp điện cho nó và đó là những gì chúng ta sẽ làm với PIC nhưng trong trường hợp của PIC, chúng ta cũng cần cung cấp tần số mà nó sẽ hoạt động.
Chúng ta cần thiết kế mạch cơ bản và mạch cơ bản này chứa công suất cũng như tần số mà nó sẽ hoạt động.
Để cung cấp tần số cho vi điều khiển PIC, chúng ta sử dụng bộ dao động tinh thể và đối với PIC 16F877a, bạn có thể sử dụng bộ dao động tinh thể dải tần từ 4MHz đến 40MHz.
Đây là Mạch cơ bản PIC16F877a mà bạn cần thiết kế:
Giải thích mạch trên
Chân số 1: Chân này được gọi là MCLR (Master Clear) và chúng ta cần cấp 5V cho chân này thông qua điện trở 10k-ohm.
Chân số 11 và chân số 32: Các chân này được ký hiệu là Vdd nên chúng ta cũng cần cấp cho nó + 5V và bạn có thể thấy các đường này có màu đỏ trong hình trên.
Chân số 12 và chân số 31: Các chân này là Vss, vì vậy chúng ta cấp GND (nối đất) tại chân này và các đường của nó có màu đen.
Chân số 13 và 14: Các chân này được đặt tên là OSC1 (Bộ tạo dao động 1) và OSC2 (Bộ tạo dao động 2), bây giờ chúng ta phải gắn bộ tạo dao động tinh thể (16MHz) tại các chân này trên đường màu cam. Sau bộ dao động tinh thể, chúng ta có tụ điện 33pF và sau đó được nối đất.
Chúng ta đã thiết kế mạch cơ bản và bây giờ vi điều khiển PIC đã sẵn sàng hoạt động và bạn cũng có thể thấy một LED được gắn ở chân số 21, đó là bởi vì chúng ta cũng cần kiểm tra xem nó có đang chạy hay không để chúng ta có thể bật hoặc tắt đèn LED này.
Các cổng PIC16F877A
Trong mạch cơ bản, chúng ta đã sử dụng tất cả các chân nguồn của vi điều khiển PIC, trong khi tất cả các chân cổng vẫn còn chưa được sử dụng.
Vì vậy, bây giờ khi chúng ta đã cấp nguồn cho bộ vi điều khiển PIC, điều tiếp theo chúng ta cần làm là thiết kế một số code và sử dụng các cổng vi điều khiển PIC. Đầu tiên chúng ta hãy xem xét các Cổng PIC16F877a.
PIC16F877a có tổng cộng 5 Cổng là:
Cổng A: có tổng cộng 6 chân bắt đầu từ chân số 2 đến chân số 7. Các chân cổng A được ký hiệu từ RA0 đến RA5 trong đó RA0 là ký hiệu của chân đầu tiên của Cổng A.
Cổng B: có tổng cộng 8 chân bắt đầu từ chân số 33 đến chân số 40. Các chân cổng B được ký hiệu từ RB0 đến RB7 trong đó RB0 là ký hiệu của chân đầu tiên của cổng B.
Cổng C: có tổng cộng 8 Chân. Các chân của nó không được thẳng hàng với nhau. Bốn chân đầu tiên của cổng C nằm ở chân số 15 đến chân số 18, còn bốn chân cuối cùng nằm ở chân số 23 đến chân số 26.
Cổng D: có tổng cộng 8 chân. Các chân của nó cũng không thẳng hàng với nhau. Bốn chân đầu tiên của cổng D nằm ở chân số 19 đến chân số 22, trong khi bốn chân cuối cùng nằm ở chân số 27 đến chân số 30.
Cổng E: có tổng cộng 3 chân bắt đầu từ chân số 8 đến chân số 10. Các chân cổng E được ký hiệu từ RE0 đến RE2 trong đó RE0 là ký hiệu của chân đầu tiên của cổng E.
Trước hết những gì bạn cần quyết định là bạn muốn các chân cổng là đầu vào hay đầu ra.
Giả sử bạn có một số cảm biến và bạn muốn nhận giá trị của nó thì bạn phải kết nối cảm biến này với vi điều khiển PIC. Trong trường hợp này, chân PIC sẽ hoạt động như chân đầu vào vì nó sẽ nhập giá trị từ cảm biến. Cảm biến gửi giá trị và PIC nhận nó.
Trong trường hợp bạn có động cơ DC và bạn muốn di chuyển động cơ DC đó bằng vi điều khiển PIC. Bạn phải gửi lệnh từ bộ vi điều khiển PIC đến động cơ DC để chân PIC hoạt động như chân đầu ra.
Mỗi cổng của vi điều khiển PIC được liên kết với hai thanh ghi (register), ví dụ các thanh ghi cổng D là PortD và TRISD.
Cả hai thanh ghi này đều có 8 bit vì cổng D có 8 chân.
TRISD quyết định cổng là đầu ra hay đầu vào và chúng ta cũng có thể gán giá trị cho từng chân riêng biệt. Nếu chúng ta đã gán 0 thì nó sẽ là đầu ra và nếu chúng ta đã gán 1 thì nó sẽ là đầu vào.
Ví dụ: nếu chúng ta gán TRISD = 0x01, thì 7 chân đầu tiên của cổng D sẽ là đầu ra nhưng chân cuối cùng sẽ là đầu vào vì 0x01 là 00000001 trong hệ nhị phân.
Thanh ghi PortD chứa giá trị thực và giá trị này là sự kết hợp của tất cả 8 chân.
Trình biên dịch PIC16F877a
Trình biên dịch chính thức của vi điều khiển PIC là trình biên dịch MPLAB C18, có trên trang web chính thức của Microchip.
Chúng ta viết code trong trình biên dịch PIC và sau đó biên dịch nó. Sau khi biên dịch, một file hex được tạo và chúng ta sẽ tải lên trong bộ vi điều khiển PIC.
Cổng nối tiếp PIC16F877a
PIC16F877a có một cổng nối tiếp trong đó được sử dụng để giao tiếp dữ liệu.
Chân số 25 cũng hoạt động như TX vì vậy nếu bạn muốn thực hiện giao tiếp nối tiếp thì nó sẽ được sử dụng để gửi dữ liệu nối tiếp.
Chân 26 cũng hoạt động như RX, vì vậy nếu bạn muốn thực hiện giao tiếp nối tiếp thì nó sẽ được sử dụng để nhận dữ liệu nối tiếp.
Giao tiếp I2C PIC16F877a
PIC16F877a cũng có một cổng I2C có thể dễ dàng thực hiện giao tiếp I2C.
Chân số 18 hoạt động như SCL, viết tắt của Serial Clock Line.
Chân số 23 hoạt động như SDA, là chữ viết tắt của Serial Data Line.
Bây giờ bạn có thể thấy chúng ta có cổng nối tiếp và cổng I2C trong cổng C, vì vậy chúng ta có thể sử dụng cổng C như một cổng đơn giản nhưng cũng có thể thực hiện hai giao tiếp này với các chân của nó, vì vậy nó hoàn toàn phụ thuộc vào lập trình viên.
Ngắt PIC16F877a
PIC16F877a có tổng cộng 8 nguồn ngắt. Nguồn ngắt là một số sự kiện tạo ra ngắt, nguồn này có thể là bộ đếm thời gian như các ngắt được tạo sau mỗi 1 giây hoặc cũng có thể là sự kiện thay đổi trạng thái chân, chẳng hạn như nếu trạng thái chân bị thay đổi sau đó ngắt sẽ được tạo ra.
Vì vậy, ngắt PIC16F877a có thể được tạo ra bằng 8 cách sau:
Ngắt PIC16F877a được liên kết với 5 thanh ghi dưới đây:
Code: 7204-103 Còn hàng
Hotline: 0979 466 469