پاسخ : سنسور lm35 با نمایش دما بر روی led
دوست عزیز امیدوارم مشکل حل شده باشه. :bye
نوشته اصلی توسط مهدی متاجی
//LM35 Temperature Sensor */ #include <stdio.h> #include <delay.h> #include <mega16.h> #include <lcd.h> #define xtal 1000000 #define ADC_VREF_TYPE 0xC0 // // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x12 ;PORTD #endasm //Variables // int adc_data; char buffer[16]; float t; // //Functions // void loop(void); unsigned int read_adc(unsigned char adc_input); // //Main // void main(void) { //PortA -> Input PORTA = 0x00; DDRA = 0x00; //Set ADSC_VREF -> Internal 2.56V ADMUX = ADC_VREF_TYPE; //ADC Enable & Prescaler -> 64 ADCSRA = 0x86; //Initial LCD lcd_init(16); lcd_clear(); lcd_puts(" LM35 Sensor "); delay_ms(1000); lcd_clear(); //Loop loop(); } // //Loop Function // void loop(void) { while (1) { //Read LM35_a adc_data = read_adc(0); //t = adc_data/4; delay_ms(100); //Show on LCD sprintf(buffer," Temp=%5.1f\xDFC", t); ///xDF->° lcd_gotoxy(0,0); lcd_puts(buffer); } } // //Read ADC // unsigned int read_adc(unsigned char adc_input) { ADMUX= adc_input | ADC_VREF_TYPE; delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; }
//LM35 Temperature Sensor */ #include <stdio.h> #include <delay.h> #include <mega16.h> #include <lcd.h> #define xtal 1000000 #define ADC_VREF_TYPE 0xC0 // // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x12 ;PORTD #endasm //Variables // int adc_data; char buffer[16]; float t; // //Functions // void loop(void); unsigned int read_adc(unsigned char adc_input); // //Main // void main(void) { //PortA -> Input PORTA = 0x00; DDRA = 0x00; //Set ADSC_VREF -> Internal 2.56V ADMUX = ADC_VREF_TYPE; //ADC Enable & Prescaler -> 64 ADCSRA = 0x86; //Initial LCD lcd_init(16); lcd_clear(); lcd_puts(" LM35 Sensor "); delay_ms(1000); lcd_clear(); //Loop loop(); } // //Loop Function // void loop(void) { while (1) { //Read LM35_a adc_data = read_adc(0); //t = adc_data/4; delay_ms(100); //Show on LCD sprintf(buffer," Temp=%5.1f\xDFC", t); ///xDF->° lcd_gotoxy(0,0); lcd_puts(buffer); } } // //Read ADC // unsigned int read_adc(unsigned char adc_input) { ADMUX= adc_input | ADC_VREF_TYPE; delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; }
adc_data = read_adc(0); //t = adc_data/4; t = 36; delay_ms(100); //Show on LCD sprintf(buffer," Temp=%5.1f\xDFC", t); ///xDF->° lcd_gotoxy(0,0); lcd_puts(buffer);
دیدگاه