Tải bản đầy đủ (.pdf) (3 trang)

Hướng dẫn sử dụng Kit 89 - Bài 8 ppsx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (281.69 KB, 3 trang )

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

×