📄 ht1603.asm
字号:
;*******************************************************
; SUBJECT : TEST PROGRAM FOR HT1603
; AUTHOR : fy.Liu
; Date : 2003-10-03
; Version : 1.00
; LCD Driver : PCF8576C
; LCD Modle : HT1603
;*******************************************************
SDA BIT P3.0
SCL BIT P3.1
;*******************************************************
ORG 0000H
LJMP MAIN
;*******************************************************
ORG 0030H
MAIN: MOV SP,#60H
LCALL START
MOV A, #048H ; Mode Set ( C=0 )
LCALL WRITE ; EXIT COMMAND STATUS
LCALL STOP
LCALL DELAY
;*******************************************************
;
MOV R7,#13 ; 13 DIGIT
MOV DPTR,#DIGIT
LOOP_DG: LCALL START
MOV A,#0E0H ; Device Select
LCALL WRITE
MOV A, #000H ; Load Data Pointer ( C=0, Address=00H)
LCALL WRITE ; EXIT COMMAND STATUS
MOV R6,#60 ; SEGMENT( Display RAM ) NUMBER /2
LOOP_SD: MOV A,#0
MOVC A,@A+DPTR
LCALL WRITE
DJNZ R6,LOOP_SD
LCALL STOP
MOV R5,#8
LDELAY: LCALL DELAY
DJNZ R5,LDELAY
INC DPTR
DJNZ R7,LOOP_DG
LJMP MAIN
;***************
CLRSCR: LCALL START
MOV A,#0E0H ; Device Select
LCALL WRITE
MOV A, #0
LCALL WRITE ; EXIT COMMAND STATUS
MOV R6,#20 ; SEGMENT( Display RAM ) NUMBER /2
LOOP_CD: MOV A, #0
LCALL WRITE
DJNZ R6,LOOP_CD
LCALL STOP
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV R7,#0 ; Load Data Pointer ( C=0, Address=00H)
CHK_LG: LCALL START
MOV A,#0E0H ; Device Select
LCALL WRITE
MOV A, R7
LCALL WRITE ; EXIT COMMAND STATUS
MOV A,#0F0H
LCALL WRITE
LCALL STOP
MOV R5,#50
LLDELAY: LCALL DELAY
DJNZ R5,LLDELAY
INC R7
CJNE R7,#40,CHK_LG
LJMP MAIN
;*******************************************************
;
;*******************************************************
WRITE: MOV R3,#08H ; 1 Byte = 8 bit
CLR SCL ; Clock signal = 0
CLR C
TR_8BIT: RLC A
MOV SDA,C ; DATA = C
SETB SCL
nop
CLR SCL ; Clock Pulse
DJNZ R3,TR_8BIT
; 1 BYTE(8 BIT) TR_FINISHED
SETB SCL
NOP
CLR SCL ; 9'th Pulse
RET
;*******************************************************
START: SETB SDA
SETB SCL
NOP
CLR SDA ; Start
MOV A,#070H ; PCF8576C ADDRESS(70H 71H : SA0)
LCALL WRITE
RET
;****************************
STOP: SETB SCL ; CONFIRM SCL=1
CLR SDA ; Confirm SDA=0
SETB SDA ; SDA 0->1
RET
;*******************************************************
DELAY: PUSH ACC
MOV A, R7
PUSH ACC
MOV A, R6
PUSH ACC
MOV R7,#08FH
DL0: MOV R6,#0A0H
DJNZ R6,$
DJNZ R7,DL0
POP ACC
MOV R6, A
POP ACC
MOV R7, A
POP ACC
RET
;*******************************************************
;
;*******************************************************
DIGIT:
; DFGEHABC
DB 11111111B ; ALL
DB 00000000B ; CLR
DB 11010111B ; 0
DB 00000011B ; 1
DB 10110110B ; 2
DB 10100111B ; 3
DB 01100011B ; 4
DB 11100101B ; 5
DB 11110101B ; 6
DB 00000111B ; 7
DB 11110111B ; 8
DB 11100111B ; 9
DB 00001000B ; DP
;***********************************************
;
;***********************************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -