1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

Nộp bài giữa kì đo lường nhiệt độ

Thảo luận trong 'Báo cáo giửa kỳ' bắt đầu bởi hieu201188, 31 Tháng năm 2009.

  1. hieu201188 New Member

    Số bài viết: 22
    Đã được thích: 0
    Điểm thành tích: 0
    TÊN: NGÔ TÙNG TRUNG HIẾU
    MSSV: 06112108 LỚP 01112CLC
    Bài này dùng LM 35 kết hợp với KIT ATMEGA 8 để đo nhiệt độ phòng rồi hiển thị nhiệt độ đó lên LED 7 doan.
    [IMG]
    video
    code
    #include <mega8.h>

    // Standard Input/Output functions
    #include <stdio.h>
    #include <stdlib.h>
    #include <delay.h>


    #define ADC_VREF_TYPE 0xC0
    #define on 1
    #define off 0
    int chuyen7seg(int x)
    { switch(x)
    {case 0:{PORTD.6=0; PORTD.5=0; PORTD.4=0; PORTD.7=0;break;}
    case 1:{PORTD.6=0; PORTD.5=0; PORTD.4=0; PORTD.7=1;break;}
    case 2:{PORTD.6=0; PORTD.5=0; PORTD.4=1; PORTD.7=0;break;}
    case 3:{PORTD.6=0; PORTD.5=0; PORTD.4=1; PORTD.7=1;break;}
    case 4:{PORTD.6=0; PORTD.5=1; PORTD.4=0; PORTD.7=0;break;}
    case 5:{PORTD.6=0; PORTD.5=1; PORTD.4=0; PORTD.7=1;break;}
    case 6:{PORTD.6=0; PORTD.5=1; PORTD.4=1; PORTD.7=0;break;}
    case 7:{PORTD.6=0; PORTD.5=1; PORTD.4=1; PORTD.7=1;break;}
    case 8:{PORTD.6=1; PORTD.5=0; PORTD.4=0; PORTD.7=0;break;}
    case 9:{PORTD.6=1; PORTD.5=0; PORTD.4=0; PORTD.7=1;break;}
    }
    }

    // Read the AD conversion result
    unsigned int read_adc(unsigned char adc_input)
    {
    ADMUX=adc_input|ADC_VREF_TYPE;
    // Start the AD conversion
    ADCSRA|=0x40;
    // Wait for the AD conversion to complete
    while ((ADCSRA & 0x10)==0);
    ADCSRA|=0x10;
    return ADCW;
    }

    // Declare your global variables here

    void main(void)
    {
    // Declare your local variables here
    int adc,donvi,chuc;
    // Input/Output Ports initialization
    // Port B initialization
    // Func7=In Func6=In Func5=Out Func4=Out Func3=Out Func2=In Func1=In Func0=In
    // State7=T State6=T State5=1 State4=1 State3=1 State2=T State1=T State0=T
    PORTB=0x38;
    DDRB=0x38;

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

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

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    TCCR0=0x00;
    TCNT0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer 1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    MCUCR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;

    // USART initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Receiver: Off
    // USART Transmitter: On
    // USART Mode: Asynchronous
    // USART Baud rate: 9600
    UCSRA=0x00;
    UCSRB=0x08;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0x2F;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;

    // ADC initialization
    // ADC Clock frequency: 115.200 kHz
    // ADC Voltage Reference: Int., cap. on AREF
    ADMUX=ADC_VREF_TYPE;
    ADCSRA=0x86;

    while (1)
    {
    // Place your code here
    adc=(float)read_adc(0)/4;
    donvi=adc%10;
    chuc=(adc-donvi)/10;
    PORTB.5=off;PORTB.3=on;
    chuyen7seg(donvi);
    delay_ms(10);
    PORTD.7=1; PORTD.6=1; PORTD.5=1; PORTD.4=1;
    PORTB.5=on;PORTB.3=off;
    chuyen7seg(chuc);
    delay_ms(10);


    };

    }

Chia sẻ trang này