PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ich bringe mein 4*20 LCD nicht zum laufen



Dane
18.07.2005, 15:14
Hallo,

ich bin neu hier im Forum.
Seit ein paar Wochen bastle ich mit einem ATMega32 und Bascom.
Ich habe noch nichts großartiges gemacht, z.B. ein Lauflicht mit einstellbarer Geschwindigkeit.
Jetzt würde ich gerne mein 4-Zeilen LCD von Pollin ausprobieren (ist nicht mehr lieferbar).
Leider tut sich nichts. Nach dem Einschalten ist in der ersten und dritten Zeile ein Balken zu sehen, also so, als wäre nur die Versorgungsspannung am LCD.

Ich habe unter Options/Compiler/LCD folgendes eingestellt:

LCD type 20 * 4
Bus mode 4 bit (es sind nur DB4 bis DB7 verbunden, DB0 bis DB3 liegen an Masse)
Data mode pin
LCD-adress C000 (woher weiß ich, was ich da einstellen soll?)
RS-adress 8000 (hier genauso, woher bekomme ich die Adresse?)
Enable PORTC.3
RS PORTC.2
DB7 PORTC.7
DB6 PORTC.6
DB5 PORTC.5
DB4 PORTC.4

RW ist nicht verbunden

Ich habe mit dem Oszi mal die einzelnen Pins gemessen und es rührt sich was, das Display reagiert aber nicht drauf.
Im Simulator funzt das Programm.

Hier ist das Datenblatt zum LCD:
http://www.pollin.de/service/LCD/120132.zip

Das ist mein Programm, es entspricht größtenteils dem LCD.BAS im Samples Verzeichnis, ich habe es nur etwas angepasst:


'--------------------------------------------------------------
' (c) 1999-2000 MCS Electronics
'--------------------------------------------------------------
' file: LCD.BAS
' demo: LCD, CLS, LOWERLINE, SHIFTLCD, SHIFTCURSOR, HOME
' CURSOR, DISPLAY
'--------------------------------------------------------------
$regfile = "m32def.dat"
$crystal = 1000000

'$sim
'REMOVE the above command for the real program !!
'$sim is used fr faster simulation


'note : tested in PIN mode with 4-bit

'Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6
'Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
'These settings are for the STK200 in PIN mode
'Connect only DB4 to DB7 of the LCD to the LCD connector of the STK D4-D7
'Connect the E-line of the LCD to A15 (PORTC.7) and NOT to the E line of the LCD connector
'Connect the RS, V0, GND and =5V of the LCD to the STK LCD connector

Rem with the config lcdpin statement you can override the compiler settings


Dim A As Byte
Config Lcd = 20 * 4 'configure lcd screen
'other options are 16 * 4 and 20 * 4, 20 * 2 , 16 * 1a
'When you dont include this option 16 * 2 is assumed
'16 * 1a is intended for 16 character displays with split addresses over 2 lines

'$LCD = address will turn LCD into 8-bit databus mode
' use this with uP with external RAM and/or ROM
' because it aint need the port pins !

Do
Cls 'clear the LCD display
Lcd "Hello world." 'display this at the top line
Waitms 1000
Lowerline 'select the lower line
waitms 1000
Lcd "Shift this." 'display this at the lower line
waitms 1000
For A = 1 To 10
Shiftlcd Right 'shift the text to the right
waitms 1000 'wait a moment
Next

For A = 1 To 10
Shiftlcd Left 'shift the text to the left
waitms 1000 'wait a moment
Next

Locate 2 , 1 'set cursor position
Lcd "*" 'display this
waitms 1000 'wait a moment

Shiftcursor Right 'shift the cursor
Lcd "@" 'display this
waitms 1000 'wait a moment

Home Upper 'select line 1 and return home
Cls
Lcd "Replaced." 'replace the text
waitms 1000 'wait a moment

Cursor Off Noblink 'hide cursor
waitms 1000 'wait a moment
Cursor On Blink 'show cursor
waitms 1000 'wait a moment
Display Off 'turn display off
waitms 1000 'wait a moment
Display On 'turn display on
'-----------------NEW support for 4-line LCD------
Thirdline
Lcd "Line 3"
Fourthline
Lcd "Line 4"
Home Third 'goto home on line three
Home Fourth
Home F 'first letteer also works
Locate 4 , 1 : Lcd "Line 4"
waitms 1000
Loop
'Now lets build a special character
'the first number is the characternumber (0-7)
'The other numbers are the rowvalues
'Use the LCD tool to insert this line

'Deflcdchar 1 , 225 , 227 , 226 , 226 , 226 , 242 , 234 , 228 ' replace ? with number (0-7)
'Deflcdchar 0 , 240 , 224 , 224 , 255 , 254 , 252 , 248 , 240 ' replace ? with number (0-7)
'Cls 'select data RAM
Rem it is important that a CLS is following the deflcdchar statements because it will set the controller back in datamode
'Lcd Chr(0) ; Chr(1) 'print the special character

'----------------- Now use an internal routine ------------
'_temp1 = 1 'value into ACC
'!rCall _write_lcd 'put it on LCD
End

Schon mal Danke für die Antworten!

MfG, Dane

Dane
18.07.2005, 15:17
JTAG ist übrigens deaktiviert, sonst funktioniert der PortC ja nicht.

michaelb
18.07.2005, 15:20
Hi Dane,
leg mal R/W auf Masse also GND!
Gruß Michi

Dane
18.07.2005, 15:32
Danke für die schnelle Antwort!
Das Display funzt!
Manchmal sind es halt doch bloß Kleinigkeiten.

greetz, Neo

michaelb
18.07.2005, 19:31
Hi Dane,
Bitte, ist schön wenn man anderen helfen kann!
Gruß Michi