lcd_string funktioniert nicht wenn ich eine Variabel ausgeben möchte

Gast #1142292
Lesenswert?
• ▲
▼
Hallo ich versuche immer noch eine Variable mit der Funktion lcd_string 
auf ein Display zugeben aber es geht immer noch nicht. Wenn ich Speicher 
in "" setze kann ich speicher auch dem Display sehen aber ich dann nicht 
0b00011100 über die Variabel speicher ausgeben. Kann mir jemand sagen 
was ich Falsch mache?

#include <util/delay.h>
#include <avr/io.h>
#include "lcd.h"

int speicher;
int speicher2;
int main(void)
{
lcd_init();

while(speicher2!=1)
{
speicher2 = 1;
speicher = 0b00011100;

lcd_string ("Test");
lcd_string (speicher);


}
return 0;
}
Gast #1142303
Lesenswert?
• ▲
▼
Hier habe ich mal die Funktion lcd string was mich so verwiert ist das 
das früher funktioniert hat ich bin mir aber nicht mehr sicher.

void lcd_string(char *data)  {
    int z=0;
  while(*data) {
        lcd_data(*data);

      if (z == 15) {
      lcd_home_2nd_line();}
    data++;
    z++;
    }


void lcd_data(unsigned char temp) {

  unsigned char lsn,msn;

  msn = temp >> 4;
  msn = msn & 0b00001111;
  msn = msn | 0b00010000;
  lcd_port = msn;
  lcd_enable();

  _delay_us(47);

  lsn = temp & 0b00001111;
  lsn = lsn | 0b00010000;
  lcd_port = lsn;
  lcd_enable();

  _delay_us(47);

}
#1142311
Lesenswert?
• ▲
▼
michi wrote:
> Hier habe ich mal die Funktion lcd string was mich so verwiert ist das
> das früher funktioniert hat ich bin mir aber nicht mehr sicher.
>
> void lcd_string(char *data)  {
>     int z=0;
>   while(*data) {
>         lcd_data(*data);
>
>       if (z == 15) {
>       lcd_home_2nd_line();}
>     data++;
>     z++;
>     }
>

Ja, das ist eine Funktion, welche einen String auf dem LCD ausgibt.
String, nicht Integer

Also sowas:
1
int main()
2
{
3
  char Test[20];
4

5
  strcpy( Test, "20" );
6
  lcd_string( Test );
7
}

Aber den Fall hast du ja nicht. Du hast einen Integer. Meinetwegen mit 
dem Inhalt 20
1
int main()
2
{
3
  int i;
4

5
  i = 2 * 10;
6
}

Damit du den über lcd_string ausgeben kannst, musst du erst mal aus der 
Zahl 20 den String "20" generieren.

Schau dir doch einfach mal den Link aus der FAQ an.
Gast #1142329
Lesenswert?
• ▲
▼
Danke das geht schon mal aber ich möchte auf mein Display sehen wie oft 
eine Zählschleife burchgelaufen ist darum möchte ich eine Variable aus 
lesen.

int main()
{
  char Test[20];

  strcpy( Test, "20" );
  lcd_string( Test );
}

so kann ich die Zahl 20 ausgeben aber wie kann ich die Variable z.B. 
Zählwert ausgeben?
#1142337
Lesenswert?
• ▲
▼
michi wrote:
> Danke das geht schon mal aber ich möchte auf mein Display sehen wie oft
> eine Zählschleife burchgelaufen ist darum möchte ich eine Variable aus
> lesen.
>
> int main()
> {
>   char Test[20];
>
>   strcpy( Test, "20" );
>   lcd_string( Test );
> }
>
> so kann ich die Zahl 20 ausgeben aber wie kann ich die Variable z.B.
> Zählwert ausgeben?



Grrrrrrrr


Was bitte ist so schwer auf den Link den ich dir oben gegeben habe, 
einfach mal draufdzudrücken. Dort sind 3 Möglichkeiten angegeben, wie du 
die Aufbereitung machen kannst, damit du lcd_string einsetzen kannst.
#1142339
Lesenswert?
• ▲
▼
Hi Michi,

das gleiche Problem hatte ich auch, als ich angefangen habe mit einem 
LCD zu arbeiten.

Hab mal zwei kleine Änderungen eingefügt. Bei meinem Programm hats 
danach funktioniert.
1
#include <util/delay.h>
2
#include <avr/io.h>
3
#include "lcd.h"
4

5
int speicher;
6
int speicher2;
7
int main(void)
8
char c_speicher[20];               //!   Char die ans Disp gesendet wird
9
{
10
lcd_init();
11

12
while(speicher2!=1)
13
{
14
speicher2 = 1;
15
speicher = 0b00011100;
16

17
lcd_string ("Test");
18
itoa (speicher,c_speicher,10);     //!   Wandelt Integer in Char um
19
lcd_string (c_speicher);           //!   Hier muss dann das Char übergeben werden
20

21

22
}
23
return 0;
24
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren