#ifndef LM75_anzeige_INCLUDED #define LM75_anzeige_INCLUDED #include <i2c.h> #include <lcd.h> #include <stdlib.h> #pragma used+ void lm75_auf_lcd(unsigned char chip, unsigned char x_pos, unsigned char y_pos) { char puffer[3]; // drei Zeichen für Zahlen größer 100 unsigned char higher_byte; // für's einlesen des Temperatur-Registers des LM75 unsigned char lower_byte; // für's einlesen des Temperatur-Registers des LM75 unsigned char i2c_addr; i2c_addr=0x90|(chip<<1); // Adresse des angesprochenem LM75 i2c_start(); // Start zur Datenübertragung auf dem I2C-Bus i2c_write(i2c_addr); // Ansprechen des LM75 i2c_write(0); // Die "0" für lesen senden i2c_start(); i2c_write(++i2c_addr); higher_byte=i2c_read(1); // Empfang des higher_byte vom Temperatur-Register lower_byte=i2c_read(0); // Empfang des lower_byte vom Temperatur-Register i2c_stop(); // Ende zur Datenübertragung auf dem I2C-Bus lcd_gotoxy(x_pos,y_pos); /* es muss geprüft werden ob dass letzte Bit(15) vom "Temperatur-Register" "high" oder "low" ist. Wenn es "high" ist dann ist der Temperaturwert negativ. Dabei muss das "higher_byte" erst mal invertiert werden und "1" dazu addieren werden. (Siehe Datenblatt) Ist der Wert nicht negativ dann entspricht das Bitmuster dem Temperaturwert VOR dem Komma. */ if (higher_byte >= 128) { higher_byte = ~(higher_byte); higher_byte =+1; lcd_putsf("-"); } else lcd_putsf("+"); x_pos ++; // Die "Cursor-Position" um eins erhöhen lcd_gotoxy(x_pos,y_pos); itoa(higher_byte, puffer); // schreibt den Bit-Wert vom higher_byte lcd_puts(puffer); // an das Display x_pos ++; // auf jeden Fall die "Cursor-Position" // um eins erhöhen. if (higher_byte >=10) x_pos ++; // Falls der Wert höher wie 10, dann muss // der "Cursor" um zwei Stellen erhöht werden if (higher_byte >=100)x_pos ++; // Falls der Wert höher wie 100, dann muss // der "cursor" um drei Stellen erhöht werden lcd_gotoxy(x_pos,y_pos); lcd_putsf(","); x_pos ++; /* Jetzt muss geprüft werden ob das Bit(7) vom "Temperatur-Register" (7.Bit vom lower_byte) "high" oder "low" ist. Wenn es "low" ist, dann ist der Wert hinter dem Komma "0". Sonnst ist der Wert "5". */ if (lower_byte >= 128) lcd_putsf("5"); else lcd_putsf("0"); x_pos ++; lcd_gotoxy(x_pos,y_pos); lcd_putchar(223); // "Grad" Zeichen x_pos ++; lcd_gotoxy(x_pos,y_pos); lcd_putchar(20); // Leerzeichen zum überschreiben von einstelligen // Zahlen auf zweistelligen Zahlen } #pragma used- #endif kann mir bitte jemand erklären warum ich nur -1,5 grad am display zu sehen bekomm.. gruß und danke!
//======================================================= #include <mega8.h> #include <delay.h> #include <Lm75_anzeige.h> // Anschlussinitialisierung des I2C- Buses am PORT C // SDA Pin 4 // SCL Pin 5 #asm .equ __i2c_port=0x15 .equ __sda_bit=1 .equ __scl_bit=0 #endasm #include <i2c.h> // 4x20 Zeilen-Display am PORT D #asm .equ __lcd_port=0x12 #endasm #include <lcd.h> void main(void) { // Initialisierung des I2C- Buses i2c_init(); // Initialisierung des LCD's lcd_init(20); while (1) { delay_ms(500); // Pause von einer halben Sekunde lm75_auf_lcd(0, 4, 1); // Temperatur des LM75-Sensors mit // der Adresse 0 auf die Position // (x=4/y=1) auf dem Display }; } //======================================================= sorry des wars.. gruß
Hallo mynet,
ich gehe mal davon aus das du auch der jenige bist, der sich bei mir
per E-mail gemeldet hat, oder!!!!!!!
Also soweit ich mich daran erinnern kann, hast du doch gar kein Mega8
benutzt, oder????
Wenn du nicht selber darauf kommst, wieso es bei dir nicht geht, dann
kann ich dir auch nicht helfen. Mit etwas Überlegung sollte man ganz
leicht darauf kommen. Benutzt du den ein 4x20 Zeilen Display?? Das
Programm was du ja oben "geposstet" hast, hab ich in der
>Codesammlung< zur Verfügung gestellt. Erwarte nicht das man dir alles
aus der Hand nimmt und es für dich löst!!!!
Die Leute hier im Forum helfen gerne aber es gehört auch ein bisschen
Eigenarbeit dazu!!!!
Versuche doch mal den Code zu verstehen!!!! Ich glaube das ich den Code
recht gut auskommentiert habe, oder etwa nicht??!!
Du solltest auch mal etwas von deiner Schaltung erklären!!! Keiner hat
hier die berühmte Kristallkugel!!!
Was für ein µC hast du?? Welches LCD?? Was für Widerstände am Bus??
Lass dir nicht alles aus der Nase ziehen, dann kann man dir eventuell
auch helfen!!!!!!!!!!!
Gruß Marcel
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.