پاسخ : سنسور 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);
;
;
;
;


دیدگاه