Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
11/02/09 18:08
Read: times


 
#170360 - Automated Car Parking System using LDR interfaced with 8051
Hi everyone.

I need help on how to use LDR and ADC0804 in 8051 microcontroller.
So far I have this in my project but I want to replace the switch with LDR(dark activated).

What happens here (attached file) is that I use the switch to decrement/increment the number of cars and when it reaches zero (meaning no available space) the LCD will prompt that it is full.

What I want is using a sensor (ldr) and a laser light so that when a car passes (the light will be broken) the ldr will send a signal and decrement the number of spaces and vice versa ( i'll be using two ldr one for exit the other for entrance).

attached is my design. Im using Isis Proteus 7.4 and the code below

DB0 EQU P1.0
DB1 EQU P1.1
DB2 EQU P1.2
DB3 EQU P1.3
DB4 EQU P1.4
DB5 EQU P1.5
DB6 EQU P1.6
DB7 EQU P1.7

EN EQU P3.7
RS EQU P3.6
RW EQU P3.5
DATA EQU P1

;7-Segment Display
enableDIGIT3 EQU P3.2
enableDIGIT4 EQU P3.3

ZERO   EQU   10001000b
ONE     EQU   10111110b
TWO     EQU   11000100b
THREE   EQU   10010100b
FOUR   EQU   10110010b
FIVE   EQU   10010001b
SIX     EQU   10000001b
SEVEN   EQU   10111100b
EIGHT   EQU   10000000b
NINE   EQU   10010000b
DOT     EQU   01111111b

MOV 20h,#ZERO
MOV 21h,#ONE
MOV 22h,#TWO
MOV 23h,#THREE
MOV 24h,#FOUR
MOV 25h,#FIVE
MOV 26h,#SIX
MOV 27h,#SEVEN
MOV 28h,#EIGHT
MOV 29h,#NINE

MOV R0, #20h
MOV R1, #22h

PDATA EQU P2 ; Connect 8 pins here

CLR 51h
LCALL LCD_WELCOME
       
Start:
        JB P3.1, check1
                SETB 50h
        check1:
        JB P3.0, check2
                SETB 52h
        check2:
                JNB P3.1, cont1
                        JNB 50h, cont1
                                CLR 50h
                                LCALL INC_7SEGMENT     
        cont1:
                JNB P3.0, cont2
                        JNB 52h, cont2
                                CLR 52h
                                LCALL DEC_7SEGMENT
        cont2:
                LCALL SHOW_7SEGMENT
                LCALL SHOW_LCD
SJMP Start  

SHOW_LCD:
        CJNE @R0, #ZERO, welcome
        CJNE @R1, #ZERO, welcome
                JB 51h, done_showlcd
                LCALL LCD_FULL
        sjmp done_showlcd
        welcome:
                JNB 51h, done_showlcd
                LCALL LCD_WELCOME
        done_showlcd:
RET
LCD_FULL:      
        LCALL CLEAR_LCD
        LCALL INIT_LCD
        CLR RS
        MOV DATA,#086H
        SETB EN
        CLR EN
        LCALL WAIT_LCD
        MOV A,#'F'
        LCALL WRITE_TEXT
        MOV A,#'U'
        LCALL WRITE_TEXT
        MOV A,#'L'
        LCALL WRITE_TEXT
        MOV A,#'L'
        LCALL WRITE_TEXT
        MOV A,#'!'
        LCALL WRITE_TEXT
        MOV A,#'!'
        LCALL WRITE_TEXT

        SETB 51h
RET

LCD_WELCOME:
        LCALL CLEAR_LCD
        LCALL INIT_LCD
        CLR RS
        MOV DATA,#081h
        SETB EN
        CLR EN
        LCALL WAIT_LCD
       
        MOV A,#'P'
        LCALL WRITE_TEXT
        MOV A,#'A'
        LCALL WRITE_TEXT
        MOV A,#'R'
        LCALL WRITE_TEXT
        MOV A,#'K'
        LCALL WRITE_TEXT
        MOV A,#'I'
        LCALL WRITE_TEXT
        MOV A,#'N'
        LCALL WRITE_TEXT
        MOV A,#'G'
        LCALL WRITE_TEXT
        MOV A,#' '
        LCALL WRITE_TEXT
        MOV A,#'S'
        LCALL WRITE_TEXT
        MOV A,#'P'
        LCALL WRITE_TEXT
        MOV A,#'A'
        LCALL WRITE_TEXT
        MOV A,#'C'
        LCALL WRITE_TEXT
        MOV A,#'E'
        LCALL WRITE_TEXT
       
        CLR RS
        MOV DATA,#0C3h
        SETB EN
        CLR EN
        LCALL WAIT_LCD
       
        MOV A,#'A'
        LCALL WRITE_TEXT
        MOV A,#'V'
        LCALL WRITE_TEXT
        MOV A,#'A'
        LCALL WRITE_TEXT
        MOV A,#'I'
        LCALL WRITE_TEXT
        MOV A,#'L'
        LCALL WRITE_TEXT
        MOV A,#'A'
        LCALL WRITE_TEXT
        MOV A,#'B'
        LCALL WRITE_TEXT
        MOV A,#'L'
        LCALL WRITE_TEXT
        MOV A,#'E'
        LCALL WRITE_TEXT
        CLR 51h
RET

INC_7SEGMENT:
        CJNE @R1, #TWO, increment
        sjmp doneinc
        increment:
                CJNE @R0, #NINE, incr0
                MOV R0, #20h
                INC R1
                SJMP doneinc
                incr0:
                        INC R0
        doneinc:
RET

DEC_7SEGMENT:
        CJNE @R0, #ZERO, dec0
        CJNE @R1, #ZERO, dec1
        sjmp donedec
        dec1:
                MOV R0, #29h
                DEC R1
                SJMP donedec
        dec0:
                DEC R0
        donedec:
RET

SHOW_7SEGMENT:
        MOV PDATA,#00h

        setb enableDIGIT3
        MOV     A,@R1
        MOV PDATA,A
        LCALL smallDelay
        clr enableDIGIT3
       
        setb enableDIGIT4
        MOV     A,@R0
        MOV PDATA,A
        LCALL smallDelay        
        clr enableDIGIT4
RET    

INIT_LCD:
        CLR RS
        MOV DATA,#38h
        SETB EN
        CLR EN
        LCALL WAIT_LCD
       
        CLR RS
        MOV DATA,#0Ch
        SETB EN
        CLR EN
        LCALL WAIT_LCD
       
RET

CLEAR_LCD:
        CLR RS
        MOV DATA,#01h
        SETB EN
        CLR EN
        LCALL WAIT_LCD
RET
       
WRITE_TEXT:
        SETB RS
        MOV DATA,A
        SETB EN
        CLR EN
        LCALL WAIT_LCD
RET
       
WAIT_LCD:
        CLR EN ;Start LCD command
        CLR RS ;It's a command
        SETB RW ;It's a read command
        MOV DATA,#0FFh ;Set all pins to FF initially
        SETB EN ;Clock out command to LCD
        LCALL smallDelay
        MOV A,DATA ;Read the return value
        JB ACC.7,WAIT_LCD ;If bit 7 high, LCD still busy
        CLR EN ;Finish the command
        CLR RW ;Turn off RW for future commands
RET  

smallDelay:
                CLR TF1
                CLR TR1
                MOV TH1,#76
                MOV TL1,#01
                MOV TMOD,#01
                SETB TR1
                JNB TF1,$
RET

 



List of 11 messages in thread
TopicAuthorDate
Automated Car Parking System using LDR interfaced with 8051            01/01/70 00:00      
   about the attached picture            01/01/70 00:00      
   all this is quite simple except ...            01/01/70 00:00      
      A lot of things to think about            01/01/70 00:00      
   Never mind "how" - why??            01/01/70 00:00      
      Weight of cars?            01/01/70 00:00      
      ADC because...            01/01/70 00:00      
         Possible but maybe not needed            01/01/70 00:00      
         Vastly over complicated!            01/01/70 00:00      
   Real problem            01/01/70 00:00      
      Basic research!            01/01/70 00:00      

Back to Subject List