Cảm biến siêu âm SRF05 có khả năng kết nối với vi điều khiển tạo thành vi mạch điều khiển, ngoài ra một số ứng dụng khác của cảm biến này là được sử dụng trong robot dò đường tránh chướn
Trang 1621 TRƯỜNG ĐẠI HỌC VINH
KHOA ĐIỆN TỬ - VIỄN THÔNG
Trang 2MỤC LỤC
Trang
LỜI CẢM ƠN iii
MỞ ĐẦU iv
TÓM TẮT ĐỒ ÁN v
ABSTRACT v
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT vi
DANH MỤC HÌNH VẼ VÀ ĐỒ THỊ viii
DANH MỤC CÁC BẢNG BIỂU ix
Chương 1 GIỚI THIỆU VỀ KIT PICDEM 2 PLUS VÀ VI ĐIỀU KHIÊN PIC 1
1.1 Giới thiệu chương 1
1.2 Module PICDEM 2 PLUS 1
1.2.1 Giới thiệu chung 1
1.2.2 Các tính năng phần cứng 2
1.2.3 Thiết bị mẫu 4
1.2.4 Hướng dẫn thao tác với kit PICDEM 2 PLUS 5
1.2.5 Một số chương trình vận hành cơ bản 7
1.3 Sơ lược về PIC 12
1.3.1 Cấu hình phần cứng PIC 16F877A 13
1.3.2 Tổ chức bộ nhớ 14
1.3.3 Sơ đồ chân 19
1.3.4 Đặc điểm vi điều khiển PIC 16F877A 21
1.3.5 Các cổng xuất nhập của PIC 16F877A 24
1.3.6 TIMER 26
Chương 2 GIỚI THIỆU VỀ CẢM BIẾN SIÊU ÂM 32
2.1 Giới thiệu chương 32
2.2 Giới thiệu chung về cảm biến siêu âm 32
Trang 32.2.1 Cảm biến siêu âm và nguyên tắc TOF (Time Of Flight) 32
2.2.2 Tầm quét của cảm biến siêu âm 33
2.2.3 Thông số một số loại cảm biến siêu âm SRF 34
2.2.4 Các sai số nhiễu phổ biến với cảm biến siêu âm 35
2.3 Cảm biến siêu âm SRF05 và đặc điểm kỹ thuật 37
2.3.1 Các chế độ của SRF05 37
2.3.2 Một số đặc điểm khác của cảm biến siêu âm SRF05 40
Chương 3 THIẾT KẾ VÀ THI CÔNG HỆ THỐNG BƠM NƯỚC TỰ ĐỘNG 43
3.1 Giới thiệu chương 43
3.2 Yêu cầu hệ thống đặt ra 43
3.3 Sơ đồ hệ thống 44
3.3.1 Sơ đồ khối mạch điều khiển 44
3.3.2 Sơ đồ nguyên lí mạch điều khiển 45
3.4 Đo mực nước với cảm biến siêu âm SRF05 46
3.4.1 Cách điều khiển SRF05 hoạt động 46
3.4.2 Relay 47
3.4.3 Máy bơm nước 48
3.4.4 Bể nước bơm 49
3.5 Chuẩn giao tiếp RS232 49
3.5.1 Cơ bản và ghép nối về chuẩn giao tiếp RS232 49
3.5.2 Mạch chuẩn giao tiếp RS232 dùng IC MAX232 51
3.6 Lập trình cho Vi điều khiển PIC16F877A 52
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 55
TÀI LIỆU THAM KHẢO 56 PHỤ LỤC
Trang 4LỜI CẢM ƠN
Trong thời gian học tập và nghiên cứu tại trường được sự quan tâm giúp đỡ của khoa Điện tử - Viễn Thông, trường Đại học Vinh và dưới sự giúp đỡ của ThS Phạm Mạnh Toàn cho tôi tiến hành nghiên cứu đề tài: “Xây dựng mô hình hệ thống bơm nước tự động trên cơ sở phát triển ứng dụng Kit Picdem 2 Plus” Đến nay tôi đã hoàn thành đề tài Để hoàn thành đồ án này, ngoài nỗ lực của bản thân, tôi đã nhận được rất nhiều sự giúp đỡ, đóng góp ý kiến của nhiều cá nhân và tập thể Tôi xin bày tỏ lòng biết ơn sâu sắc đến:
Quý thầy cô giáo khoa Điện tử - Viễn thông đã tận tình giảng dạy trang bị kiến thức cho em trong suốt quá trình học tập vừa qua
Đặc biệt, em xin gửi lời cảm ơn chân thành tới ThS Phạm Mạnh Toàn là người trực tiếp hướng dẫn, động viên và giúp đỡ, tạo mọi điều kiện để em hoàn thành đề tài tốt nghiệp này
Mặc dù hết sức nỗ lực và cố gắng, nhưng do kiến thức và kinh nghiệm còn hạn hẹp nên đề tài không tránh khỏi sai sót, rất mong được sự chỉ đạo đóng góp ý kiến từ các thầy cô giáo để đề tài được hoàn thiện hơn
Trang 5MỞ ĐẦU
Đối với ngành học điện tử viễn thông của chúng ta thì việc học thực hành là một yêu cầu cực kỳ thiết yếu Công nghệ ngày càng phát triển và công cụ hỗ trợ cho việc học này cũng phát triển đa dạng theo Trong đó việc sử dụng các kit phát triển tích hợp nhiều chức năng để cho sinh viên nâng cao khả năng tìm tòi nghiên cứu là một
xu hướng quan trọng Đáp ứng điều này Khoa Điện tử - Viễn thông đã đầu tư nhiều thiết bị mới cho sinh viên học tập, trong đó có kit Picdem 2 Plus demo board Chức năng chính của kit này nhằm thể hiện khả năng của vi điều khiển 8-bit của Microchip, cụ thể, 18, 28 - và các thiết bị 40-pin PIC16FXXX, PIC16F1XXX, và PIC18 Sau đó tiến tới ứng dụng xây dựng mô hình hệ thống bơm nước tự động Hệ thống này sử dụng vi điều khiển PIC 16F877A và cảm biến siêu âm SRF05 Cảm biến siêu âm SRF05 có khả năng kết nối với vi điều khiển tạo thành vi mạch điều khiển, ngoài ra một số ứng dụng khác của cảm biến này là được sử dụng trong robot
dò đường tránh chướng ngại vật và đo khoảng cách Đó là lý do em chọn đề tài
“Xây dựng mô hình hệ thống bơm nước tự động trên cơ sở phát triển ứng dụng kit Picdem 2 Plus” Mục đích của đề tài này nhằm sử dụng thiết bị có sẵn trong phòng thí nghiệm để xây dựng hệ thống bơm nước Kết quả đã xây dựng hệ thống bơm nước tự động như yêu cầu đặt ra lúc đầu
Nghệ An, tháng 01 năm 2015
Sinh viên thực hiện Ngô Hồng Quân
Trang 6TÓM TẮT ĐỒ ÁN
Ngày nay kỹ thuật vi điều khiển đã trở nên quen thuộc trong các ngành kỹ thuật
và trong dân dụng Các bộ vi điều khiển có khả năng xử lý nhiều hoạt động phức tạp
mà chỉ cần một chip vi mạch nhỏ, nó đã thay thế các tủ điều khiển lớn và phức tạp bằng những mạch điện gọn nhẹ, dễ dàng sử dụng Trong hệ thống đo lường tự động
có nhiều kit phát triển sẵn của các nhà sản xuất cung cấp nhằm nâng cao khả năng học hỏi của các kĩ sư trong đó có Kit Picdem 2 Plus của hãng Microchip Technology Đồ án này sử dụng Kit Picdem 2 Plus để tìm hiểu các ứng dụng của kit này, trên cơ sở này tiến tới nghiên cứu và chế tạo một hệ thống bơm nước tự động
sử dụng dòng PIC16 và cảm biến siêu âm SRF05
ABSTRACT
Today the techniques microcontroller has become familiar in the industry and
in civil engineering The microcontroller is capable of handling multiple complex activities that just a small IC chip, it has replaced the control panel with large and complex circuits compact, easy used In the system automatic measurements are also available kit developed by the manufacturer provided to enhance the ability of engineers to learn the Picdem 2 Plus Kit including its Microchip Technology This thesis use Kit Picdem 2 Plus Demostration Board to explore the application of this kit as well as on the basis of this research toward making automatic pumping
system, use the PIC16 and SRF05 ultrasonic sensor for the actual product
Trang 7DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
ADC Analog to Digital Converter Bộ chuyển đổi tương tự - số ALU Arithmetic logic unit Đơn vị logic số học
Computer
VĐK có tập lệnh phức tạp
CPU Central Processing Unit Bộ xử lý trung tâm
EAS Electronic Article
Surveillance
Thiết bị giám sát điện tử
EEPROM Electric Erasable and
Programmable Read-Only Memory
Kiểu EPROM có thể xóa bằng tín hiệu điện
I2C
interface
Inter-Intergrated Circuit Interface
Giao thức ưu tiên truyền thông nối tiếp
ICSP In Circuit Serial
Programming
Phương pháp lập trình trong mạch
LCD Liquid Crystal Display Màn hình tinh thể lỏng
MCU Multipoint control unit Bộ điều khiển đa điểm
Mplab
ICD
MPLAB In-Circuit Debugger Mạch nạp/gỡ lỗi Mplab
PIC Programmable Intelligent
Computer
Máy tính khả trình thông minh
PWM Pulse-width modulation Điều chế độ rộng xung
PSP Parallel Slave Port Cổng giao tiếp song song
Trang 8USART Universal
Synchronous/Asynchronous Receiver/Transmitter
Giao tiếp truyền thông (không) đồng bộ
Computer
VĐK có tập lệnh rút gọn
SSP Synchronous Serial Port Cổng giao tiếp nối tiếp
Trang 9DANH MỤC HÌNH VẼ VÀ ĐỒ THỊ
Trang
Hình 1.1 Kit phát triển PICDEM 2 PLUS 2
Hình 1.2 Phần cứng kit PICDEM 2 PLUS 2
Hình 1.3 Một số thiết bị mẫu 4
Hình 1.4 Kết nối mạch nạp/gỡ lỗi với kit PICDEM 2PLUS 5
Hình 1.5 Cấp nguồn trực tiếp bằng bộ chuyển đổi AD/DC từ nguồn AC 220V 6
Hình 1.6 Cấp nguồn bằng pin 9V DC 6
Hình 1.7 Hiển thị điện áp và thành phần 7
Hình 1.8 Đọc kết quả chuyển đổi ADC 7
Hình1.9 Chuông báo và thành phần 7
Hình 1.10 Tín hiệu chuông 8
Hình 1.11 Hiển thị nhiệt độ và thành phần 10
Hình 1.12 Đọc nhiệt độ 10
Hình 1.13 Lỗi giao tiếp I2C 10
Hình 1.14 Hiển thị đồng hồ 10
Hình 1.15 Cài đặt đồng hồ 11
Hình 1.16 Biểu đồ chung cho các chức năng 11
Hình 1.17 Bộ nhớ chương trình PIC16F877A 15
Hình 1.18 Sơ đồ bộ nhớ dữ liệu PIC16F877A 18
Hình 1.19 Sơ đồ chân PIC 16F877A 19
Hình 1.20 Sơ đồ khối vi điều khiển PIC16F887 22
Hình 1.21 Sơ đồ khối của Timer0 28
Hình 1.22 Sơ đồ khối của Timer1 28
Hình 1.23 Sơ đồ khối Timer2 30
Hình 2.1 Một số loại cảm biến siêu âm 32
Hình 2.2 Nguyên tắc quét của sóng siêu âm 33
Hình 2.3 Tầm quét của cảm biến siêu âm 33
Trang 10Hình 2.4 Hiện tượng forecasting 36
Hình 2.5 Hiện tượng crosstalk 36
Hình 2.6 Chế độ hoạt động 1 38
Hình 2.7 Chế độ hoạt động 2 38
Hình 2.8 Các ngõ và chân ra vào của cảm biến 39
Hình 2.9 Đồ thị chùm tia cảm biến được sử dụng trên SRF 05 40
Hình 2.10 Nguyên tắc cơ bản sonar 40
Hình 2.11 Phản xạ sóng âm hồi tiếp phụ thuộc vào đối tượng 41
Hình 2.12 Vùng phát hiện của SRF05 41
Hình 2.13 Vùng hoạt động chung của 2 cảm biến 42
Hình 3.1 Hệ thống bơm nước tự động 44
Hình 3.2 Sơ đồ khối mạch điều khiển 44
Hình 3.3 Sơ đồ nguyên lý 45
Hình 3.4 Sơ đồ thuật toán 46
Hình 3.5 Relay 47
Hình 3.6 Sơ đồ nguyên lý mạch đóng cắt 48
Hình 3.7 Máy bơm 48
Hình 3.8 Bể chứa nước 49
Hình 3.9 Các linh kiện để ghép nối 50
Hình 3.10 Mạch giao tiếp 51
Hình 3.11 Giao diện visual basic 53
DANH MỤC CÁC BẢNG BIỂU Trang Bảng 1.1 Chỉ số chuông 8
Bảng 1.2 Tóm tắt đặc điểm của VDK PIC 16F877A 23
Bảng 2.1 Thông số kỹ thuật của 1 số loại cảm biến siêu âm [6] 35
Bảng 3.1 Khảo sát kết quả đo của cảm biến và độ nhạy relay 53
Trang 11Chương 1 GIỚI THIỆU VỀ KIT PICDEM 2 PLUS VÀ VI ĐIỀU KHIÊN PIC
1.1 Giới thiệu chương
Chương 1 giới thiệu về kit Picdem 2 Plus, các thành phần của kit cũng như các chức năng cụ thể của từng thành phần Tiến hành xây dựng, tổng hợp các ứng dụng cụ thể cho ngành học khi khai thác kit Picdem 2 Plus này cũng như giới thiệu chung về vi điều khiển PIC nói chung và PIC16FXXX nói riêng để từ đó có thể nghiên cứu và sử dụng kit để thiết kế và chế tạo hệ thống máy bơm tự động như mục tiêu đặt ra của đề tài
1.2 Module PICDEM 2 PLUS
1.2.1 Giới thiệu chung
Picdem 2 Plus Demonstration Board (kit Picdem 2 Plus) là sản phẩm của công
ty Microchip Technology, kit phát triển nhằm thể hiện khả năng của vi điều khiển 8-bit của Microchip, cụ thể, 18 chân, 28 chân và các thiết bị 40 chân như PIC16FXXX, PIC16F1XXX, và PIC18 Picdem 2 Plus Demonstration Board là kit
có thể sử dụng và hoạt động một cách độc lập với bộ phân lập chương trình
Một bộ kit Picdem 2 Plus Demonstration Board từ công ty Microchip Technology bao gồm:
- 1 kit Picdem 2 Plus Demonstration Board
- Các thiết bị mẫu
- Một đĩa CD-ROOM, trong đó có:
- Các chương trình mẫu
- Hướng dẫn sử dụng Picdem 2 Plus Demonstration Board
- Tài liệu tham khảo
Tính năng cụ thể: Chương trình trình diễn hiển thị một đồng hồ thời gian thực, nhiệt độ môi trường xung quanh, đo khoảng cách và nhiều hơn nữa.Một chương trình trình diễn nạp được cài đặt sẵn vào PIC16F1937 (40-pin) MCUs Bộ mẫu với PIC16F1827 (18-pin), PIC16F1936 (28-pin) và PIC18F46K22 (40-pin) MCUs Mã nguồn cho tất cả các chương trình.Lĩnh vực thiết kế mở rộng [1]
Trang 121.2.2 Các tính năng phần cứng
Hình 1.1 và hình 1.2 dưới đây là hình ảnh thực tế và các thành phần phần cứng của kit Các tính năng phần cứng của Picdem 2 Plus Demonstration Board:
Hình 1.1 Kit phát triển PICDEM 2 PLUS
Hình 1.2 Phần cứng kit PICDEM 2 PLUS
1 Đế 18, 28 và 40 chân DIP vi điều khiển PIC.(gồm có 3 đế nhưng chỉ có thể
sử dụng một trong 3 đế trong một thời điểm)
2 Ổn áp +5V dùng cho nguồn 9V, 100 mA AC/DC hay pin 9V.Nguồn cấp cho board hoạt động có thể sử dụng đầu vào trực tiếp từ bộ chuyển đổi 9V, 100 mA
AC / DC, hoặc PIN 9V DC, hoặc móc trực tiếp một nguồn +5V 100mA vào 2 cực phía dưới bên phải kit Nguồn 9V, 100 mA cấp trực tiếp từ bộ chuyển đổi AC / DC được cắm vào J2.Một pin 9V có thể được cắm vào J8 Nguồn +5V 100mA có thể móc vào 2 cực phía dưới bên phải kit
Trang 133 Đầu cắm DB9 theo chuẩn giao tiếp RS - 232 và phần cứng kết hợp cho chuyển kết nối đến đầu cắm giao tiếp RS – 232: Cổng giao tiếp RS-232 được trang
bị trên board để kết nối với máy tính, thay vì hiển thị kết quả bằng màn hình LCD
ta có thể cho hiển thị trên máy tính được trực quan hơn.Tín hiệu gửi từ vi điều khiển PIC qua IC MAX232A đến cổng giao tiếp RS-232 Chân RX và TX của vi điều khiển được kết nối với chân RX và TX của MAX232A Chân RX và TX của MAX232A được kết nối với chân TXD và RXD của cổng RS-232 trên board
4 Đầu nối kết nối kit với bộ lập trình gỡ lỗi ICD: Kết nối mô-đun (J5) với thiết
bị nạp chương trình Các kết nối ICD sử dụng chân RB6 và RB7 của vi điều khiển cho trong mạch gỡ lỗi
5 Biến trở 5 KΩ cho thiết bị với dữ liệu nhập vào sự tương tự Biến trở 5 kΩ được kết nối bằng một chuỗi điện trở 470Ω tới AN0 Chiết áp có thể được điều chỉnh từ VDD tới GND để cung cấp một đầu vào tương tự tới mô-đun ADC
6 Ba công tắc nút nhấn cho bên ngoài kích thích và Reset: S1 – được kết nối với chân MCLR của vi điều khiển có chức năng thiết lập lại ( Reset lại) S2 – nút nhấn hoạt động ở mức thấp được kết nối với chân RA4 của vi điều khiển S3 – nút nhấn hoạt động ở mức thấp được kết nối với chân RB0 của vi điều khiển.S1 và S3
có tụ debounce, trong khi S2 không, cho phép người dùng để nghiên cứu kỹ thuật debounce Khi nhấn nút thì chân tương ứng của vi điều khiển được thiết lập xuống mức thấp Khi không nhấn thì sẽ được kéo lên mức cao (+ 5V)
7 Led báo nguồn
8 Bốn đèn LED hiển thị kết nối với PORTB:
Bốn đèn LED màu xanh lá cây được kết nối với PORTB của từng loại bộ vi xử
lý Các đèn LED sáng khi các chân của PORTB được đặt ở mức cao và khi các chân của PORTB được đặt ở mức thấp thì LED không sáng Các đèn LED có thể
bị ngắt kết nối từ PORTB bằng cách loại bỏ Jumper J6.Đèn LED RB0 được kết nối để chỉ ra nguồn trên board đã được cấp hay chưa khi cấp nguồn LED sáng mờ thì board có nguồn, LED không sáng có ghĩa chưa cấp nguồn
9 Jumper J6 để ngắt/kết nối đèn LED từ PORTB
10 Bộ dao động (OSC) 4MHz
11.Lỗ không có linh kiện, dùng để lắp them thạch anh nếu cần
Trang 1412 Thạch anh 32.768 kHz hoạt động tạo xung clock cho Timer1
13 Jumper J7 để ngắt/kết nối bộ dao động RC có sắn (khoảng 2 MHz )
14 EEPROM nối tiếp 32K x 8
15 Màn hình hiển thị LCD: Một màn hình hiển thị LCD với hai dòng, mỗi dòng 16 ký tự, được kết nối với đế vi điều khiển loại 28 và 40-pin Có ba đường điều khiển (RD4: RD6) và bốn dòng dữ liệu (RD3: RD0) Một biến trở 5 kΩ có thể được lắp vào R20 để điều chỉnh độ tương phản trên màn hình LCD Nếu điều này được thực hiện thì R5 và R6 cần phải được loại bỏ
16 Còi báo
17 Phần cứng mở rộng cho người dùng phát triển thêm các ứng dụng
18 Cảm biến nhiệt TC74: TC74 là một cảm biến nhiệt số nối tiếp (TC74) kết nối với vi điều khiển có đế 28 và 40-pin trên board thông qua RC3 và RC4 Giao tiếp được thực hiện với TC74 qua cổng nối tiếp tương thích 2-dây I2C ™ của nó Thiết bị này có một địa chỉ nhị phân "1.001.101" [1]
Hình 1.3 Một số thiết bị mẫu
Trang 151.2.4 Hướng dẫn thao tác với kit PICDEM 2 PLUS
Với một thiết bị mẫu là vi điều khiển PIC đã được lập trình sẵn thì kit PICDEM
2 PLUS có thể hoạt động một cách độc lập với thiết bị chương trình Sau đây là các bước nạp và chạy chương trình trên kit PICDEM 2PLUS
- Lắp vi điều khiển đã được lập trình vào đế chân DIP thích hợp trên board kit
- Xác nhận các Jumper đã được kết nối/xóa theo yêu cầu hay chưa
- Kết nối mạch nạp/gỡ lỗi chương trình với kit (Hình 1.4)
MPLAB ICD2 là mạch gỡ lỗi nhanh và hiệu quả của Microchip Trình gỡ lỗi/nạp chương trình cho các thiết bị vi điều khiển (MCU) và bộ điều khiển tín hiệu số flash(DSC) Nó gỡ lỗi các chương trình vi điều khiển PIC với giao diện người dùng, đồ họa mạnh mẽ, dễ sử dụng của môi trường phát triển tích hợp MPLAB (IDE) Hãy chắc chắn để kết nối cáp USB với ICD 2 và vào máy tính Sau đó thao tác với phần mềm và tiến hành gỡ lỗi và nạp chương trình [1]
Cấp nguồn cho kit: kit PICDEM 2 PLUS có thể cấp nguồn như sau:
Hình 1.4 Kết nối mạch nạp/gỡ lỗi với kit PICDEM 2PLUS
Kết nối nguồn 9V, kết nối kit PICDEM 2 PLUS như trong hình 2-4 và cắm vào nguồn AC 220V Trên bo thiết bị sẽ tự điều chỉnh giảm điện áp đầu vào xuống 5V
để cho thiết bị hoạt động an toàn Cấp nguồn trực tiếp bằng bộ chuyển đổi AC/DC như hình 1.5 và cấp nguồn bằng pin 9V DC như hình 1.6
Cũng giống như debug trên Mlab SIM thì , Mlab ICD2 cũng có những tính năng tương tự ,nhưng khi sử dụng Mlab ICD2 cần phải có mạch debug rời và các hiện tượng xảy ra giống như khi chạy thực tế Bộ gở rối chương trình (In-circuit debugger: ICD) thì có đủ khả năng thay cho một bộ mô phỏng chương trình (In-
Trang 16circuit emulator: ICE) Nó có thể làm nhiều thứ mà trước đây chỉ thấy với nhiều phần cứng đắt tiền, nhưng giá trị lợi ít mang lại bởi sự cân bằng các yếu tố thuận lợi của một bộ mô phỏng Nếu người dùng sẵn sàng với việc thiết kế những ứng dụng tương thích với ICD, họ có thể nhận được những lợi ích của một bộ gở rối chương trình với giá thành thấp
Hình 1.5 Cấp nguồn trực tiếp bằng bộ chuyển đổi AD/DC từ nguồn AC 220V
Mỗi kit PICDEM 2 PLUS được cung cấp một PIN 9V DC bên ngoài dự trữ khi cần Kết nối pin 9V DC với kit vào vị trí J8 Trên board thiết bị sẽ tự động điều chỉnh điện áp đầu vào xuống 5V để cho thiết bị hoạt động an toàn
Hình 1.6 Cấp nguồn bằng pin 9V DC
Để lập trình lại thiết bị mẫu, cấn có những điều sau đây:
- Mã nguồn chương trình: người dùng viết lại trên phần mềm hoặc có thể sử dụng các chương trình có sẵn, các chương trình mẫu có thể được phục hồi từ tập tin trong chương trình cài đặt Picdem 2 Plus
- Một chương trình hợp ngữ, như MPASM ™ assembler (có sẵn với MPLAB® IDE), hoặc một trình biên dịch, như HI-TECH®C hay MPLAB C18 (chỉ các thiết
bị PIC18)
- Mã nguồn phải được tập hợp hoặc biên dịch thành một tập tin hex trước khi
nó có thể được lập trình trong thiết bị Trình hợp ngữ MPASM, HI-TECH hoặc trình biên dịch C18 của Microchip Technology cũng có thể được sử dụng Cả hai
Trang 17đều tương thích với MPLAB IDE
- Trình biên dịch khác cũng có thể được sử dụng Đối với một danh mục các công cụ ngôn ngữ tương thích PIC MCU, có thể xem trên trang web Microchip (www.microchip.com)
Trang 18A ) PWM (%): Phạm vi (0-100%) , Tần số (10kHz – 250Hz) (Tham khảo chỉ số index hình dưới )
B ) Đây là key hoạt động dựa vào tần số cung cấp cho chuông
Trang 20- Đo nhiệt độ
Chế độ này sử dụng cảm biến nhiệt để đo nhiệt độ xung quanh với thang đo oC
và hiển thị lên màn hình LCD Người dùng có thể thay đổi giữa o C và oF bằng bấm phím RB4.Giao tiếp giữa PIC MCU và cảm biến hoàn thành sử dụng module MSSP chế độ này thoát ra bằng nhấm nút RB0
Hình 1.11 Hiển thị nhiệt độ và thành phần
Hình 1.12 Đọc nhiệt độ A: Hiển thị nhiệt độ thực tế và đơn vị đo
B: Thay đổi đơn vị đo
Hình 1.13 Lỗi giao tiếp I2C Nếu giao tiếp I2C có lỗi thì nó sẽ hiển thị ra chỉ thị như hình trên
- Đồng hồ
Hình 1.14 Hiển thị đồng hồ
Trang 21Đồng hồ thời gian thực sẽ bắt đầu từ 00:00:00 khi khởi động chương trình Module Timer1 và thạch anh 32kHz để thiết lập nên chế độ đồng hồ thời gian thực.Bấm phím RA4 với không có chức năng đồng hồ để người dùng có thể cài đặt đồng hồ
Hình 1.15 Cài đặt đồng hồ Người dùng có thể tăng hoặc giảm giờ hoặc phút bằng các phím RB: Next , RA: tăng 1 đơn vị (++) giảm 1 đơn vị (++)
Hình 1.16 Biểu đồ chung cho các chức năng
Trang 221.3 Sơ lược về PIC
PIC là viết tắt của “Programable Intelligent Computer”, có thể tạm dịch là
“máy tính thông minh khả trình” do hãng Genenral Instrument đặt tên cho vi điều khiển đầu tiên của họ: PIC1650 được thiết kế để dùng làm các thiết bị ngoại vi cho
vi điều khiển CP1600 Vi điều khiển này sau đó được nghiên cứu phát triển thêm
và từ đó hình thành nên dòng vi điều khiển PIC ngày nay
Hiện nay trên thị trường có rất nhiều họ vi điều khiển như 8051, Motorola 68HC, AVR, ARM, Ngoài họ 8051 được hướng dẫn một cách căn bản ở môi trường đại học, bản thân người viết đã chọn họ vi điều khiển PIC để mở rộng vốn kiến thức
và phát triển các ứng dụng trên công cụ này vì các nguyên nhân sau: Họ vi điều khiển này có thể tìm mua dễ dàng tại thị trường Việt Nam Giá thành không quá đắt Có đầy đủ các tính năng của một vi điều khiển khi hoạt động độc lập Là một
sự bổ sung rất tốt về kiến thức cũng như về ứng dụng cho họ vi điều khiển mang tính truyền thống: họ vi điều khiển 8051 Số lượng người sử dụng họ vi điều khiển PIC Hiện nay tại Việt Nam cũng như trên thế giới, họ vi điều khiển này được sử dụng khá rộng rãi Điều này tạo nhiều thuận lợi trong quá trình tìm hiểu và phát triển các ứng dụng như: số lượng tài liệu, số lượng các ứng dụng mở đã được phát triển thành công, dễ dàng trao đổi, học tập, dễ dàng tìm được sự chỉ dẫn khi gặp khó khăn,…Sự hỗ trợ của nhà sản xuất về trình biên dịch, các công cụ lập trình, nạp chương trình từ đơn giản đến phức tạp,…[2]
Các tính năng đa dạng của vi điều khiển PIC, và các tính năng này không ngừng được phát triển
Các dòng PIC và cách lựa chọn với các kí hiệu của vi điều khiển PIC:
- PIC12xxxx: độ dài lệnh 12 bit
- PIC16xxxx: độ dài lệnh 14 bit
- PIC18xxxx: độ dài lệnh 16 bit
Trang 23Bên cạnh đó một số vi điệu khiển có kí hiệu xxFxxx là EEPROM, nếu có thêm chữ A ở cuối là flash (ví dụ PIC16F877 là EEPROM, còn PIC16F877A là flash).Ngoài ra còn có thêm một dòng vi điều khiển PIC mới là dsPIC Ở Việt Nam phổ biến nhất là các họ vi điều khiển PIC do hãng Microchip sản xuất Cách lựa chọn một vi điều khiển PIC phù hợp: Trước hết cần chú ý đến số chân của vi điều khiển cần thiết cho ứng dụng Có nhiều vi điều khiển PIC với số lượng chân khác nhau, thậm chí có vi điều khiển chỉ có 8 chân, ngoài ra còn có các vi điều khiển 28, 40, 44, … chân Cần chọn vi điều khiển PIC có bộ nhớ flash để có thể nạp xóa chương trình được nhiều lần hơn Tiếp theo cần chú ý đến các khối chức năng được tích hợp sẵn trong vi điều khiển, các chuẩn giao tiếp bên trong Sau cùng cần chú ý đến bộ nhớ chương trình mà vi điều khiển cho phép Ngoài ra mọi thông tin về cách lựa chọn vi điều khiển PIC có thể được tìm thấy trong cuốn sách
“Select PIC guide” do nhà sản xuất Microchip cung cấp [2]
1.3.1 Cấu hình phần cứng PIC 16F877A
Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài
14 bit Mỗi lệnh đều được thực thi trong một chu kì xung clock Tốc độ hoạt động tối đa cho phép là 20MHz với một chu kì lệnh là 200ns.Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256x8 byte.Số PORT I/O là 5 với 33 pin I/O.Các đặc tính ngoại vi bao gồm các khối chức năng sau:
- Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit
- Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep
- Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler
- Hai bộ Capture/so sánh/điều chế độ rông xung
- Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ
- Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển
RD, WR, CS ở bên ngoài
Các đặc tính Analog:
- 8 kênh chuyển đổi ADC 10 bit
Trang 24- Hai bộ so sánh
- Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm
- Khả năng tự nạp chương trình với sự điều khiển của phần mềm
- Nạp được chương trình ngay trên mạch điện ICSP (In Circuit Serial Programming) thông qua 2 chân
- Watchdog Timer với bộ dao động trong Chức năng bảo mật mã chương trình Chế độ Sleep
- Có thể hoạt động với nhiều dạng Oscillator khác nhau
- Sử dụng công nghệ tích hợp cao RISC CPU
- Xung clock vào có thể đạy đến 20MHz
- Chu kỳ thực hiện lệnh là 200ns
- Bộ nhớ Flash 8192 words, cho phép ghi 100.000 lần
- Bộ nhớ SRAM 368 bytes
- Bộ nhớ EEPROM 256 bytes, cho phép ghi 1000.000 lần
- Xung clock nội từ 31kHz – 8MHz
- Tích hợp bộ nguồn khởi động lại POR, bộ tạo xung thời gian PWRT, bộ tạo dao động OST, bộ đếm thời gian WDT và bộ reset Brown-out BOR
- Nhiều nguồn Master clear với điện trở kéo bên trong
- Bộ bảo vệ mã chương trình
1.3.2 Tổ chức bộ nhớ
Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương trình (Program memory) và bộ nhớ dữ liệu (Data Memory)
- Bộ nhớ chương trình: Bộ nhớ chương trình của vi điều khiển PIC16F877A là
bộ nhớ flash, dung lượng bộ nhớ 8K word (1 word = 14 bit) và được phân thành nhiều trang (từ page0 đến page 3) Như vậy bộ nhớ chương trình có khả năng chứa được 8*1024 = 8192 lệnh (vì một lệnh sau khi mã hóa sẽ có dung lượng 1word (14 bit).Để mã hóa được địa chỉ của 8K word bộ nhớ chương trình,bộ đếm chương trình có dung lượng 13 bit (PC<12:0>) Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h (Reset vector) Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h (Interrupt vector) [2]
Trang 25Bộ nhớ chương trình không bao gồm bộ nhớ stack và không được địa chỉ hóa bởi bộ đếm chương trình Bộ nhớ stack sẽ được đề cập cụ thể trong phần sau
- Bộ nhớ dữ liệu: Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều bank Đối với PIC16F877A bộ nhớ dữ liệu được chia ra làm 4 bank Mỗi bank có dung lượng 128 byte, bao gồm các thanh ghi có chức năng đặc biệt SFG (Special Function Register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung GPR (General Purpose Register) nằm ở vùng địa chỉ còn lại trong bank Các thanh ghi SFR thường xuyên được sử dụng (ví dụ như thanh ghi STATUS) sẽ được đặt ở tất cà các bank của bộ nhớ dữ liệu giúp thuận tiện trong quá trình truy xuất và làm giảm bớt lệnh của chương trình.Sơ đồ cụ thể của bộ nhớ
dữ liệu PIC16F877A như hình 1.18 sau [2]
Hình 1.17 Bộ nhớ chương trình PIC16F877A
- Thanh ghi chức năng đặc biệt SFR: Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập và điều khiển các khối chức năng được tích hợp bên trong vi điều khiển.Có thể phân thanh ghi SFR làm hai lọai: thanh ghi SFR liên quan đến các chức năng bên trong (CPU) và thanh ghi SRF dùng để thiết lập
Trang 26và điều khiển các khối chức năng bên ngoài (ví dụ như ADC, PWM, …) Phần này
sẽ đề cập đến các thanh ghi liên quan đến các chức năng bên trong Các thanh ghi dùng để thiết lập và điều khiển các khối chức năng sẽ được nhắc đến khi ta đề cập đến các khối chức năng đó
Thanh ghi STATUS (03h, 83h, 103h, 183h):thanh ghi chứa kết quả thực hiện phép toán của khối ALU, trạng thái reset và các bit chọn bank cần truy xuất trong
bộ nhớ dữ liệu
Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc và ghi, cho phép điều khiển chức năng pull-up của các chân trong PORTB,xác lập các tham số
về xung tác động, cạnh tác động của ngắt ngoại vi và bộ đếm Timer0
Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh):thanh ghi cho phép đọc và ghi, chứa các bit điều khiển và các bit cờ hiệu khi timer0 bị tràn,ngắt ngoại vi RB0/INT
và ngắt interrput- on-change tại các chân của PORTB
Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của các khối chức năng ngoại vi
Thanh ghi PIR1 (0Ch) chứa cờ ngắt của các khối chức năng ngoại vi,các ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1
Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối chức năng CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM
Trang 27Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng ngoại vi, các ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE2
Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độ reset của vi điều khiển
Thanh ghi mục đích chung GPR.Các thanh ghi này có thể được truy xuất trực tiếp hoặc gián tiếp thông qua thanh ghi FSG (File Select Register) Đây là các thanh ghi dữ liệu thông thường, người sử dụng có thể tùy theo mục đích chương trình mà có thể dùng các thanh ghi này để chứa các biến số, hằng số, kết quả hoặc các tham số phục vụ cho chương trình
Stack: Ngăn xếp (stack) một ngăn xếp là một cấu trúc dữ liệu dạng thùng chứa (container) của các phần tử (thường gọi là các nút (node)) và có hai phép toán cơ bản: push and pop Push bổ sung một phần tử vào đỉnh (top) của ngăn xếp, nghĩa là sau các phần tử đã có trong ngăn xếp Pop giải phóng và trả về phần
tử đang đứng ở đỉnh của ngăn xếp Trong stack, các đối tượng có thể được thêm vào stack bất kỳ lúc nào nhưng chỉ có đối tượng thêm vào sau cùng mới được phép lấy ra khỏi stack.Stack không nằm trong bộ nhớ chương trình hay bộ nhớ
dữ liệu mà là một vùng nhớ đặc biệt không cho phép đọc hay ghi.Khi lệnh CALL được thực hiện hay khi một ngắt xảy ra làm chương trình bị rẽ nhánh, giá trị của
bộ đếm chương trình PC tự động được vi điều khiển cất vào trong stack.Khi một trong các lệnh RETURN, RETLW hay RETFIE được thực thi, giá trị PC sẽ tự động được lấy ra từ trong stack, vi điều khiển sẽ thực hiện tiếp chương trình theo đúng qui trình định trước.Bộ nhớ Stack trong vi điều khiển PIC họ 16F87xA
có khả năng chứa được 8 địa chỉ và hoạt động theo cơ chế xoay vòng Nghĩa là giá trị cất vào bộ nhớ Stack lần thứ 9 sẽ ghi đè lên giá trị cất vào Stack lần đầu tiên và giá trị cất vào bộ nhớ Stack lần thứ 10 sẽ ghi đè lên giá trị cất vào Stack
Trang 28lần thứ 2.Cần chú ý là không có cờ hiệu nào cho biết trạng thái stack, do đó ta không biết được khi nào stack tràn.Bên cạnh đó tập lệnh của vi điều khiển dòng PIC cũng không có lệnh POP hay PUSH, các thao tác với bộ nhớ stack sẽ hoàn toàn được điều khiển bởi CPU
Hình 1.18 Sơ đồ bộ nhớ dữ liệu PIC16F877A [3]
Trang 291.3.3 Sơ đồ chân
Hình 1.19 dưới là sơ đồ chân của vi điều khiển Pic 16F877A
- Chân OSC1/CLK1(13): ngõ vào kết nối với dao động thạch anh hoặc ngõ vào nhận xung clock từ bên ngoài
- Chân OSC2/CLK2(14): ngõ ra dao động thạch anh hoặc ngõ ra cấp xung clock
Hình 1.19 Sơ đồ chân PIC 16F877A [4]
- Chân MCLR/VPP(1) có 2 chức năng
+ MCLR: ngõ vào reset tích cực ở mức thấp
+ Vpp: ngõ vào nhận điện áp lập trình khi lập trình cho PIC
- Chân RA0/AN0(2), RA1/AN1(3), RA2/AN2(3): có 2 chức năng
+ RA0,1,2: xuất/ nhập số
+ AN 0,1,2: ngõ vào tương tự của kênh thứ 0,1,2
- Chân RA2/AN2/VREF-/CVREF+(4): xuất nhập số/ ngõ vào tương tự của kênh thứ 2/ nhõ vào điện áp chuẩn thấp của bộ AD/ ngõ vào điện áp chẩn cao của
Trang 30- Chân RB6/PGC(39): xuất nhấp số/ mạch gỡ rối và xung clock lập trình ICSP
- Chân RB7/PGD(40): xuất nhập số/ mạch gỡ rối và dữ liệu lập trình ICSP
- Chân RC0/T1OCO/T1CKI(15): xuất nhập số/ ngõ vào bộ giao động Timer1/ ngõ vào xung clock bên ngoài Timer 1
- Chân RC1/T1OSI/CCP2(16): xuất nhập số/ ngõ vào bộ dao động Timer 1/ ngõ vào Capture2, ngõ ra compare2, ngõ ra PWM2
- Chân RC2/CCP1(17): xuất nhập số/ ngõ vào Capture1 ,ngõ ra compare1, ngõ
- Chân RC5/SDO(24): xuất nhập số/ dữ liệu ra SPI
- Chân RC6/TX/CK(25): xuất nhập số/ truyền bất đồng bộ USART/ xung đồng
bộ USART
- Chân RC7/RX/DT(26): xuất nhập số/ nhận bất đồng bộ USART
- Chân RD0-7/PSP0-7(19-30): xuất nhập số/ dữ liệu port song song
- Chân RE0/ RD/AN5(8): xuất nhập số/ điều khiển port song song/ ngõ vào tương tự 5
- Chân RE1/ WR /AN6(9): xuất nhập số/ điều khiển ghi port song song/ ngõ vào tương tự kênh thứ 6
- Chân RE2/ CS /AN7(10): xuất nhấp số/ Chân chọn lụa điều khiển port song song/ ngõ vào tương tự kênh thứ 7
- Chân VDD(11, 32) và VSS(12, 31): là các chân nguồn của PIC [5]
Trang 31Các đặc tính ngoại vi bao gồm các khối chức năng sau:
- Timer0: bộ định thời 8 bit với bộ chia tần số
- Timer1: bộ định thời 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ Sleep
- Timer2: bộ định thời 8 bit với bộ chia tần số, 1 bộ Poscaler, 2 bộ Capture/ Compare/ PWM.[b]
Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port) SPI và I2C.Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ.Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển RD, WR, CS ở bên ngoài
+ Khối ALU – Arithmetic Logic Unit
+ Khối bộ nhớ chứa chương trình – Flash Program Memory
+ Khối bộ nhớ chứa dữ liệu EPROM – Data EPROM
+ Khối bộ nhớ file thanh ghi RAM – RAM file Register
+ Khối giải mã lệnh và điều khiển – Instruction Decode Control
+ Khối thanh ghi đặc biệt
+ Khối ngoại vi timer
+ Khối giao tiếp nối tiếp
+ Khối chuyển đổi tín hiệu tương tự sang số - ADC
+ Khối các port xuất nhập
Hình 1.20 thể hiện các khối của vi điều khiển PIC 16F877A cũng như thành phần chức năng và mối liên kết qua lại lẫn nhau giữa các khối
1.3.4 Đặc điểm vi điều khiển PIC 16F877A
Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài
14 bit Mỗi lệnh đều được thực thi trong một chu kì xung clock Tốc độ hoạt động tối đa cho phép là 20 MHz với một chu kì lệnh là 200ns Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256x8 byte Số PORT I/O là 5 với 33 pin I/O Có 8 kênh chuyển đổi A/D
- Các đặc tính ngoại vi bao gồmcác khối chức năng sau:
+ Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit
+ Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep
Trang 32+ Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler
+ Hai bộ Capture/so sánh/điều chế độ rông xung
+ Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C + Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ.Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển RD, WR,
Hình 1.20 Sơ đồ khối vi điều khiển PIC16F887 [5]
- Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:Bộ nhớ flash với khả năng ghi xóa được 100.000 lần.Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần.Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm.Khả năng tự nạp chương trình với sự điều khiển của phần mềm.Nạp được chương trình ngay
Trang 33trên mạch điện ICSP (In Circuit Serial Programming) thông qua 2 chân Watchdog Timer với bộ dao động trong.Chức năng bảo mật mã chương trình.Chế độ Sleep.Có thể hoạt động với nhiều dạng Oscillator khác nhau.[5]
Bảng 1.2 Tóm tắt đặc điểm của VDK PIC 16F877A
Reset (và Delay) POR, BOR (PWRT, OST)
Bộ nhớ chương trình Flash (14-bit
Trang 341.3.5 Các cổng xuất nhập của PIC 16F877A
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng để tương tác với thế giới bên ngoài Sự tương tác này rất đa dạng và thông qua quá trình tương tác đó, chức năng của vi điều khiển được thể hiện một cách rõ ràng Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân (I/O pin), tùy theo cách bố trí và chức năng của vi điều khiển mà số lượng cổng xuất nhập và số lượng chân trong mỗi cổng có thể khác nhau Bên cạnh đó, do vi điều khiển được tích hợp sẵn bên trong các đặc tính giao tiếp ngoại vi nên bên cạnh chức năng là cổng xuất nhập thông thường, một số chân xuất nhập còn có thêm các chức năng khác để thể hiện
sự tác động của các đặc tính ngoại vi nêu trên đối với thế giới bên ngoài Chức năng của từng chân xuất nhập trong mỗi cổng hoàn toàn có thể được xác lập và điều khiển được thông qua các thanh ghi SFR liên quan đến chân xuất nhập đó
Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB, PORTC, PORTD và PORTE Cấu trúc và chức năng của từng cổng xuất nhập sẽ được đề cập cụ thể trong phần sau
- PORTA
PORTA (RPA) bao gồm 6 I/O pin Đây là các chân “hai chiều” (bidirectional pin), nghĩa là có thể xuất và nhập được Chức năng I/O này được điều khiển bởi thanh ghi TRISA (địa chỉ 85h) Muốn xác lập chức năng của một chân trong PORTA là input, ta thiết đặt bit điều khiển tương ứng với chân đó trong thanh ghi TRISA và ngược lại, muốn xác lập chức năng của một chân trong PORTA là
Trang 35output, ta xóa bit điều khiển tương ứng với chân đó trong thanh ghi TRISA Thao tác này hoàn toàn tương tự đối với các PORT và các thanh ghi điều khiển tương ứng TRIS (đối với PORTA là TRISA, đối với PORTB là TRISB, đối với PORTC
là TRISC, đối với PORTD là TRISD vàđối với PORTE là TRISE) [5]
Bên cạnh đó PORTA còn là ngõ ra của bộ ADC, bộ so sánh, ngõ vào analog ngõ vào xung clock của Timer0 và ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial Port) Đặc tính này sẽ được trình bày cụ thể trong phần sau Các thanh ghi SFR liên quan đến PORTA bao gồm:
PORTA (địa chỉ 05h): chứa giá trị các pin trong PORTA
TRISA (địa chỉ 85h): chứa giá trị các pin trong PORTA
CMCON (địa chỉ 9Ch): thanh ghi điều khiển bộ so sánh
CVRCON (địa chỉ 9Dh): thanh ghi điều khiển bộ so sánh điện áp
ADCON1 (địa chỉ 9Fh): thanh ghi điều khiển bộ ADC
- PORTB
PORTB (RPB) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tương ứng là TRISB Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau PORTB còn liên quan đến ngắt ngoại vi và bộ Timer0 PORTB còn được tích hợp chức năng điện trở kéo lên được điều khiển bởi chương trình [5]
Các thanh ghi SFR liên quan đến PORTB bao gồm:
PORTB (địa chỉ 06h,106h): chứa giá trị các pin trong PORTB
TRISB (địa chỉ 86h,186h): điều khiển xuất nhập
OPTION_REG (địa chỉ 81h,181h): điều khiển ngắt ngoại vi và bộ Timer0
- PORTC
PORTC (RPC) gồm 8 pin I/O.Thanh ghi điều khiển xuất nhập tương ứng là TRISC Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh, bộ Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART
Các thanh ghi điều khiển liên quan đến PORTC:
PORTC: chứa giá trị các pin trong PORTC
TRISC: Điều khiển xuất nhập
Trang 36- PORTD
PORTD (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng là TRISD PORTD còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP (Parallel Slave Port)
Các thanh ghi liên quan đến PORTD bao gồm:
Thanh ghi PORTD: chứa giá trị các pin trong PORTD
Thanh ghi TRISD: điều khiển xuất nhập
- PORTE
PORTE (RPE) gồm 3 chân I/O Thanh ghi điều khiển xuất nhập tương ứng là TRISE Các chân của PORTE có ngõ vào analog Bên cạnh đó PORTE còn là các chân điều khiển của chuẩn giao tiếp PSP
Các thanh ghi liên quan đến PORTE bao gồm:
PORTE: chứa giá trị các chân trong PORTE
TRISE: điều khiển xuất nhập và xác lập các thông số cho chuẩn giao tiếp PSP ADCON1: thanh ghi điều khiển khối ADC
1.3.6 TIMER
- Timer 0
Đây là một trong ba bộ đếm hoặc bộ định thời của vi điều khiển PIC16F877A Timer0 là bộ đếm 8 bit được kết nối với bộ chia tần số (prescaler) 8 bit Cấu trúc của Timer0 cho phép ta lựa chọn xung clock tác động và cạnh tích cực của xung clock Ngắt Timer0 sẽ xuất hiện khi Timer0 bị tràn Bit TMR0IE (INTCON<5>) là bit điều khiển của Timer0 TMR0IE= 1 cho phép ngắt Timer0 tác động, TMR0IF=
0 không cho phép ngắt Timer0 tác động Sơ đồ khối của Timer0 như hình 1.19 Muốn Timer0 hoạt động ở chế độ Timer ta clear bit TOSC (OPTION_ REG<5>), khi đó giá trị thanh ghi TMR0 sẽ tăng theo từng chu kì xung đồng hồ (tần số vào Timer0 bằng ¼ tần số oscillator) Khi giá trị thanh ghi TMR0 từ FFh trở về 00h, ngắt Timer0 sẽ xuất hiện
Thanh ghi TMR0 cho phép ghi và xóa được giúp ta ấn định thời điểm ngắt Timer0 xuất hiện một cách linh động Muốn Timer0 hoạt động ở chế độ counter ta set bit TOSC (OPTION_REG<5>) Khi đó xung tác động lên bộ đếm được lấy từ chân RA4/TOCK1 Bit TOSE (OPTION_REG<4>) cho phép lựa chọn cạnh tác