-         
Ergebnis 1 bis 5 von 5

Thema: Testprogramm für LPH2673-1

  1. #1
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    68
    Beiträge
    11.078

    Testprogramm für LPH2673-1

    Anzeige

    Hallo!

    Ich habe mir auch ein paar Stück von diesen Displays by Pollin gekauft und endlich dazu gekommen es vom PIC´s anzusteuern.

    Ich habe die Lösung von Microchip (AN563) vereinfacht, so dass für ein Pin des Displays nur ein Pin vom PIC benötigt wird. Die drei Spannungen Vcc, Vcc/2 und Gnd habe ich durch umschalten von TRIS Registers erzeugt. Wenn ein Pin als Ausgang (0 in TRIS) geschaltet wird, wird der Pegel vom Port ausgegeben (Vcc für 1 oder Gnd für 0). Wenn ein Pin als Eingang (1 in TRIS) geschaltet wird, wird er keine Spannung ausgeben und dann wird am Display die Vcc/2 durch Resistor vom Spannungsteiler zugeführt.

    Die Anschlussbuchse habe ich aus einer Hälfte des IC Sockels (Reichelt GS-KR 42, 0,28EUR) gemacht. Zuerst habe ich alle Kontakte herausgenommen und die Kunstofftrennungen mit einer Eisensäge entfernt. Danach habe ich die alle Kontakte außer den ausersten wieder eingesteckt und anschliessend zum Einstecken des Displays benötigter Abstand der Kontakte mit einem Schraubenzieher gemacht. Ich weißs, dass es eleganter geht.

    Die Verzögerungsschleife muß für bestimmte Taktfrequenz angepaßt werden, so das die Impulse am Display eine Frequenz um 50-60 Hz haben. In einem "normalem" Programm wird die Steuerung des Displays mit Timer und seinen Interrupts gesteuert, da das Umladen und Umschalten der Register selber nicht lange dauert, muß aber feste Frequenz haben.

    Es hat sich gezeigt, dass es am besten bei einer Vcc=ca. 2,7V funktioniert und Rs kann für besten Verhältnis zwischen den Segments die an und aus sind angepasst werden.

    Beim Ausführen des Testprogramms sollten auf dem Display die Ziffern 12 34 und 56 sichtbar sein.

    Ich habe es mit dem PIC18F252 mit 10MHz Quarz (bei HSPLL=40MHz) ausprobiert, aber im Code sind nur Befehle, die alle PICs "verstehen" benutzt worden. Es muss für PICs aus der Familie 16FXXX lediglich eine geeignete "__CONFIG" eingesetzt werden und die "Del" und "Init" Unterprogramme angepasst werden (entsprechend der Taktfrequenz und Austattung des PICs). Ausserdem müssen die Bankumschaltungen fürs Beschreiben den TRIS Registern aktiviert werden. Später habe ich es im Frequenzzähler mit PIC16F870 angewendet: https://www.roboternetz.de/community...m-Nachbauen%29 .

    Viel Spass mit dem Display !

    MfG
    Code:
                                                   VCC
                                                    +
                                                    |  ___
                                                10k +-|___|-+
                                                            |
                                                       ___  |
                                                10k +-|___|-+
                                                    |       |
                                                    |  \]   |
                                               100µ +--|]---+
                                                    |  /]+  |
                                                   ===     .-.
                                                   GND  Rs*| |
                                                        6k8| |
                                                           '-'
      19x100k                                               |
      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
      |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
     .-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-.
     | || || || || || || || || || || || || || || || || || || |
     | || || || || || || || || || || || || || || || || || || |
     '-''-''-''-''-''-''-''-''-''-''-''-''-''-''-''-''-''-''-'
      |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
      V  V  V  V  V  V  V  V  V  V  V  V  V  V  V  V  V  V  V
    
                    z  u  m     D i s p l a y
     
     
    
        Ziffer   1    2         3    4      5    6
              --------------------------------------------	       a
             |  --   --        --   --     --   --        |       ---
             | |  | |  | PROG |  | |  | o |  | |  | STOP  |     f| g |b
             |  --   --        --   --     --   --        |       ---
             | |  | |  | DATE |  | |  | o |  | |  | START |     e|   |c
             |  --   --        --   --     --   --        |       ---
              --------------------------------------------	       d
             Pin1| | | | | | | | | | | | | | | | | | |Pin19
    
    
    
          --------------------------------------------------------------------------
          |Seg1|Sg2|Sg3|Sg4|Sg5|Seg6|Sg7|Sg8|Sg9|S10|Sg11|Sg12|Sg13|Sg14|Sg15|Seg16|
     -------------------------------------------------------------------------------
     |Com3|STOP| a1| b1| a2| b2|DATE| a3| b3| a4| b4| dp | a5 | b5 | a6 | b6 |START|Pin19
     -------------------------------------------------------------------------------
     |Com2| -  | f1| g1| f2| g2| c2 | f3| g3| f4| g4| c4 | f5 | g5 | f6 | g6 | c6  |Pin18
     -------------------------------------------------------------------------------
     |Com1|PROG| e1| d1| c1| e2| d2 | e3| d3| c3| e4| d4 | e5 | d5 | c5 | e6 | d6  |Pin17
     -------------------------------------------------------------------------------
           Pin1 P2 Pin3 Pin4 P5 Pin6 Pin7 P8 P9  P10 P11  Pin12 P13 Pin14 P15 Pin16
          
    
    ;	Testprogramm für Display LPH2673-1
    	LIST      P=18F252
    	include "P18F252.inc"
    
    	CONFIG OSCS=OFF,OSC=HSPLL, PWRT=ON, BOR=OFF, WDT=OFF, CCP2MUX=OFF, STVR=OFF, LVP=OFF, DEBUG=OFF
    	CONFIG CP0=OFF,CP1=OFF,CP2=OFF,CP3=OFF,CPB=OFF,CPD=OFF,WRT0=OFF,WRT1=OFF,WRT2=OFF,WRT3=OFF
    	CONFIG WRTB=OFF,WRTC=OFF,WRTD=OFF,EBTR0=OFF,EBTR1=OFF,EBTR2=OFF,EBTR3=OFF,EBTRB=OFF 
    
    #define	PROG	TB1,7			; Segmentszuweisung	
    #define	DATE	TB3,2
    #define	STOP	TB3,7
    #define	START	TC3,0
    #define	dp	TC3,5			; Doppelpunkt
    
    #define	a1	TB3,6
    #define	b1	TB3,5
    #define	c1	TB1,4
    #define	d1	TB1,5
    #define	e1	TB1,6
    #define	f1	TB2,6
    #define	g1	TB2,5
    
    #define	a2	TB3,4
    #define	b2	TB3,3
    #define	c2	TB2,2
    #define	d2	TB1,2
    #define	e2	TB1,3
    #define	f2	TB2,4
    #define	g2	TB2,3
    
    #define	a3	TB3,1
    #define	b3	TB3,0
    #define	c3	TC1,7
    #define	d3	TB1,0
    #define	e3	TB1,1
    #define	f3	TB2,1
    #define	g3	TB2,0
    
    #define	a4	TC3,7
    #define	b4	TC3,6
    #define	c4	TC2,5
    #define	d4	TC1,5
    #define	e4	TC1,6
    #define	f4	TC2,7
    #define	g4	TC2,6
    
    #define	a5	TC3,4
    #define	b5	TC3,3
    #define	c5	TC1,2
    #define	d5	TC1,3
    #define	e5	TC1,4
    #define	f5	TC2,4
    #define	g5	TC2,3
    
    #define	a6	TC3,2
    #define	b6	TC3,1
    #define	c6	TC2,0
    #define	d6	TC1,0
    #define	e6	TC1,1
    #define	f6	TC2,2
    #define	g6	TC2,1
    
    ;Com1		PORTA,2			; Portszuweisung
    ;Com2		PORTA,1
    ;Com3		PORTA,0
    ;Seg1		PORTB,7
    ;Seg2		PORTB,6
    ;Seg3		PORTB,5
    ;Seg4		PORTB,4
    ;Seg5		PORTB,3
    ;Seg6		PORTB,2
    ;Seg7		PORTB,1
    ;Seg8		PORTB,0
    ;Seg9		PORTC,7
    ;Seg10      	PORTC,6
    ;Seg11      	PORTC,5
    ;Seg12      	PORTC,4
    ;Seg13      	PORTC,3
    ;Seg14      	PORTC,2
    ;Seg15      	PORTC,1
    ;Seg16      	PORTC,0
    
    Tmp		EQU	0x20			; temporary (temp) 
    Tmp1		EQU	0x21
    PA		EQU	0x22			; temp für PORTA
    PB		EQU	0x23			; temp für PORTB
    PC		EQU	0x24			; temp für PORTC
    TA1		EQU	0x25			; temp für TRISA bei Com1
    TA2		EQU	0x26			; temp für TRISA bei Com2
    TA3		EQU	0x27			; temp für TRISA bei Com3
    TB1		EQU	0x28			; temp für TRISB bei Com1
    TB2		EQU	0x29			; temp für TRISB bei Com2
    TB3		EQU	0x2A			; temp für TRISB bei Com3
    TC1		EQU	0x2B			; temp für TRISC bei Com1
    TC2		EQU	0x2C			; temp für TRISC bei Com2
    TC3		EQU	0x2D			; temp für TRISC bei Com3 
    
    		ORG 	0
    		call	Init
    
    DispSet         movlw	7
    		movwf	PA
    		clrf	PB
    		clrf	PC
    		movlw	3	
    		movwf	TA1
    		movlw	5
    		movwf	TA2
    		movlw	6
    		movwf	TA3
    		clrf	TB1			; alle Segmente an
    		clrf	TB2
    		clrf	TB3
    		clrf	TC1
    		clrf	TC2
    		clrf	TC3
    
    		bsf	PROG			; diese Segmente aus
    		bsf	DATE
    		bsf	STOP
    		bsf	START
    		bsf	dp
    		bsf	a1
    		bsf	d1
    		bsf	e1
    		bsf	f1
    		bsf	g1
    		bsf	c2
    		bsf	f2
    		bsf	e3
    		bsf	f3
    		bsf	a4
    		bsf	d4
    		bsf	e4
    		bsf	b5
    		bsf	e5
    		bsf	b6
    
    DispLoop	movf	PA,0
    		movwf	PORTA
    		movf	PB,0
    		movwf	PORTB
    		movf	PC,0
    		movwf	PORTC
    		
    		movf	TA1,0			; Com1
    		;bsf	_RP0
    		movwf	TRISA
    		;bcf	_RP0
    		movf	TB1,0
    		;bsf	_RP0
    		movwf	TRISB
    		;bcf	_RP0
    		movf	TC1,0
    		;bsf	_RP0
    		movwf	TRISC
    		;bcf	_RP0
    		
    		call	Del			; Dauer vom Com1	
    
    		movf	TA2,0			; Com2
    		;bsf	_RP0
    		movwf	TRISA
    		;bcf	_RP0
    		movf	TB2,0
    		;bsf	_RP0
    		movwf	TRISB
    		;bcf	_RP0
    		movf	TC2,0
    		;bsf	_RP0
    		movwf	TRISC
    		;bcf	_RP0
    
    		call	Del			; Dauer vom Com2	
    
    		movf	TA3,0			; Com3
    		;bsf	_RP0
    		movwf	TRISA
    		;bcf	_RP0
    		movf	TB3,0
    		;bsf	_RP0
    		movwf	TRISB
    		;bcf	_RP0
    		movf	TC3,0
    		;bsf	_RP0
    		movwf	TRISC
    		;bcf	_RP0
    
    		call	Del			; Dauer vom Com3
    	
    		comf	PA,1			; alle Signale invertieren
    		comf	PB,1
    		comf	PC,1
    
    		goto	DispLoop
    
    Del		movlw	0x40			; Verzögerungsschleife (ca. 5 ms)
    		movwf	Tmp1
    Del1		clrf	Tmp
    Del2		decfsz	Tmp,1
    		goto	Del2
    		decfsz	Tmp1,1
    		goto	Del1 
    		return
    
    Init		movlw	7
    		movwf	ADCON1		; schalte ADC aus und mache RA0-6 zu digital I/O
    		return
    		END
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken lph2673.jpg  
    Geändert von PICture (07.12.2014 um 15:28 Uhr)

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2006
    Alter
    31
    Beiträge
    122
    hm, coole Idea

    Solche Displays werde ich mir auch zulegen, die sind noch im Preis!

    mfg
    Anything that can go wrong, will go wrong. Kabel sind entweder zu lang oder zu kurz...

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    68
    Beiträge
    11.078
    Hallo!

    Ich werde das Display wegen sehr gerigem Stromverbrauch und Preis in einem einfachem Frequenzzähler mit Spitze ohne Eingangsverstärker und ohne Kabel (hauptsächlich für digitale Signale) mit festem Messbereich und PIC16F870 verwenden. Er wird mit 2x1,2 V miniatur Akkus versorgt und als Verzögerung von ca. 10 ms wird die Messzeit der Frequenz + Hex/Dec Wandlung + Beschreiben der Register fürs Display benutzt. Das ergibt die Auflösung von +/- 100Hz. Bei 6 Ziffer wird die Frequenz in MHz angezeigt, wobei der größere Abstand zwischen Ziffern als dezimalpunkt angenommen wird (12 3456 bedeutet also 12,3456 MHz). Weil die Anschriften "STOP" und "PROG" nicht benutzt werden, verringert sich die Anzahl der nötigen I/O Pins auf 18. Als Widerstände nehme ich 2 Stk. von Pollin (Best.Nr. 220 686 0,95 EUR).

    MfG

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.09.2006
    Ort
    Hamburg
    Alter
    37
    Beiträge
    1.008
    Hi damit des mit dem Bankumschalten bei allen PIC leuft kanste banksel nehmen mpasm und gputils können des auch bei 16f
    Legastheniker on Bord !

    http://www.Grautier.com - Projektseite
    http://www.grautier.com/wiki/doku.php?id=bt-index - BT-BUS

  5. #5
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    68
    Beiträge
    11.078
    Hallo theborg!

    Danke für deinen Rat!

    Ich habe es bisher aber noch nicht benutzt, weil ich gewöhnt bin, alles direkt und einfach zu programmieren. Ich sehe dafür für mich also keine Vorteile, so wie bei relocatablen Codes u.s.w. Vielleicht würde ich es mal versuchen, oder du würdest mein Code umschreben, weil du es schon gut kannst. Ich verstehe es aber nicht, wie werden die assembler Pseudobefehle für die PIC18FXXX interpretiert.

    MfG

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •