PDA

View Full Version : led ma trận sử dụng 74595


lanoltn
09-11-2012, 11:25 PM
mọi người cho e hỏi...mạch như vậy thì liệu thực tế có ổn k?...code như vậy thì muốn mở rộng thêm thì làm thế nào..hi..do code này là e copy của mỗi người 1 ít nên bây h k bít mở rộng như thế nào

youaremylife
10-11-2012, 02:52 AM
mạch này để mô phỏng chơi thôi, thực tế lắp thế thì chắc là không ổn rồi.
Bạn muốn mở rộng nhưng mở rộng thế nào, ma trận bạn cần là mấy hàng mấy cột.
Cái chương trình viết theo kiểu tạo hiệu ứng theo bảng dữ liệu, bạn muốn viết hiệu ứng thì chỉ việc điền dữ liệu vào cái bảng dữ liệu.
Nói chung là chương trình rất cơ bản, mã viết thế ko có gì là đặc biệt cả
-------------------------------------------------
Đây là một vài gợi ý cho bạn
- Tạo mảng dữ liệu cho bộ đệm hiển thị
ví dụ ở đây có 8 hàng 8bit = byte
32 cột = 32 byte
bộ đệm byte buffer[32];
- Thực hiện quét led trong ngắt timer, nhiệm vụ của nó đơn giản là quét toàn bộ mảng dữ liệu đó lên các led ma trận buffer[0] tương ứng với cột 0. chương trình ngắt này ko quét hết led trong cùng 1 ngắt mà sẽ được chia đều thời gian hạn chế tối đa sử dụng các hàm delay trong ngắt.
- Chương trình của bạn chỉ đơn giản là cập nhật cái mảng dữ liệu này, nếu việc thao tác trên mảng cần nhiều thời gian thì bạn cần copy mảng này vào một mảng khác sau đó thao tác trên mảng này sau đó thực hiện cập nhật.
- Tạo bảng mã font chữ của riêng bạn, bộ đệm mã font
- bộ đệm chuỗi dữ liệu cần hiển thị byte string[MAX_STRING_LEN];
Một ví dụ việc tạo hiệu ứng chạy chữ như sau (pseudo code)

do
{
ch = string[i++];
if(ch == NULL) return; //ket thu chuoi
Load_font(ch); // doc ma font ky tu vao bo dem
for(j=0;j<8;j++) // duyet qua cac phan tu cua ma font
{
buffer[31] = fontbuf[j]; //cap nhat vao bo dem
shift_left_buffer(1); //dich bo dem hien thi sang trai 1
//buffer[0] = buffer[1];
//buffer[1] = buffer[2];
//buffer[31] = 0;
delay_ms(x); // tre tao hieu ung
}
}while(1);

tương tự bạn có thể hiệu ứng gì đó cũng được bạn không càn phải quan tâm đến việc quét led

lanoltn
10-11-2012, 10:50 PM
e sẽ thử theo cách của bác..hihi...bác có ý tưởng cho hiệu ứng dịch từng ký tự của 1 chữ k?...hay hiệu ứng rót nước cũng được...e k có ý tưởng gì hết..hĩ