🇩🇪
; File: HD44780_2Wire.INC
; Author: Ottmar
; Created: 2014.01.08
; 2Wire Interfache mit HD74LS164
;******************************************************************
;-SUBROUTINEN - nicht zum direkten Aufruf bestimmt!
; Control8Bit: " mit 8Bit-Interface (nur intern)
; Clear_ShiftReg: " Löscht das Shiftregister
; Delay: " 1,5ms Delay zwischen LCD-Befehlen
; HD44780 Ausfuehrungszeit je cmmand = 37us+4us
; ausgenommen: RETURN HOME] = 1.52ms
; OutLcd: Ausgabe des oberen/unteren Nibbles (nur intern)
;
;-SUBROUTINEN - können aus anderem Code heraus aufgerufen werden
; Lcd_Init: Initialisierung von HD44780-LCD mit 4Bit-Interface
; OutDDRAM_Addr: Ausgabe einer DDRAM-Adresse an das LCD
; OutLcd_Ctrl: Ausgabe einer Instruktion an das LCD
; OutLcd_Ascii: Ausgabe eines Ascii-Zeichens, Wert im WREG
; z.B. movlw .35 -> Ausgabe '[' ROM Code A00!
; OutLcd_Data: Ausgabe eines einzelnen Zeichens Wert im WREG
; z.B. movfw BCD9 (darf nur 1 Stelle enthalten!"
; Lcd_Clear: Löscht den Text im LCD
; Lcd_Ready: Funktionstest! Ausgabe von "LCD 2Wire READY!"
; CGRAM_Load: ;Selbstdifiniertes Zeichen in das LCD laden
;
; Delay1ms: delays 1ms - 255ms /FOSC_MULT
; Delay100ms: delays 0.1s - 25.5s /FOSC_MULT
;*********************************************************************
; LCD-INITIALISIERUNG
; Die Initialisierung des LCD folgt der Vorgabe im Hitachi-Datenblatt
; "HD44780.pdf", Seite 213.
;;*********************************************************************
;; LCD-PROPERTIES (Eigenschaften an aktuellen LCD-Typ anpassen)
;;*********************************************************************
;; LCD_TYPE EQU 1 ;=1 LCD 2x8 und 2x16
;; LCD_TYPE EQU 2 ;=2=LCD 4x16
;; LCD_TYPE EQU 3 ;=3=LCD 4x20
; ;
; IF LCD_TYPE == 1 ;Uncomment LCD_DIGITS 2x8 OR 2x16 !!!
; LCD_LINES EQU .2 ;LCD 2x8 * 2x16
;; LCD_DIGITS EQU .8 ;LCD 2x8
;; LCD_DIGITS EQU .16 ;LCD 2x16
; ENDIF
;;-------------------------------------
;; NO CHANGES AFTER THIS LINE ALLOWED!
;;-------------------------------------
; LINE1 EQU 0x00 ;all LCDs
; LINE2 EQU 0x40 ;" "
; ;
; IF LCD_TYPE==2
; LINE3 EQU 0x10 ;LCDs 4x16 only
; LINE4 EQU 0x50 ;" " "
; LCD_LINES EQU .4 ;Lines
; LCD_DIGITS EQU .16 ;digits/line
; ENDIF
; ;
; IF LCD_TYPE==3
; LINE3 EQU 0x14 ;LCDs 4x20 only
; LINE4 EQU 0x54 ;" " "
; LCD_LINES EQU .4
; LCD_DIGITS EQU .20 ;digits/line
; ENDIF
; ;
; #DEFINE LCD_DATA LCD_LAT,LCDDAT ;Strobe Data (H->L -> Enable)
; #DEFINE LCD_CLK LCD_LAT,LCDCLK ;Strobe Clock (H->L)
; #DEFINE LCD_RS LcdFlags,7 ;0/1 Data-Mode/Instruction-Mode
; #DEFINE NIBBLE LcdFlags,6 ;1/0 send Upper/Lower Nibble to LCD
; ;
; SET_DDRAM_ADDR EQU 0x80 ;Function "SET DDRAM-ADDRESS"
; SET_CGRAM_ADDR EQU 0x40 ;"Set CGRAM Address" b'01000000
; ;
; DISPLAY_OFF EQU 0x08 ;Function "Display Disabled"
; DISPLAY_ON EQU 0x0C ;Function "Display enabled, Crsr On, Blink
Off
; ;; OHM
;;--SONDERZEICHEN gemeinsam HD44780+SPLC780A1 (keine Umlaute)
; OHM EQU b'11110100' ;Omega
; PI EQU b'11110111' ;Pi
; GRAD EQU b'11011111' ;° Grad
; MICRO EQU b'11100100' ;μ
; Komma EQU b'00101100' ;