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; }
lcd_string will als Argument einen String haben, also ein char Array. Die Variable 'speicher' ist aber was ganz anderes. Da steht kein Text drinnen, sondern einen Zahl. Also musst du zunächst mal aus der Zahl einen String machen, der die Zahl textuell repäsentiert. http://www.mikrocontroller.net/articles/FAQ#Wie_kann_ich_Zahlen_auf_LCD.2FUART_ausgeben.3F
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); }
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.
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?
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.
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 | }
|
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.