Hallo!

Das Grafikdisplay hat eine Auflösung von 48x84 Pixel und ist mit einem Philips Kontroller PCD8544 ausgestattet. Es ist auch sehr verbreitet und unter 5 EUR bei Ebay zu haben. Ich habe den Anschluss an PIC noch vereinfacht so, das man jetzt bloß 3 pins am PIC braucht, und dazu noch 3 Taster angeschlossen. Ich finde das Display sehr gut und einfach zu steuern.

Anstatt des LM317 mit R1 und R2, kann man den 78L02 anwenden.

Wenn jemand die Taster nicht braucht, kann die D4,D5,R6,R7,R9,R10
weglassen (mittlere Skizze).

Wenn PIC mit max. 3,3V arbeitet, kann man das Display direkt anschliessen. In dem Fall bleiben in der Schaltung (ohne Taster) nur C1,C2 und R8 (untere Skizze).

Mit einfachen Hardware und ein paar zusätzlichen Zeilen im Code (SerSend) kann man die Pinzahl sogar auf 2 reduzieren, aber nur ohne Tasten (ganz unten). Im modifiziertem Unterprogramm wird ein Flag _Fdc benutzt, das am Anfang des Programms deklariert werden muss. Anstatt

#define _SCK PORTA,2 ; display serial clock
#define _SDT PORTA,1 ; display serial data
#define _DC PORTA,0 ; display 0-command,1-data
DTemp equ 0x20
DTemp1 equ 0x21

muss sein

#define _SCK PORTA,1 ; display serial clock
#define _SDT PORTA,0 ; display serial data
#define _Fdc Flags,0
DTemp EQU 0x20
DTemp1 EQU 0x21
Flags EQU 0x22

Das Display ist für Textaugabe nicht besonders geeignet, weil es keinen eigenen Zeichengenerator besitzt, der programmiert werden muss. Vielleicht braucht jemand sowas?

Für das Testprogram soll nach der Änderung der Konfiguration ein Quartz max. 16 MHz verwendet werden, da der Displaykontroller, laut Datenblatt nur bis 4 MHz geht.

