Archive for May 2013

Timer based on 7 segment using 8051

                              

                              

This is the circuit diagram of timer on proteus software. We can use this circuit to know the duration of a particular event. You are just required to know about 7 segment interfacing. Its very simple circuit.

I have interfaced four 7-segment display to port 2. First two digit will show the minute and the last two digit will show the second. Minute will increase by one each time after completing 60 second. After pressing reset pin, it will start again.

In this circuit i have interfaced four 7-segment to port 2. You can see in the figure that each 7 segment displays different digit even if it is connected to a single port. As per rule it should all four 7-segment should display the same digit at a time. Think!!!!!!!!! 
How it is possible???????

It is possible by multiplexing all the 7-segment display through one port. We can also connect each 7-segment to different port but it will require large number of pin. So that we have multiplexed them to a single port. Here we have provided delay of 0.1ms. between each 7-segment display. It cant be detected by human eye. It means only one 7-segment glows at a time. We can control it by the control pin given in each 7-segment. I have connected these control pin to p1.0, p1.1, p1.2 and p1.3. Seven segment display will not activate until its control pin is high.

If you are facing any kind of problem relate to this project then comment!!!!!

CLICK HERE TO SEE THE PROGRAM IN ASSEMBLY LANGUAGE

Program for Calculator in assembly language



This is the assembly language program for Calculator. It can perform operation like addition, subtraction, multiplication, division for one digit. 
You are just required to know about LCD and keyboard interfacing.

/************************************************************************************/
//            PROGRAM TO  DEMONSTRATE  INTERFACING OF HEX DISPLAY WITH MCS51       
/************************************************************************************/


ORG 0000H


/************************************************************************************/
/*                                           I/O PIN INITIALISATIONS AND DECLARATIONS                                                                                                                   */
/************************************************************************************/

C1 EQU P2.0
C2 EQU P2.1
C3 EQU P2.2
C4 EQU P2.3
ROW1 EQU P2.4
ROW2 EQU P2.5
ROW3 EQU P2.6
ROW4 EQU P2.7
LCD EQU P0
RS EQU P1.0
RW EQU P1.1
EN EQU P1.2
MOV LCD,#80H
ACALL CMD
ACALL DELAY
MOV LCD,#08H
ACALL CMD
ACALL DELAY
ERROR: MOV LCD,#01H
ACALL CMD
ACALL DELAY
MOV LCD,#0EH
ACALL CMD
ACALL DELAY
MOV LCD,#80H
ACALL CMD
ACALL DELAY

MOV P2,#00H
MOV P0,#00H
MOV DPTR,#MSG
CLR A
MOV B,#00H
MOV R3,#00H

MOV R0,#04
SLR: ACALL KEYPAD
DJNZ R0,SLR
MOV A,R4
CJNE R7,#'=',ERROR
CJNE R5,#'+',CO1
SJMP ADDITION
CO1: CJNE R5,#'-',CO2
SJMP SUBST
CO2: CJNE R5,#'*',CO3
SJMP MULTI
CO3: CJNE R5,#'/',ERROR
SJMP DIVIDE

SUBST: SUBB A,R6
JC NEGATIVE
JZ ZERO
SACK: SJMP GOM
NEGATIVE: MOV LCD,#'-'
ACALL DISP
ACALL DELAY
MOV A,R6
SUBB A,R4
INC A
SJMP SACK
ZERO: MOV LCD,#'0'
ACALL DISP
ACALL DELAY
SJMP ALT

MULTI: MOV B,R6
MUL AB
MOV R6,A
SUBB A,#10
JC STAR3
MOV A,R6
MOV B,#10
DIV AB
MOV DPTR,#MSG
MOVC A,@A+DPTR
MOV LCD,A
ACALL DISP
ACALL DELAY
MOV A,B
SJMP GOM

STAR3: MOV A,R6
MOV DPTR,#MSG
MOVC A,@A+DPTR
MOV LCD,A
ACALL DISP
ACALL DELAY
SJMP ALT

