PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Testprogramm für LPH2673-1



PICture
17.12.2006, 19:39
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/threads/42200-Frequenzz%C3%A4hler-mit-LPH2673-1-%28zum-Nachbauen%29 .

Viel Spass mit dem Display ! :)

MfG


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|Sg 12|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,WR T0=OFF,WRT1=OFF,WRT2=OFF,WRT3=OFF
CONFIG WRTB=OFF,WRTC=OFF,WRTD=OFF,EBTR0=OFF,EBTR1=OFF,EBT R2=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

orph
17.12.2006, 21:05
hm, coole Idea

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

mfg

PICture
14.03.2009, 15:33
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

theborg
14.03.2009, 16:32
Hi damit des mit dem Bankumschalten bei allen PIC leuft kanste banksel nehmen mpasm und gputils können des auch bei 16f

PICture
14.03.2009, 16:50
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