
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hi, schau dir mal diesen Link an: http://home.iae.nl/users/pouweha/lcd/lcd.shtml Ist zwar englisch, aber ich denke, das wirst du verstehen ;-) Ansonsten hier mal meine Routine, mit der ich eins von den Teminals von CCTools anspreche. Es ist modular gehalten, da werden immer nur die I²C-Funktionen aufgerufen. Es ist allerdings DOS-codiert... Zuerst musst du die Init aufrufen. Bevor du eine Reihe von Buchstaben schreibst, musst du die "writestart", hinterher die "writestop" aufrufen. Ansonsten sind die Funktionsnamen selbsterklärend... Ich hoffe, es ist verständlich genug ;-) mfg, Marcel '*************************************************************************** '** LCD-INTERFACE ** '*************************************************************************** '*** LCD_Interface ber IýC*** #LCD_pulse_e lcd_e = 1 I2Cschreiben = lcd_port 'Hier #I2CPUTBYTE FOR zaehler = 7 TO 0 STEP -1 IF (I2Cschreiben AND 1 SHL zaehler) = 0 THEN data = 0 ELSE data = 1 PULSE clock NEXT '#I2CPUTBYTE ENDE 'Hier #I2CGETACK data = 1 : DEACT data : clock = 1 : WAIT NOT data : clock = 0 '#I2CGETACK ENDE lcd_e = 0 I2Cschreiben = lcd_port 'Hier #I2CPUTBYTE FOR zaehler = 7 TO 0 STEP -1 IF (I2Cschreiben AND 1 SHL zaehler) = 0 THEN data = 0 ELSE data = 1 PULSE clock NEXT '#I2CPUTBYTE ENDE 'Hier #I2CGETACK data = 1 : DEACT data : clock = 1 : WAIT NOT data : clock = 0 '#I2CGETACK ENDE RETURN #LCD_INIT PAUSE 1 GOSUB I2CSTART I2Cschreiben = adresse_lcdport GOSUB I2CPUTBYTE GOSUB I2CGETACK I2Cschreiben = 0 'alles lschen GOSUB I2CPUTBYTE GOSUB I2CGETACK PAUSE 3 lcd_port = 0 'setze 8bit lcd_DB4 = 1 lcd_DB5 = 1 I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e PAUSE 3 GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e PAUSE 3 GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e PAUSE 3 'PRINT "8BitDM geklappt" PAUSE 5 lcd_port = 0 'setze 4-Bit-Datenmodus lcd_DB5 = 1 I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e PAUSE 3 'PRINT "4BitDM geklappt" PAUSE 5 lcd_port = 0 'setze 4-Bit-Daten Transfer lcd_DB5 = 1 I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e lcd_DB7 = 1 lcd_DB5 = 0 I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e PAUSE 3 'PRINT "4Bit DT geklappt" PAUSE 5 lcd_port = 0 'Display und Cursor anschalten I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e ' lcd_DB5 = 1 ''''nderung lcd_DB6 = 1 lcd_DB7 = 1 I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e PAUSE 3 'PRINT "DuC geklappt" PAUSE 5 lcd_port = 0 'CLS I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e lcd_DB4 = 1 I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e PAUSE 3 'PRINT "CLS geklappt" PAUSE 5 lcd_port = 0 'cursor immer nach rechts, nicht schieben I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e lcd_DB5 = 1 lcd_DB6 = 1 I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e PAUSE 3 'PRINT "Cpos geklappt" PAUSE 5 lcd_beleuchtung = flag_lcd_light I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB I2CSTOP 'PRINT "lcd_init geklappt" PAUSE 5 RETURN #LCD_writestart GOSUB I2CSTART I2Cschreiben = adresse_lcdport GOSUB I2CPUTBYTE GOSUB I2CGETACK RETURN #LCD_writechar 'in LCD_param den Buchstaben lcd_port = 0 lcd_RS = 1 lcd_beleuchtung = flag_lcd_light IF LCD_param AND 1 SHL 7 THEN lcd_DB7 = 1 IF LCD_param AND 1 SHL 6 THEN lcd_DB6 = 1 IF LCD_param AND 1 SHL 5 THEN lcd_DB5 = 1 IF LCD_param AND 1 SHL 4 THEN lcd_DB4 = 1 I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e lcd_port = 0 lcd_RS = 1 lcd_beleuchtung = flag_lcd_light IF LCD_param AND 1 SHL 3 THEN lcd_DB7 = 1 IF LCD_param AND 1 SHL 2 THEN lcd_DB6 = 1 IF LCD_param AND 1 SHL 1 THEN lcd_DB5 = 1 IF LCD_param AND 1 THEN lcd_DB4 = 1 I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e RETURN #LCD_writestop GOTO I2CSTOP RETURN #LCD_gotoline 'Zeile in LCD_param IF LCD_param = 2 THEN GOTO LCD_gotoline2 #LCD_gotoline1 GOSUB I2CSTART I2Cschreiben = adresse_lcdport GOSUB I2CPUTBYTE GOSUB I2CGETACK lcd_port = 0 lcd_beleuchtung = flag_lcd_light I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e lcd_port = 0 lcd_DB5 = 1 lcd_beleuchtung = flag_lcd_light I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e GOSUB I2CSTOP RETURN #LCD_gotoline2 GOSUB I2CSTART I2Cschreiben = adresse_lcdport GOSUB I2CPUTBYTE GOSUB I2CGETACK lcd_port = 0 lcd_DB7 = 1 lcd_DB6 = 1 lcd_beleuchtung = flag_lcd_light I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e lcd_port = 0 lcd_beleuchtung = flag_lcd_light I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e GOSUB I2CSTOP RETURN #LCD_CLS GOSUB I2CSTART I2Cschreiben = adresse_lcdport GOSUB I2CPUTBYTE GOSUB I2CGETACK lcd_port = 0 lcd_beleuchtung = flag_lcd_light I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e lcd_port = 0 lcd_DB4 = 1 lcd_beleuchtung = flag_lcd_light I2Cschreiben = lcd_port GOSUB I2CPUTBYTE GOSUB I2CGETACK GOSUB LCD_pulse_e GOSUB I2CSTOP RETURN > Hallo Tilli, > > ist eigentlich egal, solange es funktioniert :-) > > > > > Hallo > > > > Willst du das LCD mit 8 oder 4 Bit betreiben ? > > Ich habe eine 4 Bit Lösung in CCBasic. > > Ist nicht die schnellste aber das LCD ist etwa 8 Meter weg > > und es funktioniert. > > > > Tilli Passender Link: http://home.iae.nl/users/pouweha/lcd/lcd.shtml Meine Homepage: http://www.fernwirken.tk |
| Antwort schreiben |