PIC16F877A LCD driver HT1621 source code
STATUSEQU3H
FSREQU4H
RBEQU6H
RCEQU7H
OPTIONAEQU81H
TRISBEQU86H
TRISCEQU87H
GENR0EQU053H
GENR1EQU054H
WD_RGEQU055H
DA_AG0EQU056H; SEG0SEG1
DA_AG8EQU05EH; SEG16SEG17
;.............................
CEQU0
ZEQU2
RP0EQU5
RP1EQU6
CSEQU2
WDAEQU5; RC, 5 data lines
WCLKEQU1; RB, 1 write clock line
RCLKEQU4; RB, 4 read clock line
;..............................
ORG0H
GOTOSTART
;...............................
STARTBSFSTATUS, RP0
MOVLW00H
MOVWFTRISB
MOVLW81H
MOVWFTRISC
BCFSTATUS, RP0
MOVLW12H
MOVWFRB
BSFRC, 2
BSFRC, 5
MOVLW4
MOVWFOPTIONA
LOOPNOP
CALLX_QUAN
NOP
GOTOLOOP
;............................
X_QUAN
MOVLW8H
CALLON_LCD; TRANSMITTH1621WORKMODEVALUE
MOVLW9H; display 9-bit LCD
CALLDIS_DATA
RETURN
;............................
ON_LCDMOVWFGENR1
BCFRC, 2
MOVLW80H; HI_W3BITS: 100
MOVWFWD_RG
MOVLW3; 3-bit command 100
CALLTRAM_DATA
ON_LCD0MOVFGENR1,0
CALLON_VALUE; lookup table initializes LCD
MOVWFWD_RG
MOVLW8; send 8 bit table value
CALLTRAM_DATA
BCFRC, WDA
NOP
NOP
BCFRB, 1
NOP
NOP
BSFRB, 1
BSFRC, 2
DECFSZGENR1,1
GOTOON_LCD+1
RETURN
;........................
ON_VALUE
ADDWF2
NOP
RETLW03H; LCDON
RETLW01H;SYSON
RETLW08H; TONEOFF
RETLW29H; BISA1/34COM
RETLW18H; 256K
RETLW05H; WDTDISABLE
RETLW80H;/IRQDISABLE*
RETLW0E3H; NORMALMODE*
;................................
;TRANSMITBITSSUBROUTINE
TRAM_DATA
BCFSTATUS, 0
MOVWFGENR0
BCFRB, 1
RLFWD_RG
BTFSS3,0
GOTO$+3
BSFRC, WDA
GOTO$+2
BCFRC, WDA
BSFRB, 1
DECFSZGENR0,1
GOTOTRAM_DATA+2
RETURN
;.......................
DIS_DATA
MOVWFGENR1; 9-digit LCD
BCFRC, 2
MOVLW0A0H
MOVWFWD_RG;WRITECONTROL
MOVLW3H; 3-bit write command 101
CALLTRAM_DATA
MOVLW00
MOVWFWD_RG;WRITEADDRESS
MOVLW6H; 6-bit address
CALLTRAM_DATA;
DIS_DATA0
MOVLW0FFH
MOVWFWD_RG;DISPLAYCODE
MOVLW8; 8 segments of data
CALLTRAM_DATA
DECFSZGENR1,1
GOTODIS_DATA0
BSFRC, 2
RETLW0
END
Shenzhen Linx Technology Co., Ltd. , https://www.linxheadphone.com