Vi điều khiển PIC16F887 là vi điều khiển 8 bit được thiết kế theo công nghệ CPU RSIC cho công suất tối đa với điện năng tiêu thụ thấp. Có tổng cộng 40 chân và có nhiều gói chân đáp ứng yêu cầu mạch nhỏ gọn và hiện đại, ví dụ package QFN và TQFP 44 chân.
PIC16F887 hỗ trợ các giao thức dữ liệu hiện đại cho các nhà thiết kế và do có nhiều chân nên hầu hết các giao thức có thể được thực hiện cùng một lúc mà không ảnh hưởng đến các giao thức khác. PIC có nhiều chức năng do có nhiều kênh chuyển đổi ADC và xung clock bên trong.
Sơ đồ chân vi điều khiển PIC16F887
Bộ vi điều khiển này có ba package DIP, QFN và TQFP.
Đây là sơ đồ chân package DIP 40 chân.
Sơ đồ dưới đây cho package QFN và TQFP.
Cấu hình chân PIC16F887
PIC16F887 có package 40 chân và 44 chân với nhiều tính năng.
Các chân GPIO PIC16F877A
Đầu ra digital
Có nhiều chân đầu ra trong vi điều khiển. Tất cả các chân thuộc năm thanh ghi (A, B, C, D & E). Chúng tương thích với mọi thiết bị chuẩn TTL / CMOS và ST. Tất cả các chân GPIO đều cung cấp điện áp đầu ra tối đa theo giá trị nguồn điện cấp. Tất cả các chân đầu ra được đưa ra bên dưới:
- PA0 – GPIO2
- PA1 – GPIO3
- PA2 – GPIO4
- PA3 – GPIO5
- PA4 – GPIO6
- PA5 – GPIO7
- PA6 – GPIO14
- PA7 – GPIO12
- PB0 – GPIO33
- PB1 – GPIO34
- PB2 – GPIO35
- PB3 – GPIO36
- PB4 – GPIO37
- PB5 – GPIO38
- PB6 – GPIO39
- PB7 – GPIO40
- PC0 – GPIO15
- PC1 – GPIO16
- PC2 – GPIO17
- PC3 – GPIO18
- PC4 – GPIO23
- PC5 – GPIO24
- PC6 – GPIO25
- PC7 – GPIO26
- PD0 – GPIO19
- PD1 – GPIO20
- PD2 – GPIO21
- PD3 – GPIO22
- PD4 – GPIO27
- PD5 – GPIO28
- PD6 – GPIO29
- PD7 – GPIO30
- PE0 – GPIO8
- PE1 – GPIO9
- PE2 – GPIO10
Đầu vào digital: Có nhiều chân đầu vào trên bộ vi điều khiển và tất cả đều có một điện trở kéo. Trong PIC16F887, số lượng chân đầu vào lớn hơn tất cả các chân khác và có thể được sử dụng để khởi động vi điều khiển từ chế độ ngủ.
Các chân này hoạt động ở logic TTL / ST, giúp tương thích với tất cả các thiết bị CMOS và thiết bị ngoại vi khác. Tất cả các chân đầu vào được liệt kê bên dưới:
- PA0 – GPIO2
- PA1 – GPIO3
- PA2 – GPIO4
- PA3 – GPIO5
- PA4 – GPIO6
- PA5 – GPIO7
- PA6 – GPIO14
- PA7 – GPIO12
- PB0 – GPIO33
- PB1 – GPIO34
- PB2 – GPIO35
- PB3 – GPIO36
- PB4 – GPIO37
- PB5 – GPIO38
- PB6 – GPIO39
- PB7 – GPIO40
- PC0 – GPIO15
- PC1 – GPIO16
- PC2 – GPIO17
- PC3 – GPIO18
- PC4 – GPIO23
- PC5 – GPIO24
- PC6 – GPIO25
- PC7 – GPIO26
- PD0 – GPIO19
- PD1 – GPIO20
- PD2 – GPIO21
- PD3 – GPIO22
- PD4 – GPIO27
- PD5 – GPIO28
- PD6 – GPIO29
- PD7 – GPIO30
- PE0 – GPIO8
- PE1 – GPIO9
- PE2 – GPIO10
- PE3 – GPIO1
Chân ngắt
Hầu hết các ứng dụng / cảm biến hiện đại đều yêu cầu chân ngắt để hoạt động. Trong PIC16F887, tổng số chân là 40 nhưng chỉ có một chân ngắt bên ngoài. Chân này có thể được sử dụng để tạo tín hiệu xử lý sự kiện bên trong CPU của vi điều khiển. Đầu tiên, bộ vi điều khiển phải là một chương trình khai báo chân này, vì theo mặc định, chân này sẽ không hoạt động như một chân ngắt.
- INT – GPIO33
Cổng giao tiếp dữ liệu nối tiếp PIC16F887
EUSART (Truyền không đồng bộ): Ngày nay việc sử dụng giao thức này đã được phổ biến trong hầu hết các module và cảm biến. Nó chỉ sử dụng hai chân giao tiếp. Một chân được sử dụng để gửi dữ liệu và chân còn lại dùng để nhận dữ liệu. Để sử dụng giao thức này, hai thiết bị chỉ yêu cầu một số lệnh lập trình bên trong. Cả hai chân này trong PIC16F887 được đưa ra dưới đây:
- RX – GPIO26
- TX – GPIO25
EUSART (Truyền đồng bộ): Phương pháp truyền đồng bộ chủ yếu là truyền một chiều. Nó sử dụng một chân xung clock và một chân dữ liệu. Xung clock và dữ liệu đều được điều khiển bởi các lệnh đã cho trước. Cả hai chân được đưa ra dưới đây:
- CK – GPIO25
- DT – GPIO26
SPI: Hầu hết cảm biến sử dụng giao thức SPI để giao tiếp. Trong giao tiếp này, nhiều thiết bị có thể được sử dụng cùng chân SPI. Nó sử dụng bốn chân và tất cả những chân đó được đưa ra dưới đây:
- SDI – GPIO23
- SDO – GPIO24
- SCK – GPIO18
- SS – GPIO7
I 2 C: Giao thức giao tiếp này chỉ sử dụng hai chân nhưng cùng một lúc chỉ có một thiết bị có thể gửi dữ liệu. PIC16F887 có hai chân dành cho giao thức I 2 C , một chân được sử dụng cho xung clock và chân còn lại được sử dụng để truyền và nhận dữ liệu. Cả hai chân này được đưa ra bên dưới:
- SDA – GPIO23
- SCL – GPIO18
ICSP: PIC16F887 có một số chân ICSP với chức năng GPIO được sử dụng lập trình vi điều khiển trong trường hợp cần thiết. Có 4 chân:
- ICSPCLK – GPIO39
- ICSPDAT – GPIO40
- V PP – GPIO1
- PGM – GPIO36
Các kênh chuyển đổi analog sang digital
Có 14 kênh được sử dụng để chuyển đổi tín hiệu analog sang digital. Tất cả các kênh chỉ sử dụng bộ ADC 10-bit. Tất cả các kênh ADC của PIC16F887 được cung cấp dưới đây:
- AN0 – GPIO2
- AN1 – GPIO3
- AN2 – GPIO4
- AN3 – GPIO5
- AN4 – GPIO7
- AN5 – GPIO8
- AN6 – GPIO9
- AN7 – GPIO10
- AN8 – GPIO35
- AN9 – GPIO36
- AN10 – GPIO34
- AN11 – GPIO37
- AN12 – GPIO33
- AN13 – GPIO38
Chân module timer
Trong PIC16F887 có ba timer (Timer0, Timer1, Timer2), hai timer 8bit và 1 timer 16 bit. Tất cả các bộ định thời này có thể sử dụng cả bộ dao động bên ngoài và bên trong nhưng timer1 có thể sử dụng bộ tạo dao động thứ ba ở một số chân GPIO.
Timer1 và timer0 có thể đếm được các xung bên ngoài thông qua các chân bên ngoài và timer1 cũng có một chân điều khiển. Tất cả các chân được đưa ra bên dưới:
- T0CKI – GPIO6
- T1OSO / T1CKI – GPIO15
- T1OSI – GPIO16
- T1G ‘- GPIO38
Chân so sánh tín hiệu
Có một bộ so sánh được sử dụng làm đầu vào và đầu ra tín hiệu đầu vào analog. Bộ so sánh sử dụng cả đầu vào đảo và không đảo cho hai tín hiệu và sau đó chuyển đổi ra giá trị được so sánh. Tín hiệu được so sánh có thể được sử dụng cho bộ vi điều khiển. Tất cả các chân này trong PIC16F887 được đưa ra bên dưới:
- C12IN0 (-) – GPIO2
- C12IN1 (-) – GPIO3
- CV REF / C2IN (+) – GPIO4
- C1IN (+) – GPIO5
- C1OUT – GPIO6
- C2OUT – GPIO7
- C12IN2 (-) – GPIO36
- C12IN3 (-) – GPIO34
Kênh PWM
Hầu hết các thiết bị yêu cầu tín hiệu PWM để hoạt động. Xung PWM giúp thiết bị thay đổi tốc độ và điện áp theo xung nhất định. Tất cả chân PWM được cung cấp bên dưới:
- P1A – GPIO17
- P1B – GPIO28
- P1C – GPIO29
- P1D – GPIO30
Chân Capture / So sánh / PWM
Trong PIC16F887 có một module CCP dùng để so sánh tín hiệu đầu vào, sau đó so sánh với tín hiệu được xác định trước. Module tiếp tục so sánh cho đến khi có tín hiệu khớp và sau đó tạo tín hiệu đầu ra. Module chủ yếu sử dụng PWM nhưng cũng sử dụng để tạo ra một tín hiệu xử lý sự kiện.
- CCP1 – GPIO16
- CCP2 – GPIO17
Chân nguồn PIC16F887
ULPWU: Chân được sử dụng để khởi động thiết bị với điện áp thấp nhất.
- ULPWU – GPIO2
VREF: Bộ ADC sử dụng điện áp cấp để chuyển đổi dữ liệu nhưng trong một số trường hợp, thiết bị nhận dữ liệu không mong muốn do điện áp của thiết bị truyền tín hiệu analog. Để giải quyết vấn đề này, module có các 2 chân đầu vào điện áp analog. Chân đầu vào không đảo và đảo làm điện áp tham chiếu. Cả hai chân này được đưa ra bên dưới:
- V REF- – GPIO4
- V REF + – GPIO5
Reset: Được kích hoạt từ các thiết bị bên ngoài hoặc từ các nút nhấn để đặt lại thiết bị trong trường hợp cần thiết.
Nguồn cấp: Có bốn chân nguồn và tất cả các chân có thể được sử dụng cùng một lúc. Các chân nguồn được kết nối bên trong. Hai chân nối đất và hai chân nguồn, và là chân chung trong vi điều khiển. Tất cả các chân nguồn và chân nối đất được cung cấp bên dưới:
- VDD – Pin11, Pin32
- VSS – Pin12, Pin31
Bộ tạo dao động / xung clock: Mọi vi điều khiển đều yêu cầu đầu vào xung nhịp để hoạt động. Trong PIC16F887 có xung nhịp bên trong là 8MHz, tần số có thể thay đổi thông qua lập trình. Tần số có thể thay đổi từ 31KHz đến 8MHz. Có chân dao động bên ngoài. Bộ dao động bên ngoài chỉ có thể lên đến 20MHz. Các chân của bộ dao động bên ngoài cũng có thể được sử dụng để cấp xung clock vào bên trong. Tất cả các chân dao động được đưa ra bên dưới:
- OSC1 / CLKIN – GPIO13
- OSC2 / CLKOUT – GPIO14
Các tính năng chính của vi điều khiển PIC16F887
TÍNH NĂNG & THÔNG SỐ KỸ THUẬT | |
Kiến trúc CPU | PIC 8 bit |
Bộ dao động bên trong | 8MHz |
Bộ tạo dao động bên ngoài | 20MHz |
Phạm vi điện áp hoạt động | (2V – 5.5V) |
CỔNG GPIO | 36 chân I / O |
Ngắt | 1 |
Timer | 3 – (2 Timer 8 bit và 1 timer 16 bit) |
Bộ so sánh | 2 |
PWM | 2 CCP và 2-PWM |
ICP | 1 chân ICP |
USART | 1 kênh |
I2C | 1 kênh |
SPI / MSSP | 1 kênh |
ICSP / MSSP | Có |
ULPWU | Có |
Timer watchdog | Có |
Self-Programming | Có |
LAN | Không có |
CAN | Không có |
ADC | 14 kênh |
SRAM | 368b |
FLASH (Bộ nhớ chương trình) | 14Kb |
EEPROM | 256 byte |
Lập trình vi điều khiển PIC16F887
Để bắt đầu học lập trình vi điều khiển pic, bạn nên hiểu rõ các chân GPIO. Do đó, chúng tôi đã trình bày chi tiết về tất cả các chân và chức năng trong các phần trước. Có thể lập trình bằng hợp ngữ (Assembly) hoặc ngôn ngữ c. Chúng tôi khuyên bạn nên xem các hướng dẫn sau đây:
- Lập trình hợp ngữ (Assembly) vi điều khiển pic
- Lập trình c vi điều khiển Pic bằng Mikroc Pro
Công cụ lập trình
Để bắt đầu lập trình, bạn cần có phần mềm và phần cứng sau:
Trình biên dịch hoặc IDE để viết chương trình bằng hợp ngữ hoặc ngôn ngữ C:
Ba trình biên dịch phổ biến nhất được sử dụng để lập trình vi điều khiển pic là MPLABX IDE, Mikro C cho PIC và trình biên dịch PIC CCS. Trình biên dịch được sử dụng để tạo tệp hex để nạp code lên bộ vi điều khiển.
Trình nạp code: Khi viết xong code, bạn có một tệp hex mà muốn nạp lên bộ vi điều khiển. Hãy sử dụng bộ lập trình hoặc bộ ghi code để ghi tệp nhị phân lên pic16f866. Pickit3 là một trong những lựa chọn tốt nhất để nạp code.
Bo mạch Pic: Bảng mạch là tùy chọn nhưng chúng giúp quá trình phát triển của bạn dễ dàng hỡn. Bởi vì họ cung cấp các thiết bị ngoại vi trên bo mạch như GPIO, cảm biến, bộ ADC , v.v.
Các tùy chọn thay thế
PIC16F877A, PIC16F886, PIC16F84A, PIC18F2550, PIC18F46K22
Sơ đồ khối vi điều khiển PIC16F887
Các ứng dụng
- PIC16F887 sử dụng trong hầu hết các ứng dụng công nghiệp như một thiết bị điều khiển.
- Thiết bị này có các chân giao tiếp đặc biệt, điều này làm cho nó trở thành một trong những bộ vi điều khiển hiệu quả nhất trong họ vi điều khiển PIC.
- Là một bộ vi điều khiển lý tưởng do có nhiều kênh ADC ứng dụng trong các hệ thống ô tô.
Các bộ vi điều khiển khác:
ATMEGA32, ATMEGA16, ATTINY45, ATMEGA328P, PIC18F2550, PIC18F4550, ATTINY88, ATTINY85, PIC12C508, PIC18F46K22, PIC16F877A, Dspic30f2010
>>> Mời anh em xem thêm: