Thông báo

Collapse
No announcement yet.

dùng hàm gì để xuất con số ra LCD

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

  • dùng hàm gì để xuất con số ra LCD

    chả là em đang đo tốc độ động cơ.cái chữ vòng /phút hiện nên rồi mà con số không làm sao dc.các bác xem giúp em tí
    code
    #include <reg52.h>
    #include <stdio.h>
    #include <string.h>
    #include <math.h>

    sbit rs=P1^0;
    sbit rw=P1^1;
    sbit en=P1^2;
    sbit db7=P2^7;
    const int n=750;
    int num,a;


    void tre(unsigned long int v)
    {
    unsigned long int i;
    for(i=0;i<v;i++);
    }
    int chophep(void)
    {
    int ra;
    en=1; tre(n); en=0;
    return ra=1;
    }
    void kt_lcd(void)
    {

    while(db7==1&&chophep()&&rw==1&&rs==0);
    }
    void lenh(unsigned char malenh)
    {
    kt_lcd(); chophep();
    rs=0; rw=0; P2=malenh;
    }
    void in(char *s)
    {
    int i;
    for(i=0;i<strlen(s);i++)
    {
    kt_lcd(); chophep();
    rs=1; rw=0;
    P2=s[i]; tre(n);
    }
    }
    void khoi_tao(void)
    {
    lenh(0x01);
    lenh(0x02);
    lenh(0x38);
    lenh(0x06);
    lenh(0x0e);
    }
    void hienthi(void)
    {
    khoi_tao();
    while(1)
    {
    lenh(0x80); //cho chay o dong 1
    in("so vong/phut:");
    lenh(0xC0); // cho chay o dong 2
    a=num;
    in(&a); // chết nhất chỗ này đây các bác ạ.nó không hiển thị ra cái gì cả
    }
    }
    void main(void)
    {
    IE=84;
    IT1=1;
    num=0;
    while(1)
    {
    hienthi();
    }
    }
    void ngatngoai_1(void) interrupt 2
    {
    num++;
    }

  • #2
    (con số + 0x30) hoặc (con số + 48)

    Comment


    • #3
      Dear Bienhaui!
      Bạn muốn hiển thị con số lên LCD thì đầu tiên bạn phải tách lấy các chữ số của nó ra để gửi lần lượt. Ví dụ muốn hiển thị số 123 thì bạn tách lấy riêng 3 chữ số 1,2,3 vào 3 biến hoặc chuyển số 123 thành mảng kí tự sau đó gửi từng chữ số ra hiển thị.
      Để hiển thị chữ số thì giống như anh Multi System nói bạn gửi (chữ số + 0x30). Nguyên nhân là mã ascii của các con số là từ 0x30-->0x39 nên (chữ số + 0x30) sẽ ra đúng mã ascii của chữ số đó.

      Thân!
      For a better world

      Comment


      • #4
        cảm ơn các bác nhiều
        nhưng em viết nó vẫn báo lỗi.nó báo thế này ạ.nghe các bác em viết :
        in(num + 48);
        thì báo lỗi chỗ đó là:
        HIENTHI.C(61): error C214: illegal pointer conversion
        Last edited by bienhaui; 10-11-2009, 08:33.

        Comment


        • #5
          cảm ơn các bác nhiều
          nhưng em viết nó vẫn báo lỗi.nó báo thế này ạ.nghe các bác em viết :
          in(num + 48);
          thì báo lỗi chỗ đó là:
          HIENTHI.C(61): error C214: illegal pointer conversion

          Comment


          • #6
            nhân tiện cho mình hỏi.mình lập trình con LCD 16x2 4bit không dùng chân R/W được không.có nghĩa là nối nó xuống đất luôn đó và không chờ cờ bận mà delay khoảng 1 ms giữa các lệnh.

            Comment


            • #7
              Nguyên văn bởi fet01 Xem bài viết
              nhân tiện cho mình hỏi.mình lập trình con LCD 16x2 4bit không dùng chân R/W được không.có nghĩa là nối nó xuống đất luôn đó và không chờ cờ bận mà delay khoảng 1 ms giữa các lệnh.
              Lập trình OK !

              Comment


              • #8
                Nguyên văn bởi bienhaui Xem bài viết
                cảm ơn các bác nhiều
                nhưng em viết nó vẫn báo lỗi.nó báo thế này ạ.nghe các bác em viết :
                in(num + 48);
                thì báo lỗi chỗ đó là:
                HIENTHI.C(61): error C214: illegal pointer conversion
                Lệnh (con số + 48) hay (con số + 0x30) chỉ áp dụng được khi sử dụng lệnh xuất kí tự lên LCD, không áp dụng trong lệnh xuất chuỗi kí tự được.

                Comment

                Về tác giả

                Collapse

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

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

                Collapse

                Đang tải...
                X