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.
MfGCode:; 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







Zitieren
Lesezeichen