Chương 1: Tổng quan: Chương này trình bày lý do chọn đề tài, cũng như mục tiêu và phạm vi nghiên cứu của đề tài. Chương 2: Cơ sở lý thuyết: Giới thiệu về vi điều khiển PIC16F887, chuẩn truyền thông I2C, IC thời gian thực DS1307 và LCD. Chương 3: Thiết kế hệ thống: Trình bày sơ đồ khối, thiết kế sơ đồ nguyên lý cho từng khối và xây dựng lưu đồ giải thực của hệ thống. Chương 4: Kết quả thực hiện: Trình bày các kết quả thực hiện thiết kế.
Chương 5: Kết luận và hướng phát triển: Đưa ra kết luận và hướng phát triển của đề tài. 1 Chương 2: CƠ SỞ LÝ THUYẾT 2.1 Giới thiệu về Vi điều khiển PIC 16F887 PIC16F887 là một chip vi điều khiển thuộc họ PIC được Microchip sản xuất (hình 2. PIC16F887 là một vi điều khiển 8 bit được xây dựng theo kiến trúc RISC nên tốc độ thực thi lệnh cao và có tập lệnh tương đối ít, gần gũi với con người nên người dùng dễ dàng giao tiếp với nó. PIC 16F887 hoạt động trong dãy điện áp 2V - 5.5V, sử dụng dao động nội có tần số từ 31 kHz đến 8 MHz được thay đổi bằng phần mềm.
Ngoài ra còn có thể gắn thêm thạch anh để điều khiển tần số hoạt động phù hợp và có thể nhận/cấp dòng khoảng 25mA. Về bộ nhớ thì vi điều khiển này có bộ nhớ dữ liệu gồm: SRAM 368 bytes và EEPROM 256 bytes, bộ nhớ chương trình Flash 8192 words cho phép người dùng xóa, ghi lại chương trình nhiều lần. Vi điều khiển PIC16F887 gồm Watchdog, ngắt, 3 bộ định thời Timer, modules CCP/PWM để điều chế độ rộng xung và 35 chân I/O trong đó có 14 chân chuyển đổi tương tự để nối ngoại vi cùng kết nối chặt chẽ với nhau nhằm giúp người dùng thực hiện những ứng dụng điều khiển cụ thể. Các giao thức truyền thông của vi điều khiển này là USART, SPI và I2C.
PIC 16F887 được reset mỗi khi được cấp điện và tự động reset khi phát hiện nguồn điện cấp bị sụt giảm hoặc có thể chủ động reset bằng chân RE3 khi cho phép chân RE3 có chức năng MCLR bằng phần mềm [1]. 1: Vi điều khiển PIC 16F887 (Nguồn: Internet) Sơ đồ chân vi điều khiển PIC16F887 loại 40 được trình bày ở hình 2. Trong đó các chân được tích hợp nhiều chức năng, 40 chân của vi điều khiển PIC16F887 chia thành 5 port. Chức năng của các chân được trình bày theo từng port [1]: 2 Hình 2.
2: Sơ đồ chân vi điều khiển 16F887 (Nguồn: Microchip, PIC16F882/883/884/886/887 Data Shet, trang 6) Các chân Port A: Chân RA0/AN0/ULPWU/C12IN0- (2): có 4 chức năng: RA0: xuất/ nhập số - bit thứ 0 của port A. AN0: ngõ vào tương tự của kênh thứ 0. ULPWU (Ultra Low-power Wake up input): ngõ vào đánh thức CPU công suất cực thấp. C12IN0- (Comparator C1 or C2 negative input): ngõ vào âm thứ 0 của bộ so sánh C1 hoặc C2.
Chân RA1/AN1/C12IN1- (3): có 3 chức năng: RA1: xuất/nhập số - bit thứ 1 của port A. AN1: ngõ vào tương tự của kênh thứ 1. C12IN1- (Comparator C1 or C2 negative input): ngõ vào âm thứ 1 của bộ so sánh C1 hoặc C2. Chân RA2/AN2/VREF-/CVREF/C2IN+ (4): có 5 chức năng: RA2: xuất/nhập số - bit thứ 2 của port A.
AN2: ngõ vào tương tự của kênh thứ 2. 3 VREF-: ngõ vào điện áp chuẩn (thấp) của bộ ADC. CVREF: điện áp tham chiếu VREF ngõ vào bộ so sánh. C2IN+: ngõ vào dương của bộ so sánh C2.
Chân RA3/AN3/VREF+/C1IN+ (5): có 4 chức năng: RA3: xuất/nhập số - bit thứ 3 của port A. AN3: ngõ vào tương tự kênh thứ 3. VREF+: ngõ vào điện áp chuẩn (cao) của bộ A/D. C1IN+: ngõ vào dương của bộ so sánh C1.
Chân RA4/T0CKI/C1OUT (6): có 3 chức năng: RA4: xuất/nhập số – bit thứ 4 của port A. T0CKI: ngõ vào xung clock từ bên ngoài cho Timer0. C1OUT: ngõ ra bộ so sánh 1. Chân RA5/AN4/ SS / C2OUT (7): có 4 chức năng: RA5: xuất/nhập số – bit thứ 5 của port A.
AN4: ngõ vào tương tự kênh thứ 4. SS : ngõ vào chọn lựa SPI tớ (Slave SPI device). C2OUT: ngõ ra bộ so sánh 2. Chân RA6/OSC2/CLKOUT (14): có 3 chức năng: RA6: xuất/nhập số – bit thứ 6 của port A.
OSC2: ngõ ra dao động thạch anh. Kết nối đến thạch anh hoặc bộ cộng hưởng. CLKOUT: ở chế độ RC, ngõ ra của OSC2, bằng ¼ tần số của OSC1. Chân RA7/OSC1/CLKIN (13): có 3 chức năng: RA7: xuất/nhập số – bit thứ 7 của port A.
OSC1: ngõ vào dao động thạch anh hoặc ngõ vào nguồn xung ở bên ngoài. CLKIN: ngõ vào nguồn xung bên ngoài. Các chân Port B: Chân RB0/AN12/INT (33): có 3 chức năng: RB0: xuất/nhập số – bit thứ 0 của port B. AN12: ngõ vào tương tự kênh thứ 12.
4 INT: ngõ vào nhận tín hiệu ngắt ngoài. Chân RB1/AN10/C12IN3- (34): có 3 chức năng: RB1: xuất/nhập số – bit thứ 1 của port B. AN10: ngõ vào tương tự kênh thứ 10. C12IN3-: ngõ vào âm thứ 3 của bộ so sánh C1 hoặc C2.
Chân RB2/AN8 (35): có 2 chức năng: RB2: xuất/nhập số – bit thứ 2 của port B. AN8: ngõ vào tương tự kênh thứ 8. Chân RB3/AN9/PGM/C12IN2 (36): có 4 chức năng: RB3: xuất/nhập số – bit thứ 3 của port B. AN9: ngõ vào tương tự kênh thứ 9.
PGM: Chân cho phép lập trình điện áp thấp ICSP. C12IN1-: ngõ vào âm thứ 2 của bộ so sánh C1 hoặc C2 Chân RB4/AN11 (37): có 2 chức năng: RB4: xuất/nhập số – bit thứ 4 của port B. AN11: ngõ vào tương tự kênh thứ 11. Chân RB5/ AN13/ T1G (38): có 3 chức năng: RB5: xuất/nhập số – bit thứ 5 của port B.
AN13: ngõ vào tương tự kênh thứ 13. T1G (Timer1 gate input): ngõ vào Gate cho phép time1 đếm dùng để đếm độ rộng xung. Chân RB6/ICSPCLK (39): có 2 chức năng: RB6: xuất/nhập số. ICSPCLK: xung clock lập trình nối tiếp.
Chân RB7/ICSPDAT (40): có 2 chức năng: RB7: xuất/nhập số. ICSPDAT: ngõ xuất nhập dữ liệu lập trình nối tiếp. Các chân Port C: Chân RC0/T1OSO/T1CKI (15): có 3 chức năng: 5 RC0: xuất/nhập số – bit thứ 0 của port C. T1OSO: ngõ ra của bộ dao động Timer1.
T1CKI: ngõ vào xung clock từ bên ngoài Timer1. Chân RC1/T1OSI/CCP2 (16): có 3 chức năng: RC1: xuất/nhập số – bit thứ 1 của port C. T1OSI: ngõ vào của bộ dao động Timer1. CCP2: ngõ vào Capture2, ngõ ra compare2, ngõ ra PWM2.
Chân RC2 /P1A/CCP1 (17): có 3 chức năng: RC2: xuất/nhập số – bit thứ 2 của port C. P1A: ngõ ra PWM. CCP1: ngõ vào Capture 1, ngõ ra compare 1, ngõ ra PWM1. Chân RC3/SCK/SCL (18): có 3 chức năng: RC3: xuất/nhập số – bit thứ 3 của port C.
SCK: ngõ vào xung clock nối tiếp đồng bộ/ngõ ra của chế độ SPI. SCL: ngõ vào xung clock nối tiếp đồng bộ/ngõ ra của chế độ I2C. Chân RC4/SDI/SDA (23): có 3 chức năng: RC4: xuất/nhập số – bit thứ 4 của port C. SDI: ngõ vào dữ liệu trong truyền dữ liệu kiểu SPI.
SDA: xuất/nhập dữ liệu I2C. Chân RC5/SDO (24): có 2 chức năng: RC5: xuất/nhập số – bit thứ 5 của port C. SDO: ngõ xuất dữ liệu trong truyền dữ liệu kiểu SPI. Chân RC6/TX/CK (25): có 3 chức năng: RC6: xuất/nhập số – bit thứ 6 của port C.
TX: ngõ ra phát dữ liệu trong chế độ truyền bất đồng bộ USART. CK: ngõ ra cấp xung clock trong chế độ truyền đồng bộ USART. Chân RC7/RX/DT (26): có 3 chức năng: RC7: xuất/nhập số – bit thứ 7 của port C. RX: ngõ vào nhận dữ liệu trong chế độ truyền bất đồng bộ EUSART.
6 DT: ngõ phát và nhận dữ liệu ở chế độ truyền đồng bộ EUSART. Các chân Port D: Chân RD0 (19): có 1 chức năng: RD0: xuất/nhập số – bit thứ 0 của port D. Chân RD1 (20): có 1 chức năng: RD1: xuất/nhập số – bit thứ 1 của port D. Chân RD2 (21): có 1 chức năng: RD2: xuất/nhập số – bit thứ 2 của port D.
Chân RD3 (22): có 1 chức năng: RD3: xuất/nhập số – bit thứ 3 của port D. Chân RD4 (27): có 1 chức năng: RD4: xuất/nhập số – bit thứ 4 của port D. Chân RD5/ P1B (28): có 2 chức năng: RD5: xuất/nhập số – bit thứ 5 của port D. P1B: ngõ ra PWM.
Chân RD6/ P1C (29): có 2 chức năng: RD6: xuất/nhập số – bit thứ 6 của port D. P1C: ngõ ra PWM. Chân RD7/P1D (30): có 2 chức năng: RD7: xuất/nhập số – bit thứ 7 của port D. P1D: ngõ ra tăng cường CPP1 Các chân Port E: Chân RE0/AN5 (8): có 2 chức năng: RE0: xuất/nhập số.
AN5: ngõ vào tương tự 5. Chân RE1/AN6 (9): có 2 chức năng: RE1: xuất/nhập số. AN6: ngõ vào tương tự kênh thứ 6. Chân RE2/AN7 (10): có 2 chức năng: RE2: xuất/nhập số.
AN7: ngõ vào tương tự kênh thứ 7. Chân RE3/ MCLR /VPP (1): có 3 chức năng: RE3: xuất/nhập số - bit thứ 3 của port E. MCLR : là ngõ vào reset tích cực mức thấp. 7 VPP: ngõ vào nhận điện áp khi ghi dữ liệu vào bộ nhớ nội flash.
Ngoài ra, còn có các chân VDD (11), (32): cấp nguồn dương từ 2V đến 5V và VSS (12), (31): cấp nguồn 0V.2 Giới thiệu chuẩn truyền thông I2C I2C viết tắc của từ Inter-Integrated Circuit là một chuẩn truyền thông do hãng điện tử Philips Semiconductor sáng lập cho phép giao tiếp một thiết bị chủ (Master) với nhiều thiết bị tớ (Slave) thông qua 2 đường tín hiệu: SDA (serial data) dùng để truyền tải dữ liệu và SCL (serial clock) để truyền tải xung clock do Master phát cho Slave nhằm đồng bộ thời gian tồn tại của các bit dữ liệu trên đường truyền. Để phân biệt giữa các Slave thì mỗi Slave có một địa chỉ riêng 7 bit hoặc 10 bit do nhà sản xuất thiết bị có sử dụng chuẩn truyền thông I2C thiết lập. Dạng sóng quá trình thiết bị chủ ghi dữ liệu vào thiết bị tớ như hình 2.3: Đầu tiên thiết bị chủ tạo trạng thái START để bắt đầu quá trình truyền dữ liệu Thiết bị chủ gởi địa chỉ của thiết bị tớ cần giao tiếp.