Thông báo

Collapse
No announcement yet.

Giúp đỡ về ATMega8 và LM35

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

  • Giúp đỡ về ATMega8 và LM35

    Mình đang phải làm bài tập đo nhiệt độ dùng LM35( CHỉ là mô phỏng thôi). Mình mới chỉ làm mạch đơn giản để hiển thị được nhiệt độ đã nhưng phần code mình không rõ một số chỗ mong mọi người chỉ bảo
    Code:
    #include <mega8.h>
     // Alphanumeric LCD Module functions
    #asm
       .equ __lcd_port=0x18 ;PORTB
       .equ __i2c_port=0x18
       .equ __sda_bit=3
        .equ __scl_bit=4
    #endasm
    #include <lcd.h>
    #include <delay.h>
    #include <stdlib.h>
    #include <stdio.h>
    #define ADC_VREF_TYPE 0x00
    
    // Read the AD conversion result
    unsigned int read_adc(unsigned char adc_input)
    {
    ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
    // Delay needed for the stabilization of the ADC input voltage
    delay_us(10);
    // Start the AD conversion
    ADCSRA|=0x40;
    // Wait for the AD conversion to complete
    while ((ADCSRA & 0x10)==0);
    ADCSRA|=0x10;
    return ADCW;
    }
    
    void main(void)
    {
    // ADC initialization
    // ADC Clock frequency: 1000.000 kHz
    // ADC Voltage Reference: AREF pin
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0x82;
    
    lcd_init(16);
    
    while (1)
          {
        // Place your code here 
          unsigned char b[10],;
          int a;
          a=read_adc(PORTC.0);
          itoa(a,b);
          lcd_putsf("Nhiet do :");
          lcd_puts(b);
          delay_ms(1000);
          lcd_clear();
          };
    }
    Có điều mình chưa hiểu cách đọc ADC như nào??.Vout nối vào chân AVC nào cũng được à?
    Và Hàm read_adc()?.
    Đối với bài này thì có cần phải viết thêm hàm gì nữa không hay chỉ sử dụng nhưng hàm đã sẵn?
    Và trong mô phỏng Proteus thì LM35 hoạt động kiều gì nó lầy nhiệt độ ở đâu?
    Mong mọi người giúp mình với.

    Sơ đồ bằng Proteus 7.1(file dinh kem)
    Attached Files

  • #2
    Sao không thấy ai vào giúp mình vậy?
    Last edited by stalinz; 17-05-2009, 17:02.

    Comment


    • #3
      Chán quá mọi người ơi giúp mình đi nào?

      Comment


      • #4
        cái này giống cái bạn cần
        Attached Files
        Last edited by enter88; 23-05-2009, 22:02.

        Comment


        • #5
          bạn chắc dùng C code vison rùi, bạn gọi hàm read_adc(PORTC.0) là sai. tham số của hàm read_adc() là một biến kiểu Unsigned char mà. bạn nên đọc lại datasheet của VDK mega8. cái adc_input chính là giá trị của thanh ghi ADMUX. "ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);" vd. với Mega16: read_adc(0x04); là mình đặt đầu vào AD là ở chân PORTA.3. bạn đọc lại cách thiết lập đầu vào của mega8 rồi đặt giá trị adc_input là ok ý mà. chúc bạn thành công! ^^

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X