Visitor Counter Using 8051 Microcontroller
Schematic Diagram
Machine Code:
ORG 0000
SJMP MAIN
ORG 0003H
LJMP ISR0
ORG 0013H
LJMP ISR1
ORG 0030H
DTA EQU P1
EN EQU P3.7
RS EQU P3.6
ADC EQU P3.5
D1 EQU R5
D2 EQU R6
D3 EQU R7
Main: MOV P2, #0H
ACALL INIT_LCD
MOV DTA, #083h
ACALL SEND_CMD
MOV DTA, #'C'
ACALL SEND_TXT
MOV DTA, #'O'
ACALL SEND_TXT
MOV DTA, #'U'
ACALL SEND_TXT
MOV DTA, #'N'
ACALL SEND_TXT
MOV DTA, #'T'
ACALL SEND_TXT
MOV DTA, #':'
ACALL SEND_TXT
MOV DTA, #' '
ACALL SEND_TXT
MOV TCON, #05H
MOV IE , #85H
MOV P2, #0H
MOV R0, #0H
MOV P2, #0H
MOV R1, #00H
MOV A, #0H
HERE:
ACALL READ_ADC
ACALL BIN_ASCII
ACALL DISP_ADC
ACALL LCD_DELAY
SJMP Here
DISP_ADC: MOV DTA, #089h
ACALL SEND_CMD
MOV DTA, D1
ACALL SEND_TXT
MOV DTA, D2
ACALL SEND_TXT
MOV DTA, D3
ACALL SEND_TXT
RET
READ_ADC:
CLR ADC
SETB ADC
ACALL LCD_DELAY
MOV A, R0
RET
BIN_ASCII:
MOV B,#100
DIV AB
ADD A, #30H
MOV D1,A
MOV A,B
MOV B,#10
DIV AB
ADD A, #30H
MOV D2,A
MOV A,B
ADD A, #30H
MOV D3,A
RET
INIT_LCD: MOV DTA,#38h
ACALL SEND_CMD
MOV DTA,#38h
ACALL SEND_CMD
MOV DTA,#38h
ACALL SEND_CMD
MOV DTA,#0Ch ;Display on, cursor off
ACALL SEND_CMD
MOV DTA,#06h
ACALL SEND_CMD
MOV DTA,#80h ;Line 1, Position 0
ACALL SEND_CMD
RET
LCD_CLR: MOV DTA,#01h
ACALL SEND_CMD
RET
SEND_CMD: CLR RS
SETB EN
CLR EN
ACALL LCD_Delay
RET
SEND_TXT: SETB RS
SETB EN
CLR EN
ACALL LCD_Delay
RET
LCD_Delay: MOV R3,#255 ;50 or higher for fast CPUs
L2: MOV R4,#255 ;R4 = 255
L1: DJNZ R4,L1 ;stay until R4 becomes
DJNZ R3, L2
RET
ISR0: SETB P2.0
CLR P2.1
INC R1
RETI
ISR1:
CLR P2.0
CJNE R1, #01H, L22
CJNE R0, #255,L33
SJMP L11
L33: INC R0
MOV A, R0
MOV R1, #00H
SJMP L11
L22: SETB P2.1
L11: NOP
RETI
End
No comments:
Post a Comment