Thông báo

Collapse
No announcement yet.

Cách ghép nối ATmega16 với LM35

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

  • #16
    Nguyên văn bởi haoth2 Xem bài viết
    Ban lamour ơi, bạn dùng Proteus phiên bản mấy vậy, sao con LM35 của mình khác của bạn nhỉ, chắc là lỗi do cái này đây!!!, có thể share bộ cài Proteus của bạn cho mình với
    Tôi dùng bản 7.1 đó, link download cũng lấy từ box các phần mềm hỗ trợ của diễn đàn mà.

    Comment


    • #17
      Nguyên văn bởi gtvt45 Xem bài viết
      Úi trời, đừng mô phỏng.
      Làm thật đi!
      Mình làm thật cái dc ngay mà, không có vấn đề gì!

      CHúc thành công.....
      vậy cho mình hỏi ở đâu bán con LM35 zay?hay phải thay bằng LM335

      Comment


      • #18
        Cám ơn bài viết của các bạn rất hay.
        Chưa biết thì học! Học có thể biết hoặc không biết!

        Comment


        • #19
          Ai có thư viện chứa con ATmega16 không cho mình với, đang cần vẽ mạch con này mà tìm trong thư viện không có, mình dung orcad 9.2. email của mình hoangnam3.0@gmail.com. thank trước nha!
          |

          Comment


          • #20
            Nguyên văn bởi haoth2 Xem bài viết
            Mình đã thử rồi, nhưng mà sao khi mô phỏng trong Proteus thì lại không được nhỉ, Chỉ mới ghép nối vào mạch chưa viết code gì cả, thì báo lỗi là No model specifired for U2, là thế nào nhỉ
            Bạn kích phải vào con LM35 hay bất kỳ linh kiện nào khác nếu báo lỗi mô phỏng. Chọn Edit Properties. Một cửa sổ hiện ra. Tích vào Exclude from Simulation.
            Thử Debug lại coi!

            Comment


            • #21
              cảm ơn bạn rất nhiều!

              Nguyên văn bởi linhDT1 Xem bài viết
              phan lap trinh
              cảm ơn bạn rất nhiều!
              Bạn có thể share các file thư viện kèm theo được ko ?
              Thanks!!
              :-)

              Comment


              • #22
                cảm ơn bạn LinnDT1!
                Last edited by pavo_lusa; 03-11-2008, 04:05.
                :-)

                Comment


                • #23
                  các bạn cho mình hỏi điện áp chuẩn vào chân VS+ của con LM35 DZ bao nhiêu thì đúng.

                  mình nối thẳng chân 1 vào 5V, được 1 lúc là LM35 nóng rẫy lên, phải rút ra ngay
                  |

                  Comment


                  • #24
                    Nguyên văn bởi haoth2 Xem bài viết
                    Trong CodevisionAVR có phần tạo mã tự động, khi mình cho phép ADC thì trong code của nó có hàm read_adc(unsigned char adc_input). Cho mình hỏi cách sử dụng hàm này thế nào được không? Chân Vout của LM35 mình ghép vào chân P0.0
                    Nếu được share cho mình code luôn bạn ơi
                    chào cả mọi người mình cũng mới học AVR và đã thử lập trình với lm35 thấy chạy mô phỏng tốt lên post bài lên cho mọi ngưởi tham khảo
                    #include <mega16.h>
                    #include<delay.h>
                    // Alphanumeric LCD Module functions
                    #asm
                    .equ __lcd_port=0x18 ;PORTB
                    #endasm
                    #include <lcd.h>

                    #define FIRST_ADC_INPUT 0
                    #define LAST_ADC_INPUT 0
                    unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
                    #define ADC_VREF_TYPE 0x20

                    // ADC interrupt service routine
                    // with auto input scanning
                    interrupt [ADC_INT] void adc_isr(void)
                    {
                    register static unsigned char input_index=0;
                    // Read the 8 most significant bits
                    // of the AD conversion result
                    adc_data[input_index]=ADCH;
                    // Select next ADC input
                    if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
                    input_index=0;
                    ADMUX=(FIRST_ADC_INPUT|ADC_VREF_TYPE)+input_index;
                    // Start the AD conversion
                    ADCSRA|=0x40;
                    }

                    // Declare your global variables here

                    void lcd_putnum(unsigned char so,unsigned char x,unsigned char y)
                    {
                    unsigned char a,b,c;
                    a=so/100;
                    // lay fan tram
                    b=(so-100*a)/10;
                    // lay fan chuc
                    c=(so-100*a-10*b);
                    // lay hang don vi
                    lcd_gotoxy(x,y);
                    // ve vi tri x,y
                    lcd_putchar(a+48);
                    // day ra hang tram, ma ascii
                    lcd_putchar(b+48);
                    // day ra hang chuc, ma ascii
                    lcd_putchar(c+48);
                    // day ra hang don vi, ma ascii
                    }

                    void main(void)
                    {
                    // Declare your local variables here

                    // Input/Output Ports initialization
                    // Port A initialization
                    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                    PORTA=0x00;
                    DDRA=0x00;

                    // Port B initialization
                    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                    PORTB=0x00;
                    DDRB=0x00;

                    // Port C initialization
                    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                    PORTC=0x00;
                    DDRC=0x00;

                    // Port D initialization
                    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                    PORTD=0x00;
                    DDRD=0x00;

                    // ADC initialization
                    // ADC Clock frequency: 125.000 kHz
                    // ADC Voltage Reference: AREF pin
                    // ADC Auto Trigger Source: None
                    // Only the 8 most significant bits of
                    // the AD conversion result are used
                    ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE;
                    ADCSRA=0xCE;

                    // LCD module initialization
                    lcd_init(16);

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

                    while (1)
                    {
                    // Place your code here
                    lcd_putnum(2*adc_data[0],0,0);
                    delay_ms(300);
                    // tre 3 s, cap nhat du lieu mot lan
                    };
                    }

                    Comment


                    • #25
                      ham ngat ban khai bao trong chuong trinh ban su dung nhu nao vay???????????

                      Comment


                      • #26
                        minh cung dang mo phong LM35 trong proteus, ma LM35 cung No simulator model, ban nao co the chi cho minh cach Debug no khong.thanks!

                        Comment


                        • #27
                          nhờ bạn giúp đỡ về :lm35 + avr ???????????????

                          Nguyên văn bởi huetkiem Xem bài viết
                          chào cả mọi người mình cũng mới học AVR và đã thử lập trình với lm35 thấy chạy mô phỏng tốt lên post bài lên cho mọi ngưởi tham khảo
                          #include <mega16.h>
                          #include<delay.h>
                          // Alphanumeric LCD Module functions
                          #asm
                          .equ __lcd_port=0x18 ;PORTB
                          #endasm
                          #include <lcd.h>

                          #define FIRST_ADC_INPUT 0
                          #define LAST_ADC_INPUT 0
                          unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
                          #define ADC_VREF_TYPE 0x20

                          // ADC interrupt service routine
                          // with auto input scanning
                          interrupt [ADC_INT] void adc_isr(void)
                          {
                          register static unsigned char input_index=0;
                          // Read the 8 most significant bits
                          // of the AD conversion result
                          adc_data[input_index]=ADCH;
                          // Select next ADC input
                          if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
                          input_index=0;
                          ADMUX=(FIRST_ADC_INPUT|ADC_VREF_TYPE)+input_index;
                          // Start the AD conversion
                          ADCSRA|=0x40;
                          }

                          // Declare your global variables here

                          void lcd_putnum(unsigned char so,unsigned char x,unsigned char y)
                          {
                          unsigned char a,b,c;
                          a=so/100;
                          // lay fan tram
                          b=(so-100*a)/10;
                          // lay fan chuc
                          c=(so-100*a-10*b);
                          // lay hang don vi
                          lcd_gotoxy(x,y);
                          // ve vi tri x,y
                          lcd_putchar(a+48);
                          // day ra hang tram, ma ascii
                          lcd_putchar(b+48);
                          // day ra hang chuc, ma ascii
                          lcd_putchar(c+48);
                          // day ra hang don vi, ma ascii
                          }

                          void main(void)
                          {
                          // Declare your local variables here

                          // Input/Output Ports initialization
                          // Port A initialization
                          // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                          // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                          PORTA=0x00;
                          DDRA=0x00;

                          // Port B initialization
                          // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                          // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                          PORTB=0x00;
                          DDRB=0x00;

                          // Port C initialization
                          // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                          // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                          PORTC=0x00;
                          DDRC=0x00;

                          // Port D initialization
                          // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                          // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                          PORTD=0x00;
                          DDRD=0x00;

                          // ADC initialization
                          // ADC Clock frequency: 125.000 kHz
                          // ADC Voltage Reference: AREF pin
                          // ADC Auto Trigger Source: None
                          // Only the 8 most significant bits of
                          // the AD conversion result are used
                          ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE;
                          ADCSRA=0xCE;

                          // LCD module initialization
                          lcd_init(16);

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

                          while (1)
                          {
                          // Place your code here
                          lcd_putnum(2*adc_data[0],0,0);
                          delay_ms(300);
                          // tre 3 s, cap nhat du lieu mot lan
                          };
                          }
                          mình cũng đang học avr , bạn có thể cho mình mạch nguyên lý không/
                          thien.dhbk@yahoo.com.vn
                          |

                          Comment


                          • #28
                            Nguyên văn bởi huetkiem Xem bài viết
                            chào cả mọi người mình cũng mới học AVR và đã thử lập trình với lm35 thấy chạy mô phỏng tốt lên post bài lên cho mọi ngưởi tham khảo
                            #include <mega16.h>
                            #include<delay.h>
                            // Alphanumeric LCD Module functions
                            #asm
                            .equ __lcd_port=0x18 ;PORTB
                            #endasm
                            #include <lcd.h>

                            #define FIRST_ADC_INPUT 0
                            #define LAST_ADC_INPUT 0
                            unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
                            #define ADC_VREF_TYPE 0x20

                            // ADC interrupt service routine
                            // with auto input scanning
                            interrupt [ADC_INT] void adc_isr(void)
                            {
                            register static unsigned char input_index=0;
                            // Read the 8 most significant bits
                            // of the AD conversion result
                            adc_data[input_index]=ADCH;
                            // Select next ADC input
                            if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
                            input_index=0;
                            ADMUX=(FIRST_ADC_INPUT|ADC_VREF_TYPE)+input_index;
                            // Start the AD conversion
                            ADCSRA|=0x40;
                            }

                            // Declare your global variables here

                            void lcd_putnum(unsigned char so,unsigned char x,unsigned char y)
                            {
                            unsigned char a,b,c;
                            a=so/100;
                            // lay fan tram
                            b=(so-100*a)/10;
                            // lay fan chuc
                            c=(so-100*a-10*b);
                            // lay hang don vi
                            lcd_gotoxy(x,y);
                            // ve vi tri x,y
                            lcd_putchar(a+48);
                            // day ra hang tram, ma ascii
                            lcd_putchar(b+48);
                            // day ra hang chuc, ma ascii
                            lcd_putchar(c+48);
                            // day ra hang don vi, ma ascii
                            }

                            void main(void)
                            {
                            // Declare your local variables here

                            // Input/Output Ports initialization
                            // Port A initialization
                            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                            PORTA=0x00;
                            DDRA=0x00;

                            // Port B initialization
                            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                            PORTB=0x00;
                            DDRB=0x00;

                            // Port C initialization
                            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                            PORTC=0x00;
                            DDRC=0x00;

                            // Port D initialization
                            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                            PORTD=0x00;
                            DDRD=0x00;

                            // ADC initialization
                            // ADC Clock frequency: 125.000 kHz
                            // ADC Voltage Reference: AREF pin
                            // ADC Auto Trigger Source: None
                            // Only the 8 most significant bits of
                            // the AD conversion result are used
                            ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE;
                            ADCSRA=0xCE;

                            // LCD module initialization
                            lcd_init(16);

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

                            while (1)
                            {
                            // Place your code here
                            lcd_putnum(2*adc_data[0],0,0);
                            delay_ms(300);
                            // tre 3 s, cap nhat du lieu mot lan
                            };
                            }
                            Đoạn code này bạn viết khá đủ, nhg mình góp ý 1 chút phần hiển thị ra LCD bạn có thể dùng nhiều hàm có sẵn của C với Codevision:
                            - Hàm printf là hàm khá phổ biến khi học C, cái này tham khảo Help
                            - Chuyển đổi số thành chuỗi thì có hàm itoa, ftoa... cũng xem Help
                            Những hàm này có sẵn, bạn chỉ phải tham khảo và dùng, khi đó code sẽ ngắn hơn.

                            Comment


                            • #29
                              ủa LM35 thì kết nối đơn giản mà. chỉ cần cho chân số 1 nối nguồn 5 v chân số 3 nối đất chân còn lại cho vào cổng adc của ATMEGA. Bạn xem lại thử protues chứ mình làm hoài có sao đâu.Chỉ có con LM135 thì rắc rối và cẩn thận thôi.

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X