سلام
یه دماسنج ساده با زبون سی با سنسور 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; } }
دیدگاه