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

          • bqviet
            Trả lời cho Đấu tắt điện cho máy tính bảng
            bởi bqviet
            Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
            06-12-2025, 17:17
          • nguyendinhvan
            Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
            bởi nguyendinhvan
            Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
            05-12-2025, 19:59
          • afrendly
            Trả lời cho Đấu tắt điện cho máy tính bảng
            bởi afrendly
            Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
            04-12-2025, 01:27
          • nick22
            Trả lời cho Máy điện châm ?
            bởi nick22
            Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
            01-12-2025, 13:23
          Đang tải...
          X