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

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • lamour
    Thành viên chính thức
    • Sep 2007
    • 45

    #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

    • taiphong
      Thành viên chính thức
      • Oct 2007
      • 52

      #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

      • hieub5b
        Thành viên mới
        • Jul 2008
        • 1

        #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

        • hoangnam3.0
          Thành viên mới
          • Nov 2007
          • 9

          #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

          • Delfy_Coltec
            Thành viên mới
            • Aug 2008
            • 13

            #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

            • pavo_lusa
              Thành viên tích cực
              • Nov 2007
              • 179

              #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

              • pavo_lusa
                Thành viên tích cực
                • Nov 2007
                • 179

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

                Comment

                • hoangnq_tp
                  Thành viên mới
                  • Oct 2008
                  • 10

                  #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

                  • huetkiem
                    Thành viên mới
                    • Jun 2008
                    • 11

                    #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

                    • khacbang
                      Thành viên mới
                      • Apr 2008
                      • 7

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

                      Comment

                      • khacbang
                        Thành viên mới
                        • Apr 2008
                        • 7

                        #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

                        • nhat khon
                          Thành viên mới
                          • Feb 2009
                          • 2

                          #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

                          • Auto_engine
                            Thành viên chính thức
                            • Aug 2006
                            • 87

                            #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

                            • ptnksmart
                              Thành viên chính thức
                              • Oct 2009
                              • 46

                              #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...