Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

LCD Dog-Grafik Display 160x104 hat jemand Zeichensatz ? Kategorie: Programmierung Basic (von Ernst H. - 21.11.2010 17:00)
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board, Pro-Bot128
LCD Dog-Grafik Display 160x104 hat jemand Zeichensatz ?
kostet ca 30 Euro offensichtlich ohne einen Zeichensatz

unten das beigestellte Demo Programm von EPT - aber nur mit wenigen Zeichen

der Zeichensatzstick kostet 99 Euro - ich brauche aber nur einen Standartzeichensatz ?




'*******************************************************************************
'*                                                                             *
'*         This programm for EA DOGM128-6 / ST7565                             *
'*         1. send an initialisation code                                      *
'*         2. clears the display                                               *
'*         3. writes "HELLO WORLD" to the first line                           *
'*                                                                             *
'*                                                                             *
'*         (c) by EPT Systems GmbH 2009                                        *
'*                                                                             *
'*******************************************************************************

'SI    = Port B3 = Port Bit 19     Datapin (36) at Display
'CLK   = Port B4 = Port Bit 20     Clockpin (37) at Display
'A0    = Port B5 = Port Bit 21     Initialisationpin (38) at Display
'CS    = Port B7 = Port Bit 23     Chipselectpin (40) at Display
'Reset = Port B6 = Port Bit 22     Resetpin (39) at Display

'Example for 3,3V Single Supply

#ifdef MEGA32
#define PORT 2                      'Select Port C
#endif

#ifdef MEGA128
#define PORT 5
#endif

Dim Daten(8) As Integer             'Data Array for converting byte to bit


'------------------------------------------------------------------------------
' Main Program
'
Sub main()

    Port_DataDir(PORT,&HFF)         'Input/Output direction: 0=in, 1=out

    ResetHardware()                 'Hardwarereset

    Init()                          'Display initialisation

    Loeschen()                      'Display clear

    Zeichensatz()                   'HELLO WORLD output

End Sub

Sub ResetHardware()

    Port_WriteBit(22,0)             'Reset (Port B6) to low
    Port_WriteBit(22,1)             'Reset (Port B6) to high

End Sub

Sub A0_High()

    Port_WriteBit(21,1)             'A0 (Port B5) to high

End Sub

Sub A0_Low()

    Port_WriteBit(21,0)             'A0 (Port B5) to low

End Sub

Sub CS_Low()

    Port_WriteBit(23,0)             'CS (Port B7) to low (Display get data)

End Sub

Sub CS_High()

    Port_WriteBit(23,1)             'CS (Port B7) to high (Display don't get data)

End Sub

Sub Daten_schreiben()               'Put Data to SI (Port B3)
    Dim i As Integer

    CS_Low()                        'Display get data

    For i = 7 To 0 Step -1          'Start with the highest bit

        Port_WriteBit(20,0)         'CLK (Port B4) to Low

        Port_WriteBit(19,Daten(i))  'Send Data to SI (Port B3)

        Port_WriteBit(20,1)         'CLK (Port B4) to high = Data accept

    Next

    CS_High()                       'Display don't get data

End Sub

Sub Daten_zerlegen(Daten_Dec As Integer) 'Byte convert to bits

    Dim i As Integer

    For i =0 To 7                   'Array clear
        Daten(i)=0
    Next


    If Daten_Dec>=128 Then
        Daten(7) =1
        Daten_Dec=Daten_Dec-128
    End If
    If Daten_Dec>=64 Then
        Daten(6) =1
        Daten_Dec=Daten_Dec-64
    End If
    If Daten_Dec>=32 Then
        Daten(5) =1
        Daten_Dec=Daten_Dec-32
    End If
    If Daten_Dec>=16 Then
        Daten(4) =1
        Daten_Dec=Daten_Dec-16
    End If
    If Daten_Dec>=8 Then
        Daten(3) =1
        Daten_Dec=Daten_Dec-8
    End If
    If Daten_Dec>=4 Then
        Daten(2) =1
        Daten_Dec=Daten_Dec-4
    End If
    If Daten_Dec>=2 Then
        Daten(1) =1
        Daten_Dec=Daten_Dec-2
    End If
    If Daten_Dec>0 Then
        Daten(0) =1
        Daten_Dec=Daten_Dec-1
    End If

    Daten_schreiben()               'Send data to display

End Sub

Sub Init()                          'Send initialisation data to display

    CS_Low()
    A0_Low()                        'Initialization

    Daten_zerlegen(64)              'Display Start Line Set
    Daten_zerlegen(161)             'ADC reverse(Display Ram Adress) 160=reverse
    Daten_zerlegen(192)             'Common Output Mode Select
    Daten_zerlegen(166)             'Display normal/reverse      165=reverse
    Daten_zerlegen(162)             'Set Bias 1/9
    Daten_zerlegen(47)              'Power Control Set
    Daten_zerlegen(248)             'Set Booster to 4x
    Daten_zerlegen(0)               'Booster value
    Daten_zerlegen(39)              'V0 Voltage Regulator Set
    Daten_zerlegen(129)             'Contrast set
    Daten_zerlegen(22)              'Contrast value
    Daten_zerlegen(173)             'Cursor on/off
    Daten_zerlegen(1)               'Flashing mode

    A0_High()                       'End Display initialisation
    CS_High()                       'To reset the internal register

End Sub

