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: selbstdefiniertes Zeichen auf Dispaly KS0073 4x20 Zeilen Kategorie: C-Control I V1.1 (von Jusaro - 18.11.2005 18:53)
 Als Antwort auf Re: selbstdefiniertes Zeichen auf Dispaly KS0073 4x20 Zeilen von Kay - 18.11.2005 8:05
Jusaro nutzt:  CC1-M-Unit V1.2/2.0
Hallo Kay,

Es ist nicht die Frage, ob basic++ intuitiv ist oder nicht. Es liegt wohl eher daran, daß ich den Wald vor lauter Bäumen nicht sehe.  Eigentlich bin ich kein Programmieranfänger (bezüglich Schleifen), aber ich war bis jetzt nicht in der Lage ein Zeichen in das Dispaly zu laden. Wenn das Grad Zeichen auf 223 vorhanden ist ist das ja toll, aber ich möchte ja wissen was ich falsch mache bzw. wie es denn geht!
Den Link den du mir geschickt hast kannte ich schon. Den wollte ich auch schon in Basic++ ummüntzen. Ich bekam auch keine Fehler beim Compilieren, aber ich krigs halt nicht hin, daß ich die Zeichen dann im Display habe.
In sofern bräuchte ich jemand, der mir dein prog in Basic++ mal aufzeigt, damit ich sehe was ich falsch mache. Anbwei mal den Prog-Code,, den ich gebaut habe:


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

import "lib\LCD_KS0073.Bas"

' *** BYTE-VARIABLEN FUER LCD-TREIBER ***
define lcd_buf     byte 'Puffer fuer Datentranfer zum Display
define lcd_dat     byte 'zu sendenden Daten-Bytes
define zeile         byte 'Zeilennummer fuer DD-RAM-Adressierung
define spalte       byte 'Spaltennummer fuer DD-RAM-Adressierung

define j byte             'Laufvariable

' *** Port-Variablen LCD-Treiber ***
define lcd_port     byteport[2] 'LCD-Interface-Port - gesamt
'define lcd_rs        port[14]     'Befehls-Leitung - fuer Cmd's auf 1
'define lcd_e         port[15]     'Execute-Leitung - H-L-Pulse
define i byte
define j byte


KS0073_init()
lcd.clear
print"#L101#";
print"gleich gehts los";

pause 20

'Sonderzeichen in den CG-RAM exportieren
'for i = 1 to 8
'   lcd_dat = 64 + (i - 1) * 8  
'   SEND_COM()
'   pause 2
'   for j = 0 + (i - 1) * 8 to (i - 1) * 8 + 7
'      looktab CG_CODES,j,lcd_dat
'      SEND_CHAR()
'      pause 2
'   next
'next

 for i = 0 to 55 step 8
     lcd_dat = 64 + i
     SEND_COM()
    for j = i to i + 7
       looktab CG_CODES,j,lcd_dat
       SEND_CHAR()
    next
 next


lcd.clear
port[16]=off

print"#L101#";
print"A";
print"#L102#";
print chr(1);
print"#L103#";
print CHR(1);
print"#L104#";
print CHR(2);
print"#L105#";
print CHR(3);
print"#L106#";
print CHR(4);
print"#L107#";
print CHR(5);
print"#L108#";
print CHR(6);
print"#L109#";
print CHR(7);
#weiter
print"#L110#";
print "Z";
print"#L201#";
print"zweite Zeile";


#loop
goto loop


' ***** LCD-SUB-ROUTINEN *****
'function SEND_CHAR() ' Unterprogramm "Zeichen senden"
'   'lcd_buf = &B01100000
'   lcd_buf = 96
'   lcd_port = lcd_buf or (lcd_dat shr 4)    ' obere 4 Bits senden
'   pulse EN
'   pause 2
'   'lcd_port = lcd_buf or (lcd_dat and &H0F) ' untere 4 Bits senden
'   lcd_port = lcd_buf or (lcd_dat and 15) ' untere 4 Bits senden
'
'   pulse EN
'   pause 2
'end function

