Trong bài viết này, Điện Tử Tương Lai sẽ giới thiệu cho người mua về PIC 16F877A. Đây là vi điều khiển PIC được dùng phổ cập} 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á siêu phẩm tại đây vi điều khiển PIC16F877A
Điện Tử Tương Lai đã nhận được siêu nhiều đề nghị về PIC16F877a từ những sinh viên kỹ thuật vì vi điều khiển PIC này được dùng nhiều trong những dự án kỹ thuật. Vì vậy, đấy là nguyên nhân tại sao Điện Tử Tương Lai sẽ chia sẻ đa số thông tin chi tiết về PIC16F877a.
PIC16F877A là gì
PIC16F877A là 1 Vi điều khiển PIC 40 chân và được dùng gần như trong những dự án và ứng dụng nhúng. Nó có 5 cổng khởi đầu từ cổng A tới cổng E. Nó có cha bộ định thời trong đấy có 2 bộ định thời 8 bit và 1 bộ định thời là 16 Bit. Nó tương trợ nhiều giao thức giao tiếp như giao thức nối tiếp, giao thức đồng thời, giao thức I2C. PIC16F877A tương trợ cả ngắt chân hartware 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 cao nhất} (MHz)
20
Chọn chân ngoại vi (PPS)
Ko
Bộ tạo dao động bên trong
Ko
Số bộ so sánh
2
Số opamp
Ko
Số kênh ADC
14
Độ phân giải ADC cao nhất} (bit)
10
ADC có tính toán
Ko
Số bộ chuyển đổi DAC
0
Độ phân giải DAC cao nhất}
0
Tham chiếu điện áp nội bộ
Có
Zero Cross Detect
Ko
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 hartware
0
Số đầu ra PWM
0
Độ phân giải PWM cao nhất}
10
Bộ định thời góc
Ko
Bộ bức tốc toán học
Ko
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)
Ko
CRC/Scan
Ko
Bộ tạo dao động được điều khiển bằng số
0
Cap. Cảm ứng Channels
11
LCD phân đoạn
0
Nhiệt độ hoạt động tối thiểu (* C)
-40
Nhiệt độ hoạt động cao nhất} (* C)
125
Điện áp hoạt động tối thiểu (V)
2
Điện áp hoạt động cao nhất} (V)
5.5
Điện áp cao có thể
Ko
Sơ đồ chân PIC16F877A
Hình dưới đây là Sơ đồ chân PIC16F877A. Bên cạnh ra còn có bảng thông tin chi tiết đi kèm số thứ tự động 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 dùng trong quy trình lập trình, chủ yếu được kết nối có 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 bên cạnh / chân đầu vào clock
14
OSC2 / CLKO
Bộ dao động bên bên cạnh / 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 Knowledge vào
24
RC5 / SDO
Chân 5 của POCTC hoặc chân Serial Knowledge 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 bên cạnh
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 có 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 có programmer
40
RB7/PGD
Chân thứ 7 của POCTB hoặc kết nối có programmer
Bạn có thể thấy trong hình trên những chân của Vi điều khiển PIC có nhiều hơn 1 tên, vì từng chân của PIC có thể thực hành nhiều nhiệm vụ.
Dí dụ, Chân số 25, nó có thể được dùng như 1 chân số 6 cổng C kỹ thuật số (RC6) và cũng có thể được dùng như 1 Bộ phát (TX) cho giao tiếp nối tiếp.
Vì vậy nó sẽ tùy thuộc} thuộc vào bí quyết bạn muốn dùng từng chân. Trong bài chỉ dẫn này chúng ta sẽ đánh giá gần như những chức năng của chân.
Nguồn cơ bản PIC16F877A
Từng vi điều khiển PIC có 1 ổ cơ bản và trường hợp bạn ko thiết kế ổ cơ bản thì nó sẽ ko hoạt động.
Nó giống như cấp nguồn cho vi điều khiển PIC và nó hoạt động trên mức + 5V.
Trường hợp bạn muốn bật quạt thì bạn sẽ làm cho gì? Bạn chỉ cần phân phối điện cho nó và đấy là những gì chúng ta sẽ làm cho có PIC nhưng trong trường hợp của PIC, chúng ta cũng cần phân phối tần số mà nó sẽ hoạt động.
Chúng ta cần thiết kế ổ cơ bản và ổ cơ bản này chứa công suất cũng như tần số mà nó sẽ hoạt động.
Để phân phối tần số cho vi điều khiển PIC, chúng ta dùng bộ dao động tinh thể và đối có PIC 16F877a, bạn có thể dùng bộ dao động tinh thể dải tần từ 4MHz tới 40MHz.
Đây là Nguồn cơ bản PIC16F877a mà bạn cần thiết kế:
Giải thích ổ trên
Chân số 1: Chân này được gọi là MCLR (Grasp 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: Những 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 những đường này có màu sắc đỏ trong hình trên.
Chân số 12 và chân số 31: Những 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à những đường của nó có màu sắc đen.
Chân số 13 và 14: Những chân này được đặt tên là OSC1 (Bộ tạo dao động 1) và OSC2 (Bộ tạo dao động 2), ngay thời điểm hiện tại} chúng ta buộc phải gắn bộ tạo dao động tinh thể (16MHz) tại những chân này trên đường màu sắc cam. Sau bộ dao động tinh thể, chúng ta có tụ điện 33pF và tiếp theo được nối đất.
Chúng ta đã thiết kế ổ cơ bản và ngay thời điểm hiện tại} vi điều khiển PIC đã sẵn sàng hoạt động và bạn cũng có thể thấy 1 LED được gắn trên chân số 21, đấy là bởi vì chúng ta cũng cần đánh giá xem nó có đang chạy hay ko để chúng ta có thể bật hoặc tắt đèn LED này.
Những cổng PIC16F877A
Trong ổ cơ bản, chúng ta đã dùng đa số những chân nguồn của vi điều khiển PIC, trong lúc đa số những chân cổng vẫn còn chưa được dùng.
Vì vậy, ngay thời điểm hiện tại} lúc 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 cho là thiết kế 1 số code và dùng những cổng vi điều khiển PIC. Trước tiên chúng ta hãy xem xét những Cổng PIC16F877a.
PIC16F877a có tổng cùng 5 Cổng là:
Cổng A: có tổng cùng 6 chân khởi đầu từ chân số 2 tới chân số 7. Những chân cổng A được ký hiệu từ RA0 tới RA5 trong đấy RA0 là ký hiệu của chân trước tiên của Cổng A.
Cổng B: có tổng cùng 8 chân khởi đầu từ chân số 33 tới chân số 40. Những chân cổng B được ký hiệu từ RB0 tới RB7 trong đấy RB0 là ký hiệu của chân trước tiên của cổng B.
Cổng C: có tổng cùng 8 Chân. Những chân của nó ko được thẳng hàng có nhau. 4 chân trước tiên của cổng C nằm trên chân số 15 tới chân số 18, còn 4 chân cuối cùng nằm trên chân số 23 tới chân số 26.
Cổng D: có tổng cùng 8 chân. Những chân của nó cũng ko thẳng hàng có nhau. 4 chân trước tiên của cổng D nằm trên chân số 19 tới chân số 22, trong lúc 4 chân cuối cùng nằm trên chân số 27 tới chân số 30.
Cổng E: có tổng cùng 3 chân khởi đầu từ chân số 8 tới chân số 10. Những chân cổng E được ký hiệu từ RE0 tới RE2 trong đấy RE0 là ký hiệu của chân trước 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 những chân cổng là đầu vào hay đầu ra.
Giả sử bạn có 1 số cảm biến và bạn muốn nhận giá trị của nó thì bạn buộc phải kết nối cảm biến này có 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 đi lại động cơ DC đấy bằng vi điều khiển PIC. Bạn buộc phải gửi lệnh từ bộ vi điều khiển PIC tới động cơ DC để chân PIC hoạt động như chân đầu ra.
Từng cổng của vi điều khiển PIC được hợp tác có 2 thanh ghi (register), dí dụ những thanh ghi cổng D là PortD và TRISD.
Cả 2 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 biệt lập. Trường hợp chúng ta đã gán 0 thì nó sẽ là đầu ra và trường hợp chúng ta đã gán 1 thì nó sẽ là đầu vào.
Dí dụ: trường hợp chúng ta gán TRISD = 0x01, thì 7 chân trước 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ự hài hòa của đa số 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 internet chính thức của Microchip.
Chúng ta viết code trong trình biên dịch PIC và tiếp theo biên dịch nó. Sau khoản thời gian biên dịch, 1 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ó 1 cổng nối tiếp trong đấy được dùng để giao tiếp dữ liệu.
Chân số 25 cũng hoạt động như TX vì vậy trường hợp bạn muốn thực hành giao tiếp nối tiếp thì nó sẽ được dùng để gửi dữ liệu nối tiếp.
Chân 26 cũng hoạt động như RX, vì vậy trường hợp bạn muốn thực hành giao tiếp nối tiếp thì nó sẽ được dùng để nhận dữ liệu nối tiếp.
Giao tiếp I2C PIC16F877a
PIC16F877a cũng có 1 cổng I2C có thể dễ dàng thực hành 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 Knowledge Line.
Ngay thời điểm hiện tại} 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ể dùng cổng C như 1 cổng đơn giản nhưng cũng có thể thực hành 2 giao tiếp này có những 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à 1 số sự kiện tạo ra ngắt, nguồn này có thể là bộ đếm thời kì như những ngắt được tạo sau từng 1 giây hoặc cũng có thể là sự kiện thay thế đổi trạng thái chân, chẳng hạn như trường hợp trạng thái chân bị thay thế đổi tiếp theo ngắt sẽ được tạo ra.
Vì vậy, ngắt PIC16F877a có thể được tạo ra bằng 8 bí quyết sau:
- Ngắt bên cạnh.
- Ngắt bộ định thời (Timer0 / Timer1).
- Thay đổi đổi trạng thái cổng B.
- Cổng Slave Đồng thời Đọc / Ghi.
- Bộ chuyển đổi A / D.
- Nhận / Truyền nối tiếp.
- PWM (CCP1 / CCP2).
- Thực hiện ghi EEPROM.
Ngắt PIC16F877a được hợp tác có 5 thanh ghi dưới đây:
- INTCON
- PIE1
- PIR1
- PIE2
- PIR2