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.
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
Post a Comment