Forum: Mikrocontroller und Digitale Elektronik LCD-display des ARM7 über Ports ansteuern


von Marco (Gast)


Lesenswert?

Hallo

muss in der Schule ein Programm schreiben, welches das LCD-Display des 
ARM7
über die Ports ansteuert.(über jeden Port soll ein halbes Bit gesendet 
werden) Das alles soll in eine Library geschrieben werden.
Da ich mich leider nicht auskenne bitte ich um Hilfe.
mfg Marco :)

von g. b. (gunb)


Lesenswert?

Marco schrieb:
> Hallo
>
> muss in der Schule ein Programm schreiben, welches das LCD-Display des
> ARM7
> über die Ports ansteuert.(über jeden Port soll ein halbes Bit gesendet
> werden) Das alles soll in eine Library geschrieben werden.
> Da ich mich leider nicht auskenne bitte ich um Hilfe.
> mfg Marco :)

Am besten nimmst du dir einen Stuhl und setzt dich an den Portausgang, 
dann wartest du, bis ein Bit vorbeikommt. Sobald ein Bit erscheint, 
haust du es mit der Axt genau in der Mitte durch und verteilst es an den 
anderen Port.

Ganz einfach.

von Falk B. (falk)


Lesenswert?

Erweiterte LCD-Ansteuerung

Ist zwar für den AVR und nicht ARM, das Prinzip ist aber gleich. Und C 
ist ja sehr portabel.

MFG
Falk

von Marco (Gast)


Lesenswert?

hahaha ^^
mein problem ist dass ich einen fünfer bekomme wenn ich dieses Projekt 
nicht abgebe ...
Eine ernsthafte Hilfe würde mir mehr helfen

von Marco (Gast)


Lesenswert?

@falk
diese seite kenne ich bereits, allerdings jedes mal wenn ich das 
Programm ausführen will kommt bei jedem Befehl wo "uint8_t" vorkommt 
eine Fehlermeldung

von g. b. (gunb)


Lesenswert?

Marco schrieb:
> hahaha ^^
> mein problem ist dass ich einen fünfer bekomme wenn ich dieses Projekt
> nicht abgebe ...
> Eine ernsthafte Hilfe würde mir mehr helfen

Na und? Die bekommst du dann zurecht.

Wie frech muss man eigentlich sein, wenn man von anderen erwartet deinen 
Job zu machen?! Studier die Grundlagen, arbeite ein Konzept aus, wenn du 
dann noch fragen hast, dann zeigst du uns, was du bisher gemacht hast 
und wir helfen dir vielleicht - falls du höflich bleibst.

Halbe Bits? Sehr lustig!

von Marco (Gast)


Lesenswert?

int main(void)
{

  #define LCD_PORT      PORTC
  #define LCD_BOOTUP_MS           15
  #define LCD_ENABLE_US           20
  #define LCD_WRITEDATA_US        46
  #define LCD_COMMAND_US          42

  #define LCD_SOFT_RESET_MS1      5
  #define LCD_SOFT_RESET_MS2      1
  #define LCD_SOFT_RESET_MS3      1
  #define LCD_SET_4BITMODE_MS     5

  #define LCD_CLEAR_DISPLAY_MS    2
  #define LCD_CURSOR_HOME_MS      2
  #define LCD_DDADR_LINE1         0x00
  #define LCD_DDADR_LINE2         0x40





  void lcd_init( void );
  void lcd_clear( void );
  void lcd_home( void );
  //void lcd_setcursor( uint8_t spalte, uint8_t zeile );
  void lcd_data( uint8_t data );

   void lcd_data( uint8_t data )
{
    LCD_PORT |= (1<<LCD_RS);    // RS auf 1 setzen

    lcd_out( data );            // zuerst die oberen,
    lcd_out( data<<4 );         // dann die unteren 4 Bit senden

    _delay_us( LCD_WRITEDATA_US );
}
}
Das ist der Programmcode den ich bereits ausprobiert habe.
Allerdings kommt bei dem Befehl unit8_t immer eine Fehlermeldung.

von g. b. (gunb)


Lesenswert?

Marco schrieb:
> Das ist der Programmcode den ich bereits ausprobiert habe.
> Allerdings kommt bei dem Befehl unit8_t immer eine Fehlermeldung.

Bei uint8_t handelt es sich um keinen Befehl, sondern um ein #define, 
d.h., dass hier stellvertretend für den Variablentyp "unsigned char" ein 
"uint8_t" angegeben wird, z.B.:

#define uint8_t  usigned char

Das ist eine sog. Präprozessoranweisung, die vom Präprozessor vor dem 
eigentlichen Übersetzen deines C-Code durch den Compiler ersetzt wird. 
Dazu muss die o.g. #define-Anweisung aber in einem Headerfile deines 
Codes vorhanden sein, damit der Präprozessor das "uint8_t" im Code auch 
durch "unsigned char" ersetzen kann. Ist das nicht der Fall, bricht der 
Vorgang ab und du bekommst eine Fehlermeldung.

Schreibe mal an den Anfang deiner Datei(en) "#include stdint.h", darin 
sollte die Deklarationen enthalten sein. Siehe hier:

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial (such mal 
danach)

Dir scheinen die einfachsten Grundlagen der C-Programmierung zu fehlen, 
es schadet also nichts, das AVR-Tutorial hier zum GCC mal zu studieren, 
da lernst du eigentlich das Meiste dessen, was du für deine Aufgabe 
brauchst.

Und noch was: du sendest hier kein halbes Bit, sondern ein halbes Byte 
zweimal hintereinander. Das macht man, wenn man bei dem von dir 
verwendeten Display statt 8 Portpins nur 4 nutzen möchte, um am 
Controller 4 Portpins eben für andere Zwecke nutzen zu können. Da das 
Display dies erlaubt, was nicht selbstverständlich ist, sendest du eben 
statt eines ganzen Bytes 2x 4 Bits, was ergo 8 Bits = 1 Byte ergibt.

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
Noch kein Account? Hier anmelden.