L ỜI CAM Đ OAN i
3.2.2. Các bài thực hành cho chip AVR Atmega128 73
KIT BKFET được tích hợp nhân Atmega128 sử dụng bộ dao động ngoại (thạch anh) với tần số là 8Mhz.
AVR Studio là 1 phần mềm hỗ trợ lập trình cho AVR bằng ngôn ngữ
Assembly về bản chất không hỗ trợ ngôn ngữ C, tuy nhiên cho phép tích hợp trình dịch C của bộ công cụ Win AVR.
Bằng cách sử dụng phần mềm, nhóm nghiên cứu đã xây dựng được một số bài thực hành Vi điều khiển, Hệ thống nhúng sử dụng chip AVR như điều khiển led
đơn, led 7 thanh, led matrix; hiển thị LCD; điều khiển tốc độđộng cơ…
Ví dụ: Viết một chương trình thực hiện bật tắt 8 đèn LED với thời gian LED sáng là 500ms, thời gian LED tắt 500ms. Biết rằng cả 8 đèn LED được kết nối tại PORTE trên KIT BKFET. Thực hiện mô phỏng trên phần mềm Proteus và nạp trực tiếp lên KIT để kiểm chứng kết quả.
Phân tích bài toán:
Theo mục 2.2.1 Chương 2, phần cấu tạo LED đơn cho ta biết về nguyên lý kết nối.
- LED sáng cần cấp mức logic “0” - LED tắt cần cấp mức logic “1”
Yêu cầu đề bài bật tắt đèn, vậy đây là tín hiệu cần được điều khiển bởi AVR. Dựa vào đây để xác định đường tín hiệu trên các chân giao tiếp với LED phải là output.
Hướng dẫn lập trình:
Bước 1: tạo Project mới: LED_DON Bước 2: soạn thảo code
1. #include <avr/io.h>
2. #define F_CPU 8000000UL 3. #include <util/delay.h> 4. int main(void) { 5. DDRE = 0b11111111; 6. PORTE = 0b11111111; 7. while(1) { 8. PORTE = 0b00000000; 9. _delay_ms(500); 10. PORTE = 0b11111111; 11. _delay_ms(500); 12. }}
Bước 3: tiến hành kiểm tra lỗi: ấn phím F7 hoặc trên thanh công cụ vào mục Buid -> Buid.
Bước 4: tiến hành mô phỏng trên proteus, kiểm chứng kết quả.
Bước 5: Nạp chương trình lên KIT so sánh, đánh giá với kết quả mô phỏng.
Giải thích đoạn chương trình:
Dòng 1. Cho phép trình biên dịch sử dụng bộ thư viện I/O của AVR nằm trong folder avr chứa trong bộ cài để biên dịch. Dòng số 2 định nghĩa tần số, ta sử dụng thạch ngoài là 8Mhz tương đương với 8000000, dòng này bắt buộc phải khai báo nếu như có sử dụng bộ thư viện delay được cung cấp sẵn, nếu không khai báo mặc
định trình biên dịch sẽ định nghĩa tần số sử dụng là 1 Mhz. Dòng 3 khai báo sử
dụng bộ thư viện delay. Dòng 4 khai báo hàm main(), main là hàm được thực thi khi chương trình được nạp lên chip. Dòng 5 khai báo PORTE có hướng output, cho
phép các chân tín hiệu điều khiển ngoại vi, trong trường hợp này là điều khiển đèn LED, “0b” báo cho trình biên dịch biết ta sử dụng mã nhị phân cho dãy số phía sau. Dòng 6 điều khiển tín hiệu trên PORTE, trường hợp tất cả các chân có mức logic “1” đồng nghĩa chúng ta khởi tạo LED tắt ở thời điểm đầu. Dòng 7 là 1 vòng lặp vô tận do điều kiện luôn đúng, toàn bộ đoạn chương trình phía trong vòng lặp sẽ được thực hiện tuần tự từ trên xuống dưới, tới câu lệnh cuối cùng thì sẽ tựđộng nhảy đến câu lệnh đầu tiên. Dong 8 đầu ra có mức logic “0”(0V) cho phép cả 8 LED sáng. Dòng 9 tạo khoảng thời gian trễ theo đề bài là 500ms. Tương tự với dòng 10 và 11.
Cụ thể về yêu cầu của các bài thực hành cũng như hướng dẫn chi tiết các bước thực hành có thể tham khảo các tài liệu hướng dẫn sử dụng cũng như các tài liệu hướng dẫn thực hành đi kèm kit.