Grüß euch!
Ich habe ein Problem,wo ich einfach nicht mehr weiter weiß!
Ich versuche die ganze Zeit mit meinem Atmega32 einen LCD
Display(4Zeilig 16*40 anzusteuern)
Initialisieren lässt er sich, nur wenn ich dann Zeichen (Buchstaben oder
Zahlen) an das LCD senden möchte, zeigt dieser statt z.B. 123456789 -
#CScs an!
Vorgegangen bin ich laut dem LCD-Ansteuerung Tutorial welches hier auf
dieser Seite angeboten wird!
Das einzige was ich verändert habe ist die Taktfrequenz bzw. habe ich
die Datenpins von PDx auf PA0-PA3 verlegt.
Achja und nachlöten hilft leider auch nichts!
Bitte um eure Hilfe!
Dankeschön!
Mit freundlichen Grüßen,
Christian
Daten:
Atmega32 (Taktung 16MHz)
Display Optex 16433 mit HD44780A Controller
4 Bit Ansteuerung
Datenleitungen wirklich korrekt?
Ansonsten mehr Infos (Programm, Fuses, Anschluß komplett, immer
dieselben Zeichen oder variabel, welche Zeichen werden gegen welche
getauscht)...
Um stundenlang zu raten ist das Wetter heute zu schön.
Hier die Infos:
Programm:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung
zum Schluss habe ich die Pins wieder umgeändert von PA0-PA3 auf PD0-PD3
->Egal ob ich das Programm 1-1 übernehme,der LCD zeigt immer etwas
anderes an!
Das Ergebnis #3CScs habe ich durch diesen c.Quelltext erhalten:
1
#include<avr/io.h>
2
#include"lcd-routines.h"
3
4
intmain(void)
5
{
6
7
// Initialisierung des LCD
8
// Nach der Initialisierung müssen auf dem LCD vorhandene schwarze Balken
9
// verschwunden sein
10
lcd_init();
11
12
13
14
lcd_home();
15
16
// erneut Text ausgeben, aber diesmal komfortabler als String
17
lcd_string("123456789");
18
19
while(1)
20
{
21
}
22
23
return0;
24
}
Fuses hab ich nur die gesetzt,welche man braucht um mit 16MHz arbeiten
zu können
Anschluß komplett:
Also DB7-DB4 war zuerst auf PA3-PA0 nun wieder auf PD3-PD0
Vee auf GND,E auf PD5,RS auf PD4,RW auf Ground!
Kann es sein,dass es mit dem Pullup Widerstand am Pin E etwas damit zu
tun hat?
Weil laut Datenblatt heißt es:
E = Enable Signal (No pull-up Resister) ??
(Datenblatt:
http://datasheet.octopart.com/DMC-16433-Optrex-datasheet-56902.pdf)
Danke für die schnelle Antwort!
jap hängt richtig dran,ich bekomm ja die schwarzen Balken zu beginn ,
welche auch dann wieder sofort verschwinden!(also der Ablauf ist bis
dahin richtig)
@spess53
Ich glaube das du Recht hast,weil egal was ich schreibe er vertauscht
mir alle Zeichen,nur wie kann ich die Nibbels zurücktauschen,sodass ich
die richtigen Zeichen bekomme?
@charly
Müsste das nicht hier egal sein mit welcher Taktfrequenz ich arbeite?
Nochmal danke für die schnellen Antworten
Hi
>Ich glaube das du Recht hast,weil egal was ich schreibe er vertauscht>mir alle Zeichen,nur wie kann ich die Nibbels zurücktauschen,sodass ich>die richtigen Zeichen bekomme?
Ich würde auf deine Zeichenausgabe-Routine tippen. Dort werden die
Nibbles in der falschen Reihenfolge ausgegeben.
MfG Spess
> mir alle Zeichen,nur wie kann ich die Nibbels zurücktauschen,sodass ich> die richtigen Zeichen bekomme?
Na, das Programm richtig schreiben!
Gruss
Michael
Das richtige Vorgehen hier ist - wie immer - den uC im Debugger im
Single Step Betrieb laufen zu lassen und bei jedem Schritt mit einem
einfachen Multimeter die Spannungen an den Pins zu messen!
Christian schrieb:> @charly>> Müsste das nicht hier egal sein mit welcher Taktfrequenz ich arbeite?
f. einen AVR mit 16Mhz ist ein LCD eine lahme Schnecke,
d.h. der AVR muss jede menge Waits einfuegen; i kenn mich mit
deiner C umgebung nicht aus aber irgendwo muesstest du dem
Compiler mitteilen was der AVR fuer einen Takt hat
vlG
Charly
Christian schrieb:> Müsste das nicht hier egal sein mit welcher Taktfrequenz ich arbeite?
Nur wenn Du auch die passende Frequenz für die Delays angegeben hast:
#define F_CPU 16000000
Danke dir spess53,diesen Trick werde ich morgen gleich ausprobieren!
@Klaus2m5
jap ich habe die 16MHz definiert!
Danke nochmal für die zahlreichen Antworten!
Mit freundlichen Grüßen,
Christian
Eine eigene Frage?
Dieser Thread ist über 15 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.