MfG
Code:
                                                VCC   VCC
     VCC                                          +     +
      +  .-------.                                |     |
      |  |       | +3V                            |     |
      +--+ LM317 +--+----+--+-------+-------+-----------------+
         |       |  |    |  |       |       |     |     |     |
         '---+---' .-.   | .-.      -.     .-.   .-.   .-.   .-
             |     | |R1 | | |R3   | |R4   | |R5 | |R6 | |R7 | |R8
        R2   |     | |220| | |3k3  | |3k3  | |3k3| |20k| |20k| |10k
        300  |     '-'   | '-'     '-'     '-'   '-'   '-'   '-'
        ___  |      |    |  |       |       |   D1|     |     |
     +-|___|-+------+  . |  +----------------->|--------------|-->SCK
     |                   |  |       |       |   D2|     |     |
    ===                  |  |       +--------->|--+-----------|-->SDT      zum PIC
    GND                  |  |       |       |   D3|     |     |
         T1      R9 680  |  |       |       +->|--|-----+-----|-->D_C
        ---       ___    |  |       |       |     |     |     |
     +--o o--+---|___|---|--|-------|-------|-----+     |     |
     |       |           |  |       |       |           |     +--+
     |       V D4        |  |       |       |           |     |  |
     |   T2  -   R10 680 |  |       |       |           |  C2 | ---
     |  ---  |    ___    |  |       |       |           |  µ1 | ---
     +--o o--|-+-|___|---|--|-------|-------|-----------+     |  |
     |       | |         |  |       +-----+ | +-+-+-----------|--+
     |       | V D5      |  +-----------+ | | | | |           |  |
     |   T3  | -         +------------+ | | | | | |           | ===
     |  ---  | |                      | | | | | | |           | GND
     +--o o--+-+ D4,D5 Ge             | | | | | |--- C1 10µ   |
     |                                | | | | | |### +        |
    ===                               | | | | | | | +---------+
    GND                               | | | | | | | |
                                      V V V V V V V V
                            Display   1 2 3 4 5 6 7 8


     VCC=5V
      +  .-------.
      |  |       | +3V
      +--+ LM317 +--+----+--+-------+-------+-----------------+
         |       |  |    |  |       |       |                 |
         '---+---' .-.   | .-.      -.     .-.               .-
             |     | |R1 | | |R3   | |R4   | |R5             | |R8
        R2   |     | |220| | |3k3  | |3k3  | |3k3            | |10k
        300  |     '-'   | '-'     '-'     '-'               '-'
        ___  |      |    |  |       |       |   D1            |
     +-|___|-+------+  . |  +----------------->|--------------|-->SCK
     |                   |  |       |       |   D2            |
    ===                  |  |       +--------->|--------------|-->SDT      zum PIC
    GND                  |  |       |       |   D3            |
                         |  |       |       +->|--------------|-->D_C
                         |  |       |       |                 |
                         |  |       |       |                 |
                         |  |       |       |                 +--+
                         |  |       |       |                 |  |
                         |  |       |       |              C2 | ---
                         |  |       |       |              µ1 | ---
                         |  |       |       |                 |  |
                         |  |       +-----+ | +-+-+-----------|--+
                         |  +-----------+ | | | | |           |  |
                         +------------+ | | | | | |           | ===
                                      | | | | | | |           | GND
                                      | | | | | |--- C1 10µ   |
                                      | | | | | |### +        |
                                      | | | | | | | +---------+
                                      | | | | | | | |
                                      V V V V V V V V
                            Display   1 2 3 4 5 6 7 8


                   VCC=max.3,3V
                    +
                    |
                    o-----------------------+
                    |                       |
                    |                      .-.
                    |                      | |R8
                    |                      | |10k
                    |                      '-'
                    |                       |
                    | +---------------------|-->SCK
                    | |                     |
                    | | +-------------------|-->SDT      zum PIC
                    | | |                   |
                    | | | +-----------------|-->D_C
                    | | | |                 |
                    | | | |                 |
                    | | | |                 +--+
                    | | | |                 |  |
                    | | | |              C2 | ---
                    | | | |              µ1 | ---
                    | | | |                 |  |
                    | | | | +-+-+-----------|--+
                    | | | | | | |           |  |
                    | | | | | | |           | ===
                    | | | | | | |           | GND
                    | | | | | |--- C1 10µ   |
                    | | | | | |### +        |
                    | | | | | | | +---------+
                    | | | | | | | |
                    V V V V V V V V
          Display   1 2 3 4 5 6 7 8



                          .-----.        _
   vom   _SDT >----+------|J   Q|----> D/C   zum Display
                   |      |     |
   PIC   _SCK >----|------|>CK  |
                   | |\   |    _|
                   +-| >O-|K   Qo-
                     |/   '-----'


                           oder


                          .-----.        _
   vom   _SDT  -----------|D   Q|----> D/C   zum Display
                     |\   |    _|
   PIC   _SCK  ------| >O-|>T  Qo-
                     |/   '-----'


Der Inverter kann auch mit einem (SMD) Transistor realisiert werden.

                    Display Nokia 3310/3330

                            12345678
                 .----------------------------.
                 |         ||||||||||         |
                 |         ||||||||||         |
                 |         '--------'         |
                 |                            |
                 |                            |
                 |                            |
                 |                            |
                 |                            |
                 |                            |
                 |                            |
                 |                            |
                 |                            |
                 |                            |
                 |                            |
                 '----------------------------'



;	Test programm for graphic display from Handy NOKIA 3310 with 3-pin connection 
	LIST      P=16F630
	include "P16F630.inc"                   ; 4.000 MHz internal clock
	__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT
#define	_SCK	PORTA,2			; display serial clock
#define	_SDT	PORTA,1			; display serial data
#define	_DC	PORTA,0			; display 0-command,1-data
DTemp	      equ	0x20
DTemp1	equ	0x21
		ORG	0x0000
