Thông báo

Collapse
No announcement yet.

GIÚP EM SỬA CODE lập trình cho LCD use 8051 VỚI. THANK NHIỀU LẮM

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

  • GIÚP EM SỬA CODE lập trình cho LCD use 8051 VỚI. THANK NHIỀU LẮM

    /*=== khai bao thu vien =====*/
    #include<regx51.h>
    #include<string.h>
    /*==== khai bao bien toan cuc===== */
    sbit RS = P3^0 ; // bit RS nay de chon gui lenh hoac gui du lieu
    sbit W_R = P3^1 ; // bit R/W nay de chon ghi du lieu len LCD hoac doc du lieu tren LCD
    sbit EN = P3^2 ; // bit E nay dung de chot du leu enible
    sbit flagbusy = 0xA7 ;
    /*== lay cong P2 lam cong de truyen du lieu vao LCD*/
    /*===== CAC HAM CON =======*/
    /*=== Ham tao tre====*/
    void delay( long time)
    {
    long i;
    for ( i=0; i<=time; i++)
    ;
    }
    /*==== ham kiem tra co ban====*/
    void wait()
    {
    flagbusy=1;
    RS = 0;
    W_R =1;
    EN = 0;
    EN = 1;
    while (flagbusy)
    {
    RS =0;
    EN =1;
    }
    }

    /*==== ham gui lenh cho LCD===*/
    void gui_lenh( char x)
    {
    P2 = x;
    RS = 0;
    W_R = 0;
    EN =1;
    EN =0;
    wait();
    }
    void khoitao ()
    {
    gui_lenh (0x38) ;
    gui_lenh (0x0e);
    gui_lenh ( 0x01);
    }
    void gui_data(unsigned c)
    {
    P2 = c;
    RS =1;
    W_R = 0;
    EN = 1;
    EN = 0;
    wait();
    }
    /*=== chuong trinh chinh====*/
    void main()
    {
    khoitao();
    gui_lenh (0x82);
    gui_data ('V');
    gui_data ('I');
    gui_data ('E');
    gui_data ('T');
    gui_data (' ');
    gui_data ('N');
    gui_data ('A');
    gui_data ('M');
    while (1);
    }
    Attached Files

  • #2
    Bạn kết nối LCD với VSL ở chế độ 4 bit mình cho bạn cái thư viện này để dùng cho đỡ sửa code.
    Khi bạn cần dùng LCD thì cứ gọi
    Code:
    LCD_init();
    LCD_clear();
    // Sau đó thì cứ
    LCD_string("Chuoi can in ra man hinh");
    LCD_row(2);// Có thể dùng 1 hoặc 2
    LCD_string("Noi dung can in ra o dong thu 2");
    //Hoặc có thể dùng theo kiểu
    LCD_gotoxy(1,1);// ghi chuỗi tại dòng thứ 1 từ vị trí số 1 trở đi, mặc định nếu dùng LCD_row() thì nó sẽ đăt con trỏ tại vị trí 0
    Cái này mình đưa mã nguồn chạy khá chuẩn và tối ưu, nếu dùng vào dự án nào thì các bạn để nguyên phần tác giả hộ mình nhé . Thanks!
    Attached Files

    Comment


    • #3
      À mình quên mất, cậu kết nối LCD với VSL 4 chân dữ liệu với 2 chân điều khiển ở cùng 1 port đó nhé. tốt nhất là EN thì vào LCD_port^0 RS vào LCD_port^1 thì đỡ sửa code, ở đây LCD_port mình dùng là port 2, nếu bạn muốn thay sang port# thì cứ theo luật đó và sửa #define LCD_port Px và nối đúng chân theo mô tả là ok.

      Comment


      • #4
        Thanks anh.

        Comment


        • #5
          Nguyên văn bởi chjpchjp1991
          RW bạn luôn nối âm đúng không?
          Hehe đúng rồi.

          Comment


          • #6
            Nguyên văn bởi myth-coder Xem bài viết
            À mình quên mất, cậu kết nối LCD với VSL 4 chân dữ liệu với 2 chân điều khiển ở cùng 1 port đó nhé. tốt nhất là EN thì vào LCD_port^0 RS vào LCD_port^1 thì đỡ sửa code, ở đây LCD_port mình dùng là port 2, nếu bạn muốn thay sang port# thì cứ theo luật đó và sửa #define LCD_port Px và nối đúng chân theo mô tả là ok.
            cảm ơn anh. code của em không sai. em cho con 89c52 thì chạy. mà 89c51 thì không chạy. không hiểu sao nữa
            Last edited by cauchu.noah; 21-09-2013, 13:49. Lý do: úp ảnh

            Comment


            • #7
              dung roi anh nay

              Comment


              • #8
                Nguyên văn bởi cauchu.noah Xem bài viết
                cảm ơn anh. code của em không sai. em cho con 89c52 thì chạy. mà 89c51 thì không chạy. không hiểu sao nữa
                Mà cậu học ở đâu ra cái kiểu
                Code:
                sbit flagbusy = 0xA7;
                // Sao không phải là
                sbit flagbusy = P2^7;
                //hoặc
                #define flagbusy P2_7
                có chắc đây là code của cậu không đấy? lấy ở đâu thì tôn trọng người ta 1 chút chứ?

                Comment


                • #9
                  của em mà: em lập trình bằng keil c. trong thư viện ăt9c52 nó hướng dẫn thế mà anh vào keilc mà xem nhé

                  Comment


                  • #10
                    các bác cho em hỏi làm sao để đăng bài mới lên vậy em mới tham gia lên lù mù wa

                    Comment


                    • #11
                      Nguyên văn bởi myth-coder Xem bài viết
                      Bạn kết nối LCD với VSL ở chế độ 4 bit mình cho bạn cái thư viện này để dùng cho đỡ sửa code.
                      Khi bạn cần dùng LCD thì cứ gọi
                      Code:
                      LCD_init();
                      LCD_clear();
                      // Sau đó thì cứ
                      LCD_string("Chuoi can in ra man hinh");
                      LCD_row(2);// Có thể dùng 1 hoặc 2
                      LCD_string("Noi dung can in ra o dong thu 2");
                      //Hoặc có thể dùng theo kiểu
                      LCD_gotoxy(1,1);// ghi chuỗi tại dòng thứ 1 từ vị trí số 1 trở đi, mặc định nếu dùng LCD_row() thì nó sẽ đăt con trỏ tại vị trí 0
                      Cái này mình đưa mã nguồn chạy khá chuẩn và tối ưu, nếu dùng vào dự án nào thì các bạn để nguyên phần tác giả hộ mình nhé . Thanks!
                      Cảm ơn bạn đã chia sẽ. Mình có thắc mắc là tại sao bạn không kiểm tra busy flag thay vì để delay? Mình đoán là để tiết kiệm pin vì RW chỉ dùng vào việc đọc Busy flag với đọc bộ nhớ (rất ít khi dùng đến) và tiết kiệm code (ROM). Nhưng bù lại kiểm tra busy flag thì chương trình chạy nhanh hơn thì phải?

                      Comment


                      • #12
                        Cái này thực ra là bài nhập môn của mình vào thế giới VDK, lúc đó đọc mang máng tài liệu thì việc đoc busy flag trong chế độ này khó và ít khả thi thì phải, hầu hết trên mạng "ở nước ngoài" khi ở chế độ này họ đều chuyển sang delay thay cho đọc busy flag.

                        Comment

                        Về tác giả

                        Collapse

                        cauchu.noah Tìm hiểu thêm về cauchu.noah

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

                        Collapse

                        Đang tải...
                        X