Ứng dụng 16F877A tạo nhiều menu trên LCD 16x2
e có làm 1 project tạo 1 menu trên LCD1602.Vấn đề đau đầu là khi số lượng menu tăng lên rất nhiều thì vấn đề điều khiển cũng gặp nhiều khó khăn cho người sử dụng...
trong project này e có tham khảo cách chọn menu của máy tính casio..thấy cũng khá hay.E đã cho thêm 1 con trỏ vào cho thêm sinh động và trực quan...tránh đc vc phải sử dụng thêm 4 phím để làm phím di chuyển con trỏ ttrong 1 màn hình của LCD mình có định nghĩa 4 menu nhỏ đc gọi là 1 trang(page).Khi cần nhiều menu thì ta tạo ra nhiều trang =>số menu có đc là (page x 4).Để chọn menu nào thì ấn số tương ứng trên bàn phím... ấn phím # thì k0 có tác dụng(bị block).Để chuyển page thì dùng phím 0 và phím = để chọn chức năng tương ứng với menu ấn phím On/C ở phần menu page cuối có phần option,có nhớ setting của người sử dụng lưu lúc trước và không hỏi lại mỗi khi chạy.ko bị mất khi mất nguồn. cái này e chưa làm thử mà chỉ mô phỏng trên proteus thôi...mọi người xem rồi cho e ý kiến ...làm sao để thiết kế 1 menu với nhiều nhánh nhỏ bên trong mà ko bị loạn lên...?????? download mạch ở đây: http://www.mediafire.com/?kdzjdtlgzjm full code ở đây: http://www.mediafire.com/download/2o...6/Menu_LCD.rar |
sao e ko up cái file rar lên 4fum đc nhỉ...đành up lên MF.
sao chưa thấy bác nào cho ý kiến nhỉ....??? |
Bạn có thể up code lên để mọi người tham khảo được ko?
|
Đây là code chính của trương trình...ko đính kèm đc file nên các bạn xem tạm vì code quá dài...:D
ngoài ra thư viện cho LCD mình để life riêng,các chương trình trong menu mình cũng để riêng.. ========================================= Code:
#include <16F877A.h> |
Đã >100 ng đọc mà ko thấy ai có ý kiến j hết là sao vậy ta...??
|
đã 250 ng đọc mà ko có ai có ý kiến là sao thế???
mọi ng đi đâu hết rùi...có mạch có code rồi mà....!!! |
e thấy khó wa sao ma cho ý kiến được
|
a o dau zay.e voi a lam thử
|
Nick yahoo của mình là love_classicalguitar..
bạn nào cần nghiên cứa hc phát triển ứng dụng của mình thì liên hệ ...mình sẽ gửi bản full cho... mình mới nghiên cứu hoàn chỉnh hệ thống hiển thj này thôi...con chưa biết làm j với nó... hiện tại chương trình đã có 40 menu bao gồm 4 options có nhớ... các chương trình đc thêm vào sau này mà ko làm ảnh hưởng tới chương trình lớn... |
Nói chung tinh thần học hỏi, chia sẽ của bạn rất tốt. Tuy nhiên hiện thực menu trên LCD như thế này hơi khó đọc hiểu với các bạn ở mức độ 'bình dân' để có thể sử dụng lại code này. Cách hiện thức khác hiệu quả hơn là sử dụng danh sách con trỏ hàm, dễ dàng cho phép mở rộng cũng như đồng nhất các tính chất của sub menu. Kết hợp với sử dụng stack, các sub menu gọi sau thêm vào stack luôn là con, do đó nó nằm ở top và được xủ lý trước(hiển thị các sub menu con hoặc chọn lựa thực thi), khi thoát nó bị đẩy khỏi stack và sub menu cha của nó trước đó lạitrở thành top và tiếp tục quá trình, lặp cho đến khi stack trống nghĩa là về root.
Regards |
Chào bạn !!!
Mình cũng đã từng phải lập trình để tạo menu kiểu này. Thuật toán của mình như sau : + Phím menu nối vào 1 chân ngắt, của vxl, khi nào ấn menu -> xuất hiện ngắt -> bạn đặt 1 cờ tương ứng, giả sử lần đầu tiên xuất hiện ngắt, bạn đặt cờ có giá trị là 1, lần thứ 2 xuất hiện ngắt, bạn đặt cờ có giá trị là 2. + Chương trình chính sẽ liên tục kiểm tra trạng thái của cờ này để đưa ra chương trình con tương ứng với giá trị của cờ. Cách làm trên có ưu điểm là nếu sau này bạn muốn mở rộng thêm các chức năng của chương trình như thêm các menu chẳng hạn, thì chỉ việc đặt thêm 1 cờ và 1 chương trình con tương ứng, chương trình cũ ko bị ảnh hưởng => dễ dàng cho việc nâng cấp firmware ! Hơn nữa chương trình trong ngắt như vậy sẽ ko quá dài, bạn ko bị gặp phải lỗi tràn stack (trước mình đã phải khổ sở với lỗi này) Nói thật là mình cũng ko có đủ kiên nhẫn để đọc chương trình của bạn, hihi, mình nghĩ các bạn khác cũng thế nên ít người phản hồi lại cho bạn. Hơn nữa, bạn nên đưa thuật toán ra cho mọi người thảo luận thôi, chứ post cả code lên mạng thế kia thì đôi khi có những tình huống ko hay lắm hihi. Thân ái ! |
bạn nào có cái menu.c không cho tớ với.
|
hi@ cảm ơn bạn đã share code nhé.
^_^ |
Múi giờ GMT. Hiện tại là 05:25 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam