Mua linh kiện điện tử tại Điện tử Nhật Tùng
Khóa học Vi điều khiển có phí Hình thức học: Video hoặc Kèm trực tiếp ===>>>> Kích vào hình để được biết thêm chi tiếtTable of Contents
Tải File bài giải
Pass giải nén: Huynhnhattung.com
===>>> Nếu bạn chưa có phần mềm giải nén:
Video Đọc xung encoder, Ngắt ngoài INT + Tính góc + Led 7 đoạn
Blog Đọc xung encoder, Ngắt ngoài INT + Tính góc + Led 7 đoạn
Đề bài đọc xung Encoder:
Bài giải đọc xung Encoder:
Phần cứng chương trình đọc xung Encode:
- Đầu tiên sử dụng đếm sản phầm thông qua Counter0 vì vậy bắt buộc gắn vào chân RA4/T0CKI để đếm sản phẩm. Khi làm mạch thực tế nên sử dụng cảm biến hồng ngoại hoặc quang và một vài cảm biến liên quan khác.
- Nút nhấn STOP dùng để dừng hệ thống nhấp nháy theo thời gian cố định sáng 3s, tắt 3s. Đây được xem là nút nhấn khẩn cấp khi hệ thống gặp sự cố.
- Hiển thị thời gian được quy định ra một Led 7 đoạn anot chung được nối vào Port D và Port C. Cách tính trở 330 xem trong giáo trình thầy Nguyễn Đình Phú
- Led đơn khi sử dụng cho vi điều khiển phải gắn thêm trở 330 để bảo vệ led đơn. Cách tính xem lại lý thuyết mạch điện.
- Các linh kiện chính cần sử dụng tham khảo tại.
Thông số kỹ thuật Mua Linh kiện Pic16F877A Pic16F877A Led đơn Led đơn Điện trở Điện trở Nút nhấn Nút nhấn Thạch anh Thạch anh Led 7 đoạn Anot Led 7 đoạn Anot Tranzitor A1015 Tranzitor A1015 Cảm biến Encoder Cảm biến Encoder
Phần mềm đọc xung Encoder:
Khai báo thư viện tiền sử lý của đọc xung encoder:
- Vi điều khiển hiện tại mình đan dùng là Pic16F877A
- Hiện dùng thạch anh ngoài và thạch anh ngoài khai báo 20M bằng lệnh #Fuses hs và #delay(clock=20M).
- Mã 7 đoạn là đoạn mã Anot: Cấu trúc lệnh cho bạn nào cần copy : ” unsigned int8 ma7doan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8.0x80,0x90,0xff} “.
- Định nghĩa chân: tùy theo chức năng của chân mà tên định nghĩa được bám sát vào nội dung đan thực hiện.
- Tên khai báo biến phụ thuộc vào chức năng để khai báo cho phù hợp.
- Hàm khai báo #int_ext là ngắt ngoài INT, chương trình con void ngat_ngoai(); sảy ra khi có sự thay đổi xung ngõ vào. Khi sảy ra tăng giá trị đếm xung lên một đơn vị, cứ tăng được 1 xung tương ứng với tăng lên 1.8 độ.
Chương trình chính thực hiện toàn bộ hoạt động của vi điều khiển dùng Đọc xung Encoder
- Bắt đầu chương trình chính phải khởi tạo ngõ vào ra cho vi điều khiển. Một chân của vi điều khiển thì làm nhiệm vụ I/O vì thế phải khỏi tạo. Port B dùng cho chân nhận xung của ngắt ngoài INT EXT để đưa vào Vi điều khiển vì thế khởi tạo giá trị là 0x01. Port D, Port C sử dụng cho Led 7 đoạn vì vây khởi tạo là 0x00.
- Khởi tạo chương trình ngắt gồm Global là khởi tạo ngắt toàn cục, nói đơn giản hơn là cho phép các chương trình ngắt sảy ra, INT_EXT là cho phép chương trình ngắt ngoài hoạt động, đặt biệt là lệnh báo trạng thái thay đổi của xung để ngắt ext_int_edge(L_TO_H);
- Các giá trị ban đầu gán bằng 0 đây là điều bắt buộc vì nếu không gán hệ thống sẽ tự Ramdom trong các biến theo giá trị khai báo.
- Một vòng có 360 độ và 200 xung trả về vì vậy góc sẽ tính bằng cách lấy xung đọc được nhân cho 1.8 hoặc 360/200.
- Khi góc trả về lớn hơn 999 thì gán lại giá trị ban đầu bằng 0. Sau đó hiển thị thông tin ra 3 led 7 đoạn.
Chúc các bạn có một kỳ thi thành công…!!!