Thông báo

Collapse
No announcement yet.

LCD Menu v0.1 Chương trình mẫu, mời đóng góp ý kiến

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #16
    Nguyên văn bởi bk_exp Xem bài viết
    @: nghaiha, 2 tay 3 súng hả bác! hê hê !
    @: Bác chủ thớt: Cảm ơn bác, em học được một số thứ như thêm 74ls10 vào mạch phím bấm ...
    Bác chủ thớt và nghaiha là 1 mờ

    Nếu menu làm kiểu điện thoại di động (gọi là menu động) có một nút bên phải, một nút bên trái thì sao các bác nhỉ?
    Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
    Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.

    Comment


    • #17
      Ưu điểm của menu dạng này thì không phải bàn nữa, như bạn nghaiha đã trình bày, nhưng không phải nó không có những thiếu sót với cách thiết kế dạng này. Ví dụ:
      + Chỉ dành cho những compiler hỗ trợ gọi và thực thi con trỏ hàm.
      + Không xử lý được ngữ cảnh riêng cho từng submenu( ví dụ line 1 điền số cần nhập, line 2 chọn Y/N, line 3 chọn thực thi,...).
      + Nếu cần một Tick Counter để làm hiệu ứng(nhấp nháy line, chạy chữ line, Set TimeOut một tính năng,...) thì cách thiết kế Fixed này không làm được.
      + Không nhớ được line lần cuối cùng người ta ENTER để khi EXIT sub menu nó trả về dúng line trước đó đã chọn( mất công tìm lại từ đầu nếu muốn vào lại).

      Những gì bạn làm đã rất đáng khen. Chúc bạn thành công với next version.

      Email:
      Phone: 0905.034.086

      Comment


      • #18
        + Chỉ dành cho những compiler hỗ trợ gọi và thực thi con trỏ hàm.
        Cái này đúng nhưng chúng ta đang viết cho AVR mà CodeVision hỗ trợ thực thi con trỏ hàm. Vậy thì không có gì phải lăn tăn.

        + Không xử lý được ngữ cảnh riêng cho từng submenu( ví dụ line 1 điền số cần nhập, line 2 chọn Y/N, line 3 chọn thực thi,...).
        KHông hiểu ý của bác ạ. Trong chương trình con em muốn làm gì mà không được ạ ví dụ set đồng hồ hay thực thi một cái gì đó.

        + Nếu cần một Tick Counter để làm hiệu ứng(nhấp nháy line, chạy chữ line, Set TimeOut một tính năng,...) thì cách thiết kế Fixed này không làm được.
        Chuyện này dễ mà, hiện giờ em chưa xài Timer nào. Chỉ cần thêm một Timer0 là có thể giải quyết mọi chuyện. Thiết kế này không phải là fix đâu ạ. Bác cứ nói rõ em sẽ giải quyết một cách đơn giản trên ver 0.2

        + Không nhớ được line lần cuối cùng người ta ENTER để khi EXIT sub menu nó trả về dúng line trước đó đã chọn( mất công tìm lại từ đầu nếu muốn vào lại).
        Hihi, cái này cũng dễ luôn, chương trình này đã nhớ được kết thúc một hàm thì ra lại đúng menu của nó (nếu muốn ra menu khác - ví dụ menu gốc thì cũng okie). Chuyện nhớ đúng chỉ mục của nó khi thoát ra thì cũng a piece of cake thôi. Em không muốn đưa hết vào ở version đầu vì sợ rối làm các bác không theo dõi được hết code của chương trình.

        Những gì bạn làm đã rất đáng khen. Chúc bạn thành công với next version.
        Cám ơn bác đã khen . Em chỉ muốn những cái đơn giản, hay sử dụng được public như thế này để những người khác khi gặp phải không mất thời gian nữa. Để dành sức sáng tạo mấy cái mới.
        Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
        Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.

        Comment


        • #19
          Cái này đúng nhưng chúng ta đang viết cho AVR mà CodeVision hỗ trợ thực thi con trỏ hàm. Vậy thì không có gì phải lăn tăn.
          + Nghĩa là cái này chỉ dùng cho AVR và CodeVision, nó sẽ gặp rắc rối khi chuyển cho MCU khác.

          KHông hiểu ý của bác ạ. Trong chương trình con em muốn làm gì mà không được ạ ví dụ set đồng hồ hay thực thi một cái gì đó.
          Ví dụ: Có 1 menu thế này:
          Line 1: Xem thông tin nhiệt độ >> submenu
          Line 2: Chọn hiển thị độ: F/C (no submenu)
          Line 3: Cài nhiệt độ báo động: 60 (change value, no submenu)
          Line 4: Exit

          Chuyện này dễ mà, hiện giờ em chưa xài Timer nào. Chỉ cần thêm một Timer0 là có thể giải quyết mọi chuyện. Thiết kế này không phải là fix đâu ạ. Bác cứ nói rõ em sẽ giải quyết một cách đơn giản trên ver 0.2
          + Dĩ nhiên là dùng Timer, vấn đề là bạn có biết chính xác mình đang nằm ở submenu nào không? và làm sao để truyền TickCounter++ vào trong submenu đó? Vì ko phải lúc nào submenu cũng dùng biến TickCounter và lời gọi nó khi TickCounter tăng giá trị.

          Hihi, cái này cũng dễ luôn, chương trình này đã nhớ được kết thúc một hàm thì ra lại đúng menu của nó (nếu muốn ra menu khác - ví dụ menu gốc thì cũng okie). Chuyện nhớ đúng chỉ mục của nó khi thoát ra thì cũng a piece of cake thôi. Em không muốn đưa hết vào ở version đầu vì sợ rối làm các bác không theo dõi được hết code của chương trình.
          + Bạn nói đúng, vấn đề chỉ nằm ở kích thước RAM và độ phức tạp của chương trình khi bổ sung tính năng mới.
          Đây là một tham khảo bên PVN: http://www.picvietnam.com/forum/showthread.php?t=1783
          Điều quan trọng là bạn biết vấn đề và đưa ra giải pháp cho phiên bản tiếp theo. Good luck.

          Email:
          Phone: 0905.034.086

          Comment


          • #20
            Nguyên văn bởi cskiller Xem bài viết
            Nghĩa là cái này chỉ dùng cho AVR và CodeVision, nó sẽ gặp rắc rối khi chuyển cho MCU khác.
            Không nên cầu toàn quá ở đây bác ơi, chúng ta đang ở trong chủ đề AVR. Một chương trình bất kỳ nào khi chuyển sang MCU khác thì đều phải chỉnh sửa lại nhiều thứ chứ đâu thể cứ bỏ vào là chạy đâu. Mặt khác các họ MCU khác thì trình biên dịch của họ lo vấn đề đó chứ, mình sức đâu mà kham nổi. Em chắc chắn là trình dịch CCS của PIC cũng hỗ trợ vụ này. Nếu không dùng con trỏ hàm thì theo bác dùng cách nào?

            Line 1: Xem thông tin nhiệt độ >> submenu
            Line 2: Chọn hiển thị độ: F/C (no submenu)
            Line 3: Cài nhiệt độ báo động: 60 (change value, no submenu)
            Line 4: Exit
            Cái này em nghĩ bác làm khó em. Tại sao phải nhất thiết như vậy. Ví dụ ở Line 2 thì bổ sung thêm submenu Line1': Độ C, Line 2': Độ F, Line 3': Exit. Còn ở Line 3 thì vào một function, bấm phím lên xuống để thay đổi nhiệt độ.
            Còn nếu theo ý bác thì Line 2,3 em thay đổi bằng cách nào??? Nhấn phải + trái à?

            Dĩ nhiên là dùng Timer, vấn đề là bạn có biết chính xác mình đang nằm ở submenu nào không? và làm sao để truyền TickCounter++ vào trong submenu đó? Vì ko phải lúc nào submenu cũng dùng biến TickCounter và lời gọi nó khi TickCounter tăng giá trị.[/INDENT]
            Cái này dễ quá trời mà. Chẳng ai đi đọc tickcounter trong submenu cả. Tickcounter khi đến một giá trị nào đó thì trả ra một thuộc tính. Ví dụ nó đếm đến bội số của 5 thì thuộc tính nhapnhay=0, sau đó đến bội số của 5 lần nữa thì nhấpnháy=1. Trong submenu em chỉ kiểm tra cái nhapnhay này thôi. Tương tự như vậy em muốn dịch chữ nếu submenu quá dài cũng thế thôi.

            Bạn nói đúng, vấn đề chỉ nằm ở kích thước RAM và độ phức tạp của chương trình khi bổ sung tính năng mới.

            Đây là một tham khảo bên PVN: http://www.picvietnam.com/forum/showthread.php?t=1783
            Hihi, bác tác giả của cái này thì em quen. Bác ấy còn phải công nhận là "chương trình của anh đơn giản hơn nhiều". Sau đó bác ấy có một version mới viết application bằng C# cho phép tạo code Menu PIC đó.

            Điều quan trọng là bạn biết vấn đề và đưa ra giải pháp cho phiên bản tiếp theo. Good luck.
            Cám ơn bác. Cái menu này em tham khảo ở các rơ le của Siemens. Menu của Siemens luôn đơn giản và trực quan mà.
            Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
            Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.

            Comment

            Về tác giả

            Collapse

            nghaiha Tìm hiểu thêm về nghaiha

            Bài viết mới nhất

            Collapse

            Đang tải...
            X