Main		call	Init
		call	DLine1
		call	§SP
		call	§SP
		call	§SP
		call	§N
		call	§O
		call	§K
		call	§I
		call	§A
		call	§SP
		call	§3
		call	§3
		call	§1
		call	§0
		call	§sl
		call	§3
		call	§3
		call	§3
		call	§0
		call	§SP
		call	§SP
		call	§BL
		call	§BL
		call	§BL
		call	§G
		call	§R
		call	§A
		call	§P
		call	§H
		call	§I
		call	§C
		call	§SP
		call	§D
		call	§I
		call	§S
		call	§P
		call	§L
		call	§A
		call	§Y
		call	§SP
		call	§T
		call	§E
		call	§S
		call	§T
		call	§BL
		call	§BL
		call	§BL
		call	§SP
		call	§SP
		call	§SP
		call	§SP
		call	§SP
		call	§0
		call	§1
		call	§2
		call	§3
		call	§4
		call	§5
		call	§6
		call	§7
		call	§8
		call	§9
		call	§.
		call	§sl
		call	§SP
		call	§SP
		call	§SP
		call	§SP
		call	§SP
		call	§SP
		call	§SP
		call	§A
		call	§B
		call	§C
		call	§D
		call	§E
		call	§F
		call	§G
		call	§H
		call	§I
		call	§J
		call	§K
		call	§L
		call	§M
		call	§N
		call	§O
		call	§SP
		call	§SP
		call	§BL
		call	§SP
		call	§SP
		call	§SP
		call	§P
		call	§Q
		call	§R
		call	§S
		call	§T
		call	§U
		call	§V
		call	§W
		call	§X
		call	§Y
		call	§Z
		call	§SP
		call	§m
		call	§u
		call	§s
		call	§SP
		call	§SP
		call	§SP
		call	§SP
		call	§SP
		call	§ar
		call	§SP
		call	§su
		call	§SP
		call	§sd
		call	§SP
		call	§os
		call	§SP
		call	§ct
		call	§SP
		call	§sk
		call	§SP
		call	§SP
		call	§SP
		call	§SP
		sleep
DLine1	movlw	0x40
		call	COut
		movlw	0x80
		call	COut
		return
COut		bcf	_DC
		movwf	Dtemp1
		goto	LCDOut
DOut		bsf	_DC
		movwf	Dtemp1
LCDOut	movlw	8
		movwf DTemp
SerSend	bcf	_SDT
		btfsc	Dtemp1,7
		bsf 	_SDT
		rlf	Dtemp1,1
		bsf	_SCK
		bcf	_SCK
		decfsz	DTemp,1
		goto 	SerSend
		return
Init		movlw	7			; set comparator off
		movwf	CMCON			; and RA0-3 to digital I/O
		bsf 	STATUS, RP0		; bank1
		bcf	OPTION_REG,7	; enable pull-ups
		clrf	TRISA			; set RA0-5 as outputs
		clrf	TRISC			; set RC0-5 as outputs
		call	0x3FF			; call calibration value
		movwf OSCCAL		; calibrate internal RC oscillator
		bcf 	STATUS, RP0		; bank 0
		clrf	PORTA
		clrf	PORTC
		movlw	0x20			; chip active, horizontal adressing, basic instruction set
		call	COut
		movlw	0x0C			; normal mode
		call	COut
		return
§0		call	§BL
		movlw	0x3E
		call 	DOut
		movlw	0x22
		call	DOut
		movlw 0x3E
		call	DOut
		return
§1		call	§BL
		movlw 4
		call	DOut
		movlw 0x3E
		call 	DOut
		call 	§BL
		return
§2		call	§BL
		movlw	0x3A
		call	DOut
		movlw 0x2A
		call	DOut
		movlw x2E
		call 	DOut
		return
§3		call	§BL
		movlw	0x2A
		call	DOut
		movlw	0x2A
		call	DOut
		movlw	0x3E
		call	DOut
		return
§4		call	§BL
		movlw	0x0E
		call	DOut
		movlw	8
		call	DOut
		movlw	0x3E
		call	DOut
		return
