www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik lm75 Hilfe


Autor: mynet (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#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!

Autor: mynet (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
//=======================================================

#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ß

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zuerst sollte man dir die Funktion "Dateianhang" erklären.

Autor: mynet (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
entschuldigung! aber weist du zufällig auch woran es hapert?

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.