Trích:
Nguyên văn bởi nhnp0708
cho em bổ sung trong xlcd1.c.Func putsXLCD và putrsXLCD.Nếu có hàm delay cuối với thời gian cao thì nó sẽ hiển thị đúng, nhưng lúc đầu nó sẽ chạy từ phải qua trái, sau đó sẽ chạy đúng theo ý mình là từ trái qua phải và quét liên tục
Ví dụ: hiện chữ "hello". nó sẽ chạy h,sau đó e, tiếp l, ... xong hello thì nó lại h, sau e... mặc dù trong hàm đó em không thấy nó hiển thị kiểu quét
còn nếu không có hàm delay hay delay quá nhỏ thì nó không hiển thị quét qua lại liên tục.
em sài mạch PIC Demo 2+ red
|
Với bộ điều khiển HD44780 (và các chip tương thích), sau khi ghi dữ liệu vào CGRAM hay DDRAM, bạn phải cho bộ điều khiển một khoảng thời gian để thực hiện lệnh, trước khi bạn xuất lệnh tiếp theo. Trong hai hàm bạn đã nêu, sau khi xuất dữ liệu ra LCD thì vòng lặp sẽ kiểm tra cờ busy, có nghĩa là vòng lặp có 2 lệnh được thực hiện nối tiếp nhau. Như vậy sau khi xuất dữ liệu vào DDRAM thì phải chờ bộ điều khiển thực hiện xong lệnh này mới được phép kiểm tra cờ busy. Theo datasheet của HD44780 thì khoảng thời gian này khoảng 40 us (ở tần số làm việc của HD44780 là 270 kHz). Do đó, nếu dùng các hàm delay của C18 thì phải đảm bảo delay tối thiểu là 400 chu kỳ máy, ở tốc độ thực thi lệnh là 10 MIPS.
Điều này giải thích việc bạn không có delay hay delay quá nhỏ thì LCD không hiển thị đúng.
Thân,