اطلاعیه

Collapse
No announcement yet.

ارسال خروجی ADC به صورت عدد دسیمال روی LCD

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

    ارسال خروجی ADC به صورت عدد دسیمال روی LCD

    سلام به همه ی مهندسای عزیز
    آقا خروجی یه سنسور مادون قرمز شارپو با ADC خوندم، حالا بلد نیستم کد هگز ADC رو چیجوری تبدیل کنم به دسیمال و روی LCD نشون بدم :cry:
    خوب بی سوادیم دیگه :nerd:

    #2
    پاسخ : ارسال خروجی ADC به صورت عدد دسیمال روی LCD

    نوشته اصلی توسط R_B_R
    سلام به همه ی مهندسای عزیز
    آقا خروجی یه سنسور مادون قرمز شارپو با ADC خوندم، حالا بلد نیستم کد هگز ADC رو چیجوری تبدیل کنم به دسیمال و روی LCD نشون بدم :cry:
    خوب بی سوادیم دیگه :nerd:
    سلام
    این کار بسته به نوع میکرو میتونه متفاوت باشه
    ولی در کل این نمونه کد میتونه کمک ات کنه

    کد:
    //-----------------------------------------------------------------------------
    /// Convert a digital value in milivolt
    /// /param valueToconvert Value to convert in milivolt
    //-----------------------------------------------------------------------------
    static unsigned int ConvHex2mV( unsigned int valueToConvert )
    {
      return( (ADC_VREF * valueToConvert)/0x3FF);
    }

    دیدگاه


      #3
      پاسخ : ارسال خروجی ADC به صورت عدد دسیمال روی LCD

      نوشته اصلی توسط mbkarami
      سلام
      این کار بسته به نوع میکرو میتونه متفاوت باشه
      ولی در کل این نمونه کد میتونه کمک ات کنه

      کد:
      //-----------------------------------------------------------------------------
      /// Convert a digital value in milivolt
      /// /param valueToconvert Value to convert in milivolt
      //-----------------------------------------------------------------------------
      static unsigned int ConvHex2mV( unsigned int valueToConvert )
      {
        return( (ADC_VREF * valueToConvert)/0x3FF);
      }
      ممنون ولی یه سوال:
      این ریترن چیو بر میگردونه؟
      آقا این برنامه ایه که برا ADC دارم، از تو نت گرفتم میخوام به جای خروجی hex رو یوآرت تبدیل شدشو تو به ولت تو ال سی دی کاراکتری داشته باشم.

      کد:
      #include <lpc17xx.h>
      #include <uart.h>
      
      void Delay (uint32_t Time)
      {
        uint32_t i;
        
        i = 0;
        while (Time--) {
          for (i = 0; i < 5000; i++);
        }
      }
      
      
      void main(){
      
       SystemInit();
       UART0_Init();
       
       
        LPC_PINCON->PINSEL3 |= (3<<30);        /* P1.31 is AD0.5 */
      
        LPC_SC->PCONP    |= (1<<12);        /* Enable power to ADC block */
      
        LPC_ADC->ADCR    = (1<< 5) |       /* select AD0.5 pin */
                   (4<< 8) |       /* ADC clock is 25MHz/5 */
                   (1<<21);        /* enable ADC */ 
      
      
      	while(1){
      	 uint32_t adcResult;
       
         LPC_ADC->ADCR |= (1<<24);           /* start conversion */
      
          while (!(LPC_ADC->ADGDR & (1UL<<31)));     /* Wait for Conversion end */
          
          adcResult=((LPC_ADC->ADGDR) >> 4) & (0xFFF);     /* read converted value */ 
      	  LPC_ADC->ADCR &= ~(7<<24);           /* stop conversion */
      			
      	  UART0_SendChar(adcResult);
      	  UART0_SendByte('\n'); 
      
      	  Delay(1000);
      			}
      }

      دیدگاه


        #4
        پاسخ : ارسال خروجی ADC به صورت عدد دسیمال روی LCD

        در واقع این کد ، تابعی هست که یه مقدار هگز رو به عنوان ورودی دریافت میکنه و مقدار ولتاژ ،البته به میلی ولت ، رو به عنوان خروجی برمی گردونه


        اضافه شده در تاریخ :
        اگه بخوام ساده تر بگم
        شما برای تبدیل باید مقدار هگزی که داری رو در ولتاژ رفرنس adc (ترجیحا به میلی ولت )ضرب کنی و بعد بسته به نوع adc که هشت بیتی هست یا ده بیتی تقسیم بر اعداد 0xff یا 0x3ff کنی .

        دیدگاه

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