Thông báo

Collapse
No announcement yet.

Giúp Hiển thị một số lên LCD 16x2

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

  • Giúp Hiển thị một số lên LCD 16x2

    E đang gặp vướng mắc ở chỗ.Nếu hiển thị chữ thì đc nhưng ko biết nếu mà là số thì lamnf thế nào mong các anh giúp đỡ ?
    em cảm ơn

  • #2
    Đơn giản như sau:
    Để hiển thị số 1 thì cần ghi ra LCD giá trị: 1+48(Mã Ascii của 1)
    Một số Complier hỗ trợ luôn mấy hàm xuất số nguyên rồi, nếu bạn tự viết thì viết theo cách mình đưa ra ấy__( Số muốn hiển thị(0-->9) + 48).
    Nếu 1 số có giá trị nào đó thì bạn cần tách lấy các phần nghìn, trăm, chục gì gì đó rồi hiển thị thôi.


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

    Comment


    • #3
      Nguyên văn bởi capkama Xem bài viết
      E đang gặp vướng mắc ở chỗ.Nếu hiển thị chữ thì đc nhưng ko biết nếu mà là số thì lamnf thế nào mong các anh giúp đỡ ?
      em cảm ơn
      Bạn xem chương trình này tham khảo:
      http://www.mediafire.com/?dckl73g349zsv2a
      Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
      http://diencongnghiep360.com/
      http://tudienhathe.vn/

      Comment


      • #4
        Hoặc cho số vào dấu nháy đơn '...' cũng hiển thị được, ờ đây các số được hiểu là kí tự (không dùng các số này để tính toán được)

        Comment


        • #5
          LCD hiển thị theo ma Asci của VDK truyền đến.nó giống như hiển thị ký tự thôi. bạn muốn hiển thị từ 0-9.k có nghĩa là bạn truỳen giá trị 0-9 mà là truyền mã Asci của số 0-9 tới VDK. bạn cứ gửi (giá trị + 0x30) LCD sẽ hiển thị số tương ứng

          Comment


          • #6
            Em cảm ơn các anh
            Các anh xem ý e thế này có đúng ko nhé!
            E muốn hiển thị số 100 thì ghi là
            (100) + 48 phải ko ạ?
            Ví dụ là e muốn đếm tăng dần thì cứ từ 9 lên 10 thì con trỏ LCd tự dịch sang 1 bên để hiển thị phải ko ạ
            Hay phải lập trình

            Comment


            • #7
              Nguyên văn bởi capkama Xem bài viết
              Em cảm ơn các anh
              Các anh xem ý e thế này có đúng ko nhé!
              E muốn hiển thị số 100 thì ghi là
              (100) + 48 phải ko ạ?
              Ví dụ là e muốn đếm tăng dần thì cứ từ 9 lên 10 thì con trỏ LCd tự dịch sang 1 bên để hiển thị phải ko ạ
              Hay phải lập trình
              không được. bạn phải tạo 3 biến: trăm,chục ,đơn vị:
              tram= (a/100)+48;
              chuc = ((a%100)/10)+48;
              don_vi= (((a%100)/10)%10)+48;
              |

              Comment


              • #8
                Mình đã nói là tách trăm chục đơn vị ra rồi cơ mà_ko đọc bài viết trên à_Chán nhỉ.


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

                Comment


                • #9
                  Nguyên văn bởi capkama Xem bài viết
                  Em cảm ơn các anh
                  Các anh xem ý e thế này có đúng ko nhé!
                  E muốn hiển thị số 100 thì ghi là
                  (100) + 48 phải ko ạ?
                  Ví dụ là e muốn đếm tăng dần thì cứ từ 9 lên 10 thì con trỏ LCd tự dịch sang 1 bên để hiển thị phải ko ạ
                  Hay phải lập trình
                  Bạn xem ví dụ của mình có mà.
                  Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
                  http://diencongnghiep360.com/
                  http://tudienhathe.vn/

                  Comment


                  • #10
                    Gửi bạn hàm mình vẫn dùng từ trước đến nay, cố đọc hiểu nhé !

                    void LcdPutInt(uint16_t num)
                    {
                    uint16_t temp = num;
                    uint8_t i = 0, c[20];

                    if (temp != 0)
                    {
                    while(temp)
                    {
                    c[i++] = temp%10;
                    temp /= 10;
                    }
                    while(i) LcdPutc(c[--i] + '0');
                    }
                    else LcdPutc('0');
                    }
                    P/S :

                    - Hàm trên có thể sửa đổi để dùng với UART !

                    - Một câu đố nho nhỏ cho mọi người, số nguyên thì như vậy, nếu mình muốn truyền 1 số thực qua UART thì làm thế nào để tốn ít tài nguyên của vđk nhất ?

                    Chúc vui !
                    Last edited by pk178; 09-08-2011, 09:04.

                    Comment


                    • #11
                      Nguyên văn bởi pk178 Xem bài viết
                      - Một câu đố nho nhỏ cho mọi người, số nguyên thì như vậy, nếu mình muốn truyền 1 số thực qua UART thì làm thế nào để tốn ít tài nguyên của vđk nhất ?
                      kaka
                      OK, cứ cho là number integer chơi như vậy đi.
                      Float hả, đơn giản.
                      bạn suy ngẫm hàm của tôi nhé, chúc bạn vui.

                      PHP Code:
                      #separate void lcd_float(float number)
                      {
                           
                      char ch[20];
                           
                      sprintf(ch,"%0.2f",number);
                           
                      lcd_string(ch);
                      }
                      #separate void LCD_String(char*s)
                      {
                         while(*
                      s!=0)  lcd_putchar(*s++);

                      My Face :

                      Comment


                      • #12
                        Nguyên văn bởi capkama Xem bài viết
                        Em cảm ơn các anh
                        Các anh xem ý e thế này có đúng ko nhé!
                        E muốn hiển thị số 100 thì ghi là
                        (100) + 48 phải ko ạ?
                        Ví dụ là e muốn đếm tăng dần thì cứ từ 9 lên 10 thì con trỏ LCd tự dịch sang 1 bên để hiển thị phải ko ạ
                        Hay phải lập trình
                        Làm như bạn đến tết cũng được đâu.
                        add hàm này vào Lib LCD của bạn là OK ngay thôi
                        PHP Code:
                        #separate void lcd_number(int16 number)
                        {
                            
                        int8 i=0,j=0,digital[6];
                            if(
                        number==0lcd_putchar("0");
                            while(
                        number!=0)
                            {
                              
                        digital[i++] = number%10;
                              
                        number number/10;
                            }
                            
                        // print
                            
                        for(j=1;j<=i;j++)
                              
                        lcd_putchar(digital[i-j]+48);

                        My Face :

                        Comment


                        • #13
                          @Hienclubvn :

                          Chơi thư viện có sẵn thì chơi làm gì, nhiều trình biên dịch ko hỗ trợ đâu, hơn nữa nếu đã chơi thư viện có sẵn (của CCS) thì hàm hiển thị số nguyên lên LCD quá đơn giản, chỉ cần làm như sau :

                          printf(lcd_putc,"so can hien thi : %u",Number);

                          là được, đâu cần phức tạp như vậy.

                          Còn nữa là cái thư viện stdio.h khá cồng kềnh, ko nên include nó vào .

                          Còn ai có hứng thú nữa ko nhỉ ?

                          Comment


                          • #14
                            Nguyên văn bởi pk178 Xem bài viết
                            @Hienclubvn :

                            Chơi thư viện có sẵn thì chơi làm gì, nhiều trình biên dịch ko hỗ trợ đâu, hơn nữa nếu đã chơi thư viện có sẵn (của CCS) thì hàm hiển thị số nguyên lên LCD quá đơn giản, chỉ cần làm như sau :

                            printf(lcd_putc,"so can hien thi : %u",Number);

                            là được, đâu cần phức tạp như vậy.

                            Còn nữa là cái thư viện stdio.h khá cồng kềnh, ko nên include nó vào .

                            Còn ai có hứng thú nữa ko nhỉ ?
                            Hì, sẵn đâu mà sẵn chứ pk178
                            thư viện do hien code đấy chứ. đố tìm thấy ở đâu có hàm này. CCS làm gì có. Cái này nằm trong LIb do hien design
                            Bạn ngẫm code của hien nhé.
                            My Face :

                            Comment


                            • #15
                              Tất nhiên là tớ hiểu code của cậu, cậu lợi dụng hàm sprintf để lưu toàn bộ output của hàm này vào chuỗi "ch", sau đó gửi chuỗi này lên lcd, cái đó ko phải là sử dụng thư viện thì là gì, cái hàm sprintf ấy !

                              Nếu làm như thế thì làm luôn như cách sau có phải nhanh ko :

                              printf(lcd_putc,"%0.2f",number);

                              Tất cả mấy hàm sprintf(), printf() đều nằm trong thư viện stdio.h hết, sử dụng thư viện này đúng là rất tiện lợi, nhưng làm tốn bộ nhớ của vđk khá nhiều, hơn nữa như tớ đã nói, ko phải hầu hết các compiler của vđk đều hỗ trợ các cách làm này !

                              -> Vẫn chưa giải quyết được

                              Chúc vui !

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X