- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: DIP LCD (KS0073) Problem

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.04.2005
    Ort
    Hannover
    Beiträge
    190
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo!

    Auch wenn ich so langsam anfange zu nerven...
    Ich habe ja mein LCD nun mit der Library von Ronny angesteuert.
    Text funktioniert auch tadellos, aber es werden keine Zahlen angezeigt.
    Hier mal mein Programm:
    Code:
    $regfile = "m8def.dat"                                      'für ATMEL ATmega8
    $crystal = 11059200                                         'Quarz: 11,0592 MHz
    $lib "dip_lcd.lib"
    Ddrc = &B00001111
    Ddrb = &B00110000
    Config Lcd = 20 * 4a
    Initlcd
    Cls                                                         'Pin PB0-PB3 auf Out
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc
    Dim W As Word , Channel As Byte
    Dim Spannung As Single
    Channel = 5
    
                                            ' "a" für spezielles Display
                                                         'Initlcd
    
    
    
    Do
    W = Getadc(5)
    Spannung = W * 0.01953125
    thirdline
    Lcd Fusing(spannung , "##.##") ; "V"
    locate 2 , 1
    Lcd "Irgendein Text"
    Loop
    End
    Das LCD sieht nun folgendermassen aus:

    {V
    Irgendein Text
    (frei)
    (frei)

    Ich versteh erstens die geschwungene Klammer nicht ({) und es wird immer in der ersten Zeile anstatt der 3. angezeigt!

    Ich bitte um Hilfe, bin echt verzweifelt!!!

    Vielen Dank!
    Marten83

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.09.2004
    Ort
    In der Nähe von Esslingen am Neckar
    Beiträge
    706
    Hallo,
    warum benutzt ihr nicht die Standart LCD Befehle von Bascom? Damit kann man doch soo einfach ein 4*20 Display ansteuern!!
    Gruß Michi

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.04.2005
    Ort
    Hannover
    Beiträge
    190
    Ähm... wenn das auch richtig gehen würde wäre das ja kein Problem.
    Tut es aber nicht!
    Steht hier aber auch alles, oder?

  4. #14
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    Hier wurde auch schon eine Lösung gepostet:
    https://www.roboternetz.de/phpBB2/viewtopic.php?t=10766

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.04.2005
    Ort
    Hannover
    Beiträge
    190
    HI!
    Ich hab das mal ausprobiert wie das in dem Link beschrieben wurde.
    Leider will mein Bascom nicht so wie dort (invalid datatype [0]).
    Steht für die Zeile: If Zeichen......
    Kompilieren geht also nicht!
    Weiss jemand woran das liegt?

    Marten83

  6. #16
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.07.2005
    Ort
    18km südl. Lutherstadt Wittenberg
    Alter
    47
    Beiträge
    142
    Hi,
    bei mir läuft das so hier ohne Probleme:
    Code:
    $regfile = "m8def.dat"                                      'Mega8
    $crystal = 8000000
    Declare Sub Lcdinit
    Declare Sub Lcdwrite(byval Zeichen As Byte)
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.2 , Rs = Portd.3
    Config Lcd = 20 * 4a
    Waitms 100 'damit das LCD etwas Zeit bekommt um nach dem Einschalten empfangsbereit zu sein...
    Call Lcdinit
    Cls
    
    do
    .....
    loop
    
    Sub Lcdinit
         Call Lcdwrite(&B00101100)
         Call Lcdwrite(&B00001001)
         Call Lcdwrite(&B00101000)
         Call Lcdwrite(&B00000110)
         Call Lcdwrite(&B00001100)
       End Sub
    
    
       Sub Lcdwrite(byval Zeichen As Byte)
         ' Höherwertiges Nibble setzen
         If Zeichen.4 = 1 Then Portd.4 = 1 Else Portd.4 = 0
         If Zeichen.5 = 1 Then Portd.5 = 1 Else Portd.5 = 0
         If Zeichen.6 = 1 Then Portd.6 = 1 Else Portd.6 = 0
         If Zeichen.7 = 1 Then Portd.7 = 1 Else Portd.7 = 0
         ' Höherwertiges Nibble übertragen
         Portd.2 = 1
         Waitms 1
         Portd.2 = 0
         Waitms 1
         ' Niederwertiges Nibble setzen
         If Zeichen.0 = 1 Then Portd.4 = 1 Else Portd.4 = 0
         If Zeichen.1 = 1 Then Portd.5 = 1 Else Portd.5 = 0
         If Zeichen.2 = 1 Then Portd.6 = 1 Else Portd.6 = 0
         If Zeichen.3 = 1 Then Portd.7 = 1 Else Portd.7 = 0
         ' Niederwertiges Nibble übertragen
         Portd.2 = 1
         Waitms 1
         Portd.2 = 0
         Waitms 1
       End Sub
    MfG Dani.

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.04.2005
    Ort
    Hannover
    Beiträge
    190
    Hi!
    Ich könnte mir selbst in den A.... treten!!
    Hab den Fehler gefunden.
    Die Definitionen sollte man schon mit in das ganze Geschehen einbeziehen...!!!
    Vielen Dank an Alle die mir geholfen haben!

    Marten83

  8. #18
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    37
    Beiträge
    795
    Hallo Mitnander!

    Ich würde an dieser Stelle mal eben eine Frage in den Raum werfen.

    Und zwar tüftle ich auch gerade an einem 4x20 Zeichen DIP LCD mit KS0073 Controller.

    Da hätte ich zwei Grundlegende Fragen die mir den Einstieg Sehr erleichtern würden:

    1. Verständnisfrage (Newbiefrage)
    Im Datenblatt wird neben RS, RW, E und D0...D7 noch ein "Bit" nenn ich es mal genannt. Nämlich RE. Würde mich mal ganz stark interessiren was das zu bedeuten hat.


    2. Beim Initialisieren.
    nach dem FunctionSet heißt es ja "wait for more than 39µs",
    Genügt es da auch zu warten, bis das Busyflag wieder 0 ist, oder funktioniert das hier nochnicht? Kann mir gut vorstellen dass es nicht funktioniert, da ja hier erst mal die Schnittstelle aktiviert wird. Und wenn nein, ab wann Funktioniert das mit dem BUSYBIT....


    Bei mir hackts nämlich noch ganz stark... weiß nicht ob er meine Befehle gefressen hat oder nicht.
    Gruß,
    Franz

  9. #19
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    37
    Beiträge
    795
    Mit diesem Programm Lese ich aus dem LCD.

    Das Display gibt immer nur 0xFF aus.... ist es evtl Defekt?

    Ich hab zum Testen mal LED an D0----7 angeschlossen, über 1KOhms...

    Auch bei RESET ändert sich nichts an der Anzeige... ich glaub ich habs gegrillt???

    Code:
    void LCD_INPUT(void){
    	//LCD_DATA als INPUT und Pullup aus
    	LCD_DATA_DDR  = 0x00;
    	LCD_DATA_PORT = 0x00;	
    	//LCD_CTRL als Output und Pullup aus
    	LCD_CTRL_DDR  &=~ (1<<LCD_RS)|(1<<LCD_RW)|(1<<LCD_E);
    	LCD_CTRL_PORT &=~ (1<<LCD_RS)|(1<<LCD_RW)|(1<<LCD_E);
    }
    
    
    void LCD_OUTPUT(void){
    	//LCD_DATA als OUTPUT und Pullup aus
    	LCD_DATA_DDR  = 0xFF;
    	LCD_DATA_PORT = 0x00;	
    	//LCD_CTRL als Output und Pullup aus
    	LCD_CTRL_DDR  &=~ (1<<LCD_RS)|(1<<LCD_RW)|(1<<LCD_E);
    	LCD_CTRL_PORT &=~ (1<<LCD_RS)|(1<<LCD_RW)|(1<<LCD_E);
    }
    
    
    uint8_t LCD_READ( uint8_t RS ){
    	
    	//Datenrichtungseinstellung für READ
    	LCD_INPUT();
    	
    	//Registerwahl
    	if( RS )	{ LCD_CTRL_PORT |=  (1<<LCD_RS); } //RS = 0 Steuerregister
    	else		{ LCD_CTRL_PORT &= ~(1<<LCD_RS); } //RS = 1 Datenregister
    	
    	//RW HIGH setzen
    	LCD_CTRL_PORT |=  (1<<LCD_RW);
    	
    	//Enable HIGH setzen
    	LCD_CTRL_PORT |=  (1<<LCD_E);
    	
    	//Bisschen Warten bis Daten anliegen 
    	uint8_t t = 0; while( t < 200 ){ t++; }
    	
    	//DATEN LESEN
    	uint8_t data = LCD_DATA_PIN;
    	
    	//Enable LOW setzen
    	LCD_CTRL_PORT &=~ (1<<LCD_E);	
    	
    	//RW LOW setzen
    	LCD_CTRL_PORT &=~ (1<<LCD_RW);
    	
    	return data;
    }
    Gruß,
    Franz

  10. #20
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    37
    Beiträge
    795
    Ach ich Hirsch!

    RS, RW, E waren EINGÄNGE.....

    IN DEN AR*CH BEISS...

    Wie Peinlich, aber meine Fragen stehen noch offen...

    EDIT: Jetzt funktioniert es!
    Gruß,
    Franz

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Labornetzteil AliExpress