'function LOCATE() ' Unterprogramm "Cursor auf Display platzieren"
'   if zeile = 1 then lcd_dat = 127 + spalte
'   if zeile = 2 then lcd_dat = 191 + spalte
'   if zeile = 3 then lcd_dat = 147 + spalte
'   if zeile = 4 then lcd_dat = 211 + spalte
'   gosub SEND_COM
'end function

function SEND_COM() ' Unterprogramm "Befehl an Display senden"
    'lcd_buf = &B01000000
    lcd_buf = 64
    SEND_OUT()
end function

function SEND_CHAR()     ' Unterprogramm "Zeichen senden"
    'lcd_buf = &B01100000
    lcd_buf = 0
end function    

function SEND_OUT()
    lcd_port = lcd_buf or (lcd_dat shr 4)    ' obere 4 Bits senden
    pulse EN
    pause 2
    'lcd_port = lcd_buf or (lcd_dat and &H0F) ' untere 4 Bits senden
    lcd_port = lcd_buf or (lcd_dat and 15) ' untere 4 Bits senden
    pulse EN
    pause 2
end function

'#CLS ' Unterprogramm "Display loeschen"
'function cls()
'   lcd_dat = 2
'   SEND_COM()
'   lcd_dat = 1  
'   SEND_COM()
'end function


' *** Zeichengenerator-Daten ***
table CG_CODES
      31 17 17 17 17 17 17 31 'Code 00, leerer Rahmen
      31 31 31 31 31 31 31 31 'Code 01, voller Klotz
      10 00 17 17 17 17 14 00 'Code 02, grosses Ue
      00 16 08 04 02 01 00 00 'Code 03, Zeichen \
      00 00 00 00 00 00 00 00 'Code 04, nicht belegt
      00 00 04 14 04 00 00 00 'Code 05, Zeichen CTRL+G
      04 00 04 08 16 17 14 00 'Code 06, verkehrtes Fragezeichen
      15 16 14 17 14 01 30 00 'Code 07, Paragraph
     '17 14 17 17 31 17 17 00 'Code __, grosses Ae
     '17 14 17 17 17 17 14 00 'Code __, grosses Oe
end table

Vielleicht kann mir ja jemand meinen Fehler aufzeigen. Ich find in nicht.....



> > Bin echt ratlos und mit meiner Weisheit am Ende.
> > Ich hatte versucht die Basic-Progs in Basic++ um zu schreiben. Das ist wohl gescheitert.
>
> muss ich doch leicht grinsen an dieser stelle und kann mir die
> provokante frage einfach nich verkneifen:
> "Ist Basic++ DOCH nich sooooo intuitiv wie angepriesen?"
>
> aber eine gute nachricht für dich, jusaro:
> das °-zeichen kennt dein display bereits. es verbirgt sich
> hinter dem character-code 223. nur deswegen musst du dich
> also mal überhaupt nicht verrückt machen :-)
>
> ansonsten habe ich unten noch mal den link angefügt,
> wo etwas ausführlicher beschrieben ist, wie das geht.
> allerdings solltest du DEN quelltext, der da drin steht
> nicht nehmen, da mir dort offensichtlich fehler unterlaufen sind.
> also die folgebeiträge des threads lesen oder den treiber nehmen,
> den ich neulich hier gepostet hatte.
> zwei schleifen, die eine tabelle mit konstanten auslesen,
> solltest aber wirklich umsetzen können. ist doch nur eine
> frage von syntax und nicht von funktionalität.

 Antwort schreiben

Bisherige Antworten:

Re: selbstdefiniertes Zeichen auf Dispaly KS0073 4x20 Zeilen (von Kay - 19.11.2005 13:47)
    Re: selbstdefiniertes Zeichen auf Dispaly KS0073 4x20 Zeilen (von Jusaro - 20.11.2005 21:37)
Re: selbstdefiniertes Zeichen auf Dispaly KS0073 4x20 Zeilen (von Kay - 19.11.2005 7:20)