§5		call	§BL
		movlw	0x2E
		call	DOut
		movlw	0x2A
		call	DOut
		movlw	0x3A
		call	DOut
		return
§6		call	§BL
		movlw	0x3E
		call	DOut
		movlw	0x2A
		call	DOut
		movlw	0x3A
		call	DOut
		return
§7		call	§BL
		movlw	2
		call	DOut
		movlw	0x3A
		call	DOut
		movlw	0x6
		call	DOut
		return
§8		call	§BL
		movlw	0x3E
		call	DOut
		movlw	0x2A
		call	DOut
		movlw	0x3E
		call	DOut
		return
§9		call	§BL
		movlw	0x2E
		call	DOut
		movlw	0x2A
		call	DOut
		movlw	0x3E
		call	DOut
		return
§A		call	§BL
		movlw 0x3C
		call 	DOut
		movlw	0x0A
		call 	DOut
		movlw 0x3C
		call 	DOut
		return
§B		call	§BL
		movlw 0x3E
		call 	DOut
		movlw	0x2A
		call 	DOut
		movlw 0x14
		call	DOut
		return
§C		call	§BL
		movlw 0x1C
		call 	DOut
		movlw	0x22
		call	DOut
		movlw	0x22
		call 	DOut
		return
§D		call	§BL
		movlw	0x3E
		call	DOut
		movlw	0x22
		call	DOut
		movlw	0x1C
		call	DOut
		return
§E		call	§BL
		movlw	0x3E
		call	DOut
		movlw	0x2A
		call	DOut
		movlw	0x2A
		call	DOut
		return
§F		call	§BL
		movlw	0x3E
		call	DOut
		movlw	0x0A
		call	DOut
		movlw	0x0A
		call	DOut
		return
§G		call	§BL
		movlw	0x1C
		call	DOut
		movlw	0x22
		call	DOut
		movlw	0x2A
		call	DOut
		movlw	0x1A
		call	DOut
		return
§H		call	§BL
		movlw	0x3E
		call	DOut
		movlw	8
		call	DOut
		movlw	0x3E
		call	DOut
		return
§I		call	§BL
		movlw	0x3E
		call	DOut
		return
§J		call	§BL
		movlw	0x10
		call	DOut
		movlw	0x20
		call	DOut
		movlw	0x1E
		call	DOut
		return
§K		call	§BL
		movlw	0x3E
		call 	DOut
		movlw	0x14
		call	DOut
		movlw 0x22
		call 	DOut
		return
§L		call	§BL
		movlw 0x3E
		call 	DOut
		movlw 0x20
		call 	DOut
		movlw	0x20
		call 	DOut
		return
§M		call	§BL
		movlw 0x3E
		call 	DOut
		movlw	4
		call 	DOut
		movlw	8
		call 	DOut
		movlw	4
		call 	DOut
		movlw	0x3E
		call	DOut
		return
§N		call	§BL
		movlw	0x3E
		call	DOut
		movlw	4
		call	DOut
		movlw	8
		call	DOut
		movlw	0x10
		call	DOut
		movlw	0x3E
		call	DOut
		return
§O		call	§BL
		movlw	0x1C
		call	DOut
		movlw	0x22
		call	DOut
		movlw	0x1C
		call	DOut
		return
§P		call	§BL
		movlw	0x3E
		call	DOut
		movlw	0x0A
		call	DOut
		movlw	4
		call	DOut
		return
§Q		call	§BL
		movlw	0x1C
		call	DOut
		movlw	0x22
		call	DOut
		movlw	0x12
		call	DOut
		movlw	0x2C
		call	DOut
		return
§R		call	§BL
		movlw	0x3E
		call	DOut
		movlw	0x1A
		call	DOut
		movlw	0x24
		call	DOut
		return
§S		call	§BL
		movlw	0x24
		call	DOut
		movlw	0x2A
		call	DOut
		movlw	0x12
		call	DOut
		return
§T		call	§BL
		movlw	2
		call	DOut
		movlw	0x3E
		call	DOut
		movlw	2
		call	DOut
		return
