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: LCD-Anzeige mit BASIC? Kategorie: Programmierung Basic (von Jürgen - 25.12.2011 11:51)
 Als Antwort auf LCD-Anzeige mit BASIC? von Dieter - 25.12.2011 7:58
Jürgen nutzt:  CC1-M-Unit V1.1, Open-Mini
Hallo Dieter
Anbei mal ein altes Demoprogramm von mir. Ich hoffe es hilft. Wenn Du noch die alte CControl 1.1 nutzt dann schau doch mal in den Downloadbereich der CControl(nicht Open Mikro), da gibt es noch eine einfachere Lösung zur Ausgabe von Variablen und Zählerständen. Du benötigst dann allerdings ein Schieberegister vor der LCD-Anzeige.

'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
'º               C-CONTROL BASIC-PROGRAMM                    º
'º                     BIN_LCD3.BAS                          º
'º   LIESST EINEN WERT AN AD1 EIN, WANDELT DIESEN            º
'º   UND GIBT DIE ASCII-FOLGE AUF EINEN LCD-DISPLAY AUS.     º
'º               DEMOVERSION IN REAL-TIME                    º
'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
DEFINE POTI AD[1]              'WERT VOM AD-EINGANG 1 LESEN
DEFINE ZAHL WORD               'ENTHAELT DIE BINAERZAHL
DEFINE MERKER WORD             'ENTHAELT DAS ZWISCHENERGEBNISS
DEFINE MENGE WORD              'ENTHAELT DIE ZU SUBTRAHIERENDE ZAHL
DEFINE REST BYTE               'ENTHAELT DEN MODULO-WERT
DEFINE TAUSEND BYTE            'ENTHAELT DEN ASCII-CODE DER TAUSENDERSTELLE
DEFINE HUNDERT BYTE            'ENTHAELT DEN ASCII-CODE DER HUNDETERSTELLE
DEFINE ZEHNER BYTE             'ENTHAELT DEN ASCII-CODE DER ZEHNERSTELLE
DEFINE EINER BYTE              'ENTHAELT DEN ASCII-CODE DER EINERSTELLE
DEFINE I BYTE                  'ZAEHLER FUER DIE SCHLEIFE
'ÍÍÍÍÍÍÍÍÍÍ VARIABELN FUER DAS LCD-DISPLAY ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
DEFINE DATA BYTEPORT[1]        'ENTHAELT DAS ZU SENDENDE ASCII-ZEICHEN
DEFINE RS PORT[11]             'L=BEFEHLSEINGABE / H=DATENEINGABE
DEFINE RW PORT[10]             'L=DATEN SCHREIBEN / H=DATEN LESEN
DEFINE E PORT[9]               'ENABLE EINGANG ZUR DATENUEBERNAHME
'ÍÍÍÍÍÍÍÍÍÍ DISPLAY KONFIGURIEREN ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
RS=0:RW=0:DATA=&H38            'DISPLAY 2-ZEILIG / 5X7 DOT
PULSE E                        'DATEN UEBERNEHMEN
RS=0:RW=0:DATA=&H0C            'DISPLAY EIN/CURSOR EIN/BLINKEN AUS
PULSE E                        'DATEN UEBERNEHMEN
RS=0:RW=0:DATA=&H01            'DISPLAY LOESCHEN UND CURSOR IN GRUNDSTELLUNG
PULSE E                        'DATEN UEBERNEHMEN
#LOOP
'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
'º          AD-WERT INTERPOLIEREN                            º
'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
I = 0                          'ZAEHLER RESETTEN
FOR I = 0 TO 119               'MAX 128, DA 255x128,5 = 32768
ZAHL = ZAHL+POTI               'MESSWERTE ADDIEREN
NEXT I                         'WEITERZAEHLEN
ZAHL = ZAHL/120                'MITTELWERT AUSRECHEN
'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
'º          CODE-WANDLER                                     º
'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
IF ZAHL > 9999 THEN ZAHL = 9999
IF ZAHL <= 0 THEN ZAHL = 0
'ÍÍÍÍÍÍÍÍÍÍ TAUSENDER STELLE ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
REST = ZAHL MOD 1000
MERKER = ZAHL-REST
MENGE = MERKER/1000
TAUSEND = MENGE+&h30
MENGE = MENGE*1000
ZAHL = ZAHL-MENGE
'ÍÍÍÍÍÍÍÍÍÍ HUNDERTER STELLE ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
REST = ZAHL MOD 100
MERKER = ZAHL-REST
MENGE = MERKER/100
HUNDERT = MENGE+&h30
MENGE = MENGE*100
ZAHL = ZAHL-MENGE
'ÍÍÍÍÍÍÍÍÍÍ ZEHNER STELLE ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
REST = ZAHL MOD 10
MERKER = ZAHL-REST
MENGE = MERKER/10
ZEHNER = MENGE+&h30
MENGE = MENGE*10
ZAHL = ZAHL-MENGE
'ÍÍÍÍÍÍÍÍÍÍ EINER STELLE ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
EINER =REST+&H30
'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
'º          LCD-DISPLAY                                      º
'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
'ÍÍÍÍÍÍÍÍÍÍ FUEHRENDE NULLEN UNTERDRUECKEN ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
IF TAUSEND = 48 THEN TAUSEND = 32
IF TAUSEND <> 32 THEN GOTO WEITER
IF HUNDERT = 48 THEN HUNDERT = 32
IF HUNDERT <> 32 THEN GOTO WEITER
IF ZEHNER = 48 THEN ZEHNER = 32
#WEITER
'ÍÍÍÍÍÍÍÍÍÍ GRUNDSTELLUNG LCD DISPLAY ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
RS=0:RW=0:DATA=&H02             'CURSOR UND TEXT IN GRUNDSTELLUNG
PULSE E                         'DATEN UEBERNEHMEN
RS=1:RW=0                       'START DER ASCII-UEBERTRAGUNG
'ÍÍÍÍÍÍÍÍÍÍ ZEICHEN-NR.1 ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
DATA=TAUSEND
PULSE E                         'DATEN UEBERNEHMEN
'ÍÍÍÍÍÍÍÍÍÍ ZEICHEN-NR.2 ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
DATA=HUNDERT
PULSE E                         'DATEN UEBERNEHMEN
'ÍÍÍÍÍÍÍÍÍÍ ZEICHEN-NR.3 ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
DATA=ZEHNER
PULSE E                         'DATEN UEBERNEHMEN
'ÍÍÍÍÍÍÍÍÍÍ ZEICHEN-NR.4 ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
DATA=EINER
PULSE E                         'DATEN UEBERNEHMEN
'ÍÍÍÍÍÍÍÍÍÍ TEXT AUSGEBEN ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
RS=0:RW=0:DATA=&H85             'CURSOR POSITIONIEREN
PULSE E                         'DATEN UEBERNEHMEN
'ÍÍÍÍÍÍÍÍÍÍ TEXT UEBERTRAGEN ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
RS=1:RW=0                       'START DER ASCII-UEBERTRAGUNG
DATA=&H49                       'ZEICHEN "I"
PULSE E                         'DATEN UEBERNEHMEN
DATA=&H73                       'ZEICHEN "s"
PULSE E                         'DATEN UEBERNEHMEN
DATA=&H74                       'ZEICHEN "t"
PULSE E                         'DATEN UEBERNEHMEN
'ÍÍÍÍÍÍÍÍÍÍ PROGRAMM BEENDEN ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
GOTO LOOP
END

 Antwort schreiben

Bisherige Antworten: