![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo! Die Vier-Zeilen-Displays von Electronic Assembly in der DIP-Ausführung sind mit den Abmessungen von 68 x 27 beziehungsweise 75 x 27 bei 11 mm Höhe sehr kompakt. Vergleichbare Displays sind meist größer. Die Betriebsspannung der Displays beträgt neuerdings 3 statt wie bisher 5 Volt. Da ich zur Ansteuerung der Displays eine Open-Midi beziehungsweise Open-Macro einsetze, hätte ich nun ein Problem, wenn Dietmar für diese OM seit einigen Tagen nicht auch eine 3-Volt-Variante (siehe Download) bereitstellt. Die genannten Displays arbeiten mit dem Kontroller SSD 1803, der bei der Initialisierung ein exaktes Timing voraussetzt. Erst nach einigen Versuchen brachte ich diese Displays zum Laufen. Statt der Ansteuerung mit einer Midi oder Macro ließe sich auch eine Mini oder analog ein PCF 8574 einsetzen. Gruß Norbert Hier der Code: '--------------------------------------------------------------------------- include "omid.def" '--------------------------------------------------------------------------- define Dat Byte 'Hilfsvariable, sie kann mit psha und pula ersetzt werden define LichtOr Byte 'schaltet Display-LED define En 2 define R_S Port[9] define R_W Port[10] define Enable Port[11] define Licht Port[12] define D4 Port[13] define D5 Port[14] define D6 Port[15] define D7 Port[16] define BPort Byteport[2] '--------------------------------------------------------------------------- ' Display-Routinen ' 16 15 14 13 12 11 10 9 Port ' DB7 DB6 DB5 DB4 Licht En RW RS '(Displays mit anderer Reihenfolge der Anschlüsse können angepasst werden) '--------------------------------------------------------------------------- #Display_init '4 Zeilen Pause 20 'mit 8 Bit auf den 4-Bit-Modus umschalten BPort=&b00110000 ' 30 BPort=&b00110000 ' 30 BPort=&b00110100 ' 34 BPort=&b00110000 ' 30 BPort=&b00110100 ' 34 BPort=&b00110000 ' 30 BPort=&b00110100 ' 34 BPort=&b00110000 ' 30 BPort=&b00110100 ' 34 BPort=&b00110000 ' 30 BPort=&b00100100 ' 24 BPort=&b00100000 ' 20 LCD_Befehl &b00100100 ' 4-Bit-Modus, RE-Bit ein LCD_Befehl &b00001001 ' 4-Zeilen-Modus, 5x7 LCD_Befehl &b00100000 ' 4-Bit-Modus, RE-Bit aus LCD_Befehl &b00000001 ' löschen und Cursor home LCD_Befehl &b00001000 ' Display off LCD_Befehl &b00000110 ' entry mode, increment, disable Display-Shift LCD_Befehl &b00000011 ' Cursor home LCD_Befehl &b00001100 ' Display on, Cursor off, blink off return 'Sollte es Probleme mit dem Init geben, kann man Pausen (2) einlegen, 'war bisher nicht notwendig '--------------------------------------------------------------------------- PROCEDURE LCD_Zeichen INLASM ! jsr FwPop 'Pop A und sichern in Dat ! sta Dat ! and #&b11110000 'Low-Nipple löschen ! ora #&b00000001 'Im Low-Nipple RS auf high ! ora LichtOr ! sta portB ! jsr LCD_Pulsen ! lda Dat 'Dat laden ! nsa 'L-Nipple auf Platz H-Nibble schieben ! and #&b11110000 'Low-Nipple löschen ! ora #&b00000001 'Im Low-Nipple RS auf high ! ora LichtOr ! sta portB ! jsr LCD_Pulsen ! clc ! rts END PROCEDURE '------------------------------------------------------------------- PROCEDURE LCD_Befehl INLASM ! jsr FwPop 'Pop A und sichern in Dat ! sta Dat ! and #&b11110000 'Low-Nipple löschen ! ora LichtOr ! sta portB ! jsr LCD_Pulsen ! lda Dat 'Dat laden ! nsa 'L-Nipple auf Platz H-Nibble schieben ! and #&b11110000 'High-Nipple löschen ! ora LichtOr ! sta portB ! jsr LCD_Pulsen ! clc ! rts END PROCEDURE '--------------------------------------------------------------------------- PROCEDURE LCD_Pause INLASM ! ldx #35 #lcd_string_vrz0 ! dbnzx lcd_string_vrz0 ! clc ! rts end proc PROCEDURE LCD_Pulsen INLASM ! bset En,PTB ! jsr LCD_Pause ! bclr En,PTB ! clc ! rts end proc '--------------------------------------------------------------------- INCLUDE "om_fw.pro '--------------------------------------------------------------------- |
Antwort schreiben |