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 - 16.06.2009 10:57)
 Als Antwort auf Re: Elektor Zweidraht-LCD mit CControl1.1 ansteuern von Nurmalso - 16.06.2009 0:35
Mak nutzt:  CC1-Unit V1.1, CC1-M-Unit V1.1, CC1-Station V1.1, C-Control 2
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 - 19.06.2009 10:07)
    Re: Elektor Zweidraht-LCD mit CControl1.1 ansteuern (von Mak - 11.07.2009 1:58)
Re: Elektor Zweidraht-LCD mit CControl1.1 ansteuern (von Mak - 16.06.2009 22:14)