§U		call	§BL
		movlw 0x3E
		call 	DOut
		movlw	0x20
		call 	DOut
		movlw	0x3E
		call 	DOut
		return
§V		call	§BL
		movlw 0x1E
		call 	DOut
		movlw	0x20
		call 	DOut
		movlw 0x1E
		call	DOut
		return
§W		call	§BL
		movlw	0x3E
		call	DOut
		movlw	0x10
		call  DOut
		movlw 8
		call 	DOut
		movlw 0x10
		call	DOut
		movlw	0x3E
		call	DOut
		return
§X		call	§BL
		movlw	0x36
		call	DOut
		movlw	8
		call	DOut
		movlw	0x36
		call	DOut
		return
§Y		call	§BL
		movlw	6
		call	DOut
		movlw	0x38
		call	DOut
		movlw	6
		call	DOut
		return
§Z		call	§BL
		movlw	0x32
		call	DOut
		movlw	0x2A
		call	DOut
		movlw	0x26
		call	DOut
		return		
§m		call	§BL
		movlw	0x3C
		call	DOut
		movlw	4
		call	DOut
		movlw	8
		call	DOut
		movlw	4
		call	DOut
		movlw	0x38
		call	DOut
		return
§u		call	§BL
		movlw	0x7C
		call	DOut
		movlw	0x10
		call	DOut
		movlw	0x20
		call	DOut
		movlw	0x1C
		call	DOut
		call	§BL
		return
§s		call	§BL
		movlw	0x20
		call	DOut
		movlw	0x28
		call	DOut
		movlw	0x14
		call	DOut
		call	§BL
		call	§BL
		return
§.		call	§BL
		movlw	0x20
		call	DOut
		return
§sl		call	§BL		; /
		movlw	0x20
		call	DOut
		movlw	0x10
		call	DOut
		movlw	8
		call	DOut
		movlw	4
		call	DOut
		movlw	2
		call	DOut
		return
§ar		call	§BL
		movlw	0x3E
		call	DOut
		movlw	0x1C
		call	DOut
		movlw	8
		call	DOut
		return
§ct		call	§BL		; continous	
		movlw	0x3E
		call	DOut
		movlw	0x20
		call	DOut
		movlw	0x3E
		call	DOut
		movlw	0x20
		call	DOut
		movlw	0x3E
		call	DOut
		return
§os		call	§BL		; one shot	
		movlw	0x20
		call	DOut
		movlw	0x20
		call	DOut
		movlw	0x3E
		call	DOut
		movlw	0x20
		call	DOut
		movlw	0x20
		call	DOut
		return
§su		call	§BL		; slope up
		movlw	0x20
		call	DOut
		movlw	0x20
		call	DOut
		movlw	0x3E
		call	DOut
		movlw	2
		call	DOut
		movlw	2
		call	DOut
		return
§sd		call	§BL		; slope down
		movlw	2
		call	DOut
		movlw	2
		call	DOut
		movlw	0x3E
		call	DOut
		movlw	0x20
		call	DOut
		movlw	0x20
		call	DOut
		return
§sk		call	§BL
		movlw	0x3E
		call	DOut
		movlw	0x2A
		call	DOut
		movlw	0x3E
		call	DOut
		movlw	0x2A
		call	DOut
		movlw	0x3E
		call	DOut
		return
§SP		call	§BL
		call	§BL
		call	§BL
		call	§BL
		return
§BL		movlw	0
		call	DOut
		return
§FL		movlw	0xFF
		call	DOut
		return
		end


Modifizierte Ausgabe für 2-pin Anschluß: 

COut         bcf   _Fdc
                movwf   Dtemp1
                goto   LCDOut
DOut         bsf   _Fdc
                movwf   Dtemp1
LCDOut     movlw   8
                movwf DTemp 
SerSend	   bcf	_SDT
		btfsc	_Fdc
		bsf	_SDT
		bcf	_SCK
		bcf	_SDT
		btfsc	DTemp1,7
		bsf 	_SDT
		bsf	_SCK
		rlf	DTemp1,1
		decfsz	DTemp,1
		goto 	SerSend
		return