- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: LCD + C + R/W

  1. #11
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    R/W auf LOW?

    Anzeige

    Powerstation Test
    Hallo farmerjo,

    Ich brauch ja im gegensatz zu Bascom auch den R/W-Pin beschaltet. Hab ich auf dem board umgelötet und um es dann auch noch weiter in Bascom zu nutzen dort im Programm einfach auf low gezogen.
    Ergebniss LCD läuft nicht mehr.
    Ist das so??? Bascom kann doch nicht zaubern?
    Warum sollte es in anderen Sprachen nicht auch möglich sein, den R/W auf LOW fest zu legen?
    Wenn man in Bascom R/W auf einen Ausgang legt und den am Programmanfang auf LOW legt, klappt das mit Bascom tatsächlich nicht. Ich weiß auch nicht genau, warum. Vielleicht macht Bascom (oder das LCD) gleich am Anfang irgendwelche Initialisierungen bevor ich R/W auf LOW ziehen kann.

    Aber mir ist noch nicht klar, warum man R/W nicht immer auf LOW lassen kann (bei Assembler oder C)!

    Gruss Dirk

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.11.2005
    Beiträge
    321
    kann man doch, ich weiss nicht was ihr wollt.
    unten ist eine eigene auf meine bedürfnisse angepasste lcd-routine mit winavr-c und rw auf masse.
    port c0-c5. (daten 0-3, 5 rs, 4 en), lcd 2x16, AVR16 8mhz

    die adressen können mit leichtigkeit für andere lcd ausgetauscht werden, so lernt man auch die lcd kennen, mit dem datenblatt.

    Code:
    #include <inttypes.h> 
    #include <avr/io.h>
    #include <avr/interrupt.h>
    #include <stdlib.h>
    #include <stdint.h>
    #include <string.h> 
    
    #define delay_us_(us)  _delayFourCycles_( ( ( 1*(F_CPU/4000) )*us)/2005 )
    
    void _delayFourCycles_(uint16_t z)
    {
    	uint16_t i;
    	
        for (i=0; i<z; i++)
        asm volatile("nop");
    }
    
    void delay_ms_(uint16_t z)
    {
    	uint16_t i;
    	
    	for (i=0; i<z; i++)
        delay_us_(999);
    }	
    
    void lcd_flash_e (void)
    {
    	PORTC|=(1<<DDC4);		
    	delay_us_(5);							
    	PORTC&=~(1<<DDC4);		
    	delay_us_(50);							
    }
    
    void lcd_write (uint8_t data, uint8_t rs)   
    {
    	uint8_t dataBits ;
      
        if (rs)    				
           dataBits=0x20;		
        else     				
           dataBits=0; 			
    	
        PORTC=dataBits |(data>>4);		
    	lcd_flash_e ();    
        PORTC=dataBits | (data&0x0F);	
    	lcd_flash_e();
    	delay_ms_(2);
    }
    
    void lcd_cls (void)   
    {
    	lcd_write(0x02,0);   	
    	delay_ms_(2);			
    	lcd_write(0x01,0);   	
    	delay_ms_(2);			
    }
    
    void lcd_writechar(char zeichen)   
    {
    	lcd_write (zeichen,1);   
    }
    
    void lcd_writetext(char *text)    
    {
    	uint8_t i = 0;
    	while (text[i]!=0) 
    	{
    		lcd_writechar(text[i]);
    		i++;
    	}
    }
    
    void lcd_gotoline(uint8_t zeile)    
    {
    	if (zeile == 1)lcd_write(0x80,0);   
    	if (zeile == 2)lcd_write(0xC0,0);   
    }
    
    void lcd_gotopos (uint8_t zeile, uint8_t spalte)    
    {
    	if (zeile == 1)lcd_write(0x80+spalte-1,0);   
    	if (zeile == 2)lcd_write(0xC0+spalte-1,0);  
    }
    
    void lcd_ini (void)
    {
    	DDRC = 0x3F;		
    	PORTC=0x00;			
    
    	delay_ms_(5);		
    
    	lcd_write(0x2,0);		
    
    	lcd_flash_e ();			
    
    	delay_ms_(5);		
    
    	lcd_write(0x28,0);     
    	lcd_write(0x0C,0);    
    	lcd_write(0x06,0);   
    	
    	lcd_cls();				
    }
    
    int main(void)
    {
    	
                  char text_ausgabe[]="hallo";
    	
    	DDRC=0xff;
    	PORTC=0;
    	delay_ms_(100);
    	lcd_ini();
    	lcd_cls();
    	
    	while(1)
    	{		   
                  lcd_cls();
                  lcd_gotopos (1, 3);
                  lcd_writetext(text_ausgabe);
                  delay_ms_(500);
    	}
    	
    }

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,
    in Bascom muss man nachdem der RW pin auf Low und nach dem Config LCD nochmal ein Initlcd machen, damit das LCD initialisiert wird.
    Ich hab da aber auch mal was gelesen, das es eine Lib gibt die das RW unterstützen soll.

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Aber mir ist noch nicht klar, warum man R/W nicht immer auf LOW lassen kann (bei Assembler oder C)!
    Ich denke, die Kolegen haben sich noch nie die Dattenblätter zum Display angesehen, und wissen noch nichtmals was der Pin zu sagen hat...

    Gruß Sebastian

  5. #15
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Konw-how

    Hallo Sebastian,

    Ich denke, die Kolegen haben sich noch nie die Dattenblätter zum Display angesehen, und wissen noch nichtmals was der Pin zu sagen hat...
    Nanana! [-X [-X [-X

    Keine Kränkungen bitte! [-(

    Gruss Dirk

  6. #16
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Keine Kränkungen bitte!
    Ich spreche nur die Wahrheit, ist doch wahr!

    Gruß Sebastian

  7. #17
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.06.2005
    Alter
    35
    Beiträge
    364
    ICH habs gelesen, wurde trotzdem nicht sofort schlau draus!!!
    Und ich glaube nicht dass du die Wahrheit kennst
    Trotz Datenblatt hab ich eine Frage: Wenn ich mein Display anschließe sind die ersten acht Zeichen ganz schwarz und die anderen aht sind weiß!! Ist das normal? Habs nähmlich noch nicht hinbekommen es anzusprechen

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.02.2004
    Alter
    41
    Beiträge
    171
    was willst du den da hin schreiben? Wenn es nur acht zeichen sind dann dreh mal am Kontrast vielleicht ist dreeinfach nur zu hoch eingestellt?

    Gruß Johann!

  9. #19
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.06.2005
    Alter
    35
    Beiträge
    364
    Nein, ich mein bevor ich irgendwelche befehle sende!!! Das LCD hat 1 Zeile à 16Zeichen, Kontrast ist in Ordnung!

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

12V Akku bauen