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