Тема: ATmega16 и DS1820
Показать сообщение отдельно
Старый 23.03.2012, 09:25   #1 (permalink)
WOLF007
Member
 
Аватар для WOLF007
 
Регистрация: 24.02.2009
Сообщений: 806
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 563
По умолчанию ATmega16 и DS1820

Решил поюзать сей девайсы но в итоге на дисплее получаю -999 градусов. Компилятор CodeVisionAvr 2
Код:
//#define F_CPU 8000000
#include <mega16.h>
#include <ds1820.h>        
#include <1wire.h>
 
 #asm
       .equ __w1_port=0x18;PORTB
       .equ __w1_bit=0
 #endasm
#include <stdio.h>
#include <lcd.h>
#asm
  .equ __lcd_port=0x1b;PORTA
#endasm

#include <delay.h>
char lcd_buffer[33];
void main(void){
char sign;
int temp;
lcd_init(16);
w1_init();

while(1){
            temp=ds1820_temperature_10(0);
          sign='+';  //читаем температуру 
          if (temp>1000){               //если датчик выдаёт больше 1000          
             temp=4096-temp;            //отнимаем от данных 4096
             temp=-temp;                //и ставим знак "минус"
          }
          sprintf(lcd_buffer,"t=%i",temp/10,temp%10);    //записываем масив для экрана температуру
          lcd_clear();                //чистим дисплей перед выводом
          lcd_puts(lcd_buffer);        //выводим масив на LCD
          delay_ms(500);              //ждём 500мс 
};
}
Не могу ни как разобраться как получить данные с ds1820
WOLF007 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070