PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Lcd ansteuern mit Atmega 16 ?



Blamaster
06.10.2007, 20:47
Hi,

ich hab mir gerade dieses Display bei Pollin gekauft.

http://www.pollin.de/shop/shop.php?cf=detail.php&pg=NQ==&a=OTc1OTc4OTk=

Erstmal hab ich das Poti für den Kontrast angeschlossen, das klappte auch schon mal alles super.

Dann hab ich die Pins wie folgt belegt:

Atmega16 PinD0 an an DB 4
Atmega16 PinD1 an an DB 5
Atmega16 PinD2 an an DB 6
Atmega16 PinD3 an an DB 7
Atmega16 PinD4 an RS
Atmega16 PinD5 an E

und R/W hab ich auf Masse gelegt.

Dann hab ich versucht das ganze mit folgendem Code anzusteuern:



$regfile = "m16def.dat"
$crystal = 8000000

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 =Portd.3 , E = Portd.5 , Rs = Portd.4

Cls
Locate 1 , 1
Lcd "Hello world."


Nur das Display bleibt leider leer und es tut sich nichts.

Hat wer eine Lösung für das Problem ?

mfg Yannic

Murdoc_mm
06.10.2007, 21:55
Hallo,

grundsätzlich steht das im Wiki.

DB0, DB1, DB2 und DB3 auf Masse legen und schau dann mal obs geht.

Gruß

Blamaster
06.10.2007, 22:34
Hab ich gemacht, bringt leider auch nichts

Dolfo
06.10.2007, 23:24
Hallo Blamaster,

evtl. ist ein Tipp dabei:

- groszügige Verzögerungsschleifen (Display Controller sind keine Rennflitzer)
- Abfrage des Busy-Flags

-----------------------------------------------------------------------
Display_initiieren:
rcall warte20 ; Reset vom Display abwarten

ldi Befehl,0b00111000 ; Befehl "Function Set"
rcall Display_Befehl_schreiben
rcall warte20
rcall Display_Befehl_schreiben
rcall warte10
rcall Display_Befehl_schreiben
rcall warte1

rcall Display_bereit
ldi Befehl, 0b00111000 ; lade Befehl "2-zeilig, 5x8"
rcall Display_Befehl_schreiben

rcall Display_bereit
ldi Befehl, 0b00001000 ; lade Befehl "Display aus"
rcall Display_Befehl_schreiben

rcall Display_bereit
ldi Befehl, 0b000000001 ; lade Befehl "Display löschen"
rcall Display_Befehl_schreiben

rcall Display_bereit
ldi Befehl, 0b000000110 ; Befehl "Cursor nach rechts"
rcall Display_Befehl_schreiben

rcall Display_bereit
ldi Befehl, 0b000001111 ; lade Befehl "Display ein"
rcall Display_Befehl_schreiben
ret
-----------------------------------------------------------------------

Erklärungen:

- rcall wartenxx: Subroutine mit Verzögerung um xx mSekunden

- rcall Display_Befehl_schreiben: Subroutine, die Datenport auf "schreiben" setzt und Befehl ausgibt

- rcall Display_bereit: Subroutine die Datenport auf "lesen" setzt und wartet, bis das Busy-Flag frei ist

Gruß.

ex535
06.10.2007, 23:34
Ich habe das Polin Board mir dem neuen Addon.Board verbunden.
So funktioniert es bei mir.

$regfile = "m16def.dat" 'definieren des verwendeten Chips

$crystal = 8000000 'definieren des verwendeten externen Quarz (8MHz)

Dim A As Byte 'dimensionieren der verwendeten Variablen
Dim B As Byte


Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portb.0 , Rs = Portb.2



Ddrd = &B11100000 'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
Portd = &B00000000 'definieren der einzelnen Pins an einem Port ( 0= low level; 1= high level)

Ddra = &B11111111 'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
Porta = &B00000000 'definieren der einzelnen Pins an einem Port ( 0= low level; 1= high level)

Ddrb = &B11111111 'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
Portb = &B00000000 'definieren der einzelnen Pins an einem Port ( 0= low level; 1= high level)

Cls
Initlcd 'initialisiert das LCD

Cls
'Locate 1 , 1
Lcd "PortA 4-7 B1-B3 "
Lowerline
Lcd "Polin AddonBoard"
usw.

Die Anschlüsse PA5-Pa7 wurden auf PB5 - PB7 verbunden.
PB1 an R/W, PB0 an E und PB2 an RS

Gruß
Kurt

Murdoc_mm
06.10.2007, 23:36
Hab ich gemacht, bringt leider auch nichts

Du musst noch "Config LCDbus=4" nach "Config LCDpin = pin ..." schreiben. Was man nicht alles so spät am Abend übersieht. \:D/

Ansonsten kannste nur noch mal im Wiki lesen. ( https://www.roboternetz.de/wissen/index.php/Bascom_und_LCD%27s )

Gruß

Blamaster
07.10.2007, 12:30
Hm funktioniert irgendwie immer noch nicht.