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: 4x20 Display mit KS0073 Controller Kategorie: Programmierung Basic (von Robert - 29.09.2005 22:56)
 Als Antwort auf 4x20 Display mit KS0073 Controller von Robert - 29.09.2005 20:11
Robert nutzt:  CC1-M-Unit V1.2/2.0

> Hallo!
> Ich habe nun im Forum schon gelesen, dass es wohl bei Display's mit dem Controller KS0073 etwas zu Problemen kommen kann mit der Initialisierung usw...
> Nun meine Frage:
> Weiß jemand wie ich die Initialisierung ändern muss, damit es funktioniert??? Ich meine, wie ändere ich die Initialisierung überhaupt??
> In BASIC++ mach ich da ja nur LCD.INIT und sonst nix...
>
> Es handelt sich um das 4x20 Display von Conrad "EA DIP204B-4NLW".
>
> Weiß jemand obs damit zu Problemen kommen kann, mit der M-Unit 2.0 in BASIC++
> Wie siehts mit der Zeilenanordnung an?? also mit LCD.POS?? geht das mit dem KS0073
> Das Display kommt morgen erst, dann kann ich testen, aber ich war schon etwas geschockt als ich als Neuling von diesen Problemen gelesen hab...
>
>
>

Hallo!
Ich habe mal versucht den Code für die KS0073 Kontroller-Display's von CCBASIC in BASIC++ umzuwandeln. Leider hab ich nicht wirklich viel Peil in CCBASIC....
 Kann mir bitte jemand der sich mit beidem auskennt kurz sagen, ob das in etwa die selbe funktion hat?? kann es leider im moment aus hardwaremangel nicht testen, brauche es aber am Wochenende :-(

Wär super wenn mal jemand drüberschaut!

ORIGINAL in CCBASIC:


 '------ I/O PORTS ---------
 '--------------------------
 define LCDPORT     byteport[2]
 '--------------------------
 '---- SYSTEM MEMORY -------
 '--------------------------
 define OUTBYTE     byte[1]
 define LCDDATA     byte[2]

print "#ON_LCD#";
print "#INIT#";

&h24
LCD_WRITECMD(&h24):pause 2
LCDDATA=&h09:gosub LCD_WRITECMD:pause 2
LCDDATA=&h20:gosub LCD_WRITECMD:pause 2

print "#ON_LCD#";"#INIT#";

LCDDATA=&h24:gosub LCD_WRITECMD:pause 2
LCDDATA=&h09:gosub LCD_WRITECMD:pause 2
LCDDATA=&h20:gosub LCD_WRITECMD:pause 2

print"#L101#";"Z1";
print"#L133#";"Z2";
print"#L165#";"Z3";
print"#L197#";"Z4";

'--------- ------WRITE HI NIBBLE LCD COMMAND ------------
 #LCD_WRITECMD
 OUTBYTE=(LCDDATA shr 4)
 LCDPORT=OUTBYTE or &B01000000:LCDPORT=OUTBYTE and &B10111111
'--------------- WRITE LO NIBBLE ------------------------
 OUTBYTE=(LCDDATA and &H0F)
 LCDPORT=OUTBYTE or &B01000000:LCDPORT=OUTBYTE and &B10111111
 return
'-------------------------------------------------------




Mein Vorschlag für BASIC++:


'//////////////////////////////////////
'//
'//  CCBasic++
'//  Destination C-Control I M2.0
'//  Beschreibung:
'//
'//////////////////////////////////////
 
OPTION CC2.0  'Zielplattform
 
'Deklarationen
'Define byte1 as byte[1]


 '------ I/O PORTS ---------
 '--------------------------
 define LCDPORT     byteport[2]
 '--------------------------
 '---- SYSTEM MEMORY -------
 '--------------------------
 define OUTBYTE     byte
' define LCDDATA     byte[2]

'print "#ON_LCD#";
LCD.INIT
'print "#INIT#";


LCD_WRITECMD(24h)
pause 2
LCD_WRITECMD(09h)
pause 2
LCD_WRITECMD(20h)
pause 2

'print "#ON_LCD#";
LCD.INIT
'print "#INIT#";


LCD_WRITECMD(24h)
pause 2
LCD_WRITECMD(09h)
pause 2
LCD_WRITECMD(20h)
pause 2


'print"#L101#";"Z1";
LCD.POS 1,1
LCD.PRINT "Z1"
'print"#L133#";"Z2";
LCD.POS 1,33
LCD.PRINT "Z2"
'print"#L165#";"Z3";
LCD.POS 1,65
LCD.PRINT "Z3"
'print"#L197#";"Z4";
LCD.POS 1,97
LCD.PRINT "Z4"

'--------- ------WRITE HI NIBBLE LCD COMMAND ------------
Function LCD_WRITECMD(LCDDATA as byte)
 'define LCD_dat_hi as byte[2]
 'LCD_dat_hi=LCDDATA shr 4
 OUTBYTE=(LCDDATA shr 4)
 LCDPORT=OUTBYTE or 01000000b
 LCDPORT=OUTBYTE and 10111111b
'--------------- WRITE LO NIBBLE ------------------------
 OUTBYTE=(LCDDATA and 0Fh)
 LCDPORT=OUTBYTE or 01000000b
 LCDPORT=OUTBYTE and 10111111b
 
end Function
'-------------------------------------------------------


 Antwort schreiben

Bisherige Antworten: