- Labornetzteil AliExpress         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 25

Thema: LCD ADD on 2,5

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    16.01.2010
    Beiträge
    13

    LCD ADD on 2,5

    Anzeige

    Praxistest und DIY Projekte
    Hallo...

    ich habe einen LCD ADD ON 2,5 gekauft und habe es mit meine Atmega8 Board angeschlossen...es zeigt nur schwarze Balken....
    was mache ich falsch??

    lcd.h habe ich von Peter Fleury untergeladen und angepaßt.
    Angehängte Dateien Angehängte Dateien
    • Dateityp: h lcd1.h (8,2 KB, 139x aufgerufen)

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    16.01.2010
    Beiträge
    13
    wäre nett wenn jemand mir einen Tip geben kann

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Wie sieht deine Anschaltung an dein Board aus.
    Die lib von Fleury funktioniert sonst sehr gut.
    Etwas genauerer Angaben zu dem LCD wären auch gut, Datenblatt.
    Wie viele schwarze Balken zeigt dein Display, wenn es nur einer ist, dann ist das Disp nicht initialisiert, wenn alles schwarz ist, dann mal am Kontrastregler drehen.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    16.01.2010
    Beiträge
    13
    ich hab folgende Board Atmega8 MK1 LPT
    http://shop.myavr.de/index.php?sp=ar...sp.php&artID=4

    und das Dsiplay ADD ON 2,5 auch von myavr.

    das Display zeigt in der 1. Zeile nur 16 schwarze Balken.

    ich habe auch and dem Kontarstregler gederht ...ich sehe keine zeichen auf dem Display außer schwarze Balken.

    Gruß...

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    16.01.2010
    Beiträge
    13
    leider ist das Datenblatt 700 kb und kann es nicht hochladen...aber unter der link kann man es sich runterladen (700kb)

    http://shop.myavr.de/index.php?sp=ar...p.php&artID=15

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.08.2007
    Ort
    Delmenhorst
    Alter
    38
    Beiträge
    731
    Poste bloß nicht deinen Code... man könnte sonst nen Fehler finden.

    Dann heisst es in der lcd1.h erst
    #define LCD_PORT PORTD
    dann
    #define LCD_PORT PORTB
    das kann nicht funktionieren.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    16.01.2010
    Beiträge
    13
    hier ist der Code....
    Angehängte Dateien Angehängte Dateien

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.08.2007
    Ort
    Delmenhorst
    Alter
    38
    Beiträge
    731
    Hast du den Port angepasst?!

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    16.01.2010
    Beiträge
    13
    ja ich habe es angepaßt...aber es läuft trotzdem nichts.

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.08.2007
    Ort
    Delmenhorst
    Alter
    38
    Beiträge
    731
    Teste mal den Code:
    Code:
    //---------------------------------------------------------------------------
    // Titel		: myAVR Beispiel "LCD Ausgabe auf einer Zeile" für den ATmega8/48/88/168
    //---------------------------------------------------------------------------
    // Funktion    	: gibt eine Zeichenkette auf dem myAVR LCD Modul, 1 Zeile
    // Schaltung    : PORTD.2 = RS, PORTD.3 = E, PORTD.4-7 = D4-7
    //---------------------------------------------------------------------------
    // Prozessor 	:
    // Takt		 	: 3.6864 MHz
    // Sprache   	: C
    // Datum    	: 09.11.2007
    // Version   	: 1.0
    // Autor     	: S. Hänsel
    // Programmer	: ...
    // Port		 	: ...
    //----------------------------------------------------------------------
    #define 	F_CPU 3686400
    #include	<avr\io.h>
    #include	<util\delay.h>
    /////////////////////////////////////////////////////////////////////////////
    // allgemeine-Funktionen
    //---------------------------------------------------------------------------
    //	waitMs(..) - Wartet einige Millisekunden
    //	Die Dauer ist nicht kalibriert.
    //	PE:	miliSec=Anzahl der zu wartenden Millisekunden
    //---------------------------------------------------------------------------
    void waitMs(int miliSec)
    {
    	_delay_loop_2( 1*(F_CPU/(1000/4)) * miliSec);	// 4 Zyklen warteschleife
    }
    void waitUs(int mikroSec)
    {
    	_delay_loop_2( 1*(F_CPU/(1000000/4)) * mikroSec);	// 4 Zyklen warteschleife
    }
    //////////////////////////////////////////////////////////////////////////////
    //	LCD-Funktionen für myAVR-Board + myAVR-LCD
    //	4-BitModus an PortD Bit 4-7
    //	PortD Bit 2 = RS, high=Daten, low=Kommando
    //	PortD Bit 3 = E, high-Impuls für gültige Daten
    //---------------------------------------------------------------------------
    //	lcdSend(..) - sendet ein Byte an LCD im 4-Bit-Modus
    //	RS muss vorher richtig gesetzt sein
    //	PE:	data=zu sendendes Byte
    //---------------------------------------------------------------------------
    void lcdSend(char data)
    {
    	// aktuelles RS ermitteln
    	char rs=PORTD;
    	rs&=4;
    	// High-Teil senden
    	char tmp=data;
    	tmp&=0xf0;
    	tmp|=rs;
    	PORTD=tmp;
    	// Schreibsignal
    	sbi(PORTD,3);
    	cbi(PORTD,3);
    	// Low-Teil senden
    	tmp=data;
    	tmp&=0x0f;
    	tmp*=16;
    	tmp|=rs;
    	PORTD=tmp;
    	// Schreibsignal
    	sbi(PORTD,3);
    	cbi(PORTD,3);
    	// verarbeiten lassen
    	waitMs(1);
    }
    //---------------------------------------------------------------------------
    //	lcdCmd(..) - sendet ein Kommando an LCD
    //	PE:	cmd=Kommando-Byte
    //---------------------------------------------------------------------------
    void lcdCmd(char cmd)
    {
    	cbi(PORTD,2);		// RS löschen = Kommando
    	lcdSend(cmd);		// senden
    }
    //---------------------------------------------------------------------------
    //	lcdWrite(..) - sendet ein Zeichen (Daten) an LCD
    //	PE:	text=Zeichen
    //---------------------------------------------------------------------------
    void lcdWrite(char text)
    {
    	sbi(PORTD,2);		// RS setzen = Daten
    	lcdSend(text);		// senden
    }
    //---------------------------------------------------------------------------
    //	lcdWrite(..) - sendet eine Zeichenkette an LCD
    //	Die Zeichenkette muss mit 0x00 abgeschlossen sein
    //	PE:	pText=Zeiger auf Zeichenkette
    //---------------------------------------------------------------------------
    void lcdWrite(char* pText)
    {
    	while(pText[0]!=0)
    	{
    		lcdWrite(pText[0]);
    		pText++;
    	}
    }
    //---------------------------------------------------------------------------
    //	lcdWrite(..) - sendet eine Zeichenkette an LCD
    //	PE:	pText=Zeiger auf Zeichenkette
    //		count=Anzahl der zu sendenden Zeichen
    //---------------------------------------------------------------------------
    void lcdWrite(char* pText, int count)
    {
    	while(count!=0)
    	{
    		lcdWrite(pText[0]);
    		pText++;
    		count--;
    	}
    }
    //---------------------------------------------------------------------------
    //	lcdHome(..) - Cursor auf Position 1,1
    //---------------------------------------------------------------------------
    void lcdHome()
    {
    	lcdCmd(0x02);
    	waitMs(2);			// warten
    }
    //---------------------------------------------------------------------------
    //	lcdClear(..) - löscht die Anzeige im LCD
    //---------------------------------------------------------------------------
    void lcdClear()
    {
    	lcdCmd(0x01);
    	waitMs(2);			// warten
    }
    //---------------------------------------------------------------------------
    //	lcdOn(..) - schaltet das LCD an
    //---------------------------------------------------------------------------
    void lcdOn()
    {
    	lcdCmd(0x0E);
    }
    //---------------------------------------------------------------------------
    //	lcdOff(..) - schaltet das LCD aus
    //---------------------------------------------------------------------------
    void lcdOff()
    {
    	lcdCmd(0x08);
    }
    //---------------------------------------------------------------------------
    //	lcdGoto(..) - setzt die Cursorposition
    // 	PE:	row = Zeile 1..2
    //		col = Spalte 1..16
    //---------------------------------------------------------------------------
    void lcdGoto(int row, int col)
    {
    	row--;				// Null-basierend
    	row&=0x01;			// sicherheitshalber
    	row*=0x40;			// Zeile nach Bit 6 bringen
    	col--;				// Null-basierend
    	col&=0x0f;			// sicherheitshalber
    	char tmp=row|col;
    	tmp|=0x80;			// Cursor setzen
    	lcdCmd(tmp);		// senden
    }
    //---------------------------------------------------------------------------
    //	lcdInit(..) - Schaltet die Ports und Initialisiert das LCD
    //---------------------------------------------------------------------------
    void lcdInit()
    {
    	// Port D = Ausgang
    	DDRD=0xff;
    	PORTD=0;
    	// warten bist LCD-Controller gebootet
    	waitMs(50);
    	// SOFT-RESET
    	PORTD = 0x30;	//0b00110000;
    	sbi(PORTD,3);
    	cbi(PORTD,3);
    	waitMs(5);
    	PORTD = 0x30;	//0b00110000;
    	sbi(PORTD,3);
    	cbi(PORTD,3);
    	waitUs(100);
    	PORTD = 0x30;	//0b00110000;
    	sbi(PORTD,3);
    	cbi(PORTD,3);
    	waitMs(5);
    
    	// 4-BitModus einschalten
    	PORTD=0x20;
    	// Schreibsignal
    	sbi(PORTD,3);
    	cbi(PORTD,3);
    	waitMs(5);
    
    	// ab hier im 4-Bit-Modus
    	lcdCmd(0x28);		// Funktions-Set: 2 Zeilen, 5x7 Matrix, 4 Bit
    	//lcdOff();
    	lcdCmd(0x06);		// Entry Mode
    	lcdOn();
    	lcdClear();
    }
    //---------------------------------------------------------------------------
    // Main-Funktion
    //---------------------------------------------------------------------------
    int main (void)
    {
    	waitMs(200);
    	lcdInit();
    	lcdGoto(1,1);
    	lcdWrite("Hallo myAVR!");
    	while (1) {	} // Mainloop
    	return 0;
    }
    //---------------------------------------------------------------------------

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress