سلام
یه دماسنج ساده با زبون سی با سنسور lm35 , اتمگا 8
فایل سورس و اگر فایل pcb باشه که دیگه عالیه
یه دماسنج ساده با زبون سی با سنسور lm35 , اتمگا 8
فایل سورس و اگر فایل pcb باشه که دیگه عالیه

#include <mega8.h>
#include <delay.h>
#include <stdio.h>
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#define ADC_VREF_TYPE 0x00
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)
{
char lcd_buff[10];
float float_temp;
// ADC Clock frequency: 1000/000 kHz
// ADC Voltage Reference: AREF pin
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
lcd_init(16);
lcd_clear();
while(1)
{
lcd_clear();
float_temp = read_adc(0) / 2.048;
sprintf(lcd_buff,"T=%.1f", float_temp);
lcd_gotoxy(0,0);
lcd_puts(lcd_buff);
lcd_putchar(0xdf); // deg sign
lcd_putchar('C');
delay_ms(1000);
}
}
#include <mega8.h>
#include <delay.h>
#include <stdlib.h>
#include <stdio.h>
int temp,t1,t2,data,a;
unsigned char segment [] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void main (void)
{
PORTC = 0x00;
DDRC = 0x00;
DDRD = 0xFF;
DDRB = 0xFF;
TCCR2 = 0x0A;
TIFR = 0x80;
TIMSK = 0x80;
ADMUX =0x41;
ADCSRA = 0xC3;
SFIOR = 0x00;
#asm("sei")
TCNT2=0x00;
OCR2 = 124;
while (1)
{
delay_ms (1);
PORTB = 0x08;
PORTD = segment [t1];
delay_ms (1);
PORTB = 0x04;
PORTD = segment [t2];
}
}
interrupt [TIM2_COMP] void timer0_comp_isr(void)
{
a++;
if (a==1000)
{
TCNT2 = 0x00;
ADCSRA = ADCSRA|0x40;
data = ADCW;
temp = data*5*100/1024;
t1 = temp/10;
t2 = temp%10;
}
}
دیدگاه