Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


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 

 DIP-Display mit SSD1803 Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Norbert - 31.08.2015 16:31)
Norbert nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Maxi
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

Bisherige Antworten: