Привет. Вот в этом уроке я покажу вам как быстро спаять простой термометр. Для этого нам понадобиться ATMega8, LCD(16*2), DS18B20, печатная плата, панелька для микроконтроллера. Итак, приступим, сначала откроем Code Vision AVR. Создаем новый проект, без использования мастера, потом создаем текстовый документ с расширением ".с" и добавляем туда следующий код: #include <mega8.h> //библиотека ввода\вывода #include <delay.h> //библиотека задержки #asm //сообщаем куда подключен датчик .equ __w1_port=0x15; PORTC .equ __w1_bit=3 #endasm #asm //сообщаем куда подключён экран .equ __lcd_port=0x18 #endasm #include <lcd.h> //библиотека для LCD #include <1wire.h> //библиотека работы с 1Wire #include <ds18b20.h> //библиотека для работы с датчиком ds18b20 #include <stdio.h> //ненаю что за библиотека, но без неё неполучается char lcd_buffer[33]; //масив с данными для экрана void main(void) { unsigned char devices; //переменная в которой количество присоеденённых датчиков int temp; //переменная для хранения температуры lcd_init(16); //инициилизация LCD, и говорим что он на 16 символов devices=w1_init(); //ищим датчики while(devices>0) //бесконечный цикл, если датчик подключон { temp=ds18b20_temperature(0); //читаем температуру if (temp>1000){ //если датчик выдаёт больше 1000 temp=4096-temp; //отнимаем от данных 4096 temp=-temp; //и ставим знак "минус" } sprintf(lcd_buffer,"t=%i.%u\xdfC",temp,temp%1); //записуемв масив для экрана температуру и всё такое lcd_clear(); //чистим дисплей перед выводом lcd_puts(lcd_buffer); //выводим масив на LCD delay_ms(500); //ждём 500мс }; } потом компилируем и выбираем частоту 8 МГц. Прошиваем, и еще прошиваем фюзы на ту же частоту Дальше дело за аппаратной частью, Вот и все, 15 минут и термометр готов!!! Схема и прошивка принадлежит Kirk99
|