Thông báo

Collapse
No announcement yet.

Lỗi này là lỗi gì ạ???

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

  • Lỗi này là lỗi gì ạ???

    Em có viết 1 đoạn code để hiển thị giá trị 1 biến ra LCD:
    #include <mega16.h>
    #include <delay.h>
    #include <stdio.h>
    #include <stdlib.h>
    ...
    char buffer[20];
    float f=123456;
    sprintf(buffer," f=%6f Hz \n",f);
    lcd_gotoxy(0,0);
    lcd_puts(buffer);
    ...
    Lý ra ở LCD sẽ hiện ra: f=123456 Hz . Nhưng nó chỉ hiện: f= Hz
    Lỗi ở đâu em tìm chưa ra, các bác chỉ giúp em v
    01689964729

  • #2
    Phải là f=%6.6f Hz
    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


    • #3
      Nguyên văn bởi VNarmy Xem bài viết
      Phải là f=%6.6f Hz
      Em làm theo anh rồi nhưng nó lại báo là F = 6 Hz
      đây là code của e. Anh xem giúp e với


      /************************************************** ***
      This program was produced by the
      CodeWizardAVR V1.25.9 Standard
      Automatic Program Generator
      © Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
      HP InfoTech, Development Tools for Microcontrollers, C Compilers, In-System Programmers

      Project :
      Version :
      Date : 2/4/2013
      Author : F4CG
      Company : F4CG
      Comments:


      Chip type : ATmega16
      Program type : Application
      Clock frequency : 8,000000 MHz
      Memory model : Small
      External SRAM size : 0
      Data Stack size : 256
      ************************************************** ***/

      #include <mega16.h>
      #include <delay.h>
      #include <stdio.h>
      #include <stdlib.h>
      // Alphanumeric LCD Module functions
      #asm
      .equ __lcd_port=0x15 ;PORTC
      #endasm
      #include <lcd.h>
      unsigned long int Chu_Ky = 0;
      unsigned long int Icp1 = 0;
      unsigned long int Timer1_Over = 0;
      unsigned int x;
      // Timer 1 overflow interrupt service routine
      interrupt [TIM1_OVF] void timer1_ovf_isr(void)
      {
      // Place your code here
      Timer1_Over += 0xffff;
      }

      // Timer 1 input capture interrupt service routine
      interrupt [TIM1_CAPT] void timer1_capt_isr(void)
      {
      // Place your code here
      x=(unsigned int)ICR1H * 256 + ICR1L;
      Chu_Ky = Timer1_Over + x - Icp1;
      Icp1 = x;
      Timer1_Over = 0;
      }


      void main(void)
      {

      unsigned char buffer[20];
      float F =12345;

      PORTA=0x00;
      DDRA=0x00;

      PORTB=0x00;
      DDRB=0x00;


      PORTC=0x00;
      DDRC=0x00;

      PORTD=0x00;
      DDRD=0x00;

      TCCR0=0x00;
      TCNT0=0x00;
      OCR0=0x00;


      TCCR1A=0x00;
      TCCR1B=0x02;
      TCNT1H=0x00;
      TCNT1L=0x00;
      ICR1H=0x00;
      ICR1L=0x00;
      OCR1AH=0x00;
      OCR1AL=0x00;
      OCR1BH=0x00;
      OCR1BL=0x00;

      ASSR=0x00;
      TCCR2=0x00;
      TCNT2=0x00;
      OCR2=0x00;

      MCUCR=0x00;
      MCUCSR=0x00;

      TIMSK=0x24;


      ACSR=0x80;
      SFIOR=0x00;

      // LCD module initialization
      lcd_init(16);

      // Global enable interrupts
      #asm("sei")

      while (1)
      {
      // Place your code here

      lcd_gotoxy(0,1);
      sprintf(buffer,"F= %6.6f",F);
      lcd_puts(buffer);
      delay_ms(10);
      };
      }
      01689964729

      Comment


      • #4
        bạn nhấp vào project trên thanh công cụ, rồi chọn configure rồi nhấp vào thẻ C Compiler, ở mục (s)printf features bạn chọn float, width, precision thử xem

        Comment


        • #5
          Nguyên văn bởi chung1608 Xem bài viết
          bạn nhấp vào project trên thanh công cụ, rồi chọn configure rồi nhấp vào thẻ C Compiler, ở mục (s)printf features bạn chọn float, width, precision thử xem
          e cảm ơn anh. e làm được rồi. Nhưng anh ơi. trên LCD nó lại hiện là F = 12345.000000H nó làm mất chữ z của e rồi. e không muốn hiện mấy số 0 kia thì làm thế nào ạ
          01689964729

          Comment


          • #6
            e làm được rồi.em quên là e đang để %6.6f.
            01689964729

            Comment


            • #7
              Nguyên văn bởi kenvindang Xem bài viết
              e cảm ơn anh. e làm được rồi. Nhưng anh ơi. trên LCD nó lại hiện là F = 12345.000000H nó làm mất chữ z của e rồi. e không muốn hiện mấy số 0 kia thì làm thế nào ạ
              @@ èo làm viết cái bài

              Comment


              • #8
                Nguyên văn bởi chung1608 Xem bài viết
                @@ èo làm viết cái bài
                tại e mò mấy ngày k ra. a bảo e thế là nó hiển thị được sướng quá nên e k xem lại code.
                01689964729

                Comment

                Về tác giả

                Collapse

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

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

                Collapse

                Đang tải...
                X