Sub Displayseite(Zeile As Byte)

    A0_Low()                        'Display initialisation
    Daten_zerlegen(176+ Zeile)      'Select display page
    A0_High()                       'End Display initialisation

End Sub

Sub Reset()

    A0_Low()                        'Display initialisation
    Daten_zerlegen(226)             'Internal display reset
    A0_High()                       'End Display initialisation

End Sub

Sub Displaylinie(Linie As Byte)

    A0_Low()                        'Display initialisation
    Daten_zerlegen(64+ Linie)       'Select display start line
    A0_High()                       'End Display initialisation

End Sub

Sub Displayspalte(Spalte As Byte,Spalte1 As Byte)

    A0_Low()                        'Display initialisation
    Daten_zerlegen(16+Spalte1)      'Select display column highbyte
    Daten_zerlegen(Spalte)          'Select display column lowbyte
    A0_High()                       'End Display initialisation

End Sub

Sub Loeschen()                      'Clear display

    Dim i As Integer
    Dim Pixel As Byte
    Dim Zeile As Byte

    Zeile =0                        'Write in Page 0
    Do
        Displayseite(Zeile)
        Pixel = 0                   'No Pixel set

            For i = 0 To 127        'Write Column 0 to 127 with value 0

                Daten_zerlegen(Pixel)

            Next

        Zeile ++
    Loop While Zeile < 8            'Write in page 0-7

    Displayseite(0)
    Displayspalte(0,0)
    'Displaylinie (0)

End Sub

Sub Zeichensatz()

    Dim Daten(88) As Byte
    Dim Schleife As Integer

    Schleife = 1
    Display_Aus()                   'Display off

    Daten(1)=000
    Daten(2)=127
    Daten(3)=008
    Daten(4)=008                    'H
    Daten(5)=008
    Daten(6)=127
    Daten(7)=000
    Daten(8)=000

    Daten(9)=000
    Daten(10)=127
    Daten(11)=073
    Daten(12)=073                   'E
    Daten(13)=073
    Daten(14)=073
    Daten(15)=000
    Daten(16)=000

    Daten(17)=000
    Daten(18)=127
    Daten(19)=064
    Daten(20)=064                   'L
    Daten(21)=064
    Daten(22)=064
    Daten(23)=000
    Daten(24)=000

    Daten(25)=000
    Daten(26)=127
    Daten(27)=064
    Daten(28)=064                   'L
    Daten(29)=064
    Daten(30)=064
    Daten(31)=000
    Daten(32)=000

    Daten(33)=000
    Daten(34)=062
    Daten(35)=065
    Daten(36)=065                   'O
    Daten(37)=065
    Daten(38)=062
    Daten(39)=000
    Daten(40)=000

    Daten(41)=000
    Daten(42)=000
    Daten(43)=000
    Daten(44)=000                   'Space
    Daten(45)=000
    Daten(46)=000
    Daten(47)=000
    Daten(48)=000

    Daten(49)=000
    Daten(50)=063
    Daten(51)=064
    Daten(52)=048                   'W
    Daten(53)=064
    Daten(54)=063
    Daten(55)=000
    Daten(56)=000

    Daten(57)=000
    Daten(58)=062
    Daten(59)=065
    Daten(60)=065                   'O
    Daten(61)=065
    Daten(62)=062
    Daten(63)=000
    Daten(64)=000

    Daten(65)=000
    Daten(66)=127
    Daten(67)=009
    Daten(68)=009                   'R
    Daten(69)=009
    Daten(70)=118
    Daten(71)=000
    Daten(72)=000

    Daten(73)=000
    Daten(74)=127
    Daten(75)=064
    Daten(76)=064                   'L
    Daten(77)=064
    Daten(78)=064
    Daten(79)=000
    Daten(80)=000

    Daten(81)=000
    Daten(82)=127
    Daten(83)=065
    Daten(84)=065                   'D
    Daten(85)=034
    Daten(86)=028
    Daten(87)=000
    Daten(88)=000

    Daten(89)=000
    Daten(90)=000
    Daten(91)=000
    Daten(92)=000                   'Space
    Daten(93)=000
    Daten(94)=000
    Daten(95)=000
    Daten(96)=000

    For Schleife = 1 To 96          'Put fonts to display
        Daten_zerlegen(Daten(Schleife))
    Next

    Display_Ein()                   'Display on

    'Displayseite(0)
    'Displayspalte(0,0)
    Displaylinie (0)

End Sub

Sub Display_Ein()

    A0_Low()                        'Display initialisation
    Daten_zerlegen(175)             'Display on
    A0_High()                       'End Display initialisation

End Sub

Sub Display_Aus()

    A0_Low()                        'Display initialisation
    Daten_zerlegen(174)             'Display off
    A0_High()                       'End Display initialisation

End Sub


    Antwort schreiben


Antworten:

Re: LCD Dog-Grafik Display 160x104 hat jemand Zeichensatz ? (von jo - 22.11.2010 13:36)
    Re: LCD Dog-Grafik Display 160x104 hat jemand Zeichensatz ? (von jo - 22.11.2010 15:57)
        Re: LCD Dog-Grafik Display 160x104 hat jemand Zeichensatz ? (von Ernst H. - 22.11.2010 17:06)
            Re: LCD Dog-Grafik Display 160x104 hat jemand Zeichensatz ? (von jo - 22.11.2010 17:59)
                Re: LCD Dog-Grafik Display 160x104 hat jemand Zeichensatz ? (von Ernst H. - 22.11.2010 19:56)