PDA

View Full Version : [LED Matrix] Cần giúp đỡ về giải thuật


meishun
05-12-2009, 02:23 PM
Chào các bác,

Em đang làm dự án về LED matrix, dùng loại 5x7. Việc hiển thị kí tự ra thì em đã làm được, tuy nhiên, em gặp chút khó khăn trong việc cho LED SÁNG DẦN từ LED 1 đến LED 35 sau mỗi 150ms (xem hình đính kèm). Em đã làm như sau:
- Cho LED1 sáng
- Cho LED1 và LED2 cùng sáng
...
- Cho LED1,2,3,4,5 cùng sáng (lúc này 5 LED sáng dần sau mỗi 150ms, OK, chưa có vấn đề gì)
- Problem: Bật LED thứ 6 sáng (LED này nằm ở hàng 2 cột 1, trong khi yêu cầu là 5 LED trước đó vần sáng). Em cho việc quét 5 LED 1-5 lặp lại đúng 150ms để bật LED 6, lúc này có vẻ ... ổn.
- Khi bật đến LED 13 (làm tương tự trên) thì trình dịch báo lỗi "ROM space error". Em ko hiểu là cho quá nhiều vòng lặp for lồng vào nhau sẽ sinh ra code quá nhiều hay vì trình dịch chọn page bộ nhớ ko được??? Theo em tính toán thì mỗi lần quét 1 LED chỉ tốn cao lắm là vài chục từ nhớ.

==> Mong các cao thủ chỉ em giải thuật nào hay và hiệu quả hơn để em giải quyết bài toán này ạh.
Chân thành cảm ơn :)
P/S: code C càng tốt ạ ^^

namqn
05-12-2009, 02:57 PM
Lỗi của bạn liên quan đến cách viết code, nhưng không thấy code của bạn.

Thân,

meishun
05-12-2009, 08:51 PM
Vâng, đúng là lỗi lập trình anh Nam ạ.
Lí do: em viết chương trình chuối quá, cái hàm điều khiển LED sáng dần từ LED1 đến LED35 quá dài (hơn 550 dòng, ngôn ngữ C). Do đó, khi biên dịch sang mã máy, trình biên dịch ko thể, hoặc ko cho phép, cưa nhỏ cái hàm để bỏ vào 2 trang bộ nhớ của PIC.
Cách giải quyết:
Vẫn dùng lại hàm "củ chuối" của em nhưng em chia đôi cái hàm đó ra làm 2 hàm nhỏ là A_1 và A_2, ví dụ vậy. Trong chương trình main, sau khi gọi gọi và thực thi A_1 xong sẽ tiến hành thực thi đến A_2. Lúc này biên dịch thành công, ko còn báo lỗi ROM space error nữa. LED hiển thị thực tế đúng như yêu cầu ^^

P/S: Ai có giải thuật nào hay hơn xin chỉ giáo. Cảm ơn trước ạ ^^