Thông báo

Collapse
No announcement yet.

các huynh giải thích giúp em lệnh khai báo này với!!

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

  • các huynh giải thích giúp em lệnh khai báo này với!!

    -em kg hiểu char buf[33] là khai báo cho cái gì nữa?
    -Nhân tiện cho em hỏi em có giá trị một biến kiểu int làm sao em cho nó hiển thị ra LCD với dạng số được?
    các huynh giúp em với!!!! chia sẻ kinh nghiệm giúp em!!!thank nhiều

  • #2
    Nguyên văn bởi bijusi@ Xem bài viết
    -em kg hiểu char buf[33] là khai báo cho cái gì nữa?
    -Nhân tiện cho em hỏi em có giá trị một biến kiểu int làm sao em cho nó hiển thị ra LCD với dạng số được?
    các huynh giúp em với!!!! chia sẻ kinh nghiệm giúp em!!!thank nhiều
    Mình cũng chưa rõ lắm về khai báo " char buf[33]", nhưng theo mình đoán thì đấy là khai báo mảng đệm cho LCD, dữ liệu hiển thị được đưa vào mảng trước khi hiển thị. Bác nào có thể cắt nghĩa cho em thì tốt quá!

    Để hiện thị số int lên LCD có rất nhiều cách. Ở đây mình sẽ trình bày 1 cách khá dễ hiểu. Giả sử bạn cần hiển thị số 123 lên LCD:
    1. Chia 123 cho 100=>lấy được số 1.
    2. Hiển thị "1" lên lcd bằng cách: char a=1+0x30;
    lcd_putchar(a);
    3. làm tương tự cho các số 2,3.

    Comment


    • #3
      char buf[33]: khai báo một mảng có tên là buf kiểu char và có 33 phần tử.

      Comment


      • #4
        cái này bác chịu khó tìm sẽ thấy em có post.
        Câu khai báo của bác có lẽ trong đoạn code để hiển thị số lên màn lcd.
        khi đó người ta sử dụng hàm định sẵn sprintf để để chuyển giá trị từ dạng số ra các ký tự và ghi vào mảng buf[33],
        ví dụ:

        Code:
        char buf[33]; 
        unsigned int temp; 
        temp=100;    
        sprintf(buf,"TEMP: %d\xdfC",temp);
              lcd_gotoxy(3,0);           
              lcd_puts(buf);
        câu lệnh như trên sẽ ghi ra màn LCD " TEMP: 100°C "

        *** Thành viên không biết gì về điện ***

        Comment


        • #5
          Úi cha mẹ ơi. Lập trình C cho VDK đương nhiên là gồm 2 vấn đề: lập trình C và VDK. Bây giờ bạn còn chưa biết lập trình C mà đã đòi lập trình C cho VDK thì khác gì chưa học bò đã đòi học chạy. Nghiêm túc, bạn ko nghiên cứu một cách cơ bản thì suốt đời bạn chỉ đi hỏi những câu ngớ ngẩn thế này thôi. Lúc đó đừng vào kêu sao em hỏi ko ai trả lời.
          AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
          Xem thêm tại Online Store ---> Click here
          Mob: 0982.083.106

          Comment


          • #6
            Nguyên văn bởi AVR_VN Xem bài viết
            Code:
            char buf[33]; 
            unsigned int temp; 
            temp=100;    
            sprintf(buf,"TEMP: %d\xdfC",temp);
                  lcd_gotoxy(3,0);           
                  lcd_puts(buf);
            câu lệnh như trên sẽ ghi ra màn LCD " TEMP: 100°C "

            Mình đã làm thử câu lệnh này rồi. Có một số vấn đề mình chưa được rõ lắm đó là:

            1. Kích thước của mảng có ảnh hưởng đến kết quả hiển thị trên LCD ko? Vì khi mình dùng hàm này hiện kết quả của phép chia số thực thì với kích thước khác nhau của mảng sẽ cho kết quả khác nhau.=>>>Chưa hiểu vai trò của biến mảng này???

            2.Ở chỗ %d, nếu ta khai báo là %03f thì sẽ có 3 chữ số sau dấu phảy được hiển thị đúng không?

            Comment


            • #7
              @: vulongdt10
              trả lời câu 1, bạn khai báo mảng lớn chút để chống tràn là ok mà,... vai trò của mảng thì bạn đọc lại phần xuất nhập trong lập trình C, ở đây thì nó đóng vai trò là buffer -> nó thế hehe
              trả lời câu 2, đúng rồi: %.3f nhưng mà nếu dùng số thực chú ý set lại trong phần: project > configue > C compiler > [S]printf Features > Float,Width, precision
              ok !
              *** Thành viên không biết gì về điện ***

              Comment


              • #8
                Nguyên văn bởi vulongdt10 Xem bài viết

                2.Ở chỗ %d, nếu ta khai báo là %03f thì sẽ có 3 chữ số sau dấu phảy được hiển thị đúng không?
                Sai. Xem help của hàm này trong CAVR nhé.
                AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
                Xem thêm tại Online Store ---> Click here
                Mob: 0982.083.106

                Comment


                • #9
                  To AVR_VN: Mảng này là một biến đệm. Cái này mình cũng đã nghĩ như thế rồi. Bạn cho mình hỏi, rõ ràng biến đệm này không được sử dụng cho một phép toán nào, vậy tại sao lại có thể tràn bit?

                  Mình đã thử hiện thị dấu phảy động như bạn nói. Khi thay %03f và %05f đều cho ra màn LCD 5 chữ số đằng sau dấu phảy? Chả hiểu gì cả!

                  Bác VNarmy. Em cũng đã đọc lướt qua phần help của CAV rồi. Nhưng mà hình như là ko có chỗ nói về vấn đề này hay sao ấy. Để em đọc lại cái nữa đã. Mà bác có thể trích luôn hộ em chỗ nói về vấn đề này lên đây được ko? Thanks bác.

                  Comment


                  • #10
                    mình chỉ ghi kiểu %+.3f chứ chưa %+03f bao giờ
                    *** Thành viên không biết gì về điện ***

                    Comment

                    Về tác giả

                    Collapse

                    bijusi@ Tìm hiểu thêm về bijusi@

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

                    Collapse

                    Đang tải...
                    X