8051 microcontroller programming:Interfacing ADC 0808 and displaying using Seven segment displays with Keil

Displaying the output from ADC is the most important aspect of interfacing an ADC with 8051.
All the four ports are used.
PORT0 :Lower nibble seven segment display.
PORT1:ADC output.
PORT2:
  P2.0-ADD A
  P2.1-ADD B
  P2.2-ADD C
  P2.4-ALE
  P2.5-OE
  P2.6-START
  P2.7-EOC
PORT3 :Higher nibble seven segment display.
 ORG 00H
  MOV 30H,#0C0H    //COPY THE CODE FOR DISPLAING THE DIGITS TO THE SEVEN SEGMENT DISPLAY
  MOV 31H,#0F9H
  MOV 32H,#0A4H
  MOV 33H,#0B0H
  MOV 34H,#99H
  MOV 35H,#92H
  MOV 36H,#82H
  MOV 37H,#0F8H
  MOV 38H,#80H
  MOV 39H,#0B0H
  MOV 3AH,#088H
  MOV 3BH,#83H
  MOV 3CH,#0C6H
  MOV 3DH,#0A1H
  MOV 3EH,#86H
  MOV 3FH,#8EH
  ALE EQU P2.4     //ASSIGN PIN5 OF PORT2 FOR ALE (ADDRESS LATCH ENABLE) OF ADC
  START EQU P2.6     //ASSIGN PIN6 OF PORT2 FOR START OF ADC
  EOC EQU P2.7     //ASSIGN PIN7 OF PORT2 FOR EOC(END OF CONVERSION) OF ADC
  OE EQU P2.5      //ASSIGN PIN4 OF PORT2 FOR OE(OUTPUT ENABLE) OF ADC
  AA EQU P2.0      //ASSIGN PIN0 OF PORT2 FOR AA(CHANNEL SELECT A) OF ADC
  BB EQU P2.1      //ASSIGN PIN1 OF PORT2 FOR BB(CHANNEL SELECT B) OF ADC
  CC EQU P2.2      //ASSIGN PIN2 OF PORT2 FOR CC(CHANNEL SELECT C) OF ADC     
  MOV P1,#0FFH     //SET PORT1 AS INPUT
  SETB EOC      
  CLR ALE       
  CLR START
  CLR OE       //CLEAR EOC,ALE,START
  CLR CC
  CLR BB
  SETB AA       //CLEAR B,C AND SET A:->001
  ACALL DELAY
LOOP: SETB ALE
  ACALL DELAY
  SETB START
  ACALL DELAY
  CLR ALE       //ALE NEEDS A HIGH TO LOW TRANSITION FOR LATCHING THE ADDRESS
  CLR START      //START NEEDS A HIGH TO LOW TRANSITION FOR STARTING CONVERSION(EOC GOES LOW) 
HERE: JB EOC,HERE      //WAIT TILL EOC BECOMES HIGH
NOW: JNB EOC,NOW      //WAIT TILL EOC GO LOW AGAIN
  SETB OE       //SET OE TO ENABLE OUTPUT
  ACALL DELAY      
  MOV A,P1      //MOVE THE CONTENTS TO A
  CLR OE       //CALL CONVERSION
  ACALL CONV      //REPEAT AGAIN
  SJMP LOOP
CONV: MOV R0,#30H
  MOV R1,A      //COPY THE CONTENTS OF A TO R1 AND R2
  MOV R2,A
  ANL 01H,#0F0H     //EXTRACT THE HIGHER NIBBLE TO R1
  ANL 02H,#0FH     //EXTRACT THE LOWER NIBBLE TO R2.
  MOV A,R1
  SWAP A
  MOV R1,A      //BRING THE CONTENTS OF R1 TO LOWER NIBBLE
  ADD A,R0
  MOV R0,A 
  MOV A,@R0
  MOV P3,A
  MOV R0,#30H
  MOV A,R2
  ADD A,R0
  MOV R0,A
  MOV A,@R0
  MOV P0,A
  RET  
DELAY: MOV R5,#0FFH     //DELAY ROUTINE
HERE2: MOV R6,#0FFH
HERE1: DJNZ R6,HERE1
  DJNZ R5,HERE2
  RET  
  END


Comments

Popular posts from this blog

8051 microcontroller programming:Tutorial-Fibonacci series in assembly with Keil

8051 microcontroller programming: Interfacing with push button and displaying the button pressed using Keil