
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Wenn wir hier einen solch Thread schon mal haben... als ehemaliger KC 85/2 (/3/4)-Benutzer fehlte auch mir die Locate-Funktion, die für ein großes Display mehr als nötig ist. Ich hatte eine ganze Menge Zustände einer Spritzgußmaschine anzuzeigen und vor fast 3 Jahren dieses Programm zusammengeschmiedet. mit etwas Aufwand kann man noch eine Variable einsparen, mir hatts aber so gereicht. Das Programm gibt eine Textmaske aus, was den Sinn von Locate (als Unterprogramm!) soweit verdeutlichen sollte. Ich hoffe, dass sich reinfindet, wer es benötigt :-) 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 i byte 'Laufvariablen define j byte ' *** 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 ' *** DISPLAY - POWER_ON_INITIALISIERUNG *** zeile = 1 : spalte = 1 'Zeilen- und Spaltenzaehler setzen lcd_port = &B01000000 'EXE-Leitung HI setzen lcd_dat = &B00110000 : gosub SEND_COM 'FUNC-Set (noch 8-Bit) lcd_port = &B01000010 : pulse lcd_e 'FUNC-Set: ab jetzt 4-Bit 'Betriebsparameter einstellen lcd_dat = &B00101000 : gosub SEND_COM 'N=1 (2zeilg. Disp.) F=0 (5x7 Font) lcd_dat = &B00001100 : gosub SEND_COM 'Disp an, Cursor aus, Blinken aus lcd_dat = &B00000110 : gosub SEND_COM 'Adresspointer increm., Kein Shift 'Sonderzeichen in den CG-RAM exportieren for i = 1 to 8 lcd_dat = 64 + (i - 1) * 8 : gosub SEND_COM for j = 0 + (i - 1) * 8 to (i - 1) * 8 + 7 looktab CG_CODES,j,lcd_dat gosub SEND_CHAR next next gosub CLS ' *** AB HIER ANWENDERPROGRAMM *** zeile = 1 : spalte = 1 : gosub LOCATE ' Text-Maske ausgeben for i = 0 to 13 looktab PRINTS,i,lcd_dat : gosub SEND_CHAR next zeile = 2 : spalte = 1 : gosub LOCATE for i = 14 to 21 looktab PRINTS,i,lcd_dat : gosub SEND_CHAR next zeile = 3 : spalte = 1 : gosub LOCATE for i = 22 to 40 looktab PRINTS,i,lcd_dat : gosub SEND_CHAR next zeile = 4 : spalte = 20 : gosub LOCATE lcd_dat = 115 : gosub SEND_CHAR zeile = 2 : spalte = 9 : gosub LOCATE for i = 53 to 64 'drucke "_Start-Test_" looktab PRINTS,i,lcd_dat : gosub SEND_CHAR next end #SEND_CHAR ' Unterprogramm "Zeichen senden" lcd_buf = &B01100000 lcd_port = lcd_buf or (lcd_dat shr 4) ' obere 4 Bits senden pulse lcd_e lcd_port = lcd_buf or (lcd_dat and &H0F) ' untere 4 Bits senden pulse lcd_e return #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 return #SEND_COM ' Unterprogramm "Befehl an Display senden" lcd_buf = &B01000000 lcd_port = lcd_buf or (lcd_dat shr 4) pulse lcd_e lcd_port = lcd_buf or (lcd_dat and &H0F) pulse lcd_e return #CLS ' Unterprogramm "Display loeschen" lcd_dat = 2 : gosub SEND_COM lcd_dat = 1 : gosub SEND_COM return ' *** 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 tabend ' *** Programm-Ausgaben auf Display *** table PRINTS '"Autostart V1.0" 14 Bytes 0...13 065 117 116 111 115 116 097 114 116 122 097 104 108 058 '"Status: " 8 Bytes 14...21 083 116 097 116 117 115 058 032 'atm_hss_sv__Zyklus: 19 Bytes 22...40 097 116 109 032 104 115 115 032 115 118 032 032 090 121 107 108 117 115 058 '"__* aktiv_*_" 12 Bytes 41...52 032 032 042 032 065 075 084 073 086 032 042 032 '"_Start-Test_" 12 Bytes 53...64 032 083 116 097 114 116 045 084 101 115 116 032 '">>_FEHLER_<<" 12 Bytes 65...76 062 062 032 070 069 072 076 069 082 032 060 060 '"--,--" 5 Bytes 77...81 045 045 044 045 045 '"_VA-Zyklus__" 12 Bytes 82...93 032 086 065 045 090 121 107 108 117 115 032 032 tabend Passender Link: Die Locate-Funktion im kompletten Programm (nur temp. online) |
| Antwort schreiben |