DIVIDE: MOV B,R6
DIV AB
MOV DPTR,#MSG
MOVC A,@A+DPTR
MOV LCD,A
ACALL DISP
ACALL DELAY
MOV LCD,#' '
ACALL DISP
ACALL DELAY
MOV A,B
SJMP GOM

ADDITION: ADD A,R6
MOV R6,A
SUBB A,#10
JC STAR
JZ STAR2
MOV LCD,#'1'
ACALL DISP
ACALL DELAY
GOM: MOV DPTR,#MSG
MOVC A,@A+DPTR
MOV LCD,A
ACALL DISP
ACALL DELAY
SJMP ALT

STAR2: MOV LCD,#'1'
ACALL DISP
ACALL DELAY
MOV LCD,#'0'
ACALL DISP
ACALL DELAY
SJMP ALT

STAR: MOV A,R6
MOV DPTR,#MSG
MOVC A,@A+DPTR
MOV LCD,A
ACALL DISP
ACALL DELAY
ALT: SJMP ALT

/************************************************************************************/
/*                                           READING COLUMN VALUE                                                                                                                                                                                                          */
/************************************************************************************/


KEYPAD: ACALL DELAY           
       MOV P2, #0FH
                   ACALL DELAY
K1:             MOV A,P2
                   CJNE A,#0FH,KK1
                   SJMP K1
KK1:   JB C1,N1
                   MOV B,#00h
                   ACALL DELAY
N1:            JB C2,N2
                   MOV B,#01h
                   ACALL DELAY
N2:            JB C3,N3
                   MOV B,#02h
                   ACALL DELAY
N3:            JB C4,N4
                   MOV B,#03h
                   ACALL DELAY

/************************************************************************************/
/*                                           READING ROW VALUE                                                                                                                                                                                                                   */
/************************************************************************************/
                              
N4:   MOV P2, #0F0H
K11:  MOV A,P2
                  CJNE A,#0F0H,KK11
                  SJMP K11
KK11: ACALL DELAY
                  JB ROW1,NR1
                  MOV R3,#00h
                  ACALL DELAY
NR1:  JB ROW2,NR2
                  MOV R3,#04h
                  ACALL DELAY
NR2:  JB ROW3,NR3
                  MOV R3,#08h
                  ACALL DELAY
NR3:  JB ROW4,NR4
                  MOV R3,#0Ch
                  ACALL DELAY
NR4:  MOV A,R3

/************************************************************************************/
/*                           SENDING KEYVALUE TO PORT 0 AND SERAIL PORT                                                                                                                                            */
/************************************************************************************/
                 
                  ADD A,B
                  CJNE R0,#04,SL1
                  MOV R4,A
SL1:  CJNE R0,#02,SL2
                  MOV R6,A

                 
SL2:  MOVC A,@A+DPTR
      CJNE R0,#03,SL3
                  MOV R5,A
SL3:  CJNE R0,#01,SL4
      MOV R7,A
SL4:  MOV LCD,A
                  ACALL DISP
                  ACALL DELAY
                  CLR A
                  RET

/************************************************************************************/
/*                                           DELAY SUBROUTINE                                                                                                                                                                                                                       */
/************************************************************************************/


DELAY:  MOV R2,#5FH
a1:     MOV R1,#0FEH
a2:     DJNZ R1,a2
        DJNZ R2,a1
                    RET

CMD:     CLR RS
        CLR RW
                                SETB EN
                                NOP
                                CLR EN
                                RET
DISP:   SETB RS
        CLR RW
                                SETB EN
                                NOP
                                CLR EN
                                RET

/************************************************************************************/
/*                                           LOOKUP TABLE W.R.T 0-15 SWITCHES IN HEX KEYPAD                                                                                                     */
/************************************************************************************/

MSG: DB '0','1','2','3','4','5','6','7','8','9','+','-','*','/','=','F',0
      END


If you have any problem then comment!!!!!!!!!!!!!!

- Copyright © Microcontroller Projects -Metrominimalist- Powered by Blogger - Designed by Johanes Djogan -