0

Простой термометр на LCD (DS18B20)

Здесь я покажу вам как быстро спаять простой термометр.
Для этого нам понадобиться 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 минут и термометр готов!!!

my-avr.at.ua

administrateur

Laisser un commentaire

Your email address will not be published. Required fields are marked *