a. Tổng quan
PIC16F887 là nhóm PIC trong họ PIC16XX của họ Vi điều khiển 8 bit, tiêu hao năng lượng thấp, đáp ứng nhanh, chế tạo theo công nghệ CMOS, chống tĩnh điện tuyệt đối.
Hình 2.14: Hình ảnh thực tế của vi điều khiển 16F887
Tất cả các PIC16/17 đều có cấu trúc RISC. PIC16CXX có các đặc tính nổi bậc, 8 mức ngăn xếp Stack, nhiều nguồn ngắt tích hợp bên trong lẫn ngoài. Có cấu trúc Havard với các bus dữ liệu và bus thực thi chương trình riêng biệt nhau cho phép độ dài 1 lệnh là 14 bit và bus dữ liệu 8 bit cách biệt nhau. Tất cả các lệnh đều mất 1 chu kỳ lệnh ngoại trừ các lệnh rẽ nhánh chương trình mất 2 chu kỳ lệnh. Chỉ có 35 lệnh và 1 lượng lớn các thanh ghi cho phép đáp ứng cao trong ứng dụng.
Họ PIC16F8X có nhiều tính năng đặc biệt làm giảm thiểu các thiết bị ngoại vi, vì vậy kinh tế cao, có hệ thống nổi bật đáng tin cậy và sự tiêu thụ năng lượng thấp. Ở đây có 4 sự lựa chọn bộ dao động và chỉ có 1 chân kết nối bộ dao động RC nên có giải pháp tiết kiệm cao. Chế độ SLEEP tiết kiệm nguồn và có thể được đánh thức bởi các nguồn reset [14].
b. Cấu trúc tổng quát của PIC16F887
Hình 2.15: Cấu hình của vi điều khiển
8K x 14 bits/word Flash ROM. 368 x 8 Bytes RAM.
256 x 8 Bytes EEPROM.
5 Port xuất/nhập (A, B, C, D, E) tương ứng 33 chân ra. 2 Bộ định thời 8 bit Timer 0 và Timer 2.
1 Bộ định thời 16 bit Timer 1, có thể hoạt động ở chế độ tiết kiệm năng lượng (SLEEP MODE) với nguồn xung clock ngoài.
2 Bộ Capture/ Compare/ PWM (Bắt Giữ/ So Sánh/ Điều Biến Xung). 1 Bộ biến đổi Analog to Digital 10 bit, 8 ngõ vào.
2 Bộ so sánh tương tự (Compartor).
1 Bộ định thời giám sát (Watch Dog Timer). 1 Cổng giao tiếp song song 8 bit.
1 Port nối tiếp.
15 Nguồn ngắt (Interrupt).
Nạp chương trình bằng cổng nối tiếp (ICSP™: In Circuit Serial Programming™).
Tập lệnh gồm 35 lệnh có độ dài 14 bit. Tần số hoạt động tối đa 20 MHz [15].
c. Sơ đồ và chức năng các chân PIC16F887
Hình 2.16: Sơ đồ chân của PIC16F887
Chức năng là port I/O:
Port A gồm các tín hiệu từ RA0 đến RA7. Port B gồm các tín hiệu từ RB0 đến RB7. Port C gồm các tín hiệu từ RC0 đến RC7. Port D gồm các tín hiệu từ RD0 đến RD7. Port E gồm các tín hiệu từ RE0 đến RE7.
Chức năng tương tự là các ngõ vào bộ chuyển đổi ADC: có 14 kênh 14 kênh vào tương tự từ AN0 đến AN13.
Hai ngõ vào nhận điện áp tham chiếu bên ngoài là Vref+ và Vref-. Chức năng tương tự là các ngõ vào bộ so sánh C1 và C2:
4 chân: C12IN0-, C12IN1-, C12IN2-, C12IN2- nhận điện áp ngõ vào âm của 2 bộ so sánh.
2 chân: C1IN+ và C2IN+ nhận điện áp tương tự. 2 bộ so sánh có 2 ngõ ra là C1OUT và C2OUT.
Chân Cvref nhận điện áp tham chiếu chuẩn cấp cho 2 bộ so sánh. Chức năng dao động cấp xung cho CPU hoạt động:
2 chân OSC1 và OSC2 nối với tụ thạch anh để tạo dao động cấp xung cho CPU hoạt động.
Nếu không dùng tụ thạch anh PIC sẽ nhận tín hiệu dao động từ nguồn khác thông qua chân CLKIN và chân CLKOUT sẽ cấp xung clock cho các thiết bị khác.
Chức năng nhận xung ngoại của T0 và T1:
Chân T0CKI: Nhận xung ngoại cho timer/counter T0. Chân T1CKI: Nhận xung ngoại cho timer/counter T1.
2 chân T1OSO và T1OSI là 2 ngõ vào tạo dao động riêng cho Timer1 có thể hoạt động một cách độc lập.
Chức năng truyền dữ liệu SPI:
Chân SDI là ngõ vào nhận dữ liệu. Chân SDO là ngõ ra phát dữ liệu. Chân SCK là ngõ ra phát xung clock. SS
Chức năng truyền dữ liệu I2C:
Chân SDA là ngõ truyền/nhận dữ liệu. Chân SCL là ngõ ra phát xung clock. Chức năng truyền dữ liệu đồng bộ ESUART:
Chân DT là ngõ truyền/nhận dữ liệu. Chân CK là ngõ phát ra xung clock.
Chức năng truyền dữ liệu không đồng bộ ESUART: Chân RX là ngõ nhận dữ liệu.
Chân TX là ngõ phát dữ liệu. Chức năng ngắt:
Chân INT là ngõ nhận tín hiệu ngắt.
Chức năng CCP (capture, compare, pulse width modulation): Chân CCP1 và CCP2 là 2 tín hiệu cho khối CCP.
Chức năng nạp chương trình:
Chân ICSPDAT là ngõ vào tín hiệu để truyền dữ liệu. Chân ICSPCLK là ngõ vào tín hiệu để nhận xung clock. Chân PGM là ngõ vào tín hiệu để điều khiển nạp.
Chân Vpp là ngõ vào tín hiệu để nhận điệp áp lập trình. Chân MCLR là ngõ vào reset.
Có 4 chân cấp nguồn: VDD cấp nguồn dương, VSS nối với 0V.