Thông báo

Collapse
No announcement yet.

Help hiển thị LCD bằng 89c51

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

  • Help hiển thị LCD bằng 89c51

    em chào các bác.
    Em đang làm AVR quen giờ thầy bắt làm 89c51 thấy nó rắc rối quá.
    Các bác cho em hỏi là CODE của em thế này thì sai ở chỗ nào?

    //-------------------------nhom 2-----------------------------------
    //-----------chuong trinh hien thi lcd-------------
    #include <AT89x51.h>
    #include <math.h>// thu vien lenh toan hoc
    #include <stdio.h>// cai nay khong biet cai gi
    #include <string.h>
    ////////////////khai bao chan lcd gan voi cac cong////////////
    sfr lcddata=0xA0;// p2=0xA0
    sbit rs=P1^0;
    sbit rw=P1^1;
    sbit e=P1^2;
    sbit bf=0xA7;
    //------------------------cac chuong trinh con phuc vu------------
    void baoban(void)
    {
    long n;
    n=0;
    e=1;// dua chan cho phep nen muc cao
    rs=0;// chon thanh ghi lenh
    rw=1; // doc LCD
    lcddata=0xFF;
    while(bf){n++;if(n<100)break;}// kien tra neu ban tang n den 100 rui thoat
    e=0;//chot voi suon xuong
    rw=0; //doc lcd
    }
    //-----------------------------------------------
    void dklcd(unsigned char n)
    {
    e=1;//chan cho pheps muc cao
    rs=1; //chon thanh ghi lenh . neu rs=1 chon chon thanh ghi du lieu
    rw=0;// ghi nen lcd
    lcddata=n; // chon gia tri x
    e=0; // xuong thap de chot
    baoban();
    }
    //--------------------------------------------
    void khoitaolcd(void)
    {
    dklcd(0x30);
    dklcd(0x30);
    dklcd(0x30);//che do 8 bit
    dklcd(0x38); // 2 dong ma tra 5x7
    dklcd(0x0A);
    dklcd(0x06); //tang con tro sang phai
    dklcd(0x01); //xoa toan man hinh

    }
    //-----------------hienthi 1 ky tu-----------------
    void lcdwrite(unsigned char c)
    { e=1;//muc cao
    rs=1; //ghi du lieu
    rw=1;// ghi len lcd
    lcddata=c; //ghi nen ky tu c
    e=0;// xuong muc thap
    baoban();
    }
    //-------------------ghi chuoi ky tu-----------
    void lcdputs(unsigned char *s,unsigned char row)
    {
    unsigned char len;
    if(row==1){dklcd(0x80);}// dua con tro ve dau dong dau tien
    else dklcd(0xC0);// ep con tro ve dau dong thu hai
    len=strlen(s);// lay do dai hien thi
    while(len!=0)// do dai van con
    {
    lcdwrite(*s);// ghi ra gia tri lcd duoc doc boi con tro
    s++; //tawng con tro
    len--; //tru dan do dai
    }
    }
    //////////////////
    void delay(long time)
    {
    long k;
    for(k=0;k<time;k++)
    {}
    }

    //////////////////////chuong trinh chinh--------------------
    void main(void)
    {
    char x;
    khoitaolcd();
    lcdputs("dien tu viet nam",1);
    delay(30000);
    while(1)
    {
    for(x=0;x<20;x++)//dich 20 lan
    {
    lcdputs("dien tu viet nam",1);
    dklcd(0x18);// dich hien thi sang trai
    delay(5000);
    }
    }


    }

    Em xin cảm ơn các bác
    Attached Files

  • #2
    cái hàm
    void lcdwrite(unsigned char c)
    { e=1;//muc cao
    rs=1; //ghi du lieu
    rw=1;// ghi len lcd
    lcddata=c; //ghi nen ky tu c
    e=0;// xuong muc thap
    baoban();
    bạn thử sửa rw=0 xem

    Comment


    • #3
      em cũng đang rất nan giải vấn đề này
      có bác nào biết hiển thị chữ lên lcd như thế nào không?
      sử dung assembly!
      xin các tiền bối chỉ dùm!

      Comment


      • #4
        Nguyên văn bởi FrozenHeart Xem bài viết
        em cũng đang rất nan giải vấn đề này
        có bác nào biết hiển thị chữ lên lcd như thế nào không?
        sử dung assembly!
        xin các tiền bối chỉ dùm!
        Cái này hả bác:
        Click image for larger version

Name:	lcd.JPG
Views:	1
Size:	68.2 KB
ID:	1375819
        Email:
        Phone: 0969 226 539

        Comment


        • #5
          Code *ASM cho LCD 16x02;
          ;; Chuong trinh dieu khien "LCD"
          ;; Author NGUYEN VAN TRINH
          ;; Dong A Univesity
          ;; Electrical Technology

          ;; Chuong trinh
          ;; Thiet lap cac Port ban dau
          ORG 00H
          MOV P0,#0FFH ;;
          MOV P1,#0FFH
          MOV P2,#0FFH
          MOV P3,#0FFH
          ;; Khai bao dia chi
          RS BIT P3.5;
          RW BIT P3.6
          E BIT P3.7
          LCD EQU P1

          ;; Chuong trinh LCD
          CT_LCD:
          LCALL KHOI_TAO_LCD
          MOV A,#80H ;
          LCALL GUI_LENH
          MOV DPTR,#HANG_1;
          MOV R7,#0;
          HT_HANG_1:
          CLR A
          MOVC A,@A+DPTR
          LCALL GUI_KY_TU
          INC R7
          INC DPTR
          CJNE R7,#16,HT_HANG_1
          MOV A,#0C0H;;
          LCALL GUI_LENH
          MOV DPTR,#HANG_2;
          MOV R7,#0; Bat dau tu 0
          HT_HANG_2:
          CLR A
          MOVC A,@A+DPTR
          LCALL GUI_KY_TU
          INC R7
          INC DPTR
          CJNE R7,#16,HT_HANG_2
          LJMP $
          KHOI_TAO_LCD:
          MOV A,#38H;
          LCALL GUI_LENH
          MOV A,#0CH;
          MOV A,#0FH;
          LCALL GUI_LENH
          MOV A,#01H;
          LCALL GUI_LENH
          GUI_CHUOI:
          MOV R6,#0
          LAP:
          CLR A
          MOVC A,@A+DPTR
          LCALL GUI_KY_TU
          INC DPTR
          INC R6
          CJNE R6,#16,LAP
          GUI_LENH:
          CLR RS;;
          CLR RW;;
          SETB E;;
          MOV LCD,A;
          CLR E
          LCALL TRE
          RET
          GUI_KY_TU:
          SETB RS;;
          CLR RW;;
          SETB E;;
          MOV LCD,A;
          CLR E
          LCALL TRE
          RET
          TRE:
          MOV R0,#250
          DJNZ R0,$;; 250*2=500
          MOV R0,#250
          DJNZ R0,$
          RET
          HANG_1:
          DB ' DAI HOC DONG A '
          HANG_2:
          DB 'MICROCONTROLER'
          END
          Email:
          Phone: 0969 226 539

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          • tuyennhan
            Trả lời cho Tiếng Anh cho người Việt
            bởi tuyennhan
            Cái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
            Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .
            hôm nay, 07:44
          • vi van pham
            Trả lời cho Tiếng Anh cho người Việt
            bởi vi van pham
            Cám ơn những lời chúc tốt đẹp của em.

            Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.

            Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....
            hôm nay, 02:00
          • nhathung1101
            Trả lời cho Tiếng Anh cho người Việt
            bởi nhathung1101
            Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.

            Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.

            Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...
            Hôm qua, 22:18
          • dinhthuong80
            Trả lời cho Tiếng Anh cho người Việt
            bởi dinhthuong80
            Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

            Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
            Hôm qua, 14:51
          • dinhthuong80
            Trả lời cho Tiếng Anh cho người Việt
            bởi dinhthuong80
            Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

            Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
            Hôm qua, 14:39
          • dinhthuong80
            Trả lời cho Tiếng Anh cho người Việt
            bởi dinhthuong80
            Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

            Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
            Hôm qua, 14:28
          • bqviet
            Trả lời cho Tiếng Anh cho người Việt
            bởi bqviet
            Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
            21-02-2025, 20:26
          • mèomướp
            Trả lời cho Tiếng Anh cho người Việt
            bởi mèomướp
            Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
            21-02-2025, 12:32
          • vi van pham
            Trả lời cho Tiếng Anh cho người Việt
            bởi vi van pham
            Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

            Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
            20-02-2025, 21:31
          • bqviet
            Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
            bởi bqviet
            Thiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.
            20-02-2025, 17:22
          Đang tải...
          X