اطلاعیه

Collapse
No announcement yet.

مشکل در نمایش اعداد بر روی سون سگمنت ؟

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در نمایش اعداد بر روی سون سگمنت ؟

    سلام برنامه یک ولتمتر سه رقمی رو نوشتم که الگوریتمش نمایش اعداد بر روی سون سگمنت رو به شکل زیر تعریف کردم که متاسفانه به این صورت نمایش میده مثلا 150 ولت ورودی را 155 نشون میده ، از 200 تا 209 رو 200 نشون میده ، وهمینطور برای بقیه اعداد هم همینطور ، مشکل کجاست ؟
    کد:
        while (1)
        {
        vin=read_adc(0);
     vin=vin*300/1023;
       sadgan=vin/100;
       PORTD=0x01;
       PORTB=digits[sadgan];
       delay_ms(10);
       PORTD=0x00;
       dahgan=vin/100;
       dahgan=dahgan*100;
       dahgan=vin-dahgan;
       dahgan=dahgan/10;
       PORTD=0x02;
       PORTB=digits[dahgan];
       delay_ms(10);
       PORTD=0x00;
       ykan=vin/10;
       ykan=ykan*10;
       ykan=vin-ykan;
       PORTD=0x04;
       PORTD=digits[ykan];
       delay_ms(10);
       PORTD=0x00; 
        
                        
            }
        }
    خدایا یکی بزرگترین آرزویهایم در این دنیا این است که همه مردم حالشان خوب باشد و احساس خوشبختی داشته باشند....

    #2
    پاسخ : مشکل در نمایش اعداد بر روی سون سگمنت ؟

    نوشته اصلی توسط fmicro نمایش پست ها
    سلام برنامه یک ولتمتر سه رقمی رو نوشتم که الگوریتمش نمایش اعداد بر روی سون سگمنت رو به شکل زیر تعریف کردم که متاسفانه به این صورت نمایش میده مثلا 150 ولت ورودی را 155 نشون میده ، از 200 تا 209 رو 200 نشون میده ، وهمینطور برای بقیه اعداد هم همینطور ، مشکل کجاست ؟
    کد:
        while (1)
        {
        vin=read_adc(0);
     vin=vin*300/1023;
       sadgan=vin/100;
       PORTD=0x01;
       PORTB=digits[sadgan];
       delay_ms(10);
       PORTD=0x00;
       dahgan=vin/100;
       dahgan=dahgan*100;
       dahgan=vin-dahgan;
       dahgan=dahgan/10;
       PORTD=0x02;
       PORTB=digits[dahgan];
       delay_ms(10);
       PORTD=0x00;
       ykan=vin/10;
       ykan=ykan*10;
       ykan=vin-ykan;
       PORTD=0x04;
       PORTD=digits[ykan];
       delay_ms(10);
       PORTD=0x00; 
        
                        
            }
        }
    سلام
    من کمی کد رو اصلاح و مرتب کردم، امیدوارم درست کار کنه:

    while (1)
    {
    vin = read_adc(0);
    vin = vin * 0.293255; // vin * 300 / 1023

    sadgan = (vin / 100) % 10;
    dahgan = (vin / 10) % 10;
    ykan = (vin) % 10;


    PORTD = 0;
    PORTB = digits[sadgan];
    PORTD = 0x01;
    delay_ms(10);


    PORTD = 0;
    PORTB = digits[dahgan];
    PORTD = 0x02;
    delay_ms(10);


    PORTD = 0;
    PORTB = digits[ykan];
    PORTD = 0x04;
    delay_ms(10);
    }
    جدیدترین ویرایش توسط hossein.m98; ۲۱:۳۰ ۱۴۰۰/۰۹/۱۴.

    دیدگاه


      #3
      پاسخ : مشکل در نمایش اعداد بر روی سون سگمنت ؟

      نوشته اصلی توسط fmicro نمایش پست ها
      سلام برنامه یک ولتمتر سه رقمی رو نوشتم که الگوریتمش نمایش اعداد بر روی سون سگمنت رو به شکل زیر تعریف کردم که متاسفانه به این صورت نمایش میده مثلا 150 ولت ورودی را 155 نشون میده ، از 200 تا 209 رو 200 نشون میده ، وهمینطور برای بقیه اعداد هم همینطور ، مشکل کجاست ؟
      نوشته اصلی توسط fmicro نمایش پست ها
      کد:
          while (1)
          {
          vin=read_adc(0);
       vin=vin*300/1023;
         sadgan=vin/100;
         PORTD=0x01;
         PORTB=digits[sadgan];
         delay_ms(10);
         PORTD=0x00;
         dahgan=vin/100;
         dahgan=dahgan*100;
         dahgan=vin-dahgan;
         dahgan=dahgan/10;
         PORTD=0x02;
         PORTB=digits[dahgan];
         delay_ms(10);
         PORTD=0x00;
         ykan=vin/10;
         ykan=ykan*10;
         ykan=vin-ykan;
         PORTD=0x04;
         PORTD=digits[ykan];
         delay_ms(10);
         PORTD=0x00; 
          
                          
              }
          }
      PORTD=digits[ykan];
      بجای portd باید portb رو قرار بدبن
      جدیدترین ویرایش توسط kargahelec; ۰۸:۱۷ ۱۴۰۰/۰۹/۱۵.

      دیدگاه

      لطفا صبر کنید...
      X