#include #include #include // 1 Wire Bus functions #asm .equ __w1_port=0x12 ;PORTD .equ __w1_bit=0 #endasm #include <1wire.h> // DS1820 Temperature Sensor functions #include #asm .equ __lcd_port=0x15 ;PORTC #endasm #include #define pause delay_ms(500) // Объявляем переменную pause, которая будет осуществлять задержку char lcd_buffer[33]; //Буфер для хранения данных для вывода на дисплей int temp; //Переменная для хранения значения температуры void avr_init(void){ PORTA=0x00; DDRA=0x00; PORTB=0x00; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0x00; TCCR0=0x00; TCNT0=0x00; OCR0=0x00; TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; MCUCR=0x00; MCUCSR=0x00; TIMSK=0x00; ACSR=0x80; SFIOR=0x00; }; void main(void) { avr_init(); w1_init(); //инициализация датчика lcd_init(16); //инициилизация LCD while(1) //бесконечный цикл измерения температуры { temp=ds18b20_temperature(0)*10; //читаем температуру sprintf(lcd_buffer,"t=%i.%u\xdfC",temp/10,temp%10); //запись в буфер текста и значений температуры в подготовленном виде lcd_clear(); //очистка дисплея lcd_puts(lcd_buffer); //вывод содержимого буфера на LCD pause; //задержка в 500мс (необходимо чтобы термометр заново измерил температуру) }; }