Sari la conținut
ELFORUM - Forumul electronistilor

termometru atmega8,ds18b20,lcd nokia3310


Vizitator manau

Postări Recomandate

Vizitator manau

un pic ajutor

cum compilez codul de mai jos in Code Vision AVR

si cum schimb din ATmega8 in 32

este un termometru cu sensor ds18b20 lcd nokia 3310

eu am compilat am pus in proteus dar nimic

poate cineva stie cum sa pun librariile petru nokia 3310

/***************************************************** ATmega8 4,000000 MHz *****************************************************/ #include <mega8.h> // 1 Wire Bus functions #asm .equ __w1_port=0x12;PORTD .equ __w1_bit=2 #endasm #include <1wire.h> // DS1820 Temperature Sensor functions #include <ds18b20.h> #include <delay.h> // maximum number of DS1820 devices // connected to the 1 Wire bus #define MAX_DS18B20 3 // number of DS1820 devices // connected to the 1 Wire bus unsigned char ds18b20_devices; // DS1820 devices ROM code storage area, // 9 bytes are used for each device // (see the w1_search function description in the help) unsigned char ds18b20_rom_codes[MAX_DS18B20][9]; #include <3310lcd.c> #include <stdio.h> // Declare your global variables here float temper; int temper_int,temper_fl,min=0; void temperature(void) // функция по работе с термо-датчиком { temper=ds18b20_temperature(&ds18b20_rom_codes[0][0]); temper_int=temper; // отбор целой части от температуры if(temper<0) // при отрицательной температуре { temper_fl=(temper-temper_int-0.0625)*10; // дробная часть temper_int=-((temper_int*10)+temper_fl); // температура*10 min=1; // минус }else // при положительной { temper_fl=(temper-temper_int)*10; // дробная часть temper_int=(temper_int*10)+temper_fl;// температура*10 min=0; // плюс } } void main(void) { // Determine the number of DS1820 devices // connected to the 1 Wire bus ds18b20_devices=w1_search(0xf0,ds18b20_rom_codes); ds18b20_init(0,-35,35,DS18B20_12BIT_RES); // переключения термометра в 12 битный режим LcdInit(); // LCD module initialization while (ds18b20_devices>0 ) { // Place your code here delay_ms(500); temperature(); // вызываем функцию температуры LcdClear(); // очищаем LCD if(min==1) // если минус { sprintf(lcd_buf,"-%u.%u\x80C",temper_int/10,temper_int%10); //вывод отрицательной температуры }else { sprintf(lcd_buf,"+%i.%d\x80C",temper_int/10,temper_int%10); // вывод положительной } LcdStringBold(1,2); LcdUpdate(); // вывод на дисплей }; }
Link spre comentariu
  • Răspunsuri 2
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • yo9hnf

    1

Top autori în acest subiect

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări