Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: LC Display 4 Bit Modus Kategorie: Hardware (von André H. - 29.09.2006 19:38)
 Als Antwort auf LC Display 4 Bit Modus von Steffen - 29.09.2006 17:47
André H. nutzt:  CC1-Unit V1.1, Advanced CC1-Unit, Open-Micro, Open-Mini, Open-Mini M-Unit, Open-Mini Station, C-Control 2
Hallo Steffen,


> versuche vergebens das Display von Robot Systems ( 2x 16) war bei dem Application Board dabei im 4 Bit Modus zu betreiben. Da ich das App für meine Anwendung nicht mehr verwende, habe ich es nach folgendem Schaltbild angeschlossen:
>
>
> Schaltbild
>

Normalerweise wird das LCD bei der CC1 an den zweiten Byteport angeschlossen,
aber am ersten geht es auch.

> Da ich keinen Podi hatte, habe ich Vo zum Test mal an einen 10k/10k Spannungsteiler gehängt.

Hier wird der Kontrast zu schwach sein.
Hänge Vee (oder Vo, wie es in diesem Schaltbild heißt,) direkt an GND (Vss).
Das ist dann der maximale Kontrast.


> Die nichtverwendeten Eingänge des Displays habe ich einfach nicht belegt.

Das ist OK.

>
> Softwaretechnisch habe ich mir von der gleichen Hompage folgendes zusammengebastelt. Das Display tut allerdings keinen Strich, wird nur af der Rückseite sehr warm. Kann mir jemand helfen? Habe auch keine Anleitung für das Display. Conrad hat nur eine 1 seitige online, die so gut wie nichts aussagt. Bin für alles dankbar.

Ich vermute, daß es einfach einen Kurzen gibt.
Denn R/W muß beim Schreibzugriff auf's Display auf Low, also GND, liegen.
Aber in Deinem Programm wird R/W nicht auf Low gesetzt.
Standardmäßig haben die I/Os der CC1 Unit V1.1 durch Pull-Up-Widerstände Highpegel.
Somit treffen die Ports des Displays als Ausgang zu auf die Ports der CC1, was
natürlich zu einem hohen Stromfluß führt.
Der Strom dürfte aber nicht so hoch sein, daß beide das Zeitliche segnen, solange
nicht längere Zeit dieser Kurzschluß besteht.

Versuche es mal mit folgenden Routinen:

define LCD_Port  byteport[1]
define LCD_RS    port[6]
define LCD_RW    port[5]
define LCD_e     port[7]
define LCD_light port[8]

define LCD_Param byte[1] 'Tempöräres Byte für LCD-Routinen
define x         byte[2] 'Tempöräres Byte für LCD-Print-und-Zahl-Routinen

'ASCII      
Define A_ &H41 : Define B_ &H42 : Define C_ &H43 : Define D_ &H44 : Define E_ &H45
Define F_ &H46 : Define G_ &H47 : Define H_ &H48 : Define I_ &H49 : Define J_ &H4A
Define K_ &H4B : Define L_ &H4C : Define M_ &H4D : Define N_ &H4E : Define O_ &H4F
Define P_ &H50 : Define Q_ &H51 : Define R_ &H52 : Define S_ &H53 : Define T_ &H54
Define U_ &H55 : Define V_ &H56 : Define W_ &H57 : Define X_ &H58 : Define Y_ &H59 : Define Z_ &H5A
Define ak &H61 : Define bk &H62 : Define ck &H63 : Define dk &H64 : Define ek &H65
Define fk &H66 : Define gk &H67 : Define hk &H68 : Define ik &H69 : Define jk &H6A
Define kk &H6B : Define lk &H6C : Define mk &H6D : Define nk &H6E : Define ok &H6F
Define pk &H70 : Define qk &H71 : Define rk &H72 : Define sk &H73 : Define tk &H74
Define uk &H75 : Define vk &H76 : Define wk &H77 : Define xk &H78 : Define yk &H79 : Define zk &H7A
Define SPACE &H20 : Define MINUS &H2D : Define GLEICH &H3D : Define DPP &H3A
Define Dot &H2E
Define Line1 &H80 : Define Line2 &HC0 : Define Line3 &H94 : Define Line4 &HD4 'Für 4x20 LCD
'Define Line1 &H80 : Define Line2 &HC0 : Define Line3 &H90 : Define Line4 &HD0 'Für 4x16 LCD


gosub LCD_init

LCD_Param=H_ : gosub LCD_put
LCD_Param=ak : gosub LCD_put
LCD_Param=lk : gosub LCD_put
LCD_Param=lk : gosub LCD_put
LCD_Param=ok : gosub LCD_put
LCD_Param=SPACE : gosub LCD_put
LCD_Param=W_ : gosub LCD_put
LCD_Param=ok : gosub LCD_put
LCD_Param=rk : gosub LCD_put
LCD_Param=lk : gosub LCD_put
LCD_Param=dk : gosub LCD_put
LCD_Param=SPACE : gosub LCD_put
x=123 : gosub LCD_Zahl

#loop
 LCD_Param=Line2 : gosub LCD_CMD
 x=hour : gosub LCD_Zahl2
 LCD_Param=DPP : gosub LCD_put
 x=minute : gosubLCD_Zahl2
 LCD_Param=DPP : gosub LCD_put
 x=second : gosub LCD_Zahl2
 LCD_Param=DPP : gosub LCD_put
 pause 20
goto loop


'---LCD-Routinen----------
#LCD_init
 LCD_Port = &h38

 'Function Set 8 Bit
 LCD_PORT = &B10000011
 Pulse LCD_e
 pause 1
 LCD_PORT = &B10000011
 Pulse LCD_e

 LCD_PORT = &B10000011
 Pulse LCD_e

 ' Function Set 4 Bit
 LCD_PORT = &B10000010
 Pulse LCD_e

 LCD_Param=&h28 :gosub LCD_CMD
 LCD_Param=&h0C :gosub LCD_CMD
 LCD_Param=&h06 :gosub LCD_CMD
#LCD_CLS
 LCD_Param=&h01 :gosub LCD_CMD
 pause 1
 return

#LCD_CMD
 LCD_RS=0
goto LCD_Write

#LCD_put
 LCD_RS=1
#LCD_Write
 LCD_Port = (LCD_Port and &hF0) or (LCD_Param SHR 4)
 Pulse LCD_e
 LCD_Port = (LCD_Port and &hF0) or (LCD_Param AND &H0F)
 Pulse LCD_e
return

#LCD_Zahl
 if x > 99 then LCD_Param=  (x / 100) + &H30        else LCD_Param=SPACE
 gosub LCD_Put
#LCD_Zahl2
 if x >  9 then LCD_Param= ((x mod 100) / 10) + &H30 else LCD_Param=SPACE
 gosub LCD_Put
 LCD_Param= (x mod 10) + &H30
goto LCD_Put


MfG André H.

 Antwort schreiben

Bisherige Antworten:

Re: LC Display 4 Bit Modus (von Steffen - 29.09.2006 19:49)
    Re: LC Display 4 Bit Modus (von André H. - 29.09.2006 20:05)
        Re: LC Display 4 Bit Modus (von Steffen - 30.09.2006 14:49)