Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!
Wenn die zwei Pins, die zum Programmieren des PICs benötigt sind (PGC und PGD) frei sind oder an sie normal geöfnete Kontakte (z.B. Taster) angeschlossen sind und der VPP Pin eine Diode zwischen VCC und VPP hat, dann kann man den PIC ohne extra ICSP Anschlusses in einer fertiger Schaltung programmieren.
Dazu habe ich mir ein ICSP Anschlussadapter (siehe Foto) mit mini Klemprüfspitzen von Conrad gebaut, der dank dem DIP Schalter beim Arbeiten des PICs dran hängen darf. Das kann man auch bei SO PIC Typen im SMD Gehäuse verwenden. Der Adapter wird einfach an Kabel vom Brenner angeschlossen.
Seit dem werden ich in meinen Projekten, wenn möglich, diese zwei Pins entweder frei oder nur mit normal geöffneten Taster und ich kann jeden PIC ohne ICSP Anschluss umprogrammieren.
MfG
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!
Ich habe erfolglos ein Display mit größeren Zeichen für ein Messgerät gesucht und mir selber gewünschte mit 8 selbstdefinierten Zeichen auf einem 2x16 Zeichen erstellt und ausprobiert. Man könnte sich natürlich andere Zeichen selber definieren und der Code sollte nur als Beispiel dienen. Solche Zeichen lassen sich auch bei anderen µC anwenden.
MfG
Code:
; Display Test im 4-bit Modus mit selbstdefinierten Zeichen (doppelte Zifferhöhe)
LIST P=16F84a
include "P16F84a.inc" ; 4.000 MHz
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
; DB4 PORTB,0 ; Display Data-Bits
; DB5 PORTB,1
; DB6 PORTB,2
; DB7 PORTB,3
#define _RS PORTB,4 ; Display RS
#define _E PORTB,5 ; Display Enable
#define _Frs Flags,0 ; RS Flag
Tmp equ 20
Flags equ 21
org 0
call Init
Main call Fst
movlw 0
call Char
movlw 1
call Char
movlw 3
call Char
movlw 6
call Char
movlw 4
call Char
movlw 4
call Char
movlw 1
call Char
movlw 7
call Char
movlw 5
call Char
movlw 5
call Char
movlw 1
call Char
movlw 6
call Char
movlw 4
call Char
movlw 7
call Char
movlw 5
call Char
movlw 0
call Char
call Snd
movlw 0
call Char
movlw 4
call Char
movlw 2
call Char
movlw 0
call Char
movlw 2
call Char
movlw 6
call Char
movlw 0
call Char
movlw 6
call Char
movlw 3
call Char
movlw 6
call Char
movlw 4
call Char
movlw 0
call Char
movlw 6
call Char
movlw 6
call Char
movlw 6
call Char
movlw 0
call Char
sleep
Fst movlw 80 ; Anfangsadresse der ersten Zeile
goto Cmd
Snd movlw 0xC0 ; Anfangsadresse der zweiten Zeile
Cmd movwf Tmp ; Befehl ins Tmp laden
bcf _Frs ; RS=0
goto Send
Char movwf Tmp ; Zeichen ins Tmp laden
bsf _Frs ; RS=1
Send swapf Tmp,0 ; zuerst High Nibble (ab jetzt Low Nibble)
andlw 0F ; (aktuelles Low Nibble ausblenden)
movwf PORTB ; an Port (Display) schicken
btfsc _Frs ; RS Flag ans Port kopieren
bsf _RS
bsf _E ; Enable erzeugen
bcf _E
movf Tmp,0 ; Low Nibble
andlw 0x0F ; (High Nibble ausblenden)
movwf PORTB ; an Port (Display) schicken
Enab btfsc _Frs ; RS Flag ans Port kopieren
bsf _RS
bsf _E ; Enable erzeugen
bcf _E
Del movlw 10 ; Verzögerung ca. 50µs
movwf Tmp
decfsz Tmp,1
goto $-1
return
Init clrf PORTB ; PortB initialisieren
bsf STATUS,RP0 ; Bank 1
clrf TRISB ; alle Pins als Ausgänge
bcf STATUS,RP0 ; Bank 0
bcf _Frs
movlw 2 ; Display auf 4-bit umschalten und initialisieren
movwf PORTB
call Enab
movlw 28 ; 4 bit, 2 Zeilen, 5x7 Punkten
call Cmd
movlw 0C ; display an, cursor aus, nicht blinken
call Cmd
movlw 6 ; incrementieren, nicht schieben
call Cmd
movlw 40 ; Zeichen selber definieren
call Cmd
movlw 3 ; 0.
call Char
movlw 3
call Char
movlw 3
call Char
movlw 3
call Char
movlw 3
call Char
movlw 3
call Char
movlw 3
call Char
movlw 3
call Char
movlw 1F ; 1.
call Char
movlw 1F
call Char
movlw 3
call Char
movlw 3
call Char
movlw 3
call Char
movlw 3
call Char
movlw 3
call Char
movlw 3
call Char
movlw 3 ; 2.
call Char
movlw 3
call Char
movlw 3
call Char
movlw 3
call Char
movlw 3
call Char
movlw 3
call Char
movlw 1F
call Char
movlw 1F
call Char
movlw 1F ; 3.
call Char
movlw 1F
call Char
movlw 3
call Char
movlw 3
call Char
movlw 3
call Char
movlw 3
call Char
movlw 1F
call Char
movlw 1F
call Char
movlw 1F ; 4.
call Char
movlw 1F
call Char
movlw 18
call Char
movlw 18
call Char
movlw 18
call Char
movlw 18
call Char
movlw 1F
call Char
movlw 1F
call Char
movlw 1F ; 5.
call Char
movlw 1F
call Char
movlw 1B
call Char
movlw 1B
call Char
movlw 1B
call Char
movlw 1B
call Char
movlw 1B
call Char
movlw 1B
call Char
movlw 1B ; 6.
call Char
movlw 1B
call Char
movlw 1B
call Char
movlw 1B
call Char
movlw 1B
call Char
movlw 1B
call Char
movlw 1F
call Char
movlw 1F
call Char
movlw 1F ; 7.
call Char
movlw 1F
call Char
movlw 1B
call Char
movlw 1B
call Char
movlw 1B
call Char
movlw 1B
call Char
movlw 1F
call Char
movlw 1F
call Char
return
end