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: Elektor Zweidraht-LCD mit CControl1.1 ansteuern Kategorie: Hardware (von Mak - 19.06.2009 10:07)
 Als Antwort auf Re: Elektor Zweidraht-LCD mit CControl1.1 ansteuern von Mak - 16.06.2009 10:57
Mak nutzt:  CC1-Unit V1.1, CC1-M-Unit V1.1, CC1-Station V1.1, C-Control 2
Haloo,
es gibt noch ein Problem beim Einschalten der CC1 bzw. nach einem Reset.
Die Anfangszustände an den Ports und von CC1 an den 74HCT4094 sind durch 10k Pull-Ups CControl-seitig vorgespannt. Dies kann eine Übernahme von unbestimmten Zuständen an das Display nach Power-ON/Reset hervorrufen. Dadurch gibts generell ein Problem, das Display zum Laufen zu bekommen.
Unter Umständen beeinflussen auch die beiden genutzen Dioden die Logikpegel, die ggf. nicht immer korrekt vom Display erkannt werden (ebenfalls Vermutung).

Arbeite noch dran.

Mak

> Hallo,
> das 2-Draht-LCDisplay wurde in einem Elektor-Projekt mit Atmel-Controllern vorgestellt.
> Anbei zwei Links:
>
> Der Elektor-Artikel:
> http://www.cczwei.de/atm18_downloads/071148-D%20CC2-AVR-board-2.pdf
>
> Tips und Tricks im Computer-Club 2 Wiki:
> http://www.cc-zwei.de/wiki/index.php/ATM18::Projekt::2-Draht_LCD
>
> Wie gesagt, ich habe zwei Ă„nderungen an der Beschaltung vornehmen mĂĽssen:
> 1. 1N4148 Diode zwischen Pin 8 des 74HCT4094 und GND, um den Baustein zum Schieben zu bekommen (Alternative wäre eine Spannungsversorgung >5.25V gewesen). Laut Datenblatt sollte der IC allerdings zwischen 4.75V und 5.25V arbeiten (?? ;-])
>
> 2. Ich habe statt der SMD Schottky-Diode BAS70 ebenfalls eine 1N4148 (nichts anderes da) verwendet, funktioniert, sollte aber mit Vorsicht genossen werden.
>
> Den BASCOM-Code für den Atmel habe ich auf Anfrage von Thomas0815 auf CCBASIC umgesetzt. Nachdem einige Ungereimtheiten aus dem BASCOM-Code geklärt wurden, läuft nun das CCBASIC-Programm auf der CC1. Anbei der CCBASIC-Sourcecode für ein 2x16 LCD. Das 4x16 LCD Programm muss etwas anders aussehen, kann es noch nicht ausprobieren, da das LCD bei mir noch eingepackt liegt (SC1604ASLB 4x16 mit Hintergrundbeleuchtung für €7.95 bei Pollin).
>
> Bei Fragen bitte melden (am besten unter Email):
>
> MfG, Mak
>
> '******************************************
> '* *
> '* Demo-Programm zur Ansteuerung *
> '* eines 2x16 LC-Displays mit *
> '* HD44780 kompatiblen Controller *
> '* *
> '* Version: 1.0 *
> '* Author: Mak *
> '* Datum: 15.06.2009 *
> '* Referenzen: *
> '* elektor artikel 05/2008 *
> '* Conrad Electronic LCD3.BAS *
> '* *
> '******************************************
>
>
>
>
> DEFINE Rs BYTE[1] 'Variablendefinition ähnlich zu Elektor BASCOM-Programm
> DEFINE Mask BYTE[2]
> DEFINE N BYTE[3]
> DEFINE I BYTE[4]
> DEFINE J BYTE[5]
> DEFINE D BYTE[6]
> DEFINE State BYTE[7]
> DEFINE Low_nibble BYTE[8]
> DEFINE High_nibble BYTE[9]
>
> DEFINE X BYTE[10] 'notwendige Variablen - im BASCOM-Programm lokal definiert
> DEFINE Z BYTE[11]
> DEFINE Pos BYTE[12]
>
> DEFINE Pe_clock       Port[16] 'CC1-Pins fuer Clock und Daten
> DEFINE Pe_data        Port[15]
>
> '*** ASCII-Codes *** 'Definition der LCD-Charakter lt. LCD3.BAS bzw. LCD-Datenblatt
> 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 NULL &H30
> DEFINE EINS &H31
> DEFINE ZWEI &H32
> DEFINE DREI &H33
> DEFINE VIER &H34
> DEFINE FUENF &H35
> DEFINE SECHS &H36
> DEFINE SIEBEN &H37
> DEFINE ACHT &H38
> DEFINE NEUN &H39
>
> DEFINE LEERZ &H20
> DEFINE MINUS &H2D
>
> DEFINE GLEICH &H3D
> DEFINE PUNKT &H2E
>
> 'LCD-Ausgabe 'Routine zur Ausgabe eines Textes
> #Main
> GOSUB Lcd_init 'LC-Display initialisieren
>
> X=1:Z=1 'Position des Cursors auf LCD festlegen
> GOSUB Lcd_Pos 'und setzen
> Pos=0:J=15+Pos 'Anfangsposition und Laenge des Textes in Look-Up Table uebermitteln
> GOSUB Lcd_text 'Text ausgeben
> X=1:Z=2 'und das machen wir in allen 4 Zeilen
> GOSUB Lcd_Pos
> Pos=16:J=15+Pos
> GOSUB Lcd_text
>
> PAUSE 150 '3s warten
> Rs=0 'auf Befehl umschalten
> D=&H01 'Befehl
> GOSUB Lcd_write_byte 'uebertragen
>
> 'Beende Demo-Programm
> END 'hier Programm beenden >>>keine ADC-Wert-Ausgabe wie bei BASCOM-Prog realisiert
>
> 'Unterprogramme
>
> #Lcd_write_nibble
> Pe_clock=0
> Pe_data=0
> 'Clear all stages of shift register
> FOR N=1 TO 8
> Pe_clock=1
> Pe_clock=0
> NEXT
> 'Set Low-Level at Q7
> Pe_data=0
> Pe_clock=1
> Pe_clock=0
> 'Set E-Level at Q6
> Pe_data=1
> Pe_clock=1
> Pe_clock=0
> 'Set level for RS at Q5
> Pe_data=Rs
> Pe_clock=1
> Pe_clock=0 '
> 'Shift in 4 bits
> Mask=8
> FOR N=1 TO 4
> State=D AND Mask
> IF State=0 THEN Pe_data=0 ELSE Pe_data=1
> 'Clock in data with rising edge
> Pe_clock=1
> Pe_clock=0
> Mask=Mask SHR 1
> NEXT
> 'Shift in 0-Bit
> Pe_data=0
> Pe_clock=1
> Pe_clock=0
> 'Set E
> Pe_data=1
> Pe_data=0
> RETURN
>
> #Lcd_write_byte
> Low_nibble=D AND 15
> High_nibble=D SHR 4
> D=High_nibble
> GOSUB Lcd_write_nibble
> D=Low_nibble
> GOSUB Lcd_write_nibble
> RETURN
>
> #Lcd_init
> Rs=0 'command mode
> PAUSE 5 'Delay for power up time
> D=&H20
> GOSUB Lcd_write_byte
> D=&H20
> GOSUB Lcd_write_byte
> D=&H28
> GOSUB Lcd_write_byte
> D=&H0C
> GOSUB Lcd_write_byte
> D=&H01
> GOSUB Lcd_write_byte
> RETURN
>
> #Lcd_pos
> Rs=0 'write CTRL
> D=127+X
> IF Z=2 THEN D=D+64
> IF Z=3 THEN D=D+20
> IF Z=4 THEN D=D+84
> GOSUB Lcd_write_byte
> RETURN
>
> #Lcd_text
> Rs=1 'Daten-Modus
> FOR I=Pos TO J 'Text aus Look-Up Table entspr. der Position und Laenge
> LOOKTAB Text,I,D 'auslesen
> GOSUB Lcd_write_byte 'und auf LCD ausgeben
> NEXT I 'das tun wir fuer den interessierenden Textabschnitt
> RETURN 'Zurueck zum Hauptprogramm
>
> 'Tabellen mit Text
> TABLE Text C_ C_ O_ N_ T_ R_ O_ L_ EINS PUNKT EINS LEERZ ZWEI X_ EINS SECHS Z_ W_ E_ I_ D_ R_ A_ H_ T_ D_ I_ S_ P_ L_ A_ Y_ TABEND
>
>
> > Hallo,
> >
> > zwar habe ich die Ansteuerschaltung mit dem 4094 nicht, an Software fĂĽr die 1er bin ich aber immer interessiert.
> >
> > Hilfreich wäre der Schaltplan fĂĽr den Aufbau besagter Schaltung, da mir  der entsprechende Elektor-Artikel nicht vorliegt.
> >
> >
> >
> > Gruss Nurmalso

 Antwort schreiben

Bisherige Antworten:

Re: Elektor Zweidraht-LCD mit CControl1.1 ansteuern (von Mak - 11.07.2009 1:58)