Thông báo

Collapse
No announcement yet.

LCD và PIC

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

  • LCD và PIC

    Nếu mình dùng 1 PORT để đk LCD thì ok, nhưng nếu mình ko dành PORT đó để đk mà dùng PORT khác làm chức năng RS, RW, EN thì LCD ko chạy đc, mình cũng đã định nghĩa lại nhưng ko thành công. Bác nào có cách thì chỉ dùm mình nhé. ThankS!


    Add: 97 Quán Nam - Lê Chân - Hải Phòng.
    Tel: 031 518648 Phone: 0904 283 505

  • #2
    Bạn viết bằng CCS cho LCD 4bit?

    Comment


    • #3
      Trường hợp này giống của cậu :

      http://www.ccsinfo.com/forum/viewtop...er=asc&start=0

      Với HTPIC :
      http://www.lcdinterfacing.info/Inter...PIC16F877A.php

      Comment


      • #4
        Oh_THế thì mình phải viết thêm hàm mở rộng cho nó, mình dùng avr thấy lcd đc hỗ trợ khá tốt_Sang PIC hơi amater, cám ơn bạn nhiều.


        Add: 97 Quán Nam - Lê Chân - Hải Phòng.
        Tel: 031 518648 Phone: 0904 283 505

        Comment


        • #5
          Đã fix và add lại nhưng nó chạy lung tung beng hết cả. Hihi. Sẽ fix tiếp bằng đc thì thôi.


          Add: 97 Quán Nam - Lê Chân - Hải Phòng.
          Tel: 031 518648 Phone: 0904 283 505

          Comment


          • #6
            Sau một thời gian vật lộn với LCD (không lỗi này thì lỗi kia) mình cũng hiển thị được. Tuy nhiên còn một vướng mắc sau:
            - Mình dùng PIC16F877A điều khiển LCD. Chân dữ liệu D4-D7 của LCD nối vào chân RD4 - RD7 của PIC. Chân điều khiển R/W nối GND, RS nối RD2, E nối RD0. Chân nguồn Vdd mình điều khiển bằng cách nối với chân RE2 (do khi không dùng LCD thì mình dùng port d làm việc khác).
            - Vấn đề là: trong hàm main nếu đặt RE2 = 1 trước khi gọi hàm lcd_init() thì hiển thị bình thường. Nếu chuyển lệnh này ra sau hàm lcd_init() thì LCD hiển thị 1 hàng giống như trường hợp chỉ cấp nguồn, ko gửi dữ liệu, trong khi thử các chân dữ liệu của LCD bằng led thì vẫn thấy nháy (cả 4 chân).
            Có bác nào biết được vấn đề này là sao ko?
            (Một triệu chứng nữa là: mình có 1 hàm hiển thị LCD, 1 hàm sử dụng port d để hiển thị led đơn. Nếu gọi hàm hiển thị LCD sau hàm hiển thị led đơn thì cũng gặp hiện tượng như trên.)

            Comment


            • #7
              Chưa cấp nguồn cho LCD thì gọi cái lcd_init() thì có ý nghĩa gì_LCD cần có nguồn nuôi để thực hiện đc các lệnh khởi tạo bt chứ. Khà khà khà.............


              Add: 97 Quán Nam - Lê Chân - Hải Phòng.
              Tel: 031 518648 Phone: 0904 283 505

              Comment


              • #8
                Nguyên văn bởi whalebeat Xem bài viết
                Sau một thời gian vật lộn với LCD (không lỗi này thì lỗi kia) mình cũng hiển thị được. Tuy nhiên còn một vướng mắc sau:
                - Mình dùng PIC16F877A điều khiển LCD. Chân dữ liệu D4-D7 của LCD nối vào chân RD4 - RD7 của PIC. Chân điều khiển R/W nối GND, RS nối RD2, E nối RD0. Chân nguồn Vdd mình điều khiển bằng cách nối với chân RE2 (do khi không dùng LCD thì mình dùng port d làm việc khác).
                - Vấn đề là: trong hàm main nếu đặt RE2 = 1 trước khi gọi hàm lcd_init() thì hiển thị bình thường. Nếu chuyển lệnh này ra sau hàm lcd_init() thì LCD hiển thị 1 hàng giống như trường hợp chỉ cấp nguồn, ko gửi dữ liệu, trong khi thử các chân dữ liệu của LCD bằng led thì vẫn thấy nháy (cả 4 chân).
                Có bác nào biết được vấn đề này là sao ko?
                (Một triệu chứng nữa là: mình có 1 hàm hiển thị LCD, 1 hàm sử dụng port d để hiển thị led đơn. Nếu gọi hàm hiển thị LCD sau hàm hiển thị led đơn thì cũng gặp hiện tượng như trên.)

                Vấn đề của bạn là bạn tham lam quá , tích hợp nhiều thứ trên 1 port ... nên trong phần mềm phải xử lý khéo ( có nhiều trường hợp không thể xử lý được do các trường hợp xung đột nhau ) ... Tuy vậy tôi đoán là của bạn chỉ hiển thị các chức năng tuần tự ... và bạn " yếu " và chưa có nhiều kinh nghiệm về lập trình nên bị tắc.

                --- Bạn dùng chân để điều khiển nguồn cho LCD ( có phải khi bạn không dùng LCD bạn sẽ điều khiển chân chân này tắt LCD đi ??? để cho chữ hay LCD không bị loạn ? ).

                Nếu có dùng cái này khi bạn dùng LCD bạn phải :
                Kích hoạt nguồn trước
                RE2 =1 ;
                Trễ 1 thời gian ( delay chẳng hạn ... cho chắc ăn )
                Rồi mới Init_LCD ();

                Cách này làm là đúng ... vì LCD đã cấp điện, khởi động đầy đủ và sẵ sàng Init ( giao tiếp)

                --- Còn cách này : Init_LCD(); rồi mới RE2=1 ; .... là sai ( LCD cần cấp điện, các IC cần hoạt động trước khi ... dữ liệu giao tiếp, khởi tạo hoạt động .

                /// Còn trường hợp về hàm sau LED ... khi đã tắt điện LCD đi ( bằng chân RE2 ) để thực hiện hàm led trên Port D ... muốn dùng LCD lại thì ... lại phải kích hoạt RE2 ... init LCD ... rồi mới đến cái hàm hiển thị
                Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                Comment


                • #9
                  Thank bác nhiều nhiều. Giờ thì ngộ ra thêm một số điều. Quên mất là mình ngắt nguồn LCD rồi thì phải init lại . Đúng là gà quá.

                  Comment


                  • #10
                    "Chân nguồn Vdd mình điều khiển bằng cách nối với chân RE2"
                    "...Chuyển lệnh này ra sau hàm lcd_init()..."
                    Dân điện tử mà hỏi cái lỗi này ak. Đúng là chọc cười thiên hạ

                    Comment

                    Về tác giả

                    Collapse

                    hoangdai Hoàng Đình Đại-Điện tự động công nghiệp Tìm hiểu thêm về hoangdai

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

                    Collapse

                    Đang tải...
                    X