Hướng dẫn sử dụng Kit 89 Bài 8 : Điều khiển Ma trận led Mục đích: Ứng dụng quét Led để điều khiển Ma trận led 2 màu. Yêu cầu: Viết chương trình định kì 1s xuất các chữ cái in hoa từ A-Z ra ma trận led. 8.1 Nguyên lý điều khiển ma trận led Ma trận led 2 màu được cấu tạo gồm những điểm sáng, mỗi điểm sáng có 2 bóng đèn đỏ và xanh lá bên trong. Khi cả 2 đèn này cùng sáng cho ta cảm giác màu vàng. Nguyên lý điều khiển ma trận led cũng tương tự như led 7 đoạn, ta dùng Port1 để chọn cột, Port0 và Port2 dùng để gửi dữ liệu đỏ và xanh cho hàng đó. Các kĩ thuật điều khiển ở ma trận led hoàn toàn tương tự như led 7 đoạn. 8.2 Kết nối phần cứng Gạt switch 3 lên ON để kích hoạt ma trận led. 8.3 Viết chương trình Chương trình được tổ chức gồm 3 module : MAIN để chứa file main.c, TIMER để gọi hàm quét ma trận led và LED MATRIX để chứa các hàm liên quan đến ma trận led. Các hàm về ma trận led như sau : void init_led_matrix(); //Khởi tạo ma trận led void scan_led_matrix(); //Quét ma trận led, hàm này được gọi trong timer. void update_display_led_matrix(); //Cập nhật buffer hiển thị. BKIT HARDWARE CLUB – www.bkit4u.com 52 Hướng dẫn sử dụng Kit 89 8.3.1 Hàm init_led_matrix() void init_led_matrix() { P0 = 0x00; //red data P2 = 0x00; //green data index_led_matrix = 0; //index use to scan led alphabet_index = 208;// in the initial, led matrix doesn't display anything } Trong đó : P0 : Port để xuất dữ liệu đỏ cho ma trận led. P2 : Port để xuất dữ liệu xanh cho ma trận led. index_led_matrix : biến dùng để quét dữ liệu hiển thị trên ma trận led, ta dùng biến này để lấy dữ liệu trong 2 buffer (mỗi buffer 8 phần tử) để hiển thị và chọn cột. alphabet_index : biến dùng để lấy dữ liệu cần hiển thị, bỏ vào 2 buffer đỏ và xanh. Mả ng dữ liệu này thường khá lớn và được khai báo trong file table_led_matrix.h. 8.3.2 Hàm scan_led_matrix() Hàm này được gọi trong timer, có nhiệm vụ xuất buffer hiển thị ra ma trận led, định kì xuất từng phần tử của buffer ra cột tương ứng. void scan_led_matrix() { P1 = 0; //remove noise P0 = red_buff[index_led_matrix]; P2 = green_buff[index_led_matrix]; P1 = 1 << index_led_matrix; index_led_matrix = (index_led_matrix + 1) % 8; //next column } 8.3.3 Hàm update_display_led_matrix() Hàm này dùng để thay đổi nội dung hiển thị, các ứng dụng của người dùng chủ yếu là thay đổi code ở hàm này. void update_display_led_matrix() { char i; for(i = 0; i < 8; i++) { red_buff[i]=alphabet_upcase_led_matrix[i+alphabet_index ]; green_buff[i]=alphabet_upcase_led_matrix[i+alphabet_index]; } } Hàm main chỉ việc thay đổi alphabet_index (dữ liệu của chữ cái kế tiếp) rồi gọi hàm update_display_led_matrix(), định kì 1s sau đó thay đổi chữ kế tiếp: BKIT HARDWARE CLUB – www.bkit4u.com 53 Hướng dẫn sử dụng Kit 89 while(1) { alphabet_index = (alphabet_index + 8) % 216; update_display_led_matrix(); delay_ms(1000); } BKIT HARDWARE CLUB – www.bkit4u.com 54 . tiếp: BKIT HARDWARE CLUB – www.bkit4u.com 53 Hướng dẫn sử dụng Kit 89 while(1) { alphabet_index = (alphabet_index + 8) % 216; update_display_led_matrix(); delay_ms(1000); } BKIT HARDWARE. update_display_led_matrix(); //Cập nhật buffer hiển thị. BKIT HARDWARE CLUB – www.bkit4u.com 52 Hướng dẫn sử dụng Kit 89 8. 3.1 Hàm init_led_matrix() void init_led_matrix() { P0 = 0x00;. Hướng dẫn sử dụng Kit 89 Bài 8 : Điều khiển Ma trận led Mục đích: Ứng dụng quét Led để điều khiển Ma trận led 2 màu. Yêu cầu: