اطلاعیه

Collapse
No announcement yet.

نوشتن برنامه lm35 با وقفه ADC ؟

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

    نوشتن برنامه lm35 با وقفه ADC ؟

    با سلام من برنامه LM35 رو با وقفه میکرو نوشتم اما خورجی همچنان دمای صفر رو نشون میده مشکل کجای برنامس ؟
    #include <mega16.h>
    #include <stdio.h>
    #include <delay.h>

    // Alphanumeric LCD functions
    #include <alcd.h>


    int temp;
    char lcd_buff1[15];

    // Declare your global variables here

    // Voltage Reference: AVCC pin
    #define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (0<<ADLAR))

    // ADC interrupt service routine
    interrupt [ADC_INT] void adc_isr(void)
    {
    unsigned int adc_data;

    adc_data=ADCW;
    temp=adc_data/2.045;


    }

    void main(void)
    {

    // Analog Comparator initialization
    // Analog Comparator: Off
    // The Analog Comparator's positive input is
    // connected to the AIN0 pin
    // The Analog Comparator's negative input is
    // connected to the AIN1 pin
    ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);

    // ADC initialization
    // ADC Clock frequency: 15/625 kHz
    // ADC Voltage Reference: AVCC pin
    // ADC Auto Trigger Source: ADC Stopped
    ADMUX=ADC_VREF_TYPE;
    ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (0<<ADPS0);
    SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);

    // Alphanumeric LCD initialization
    // Connections are specified in the
    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
    // RS - PORTB Bit 0
    // RD - PORTB Bit 1
    // EN - PORTB Bit 2
    // D4 - PORTB Bit 4
    // D5 - PORTB Bit 5
    // D6 - PORTB Bit 6
    // D7 - PORTB Bit 7
    // Characters/line: 16
    lcd_init(16);

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

    while (1)
    {

    sprintf(lcd_buff1,"T:%d\xdf C",temp);
    lcd_gotoxy(0,0);
    lcd_puts(lcd_buff1);

    }
    }
    خدایا یکی بزرگترین آرزویهایم در این دنیا این است که همه مردم حالشان خوب باشد و احساس خوشبختی داشته باشند....

    #2
    پاسخ : نوشتن برنامه lm35 با وقفه ADC ؟

    سلام
    شما برای شروع تبدیل باید بیت adsc از رجیستر adcsra رو یک کنید.تو مد free running یک دفعه و تو مد single هر دفعه باید یک بشه برای تبدیل.
    [آموزشی] کنترل رله با پیامک توسط sim800l
    [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
    [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
    [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
    صفحه اینستاگرام : ecdco_ir

    دیدگاه


      #3
      پاسخ : نوشتن برنامه lm35 با وقفه ADC ؟

      الان من در مد free گذاشتم اما باز هیچی نشون نمیده :
      #include <mega16.h>
      #include <stdio.h>
      #include <delay.h>

      // Alphanumeric LCD functions
      #include <alcd.h>

      // Declare your global variables here

      unsigned char adcdata[10];
      int temp;




      // Voltage Reference: AVCC pin
      #define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (1<<ADLAR))

      // ADC interrupt service routine
      interrupt [ADC_INT] void adc_isr(void)
      {
      // Read the 8 most significant bits
      // of the AD conversion result
      temp=ADCH;
      sprintf(adcdata,"Temp=%d\xDFC",temp);
      lcd_gotoxy(0,0);
      lcd_puts(adcdata);


      }

      void main(void)
      {

      // ADC initialization
      // ADC Clock frequency: 15/625 kHz
      // ADC Voltage Reference: AVCC pin
      // ADC Auto Trigger Source: Free Running
      // Only the 8 most significant bits of
      // the AD conversion result are used
      ADMUX=ADC_VREF_TYPE;
      ADCSRA=(1<<ADEN) | (0<<ADSC) | (1<<ADATE) | (0<<ADIF) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (0<<ADPS0);
      SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);

      // SPI initialization
      // SPI disabled
      SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);

      // TWI initialization
      // TWI disabled
      TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);

      // Alphanumeric LCD initialization
      // Connections are specified in the
      // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
      // RS - PORTB Bit 0
      // RD - PORTB Bit 1
      // EN - PORTB Bit 2
      // D4 - PORTB Bit 4
      // D5 - PORTB Bit 5
      // D6 - PORTB Bit 6
      // D7 - PORTB Bit 7
      // Characters/line: 16
      lcd_init(16);

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

      while (1){
      sprintf(adcdata,"Temp=%d\xDFC",temp);
      lcd_gotoxy(0,0);
      lcd_puts(adcdata);
      }

      }
      جدیدترین ویرایش توسط fmicro; ۱۰:۳۹ ۱۳۹۶/۰۷/۲۴.
      خدایا یکی بزرگترین آرزویهایم در این دنیا این است که همه مردم حالشان خوب باشد و احساس خوشبختی داشته باشند....

      دیدگاه


        #4
        پاسخ : نوشتن برنامه lm35 با وقفه ADC ؟

        نوشته اصلی توسط fmicro نمایش پست ها
        الان من در مد free گذاشتم اما باز هیچی نشون نمیده :
        #include <mega16.h>
        #include <stdio.h>
        #include <delay.h>

        // Alphanumeric LCD functions
        #include <alcd.h>

        // Declare your global variables here

        unsigned char adcdata[10];
        int temp;




        // Voltage Reference: AVCC pin
        #define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (1<<ADLAR))

        // ADC interrupt service routine
        interrupt [ADC_INT] void adc_isr(void)
        {
        // Read the 8 most significant bits
        // of the AD conversion result
        temp=ADCH;
        sprintf(adcdata,"Temp=%d\xDFC",temp);
        lcd_gotoxy(0,0);
        lcd_puts(adcdata);


        }

        void main(void)
        {

        // ADC initialization
        // ADC Clock frequency: 15/625 kHz
        // ADC Voltage Reference: AVCC pin
        // ADC Auto Trigger Source: Free Running
        // Only the 8 most significant bits of
        // the AD conversion result are used
        ADMUX=ADC_VREF_TYPE;
        ADCSRA=(1<<ADEN) | (0<<ADSC) | (1<<ADATE) | (0<<ADIF) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (0<<ADPS0);
        SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);

        // SPI initialization
        // SPI disabled
        SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);

        // TWI initialization
        // TWI disabled
        TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);

        // Alphanumeric LCD initialization
        // Connections are specified in the
        // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
        // RS - PORTB Bit 0
        // RD - PORTB Bit 1
        // EN - PORTB Bit 2
        // D4 - PORTB Bit 4
        // D5 - PORTB Bit 5
        // D6 - PORTB Bit 6
        // D7 - PORTB Bit 7
        // Characters/line: 16
        lcd_init(16);

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

        while (1){
        sprintf(adcdata,"Temp=%d\xDFC",temp);
        lcd_gotoxy(0,0);
        lcd_puts(adcdata);
        }

        }
        بیت adsc رو که یک نکردید
        [آموزشی] کنترل رله با پیامک توسط sim800l
        [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
        [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
        [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
        صفحه اینستاگرام : ecdco_ir

        دیدگاه


          #5
          پاسخ : نوشتن برنامه lm35 با وقفه ADC ؟

          میشه بگید چطور باید یکش کنم تکی ؟ و کجای برنامه بنویسمش ؟
          خدایا یکی بزرگترین آرزویهایم در این دنیا این است که همه مردم حالشان خوب باشد و احساس خوشبختی داشته باشند....

          دیدگاه


            #6
            پاسخ : نوشتن برنامه lm35 با وقفه ADC ؟

            نوشته اصلی توسط fmicro نمایش پست ها
            میشه بگید چطور باید یکش کنم تکی ؟ و کجای برنامه بنویسمش ؟
            همین برنامه ای که نوشتید،تو تنظیمات adc یه رجیستر هست به اسم ADCSRA که بیت adsc به صورت زیره
            کد:
            (0<<adsc)
            که شما به جای صفر باید یک قرار بدید،همین.
            اگر بازم متوجه نشدید بگید تا خودم برنامه رو تغییر بدم.
            جدیدترین ویرایش توسط سید رضا باباتبار; ۱۴:۰۸ ۱۳۹۶/۰۷/۲۵.
            [آموزشی] کنترل رله با پیامک توسط sim800l
            [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
            [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
            [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
            صفحه اینستاگرام : ecdco_ir

            دیدگاه


              #7
              پاسخ : نوشتن برنامه lm35 با وقفه ADC ؟

              منظورم این خط کد هستش:
              کد:
              ADCSRA=(1<<ADEN) | (0<<ADSC) | (1<<ADATE) |  (0<<ADIF) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1) |  (0<<ADPS0);
              SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0)
              که باید به صورت زیر نوشته بشه
              کد:
              ADCSRA=(1<<ADEN) | (1<<ADSC) | (1<<ADATE) |  (0<<ADIF) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1) |  (0<<ADPS0);
              SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0)
              [آموزشی] کنترل رله با پیامک توسط sim800l
              [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
              [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
              [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
              صفحه اینستاگرام : ecdco_ir

              دیدگاه


                #8
                پاسخ : نوشتن برنامه lm35 با وقفه ADC ؟

                اگر قرار بدید و من ببینم ممنون میشم
                خدایا یکی بزرگترین آرزویهایم در این دنیا این است که همه مردم حالشان خوب باشد و احساس خوشبختی داشته باشند....

                دیدگاه


                  #9
                  پاسخ : نوشتن برنامه lm35 با وقفه ADC ؟

                  نوشته اصلی توسط fmicro نمایش پست ها
                  اگر قرار بدید و من ببینم ممنون میشم
                  بالا که قرار دادم،لطفاً خودتون بگردید و این خط کد رو پیدا کنید.
                  جدیدترین ویرایش توسط سید رضا باباتبار; ۱۴:۰۵ ۱۳۹۶/۰۷/۲۵.
                  [آموزشی] کنترل رله با پیامک توسط sim800l
                  [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
                  [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
                  [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
                  صفحه اینستاگرام : ecdco_ir

                  دیدگاه


                    #10
                    پاسخ : نوشتن برنامه lm35 با وقفه ADC ؟

                    الان گذاشتم باز دما رو نشون نمیده :
                    #include <mega16.h>
                    #include <stdio.h>
                    #include <delay.h>

                    // Alphanumeric LCD functions
                    #include <alcd.h>

                    // Declare your global variables here

                    unsigned char adcdata[10];
                    int temp;




                    // Voltage Reference: AVCC pin
                    #define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (1<<ADLAR))

                    // ADC interrupt service routine
                    interrupt [ADC_INT] void adc_isr(void)
                    {
                    // Read the 8 most significant bits
                    // of the AD conversion result
                    temp=ADCH;
                    sprintf(adcdata,"Temp=%d\xDF C",temp);
                    lcd_gotoxy(0,0);
                    lcd_puts(adcdata);


                    }

                    void main(void)
                    {

                    // ADC initialization
                    // ADC Clock frequency: 15/625 kHz
                    // ADC Voltage Reference: AVCC pin
                    // ADC Auto Trigger Source: Free Running
                    // Only the 8 most significant bits of
                    // the AD conversion result are used
                    ADMUX=ADC_VREF_TYPE;
                    ADCSRA=(1<<ADEN) | (1<<ADSC) | (1<<ADATE) | (0<<ADIF) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (0<<ADPS0);
                    SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);

                    // SPI initialization
                    // SPI disabled
                    SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);

                    // TWI initialization
                    // TWI disabled
                    TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);

                    // Alphanumeric LCD initialization
                    // Connections are specified in the
                    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
                    // RS - PORTB Bit 0
                    // RD - PORTB Bit 1
                    // EN - PORTB Bit 2
                    // D4 - PORTB Bit 4
                    // D5 - PORTB Bit 5
                    // D6 - PORTB Bit 6
                    // D7 - PORTB Bit 7
                    // Characters/line: 16
                    lcd_init(16);

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

                    while (1);

                    }
                    خدایا یکی بزرگترین آرزویهایم در این دنیا این است که همه مردم حالشان خوب باشد و احساس خوشبختی داشته باشند....

                    دیدگاه


                      #11
                      پاسخ : نوشتن برنامه lm35 با وقفه ADC ؟

                      نوشته اصلی توسط fmicro نمایش پست ها
                      الان گذاشتم باز دما رو نشون نمیده :
                      #include <mega16.h>
                      #include <stdio.h>
                      #include <delay.h>

                      // Alphanumeric LCD functions
                      #include <alcd.h>

                      // Declare your global variables here

                      unsigned char adcdata[10];
                      int temp;




                      // Voltage Reference: AVCC pin
                      #define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (1<<ADLAR))

                      // ADC interrupt service routine
                      interrupt [ADC_INT] void adc_isr(void)
                      {
                      // Read the 8 most significant bits
                      // of the AD conversion result
                      temp=ADCH;
                      sprintf(adcdata,"Temp=%d\xDF C",temp);
                      lcd_gotoxy(0,0);
                      lcd_puts(adcdata);


                      }

                      void main(void)
                      {

                      // ADC initialization
                      // ADC Clock frequency: 15/625 kHz
                      // ADC Voltage Reference: AVCC pin
                      // ADC Auto Trigger Source: Free Running
                      // Only the 8 most significant bits of
                      // the AD conversion result are used
                      ADMUX=ADC_VREF_TYPE;
                      ADCSRA=(1<<ADEN) | (1<<ADSC) | (1<<ADATE) | (0<<ADIF) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (0<<ADPS0);
                      SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);

                      // SPI initialization
                      // SPI disabled
                      SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);

                      // TWI initialization
                      // TWI disabled
                      TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);

                      // Alphanumeric LCD initialization
                      // Connections are specified in the
                      // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
                      // RS - PORTB Bit 0
                      // RD - PORTB Bit 1
                      // EN - PORTB Bit 2
                      // D4 - PORTB Bit 4
                      // D5 - PORTB Bit 5
                      // D6 - PORTB Bit 6
                      // D7 - PORTB Bit 7
                      // Characters/line: 16
                      lcd_init(16);

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

                      while (1);

                      }
                      لطفاً شماتیک رو قرار بدید
                      [آموزشی] کنترل رله با پیامک توسط sim800l
                      [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
                      [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
                      [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
                      صفحه اینستاگرام : ecdco_ir

                      دیدگاه


                        #12
                        پاسخ : نوشتن برنامه lm35 با وقفه ADC ؟

                        چطور عکسشو بذارم ؟

                        [IMG]C:\Users\Ferdowsi\Desktop\New folder\33.jpg[/IMG]
                        خدایا یکی بزرگترین آرزویهایم در این دنیا این است که همه مردم حالشان خوب باشد و احساس خوشبختی داشته باشند....

                        دیدگاه


                          #13
                          پاسخ : نوشتن برنامه lm35 با وقفه ADC ؟

                          نوشته اصلی توسط fmicro نمایش پست ها
                          چطور عکسشو بذارم ؟

                          [IMG]C:\Users\Ferdowsi\Desktop\New folder\33.jpg[/IMG]
                          بزارش تو سایتی مثل picofile و لینکشو اینجا قرار بده.بالا گزینه ارسال تصویر داره،اگه لینکو اونجا وارد کنی تصویر بالا میاد.
                          [آموزشی] کنترل رله با پیامک توسط sim800l
                          [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
                          [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
                          [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
                          صفحه اینستاگرام : ecdco_ir

                          دیدگاه


                            #14
                            پاسخ : نوشتن برنامه lm35 با وقفه ADC ؟

                            خدایا یکی بزرگترین آرزویهایم در این دنیا این است که همه مردم حالشان خوب باشد و احساس خوشبختی داشته باشند....

                            دیدگاه


                              #15
                              پاسخ : نوشتن برنامه lm35 با وقفه ADC ؟

                              جناب باباتبار شکل رو قرار دادم مجدد روی برنامه کار کردم اما جواب نداد !
                              خدایا یکی بزرگترین آرزویهایم در این دنیا این است که همه مردم حالشان خوب باشد و احساس خوشبختی داشته باشند....

                              دیدگاه

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