Thuật toán chương trình chính

Một phần của tài liệu Công nghệ chế tạo vi điều khiển PIC16F887. (Trang 39 - 42)

Thuật toán chương trình chính được thể hiện trong hình 4.1 (trang 33).

Chương trình khai báo các biến toàn cục là Ki, Kp, Kd, Sp. Các biến Ki, Kp, Kd đóng vai trò là các tham số của bộ xử lý PID. Biến Sp là biến chứa vận tốc thực của động cơ đo được nhờ đếm xung encoder.

Sp: vận tốc của động cơ. Ki: hệ số tích phân. Kp: hệ số tuyến tính. Kd: hệ số vi phân.

Tiếp theo ta khởi tạo các thiết bị ngoại vi cho PIC16F887: - Cài đặt bộ timer2 hoạt động ở chế độ PWM.

Chương 4: Thiết kế phần mềm

- Cấu hình chân RB1 hoạt động ở chế độ PWM.

- Thiết lập thanh ghi Trisa là 0xFF. Với thiết lập này thì porta sẽ được cấu hình là port nhập. Porta được sử dụng để kết nối với các phím.

- Thiết lập thanh ghi Trisd là 0. Với thiết lập này thì portd là port xuất. Portd được sử dụng để kết nối với 8 chân dữ liệu của LCD.

- Thiết lập thanh ghi Trise là 0. Với thiết lập này thì porte là port xuất. Porte được sử dụng để kết nối với 3 chân điều khiển của LCD.

- Cài đặt cho bộ UART hoạt động ở tốc độ Baud 9600kbits/s.

- Bộ UART được sử dụng để giao tiếp nối tiếp không đồng bộ với máy tính, cho phép mạch điều khiển truyền dữ liệu lên máy tính, và nhận dữ liệu từ máy tính. Ở đây, bộ UART truyền hoạt động ở chế độ thăm dò. Còn bộ UART nhận hoạt động ở chế độ ngắt.

- Cho phép ngắt timer1. Bộ timer1 kết hợp với ngắt ngoài trên chân RB0 được sử dụng để đo tốc độ động cơ.

- Cho phép ngắt sườn lên trên chân RB0, chân RB0 kết nối với chân tín hiệu của encoder. Khi có sườn lên tại chân RB0, ngắt RB0 sẽ xảy ra. Sau khi khởi tạo cho các thiết bị ngoại vi, chương trình sẽ thực hiện vòng lặp vô hạn. Bắt đầu vòng lặp, chương trình gọi hàm quét phím. Thuật toán nhận phím của hàm quét phím sẽ kiểm tra phím nhấn, loại bỏ quá trình rung của phím. Tiếp theo chương trình sẽ kiểm tra có phím nhấn hay không. Nếu không có, chương trình sẽ quay trở về đầu vòng lặp. Nếu có, chương trình sẽ gọi hàm xử lý phím nhấn. Sau đó quay trở về đầu vòng lặp.

Như vậy, chương trình chính sẽ khởi tạo cho các thiết bị ngoại vi, sau đó kiểm tra phím nhấn. Khi xảy ra các ngắt, chương trình sẽ thực hiện chương trình phục vụ ngắt của ngắt tương ứng.

Chương trình phục vụ ngắt timer1 được phân tích trong mục 4.2.1.3. Chương trình phục vụ ngắt nhận UART được phân tích trong mục 4.2.1.4. Chương trình phục vụ ngắt RB0 chỉ làm một nhiệm vụ là tăng biến đếm xung encoder. Chương trình này sẽ không được phân tích trong đề tài.

Chương 4: Thiết kế phần mềm

Do tính phổ biến, các thuật toán của các hàm giao tiếp LCD sẽ không được phân tích trong đề tài.

Hình 4.1 Lưu đồ thuật toán chương trình chính. Bắt đầu

Khai báo các biến toàn cục Kp, Ki, Kd, SP

Cài đặt Timer2 ở chế độ PWM Cài đặt UART tốc độ Baud 9600kbits/s Chọn chân RB1 hoạt động ở chế độ PWM

Thiết lập thanh ghi TRISA là 0xFF.(porta là port nhập, kết nối với phím) Thiết lập thanh ghi TRISD là 0 (portd là port xuất, kết nối với chân dữ liệu LCD) Thiết lập thanh ghi TRISE là 0(porte là port xuất, kết nối với chân điều khiển LCD)

Cho phép ngắt nhận UART

Cho phép ngắt timer1. Timer1 được dùng để đo tốc độ. Cho phép ngắt ngoài trên chân RB0

Có phím nhấn? Gọi hàm quét phím

Gọi hàm xử lý phím nhấn Đúng

Chương 4: Thiết kế phần mềm

Một phần của tài liệu Công nghệ chế tạo vi điều khiển PIC16F887. (Trang 39 - 42)