Code:
SW1 EQU P3.0
SW2 EQU P3.1
SW3 EQU P3.2
INIT: MOV A,#38H ; initialization
ACALL CMD ; issue command
MOV A,#0EH ; LCD On, cUrsor ON, cursor blinking OFF
ACALL CMD
MOV A,#01H ; Clear LCD
ACALL CMD
MOV A,#06H ; Shift cursor right
ACALL CMD
MOV A,#82H ; Cursor: line 1, position 2
ACALL CMD
MOV A,#3CH ; 2nd line
ACALL CMD
MOV A,#01000101B ; E
ACALL DISPLAY
MOV A,#01001100B ; L
ACALL DISPLAY
MOV A,#01000101B ; E
ACALL DISPLAY
MOV A,#01000011B ; C
ACALL DISPLAY
MOV A,#01010100B ;T
ACALL DISPLAY
MOV A,#01010010B ; R
ACALL DISPLAY
MOV A,#01001111B ; O
ACALL DISPLAY
MOV A,#01001110B ; N
ACALL DISPLAY
MOV A,#01001001B ; I
ACALL DISPLAY
MOV A,#01000011B ; C
ACALL DISPLAY
MOV A,#0C3H ; JUMP TO 2nd LINE, position 3
ACALL CMD
MOV A,#01010011B ; S
ACALL DISPLAY
MOV A,#01010000B ; P
ACALL DISPLAY
MOV A,#01000101B ; E
ACALL DISPLAY
MOV A,#01000101B ; E
ACALL DISPLAY
MOV A,#01000100B ; D
ACALL DISPLAY
MOV A,#01001111B ; O
ACALL DISPLAY
MOV A,#01001101B ; M
ACALL DISPLAY
MOV A,#01000101B ; E
ACALL DISPLAY
MOV A,#01010100B ;T
ACALL DISPLAY
MOV A,#01000101B ; E
ACALL DISPLAY
MOV A,#01010010B ; R
ACALL DISPLAY
POLL:
SETB SW1
SETB SW2
SETB SW3
JNB SW1,SW1_Tmp
JNB SW2,SW2_Tmp
JNB SW3,SW3_Tmp
JMP POLL
SW1_Tmp:
AJMP DISP_SW1
SW2_Tmp:
AJMP DISP_SW2
SW3_Tmp:
AJMP DISP_SW3
JMP POLL
DISP_SW1:
MOV A,#01H ; Clear LCD
ACALL CMD
MOV A,#80H ; Cursor: line 1, position 3
ACALL CMD
MOV A,#3CH ; 2nd line
ACALL CMD
MOV A,#01010011B ; S
ACALL DISPLAY
MOV A,#01110000B ; p
ACALL DISPLAY
MOV A,#01100101B ; e
ACALL DISPLAY
MOV A,#01100101B ; e
ACALL DISPLAY
MOV A,#01100100B ; d
ACALL DISPLAY
MOV A,#00101000B ; (
ACALL DISPLAY
MOV A,#01101101B ; m
ACALL DISPLAY
MOV A,#00101111B ; /
ACALL DISPLAY
MOV A,#01110011B ; s
ACALL DISPLAY
MOV A,#00101001B ; )
ACALL DISPLAY
MOV A,#0C1H ; JUMP TO 2nd LINE, position 13
ACALL CMD
MOV A,#00110000B ; 0
ACALL DISPLAY
MOV A,#00101110B ; .
ACALL DISPLAY
MOV A,#00110000B ; 0
ACALL DISPLAY
JMP POLL ; JUMP TO POLL FOR NEW KEY PRESS
MOV A,#B ;
ACALL DISPLAY
DISP_SW2:
MOV A,#01H ; Clear LCD
ACALL CMD
MOV A,#80H ; Cursor: line 1, position 3
ACALL CMD
MOV A,#3CH ; 2nd line
ACALL CMD
MOV A,#01000011B ; C
ACALL DISPLAY
MOV A,#01110101B ; u
ACALL DISPLAY
MOV A,#01110010B ; r
ACALL DISPLAY
MOV A,#01110010B ; r
ACALL DISPLAY
MOV A,#01100101B ; e
ACALL DISPLAY
MOV A,#01101110B ; n
ACALL DISPLAY
MOV A,#01110100B ; t
ACALL DISPLAY
MOV A,#00100000B ;
ACALL DISPLAY
MOV A,#01000100B ; D
ACALL DISPLAY
MOV A,#01101001B ; i
ACALL DISPLAY
MOV A,#01110011B ; s
ACALL DISPLAY
MOV A,#01110100B ; t
ACALL DISPLAY
MOV A,#01100001B ; a
ACALL DISPLAY
MOV A,#01101110B ; n
ACALL DISPLAY
MOV A,#01100011B ; c
ACALL DISPLAY
MOV A,#01100101B ; e
ACALL DISPLAY
MOV A,#0C1H ; JUMP TO 2nd LINE, position 16
ACALL CMD
MOV A,#01101101B ; m
ACALL DISPLAY
JMP POLL
DISP_SW3:
MOV A,#01H ; Clear LCD
ACALL CMD
MOV A,#80H ; Cursor: line 1, position 3
ACALL CMD
MOV A,#3CH ; 2nd line
ACALL CMD
MOV A,#01010100B ; T
ACALL DISPLAY
MOV A,#01101111B ; o
ACALL DISPLAY
MOV A,#01110100B ; t
ACALL DISPLAY
MOV A,#01100001B ; a
ACALL DISPLAY
MOV A,#01101100B ; l
ACALL DISPLAY
MOV A,#00100000B ;
ACALL DISPLAY
MOV A,#01000100B ; D
ACALL DISPLAY
MOV A,#01101001B ; i
ACALL DISPLAY
MOV A,#01110011B ; s
ACALL DISPLAY
MOV A,#01110100B ; t
ACALL DISPLAY
MOV A,#01100001B ; a
ACALL DISPLAY
MOV A,#01101110B ; n
ACALL DISPLAY
MOV A,#01100011B ; c
ACALL DISPLAY
MOV A,#01100101B ; e
ACALL DISPLAY
MOV A,#0C1H ; JUMP TO 2nd LINE, position 3
ACALL CMD
MOV A,#01101101B ; m
ACALL DISPLAY
JMP POLL
CMD:
MOV P1,A
CLR P3.5
CLR P3.4
SETB P3.3
CLR P3.3
ACALL DELAY
RET;
DISPLAY:MOV P1,A
SETB P3.5
CLR P3.4
SETB P3.3
CLR P3.3
ACALL DELAY
RET;
DELAY: CLR P3.3
CLR P3.5
SETB P3.4
MOV P1,#0FFh
SETB P3.3
MOV A,P1
JB ACC.7,DELAY
CLR P3.3
CLR P3.4
RET;
END
and here is the model im using to test this electronic speedometer..
Bookmarks