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 Steffen - 29.09.2006 19:49)
 Als Antwort auf Re: LC Display 4 Bit Modus von André H. - 29.09.2006 19:38
Steffen nutzt:  CC1-Unit V1.1
> 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]

???? Wieo deklarierst du einen kompletten byteport wenn doch nur 4 angeschlossen sind? Was, falls ich den Rest anderswo verwende? Oder verstehe ich byteport falsch?


> 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 = &B1000001
>  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
>

 ?geht das, obwohl nur 4 angeschlossen sind?  müsste es doch in high und low nibble unterteilen?
 


>  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 André H. - 29.09.2006 20:05)
    Re: LC Display 4 Bit Modus (von Steffen - 30.09.2006 14:49)