25
Practical Manual Microcontroller Prof. Suraj R. Gaikwad

Mic practicals

Embed Size (px)

Citation preview

Page 1: Mic practicals

Practical

Manual

Microcontroller

Prof. Suraj R. Gaikwad

Page 2: Mic practicals

Prof. Suraj R. Gaikwad MIC

Exp: 1) To write an assembly language program for arithmetic operations. Program: 1) MOV A,#20H MOV F0,#20H ADD A,F0 RET 2) MOV A,#20H MOV F0,#10H SUB A,F0 RET 3) MOV A,#04H MOV F0,#02H MUL A,F0 RET 4) MOV A,#10H MOV F0,#02H ADD A,F0 RET Results: Addition: A = 40H Subtraction: A = 0AH Multiplication: A = 08H Division: A = 05H

Page 3: Mic practicals

Prof. Suraj R. Gaikwad MIC

Exp:2) To develop an assembly language program to transfer block of 10 bytes stored in internal data memory from location 40H to 60H. Program: ORG 0000H MOV R0,#40H MOV R1,#60H MOV R2,#0AH LOOP:MOV A,@R0 MOV @R1,A INC R0 INC R1 DJNZ R2, LOOP END

Page 4: Mic practicals

Prof. Suraj R. Gaikwad MIC

Exp:3) To develop an assembly language program to get square of numbers. Program: ORG 0000H MOV R0,#40H MOV R1,#60H MOV R2,#0AH LOOP1:MOV A,@R0 MOV B,@R0 MUL AB MOV @R1,A INC R0 INC R1 DJNZ R2,LOOP1 END Result: Input:

Output:

00H = 0D

01H = 1D

04H = 4D

09H = 9D

10H = 16D

19H = 25D

24H = 36D

31H = 49D

40H = 64D

51H = 81D

Page 5: Mic practicals

Prof. Suraj R. Gaikwad MIC

Exp:4) To develop program for arranging 10 numbers in descending order. Program: ORG 00H ARR EQU 70H L0:MOV R1,#ARR MOV R0,#ARR MOV R2,#0AH MOV R3,#00H DEC R2 L1:MOV A,@R0 MOV B,A INC R1 SUBB A,@R1 JNC L2 MOV A,B XCH A,@R1 MOV @R0,A MOV R3,#01H L2:INC R0 DJNZ R2,L1 CJNE R3,#00,L0 SJMP $ END Result: Input:

Output:

Page 6: Mic practicals

Prof. Suraj R. Gaikwad MIC

Exp:5) To develop a program to generate Square wave over port pins. Program: ORG 0000H :initialization MOV TMOD,#10H :move 10H into timer/counter mode control resister UP: MOV TL1,#0D2H :move 0D2H into timer 1 low byte MOV TH1,#0FFH :move offH into timer 1 high byte SETB TR1 :addressed TR1 is set, TR1=timer 1 run control bit WAIT: JNB TF1,WAIT :jump if addressed TR1 is 0, otherwise proceed with next instruction CLR TR1 :adressed TR1 is cleared CPL P1.5 : complement the addressed P1.5 CLR TF1 : adressed TF1 is cleared, TF1=timer 1 overflow flag SJMP UP :program branches unconditionally to address indicated END :end Result:

Page 7: Mic practicals

Prof. Suraj R. Gaikwad MIC

Exp:6) To generate Square wave using DAC. Circuit Diagram:

C Program: #include <REG51xD2.H> #include <stdio.h> sbit Amp = P3^3; /* Port line to change amplitude */ sbit Fre = P3^2; /* Port line to change frequency */ void delay(unsigned int x) /* delay routine */ { for(;x>0;x--); } main() { unsigned char on = 0x7f,off=0x00; unsigned int fre = 100; while(1)

Page 8: Mic practicals

Prof. Suraj R. Gaikwad MIC

{ if(!Amp) /* if user choice is to change amplitude */ { while(!Amp); /* wait for key release */ on+=0x08; /* Increase the amplitude */ } if(!Fre) /* if user choice is to change frequency */ { if(fre > 1000) /* if frequency exceeds 1000 reset to default */ fre = 100; while(!Fre); /* wait for key release */ fre += 50; /* Increase the frequency */ } P0=on; /* write amplitude to port */ P1=on; delay(fre); P0 = off; /* clear port */ P1 = off; delay(fre); } } Output Waveform:

Page 9: Mic practicals

Prof. Suraj R. Gaikwad MIC

Assembly Program: ORG 0000H

MOV DPTR, #8000H UP:MOV DPL,#40H

MOV DPH,#40H CLR A

MOVC A,@A+DPTR SETB P1.5

WAIT:JNB P1.5,WAIT CLR P1.5 SJMP UP

END Output Waveform:

Page 10: Mic practicals

Prof. Suraj R. Gaikwad MIC

Exp:7) To write a program to drive Stepper Motor.

Theory:

Driving Unipolar Stepper Motor with 8051:

Unipolar stepper motors can be used in three modes namely the Wave Drive, Full Drive and Half Drive mode.

Half Drive Stepping Sequence

Page 11: Mic practicals

Prof. Suraj R. Gaikwad MIC

Interfacing Using L293D:

Interfacing Using ULN2003:

Page 12: Mic practicals

Prof. Suraj R. Gaikwad MIC

Programs: Keil C Code for Wave Drive:

Page 13: Mic practicals

Prof. Suraj R. Gaikwad MIC

Keil C Code for Full Drive:

Page 14: Mic practicals

Prof. Suraj R. Gaikwad MIC

Keil C Code for Half Drive:

Page 15: Mic practicals

Prof. Suraj R. Gaikwad MIC

Result:

1) Wave drive stepper sequence:

Page 16: Mic practicals

Prof. Suraj R. Gaikwad MIC

2) Full drive stepping sequence:

Page 17: Mic practicals

Prof. Suraj R. Gaikwad MIC

3) Half wave stepping sequence:

Page 18: Mic practicals

Prof. Suraj R. Gaikwad MIC

Page 19: Mic practicals

Prof. Suraj R. Gaikwad MIC

Page 20: Mic practicals

Prof. Suraj R. Gaikwad MIC

Exp:8) To write a program to drive Stepper Motor in clockwise direction and anti-clockwise direction. Program: ORG 0000H MOV R2,#12H MOV A,#88H LOOP1: MOV P2,A RR A DJNZ R2, LOOP1 MOV R2,#12H MOV A,#11H LOOP2: MOV P2,A RL A DJNZ R2, LOOP2 END Result:

Page 21: Mic practicals

Prof. Suraj R. Gaikwad MIC

Page 22: Mic practicals

Prof. Suraj R. Gaikwad MIC

Page 23: Mic practicals

Prof. Suraj R. Gaikwad MIC

Exp:9) To write a program to read keyboard and display code. Diagram:

Program:

• Program to interface matrix keyboard 4x4 • Rows are connected to the Port pins P1.0-P1.3 & Columns are connected to

Port pins P2.0-P2.3 • Rows are grounded one by one and read columns Seven segment display is

connected at port P0 ORG 00H AJMP START ORG 13H RETI START:MOV P0,#00H MOV P2,#0FH ; Port Pins P2.0 to P2.3 i/p pins and P2.4 to P2.7 o/p pins MOV P1,#00H ; Port P0 output port REL: MOV P1,#00H ; make all rows ground to check all keys MOV A,P2 ; read port p2 to ensure that all keys released

Page 24: Mic practicals

Prof. Suraj R. Gaikwad MIC

ANL A,#0FH ; maks upper bits because they are not used CJNE A,#0FH,REL ; check till all keys released AGAIN: ACALL DELAY MOV A,P2 ; see if any key pressed or not? ANL A,#0FH ; mask upper bits CJNE A,#0FH,KPRESS ; if a is not equal to 0fh then key is pressed SJMP AGAIN ; check again if key is not pressed KPRESS: ACALL DELAY MOV A,P2 ; ANL A,#0FH ; mask unused upper bits CJNE A,#0FH,KPRESS1 ; if a is not equal to 0fh then key is pressed SJMP AGAIN ; check again if key is not pressed KPRESS1: MOV P1,#0FEH ; ground row 0 MOV A,P2 ; read all columns ANL A,#0FH ; mask unused upper bits CJNE A,0FH,R_0 ; key is pressed in first row (row 0),check columns MOV P1,#0FDH ; Ground ROW 1 MOV A,P2 ; read all columns ANL A,#0FH ; mask unused upper bits CJNE A,0FH,R_1 ;key is pressed in second row (row 1),check columns MOV P1,#0FBH ; ground row 2 MOV A,P2 ; read all columns ANL A,#0FH ; mask unused upper bits CJNE A,0FH,R_2 ;key is pressed in third row (row 2),check columns MOV P1,#0F7H ; ground row 0 MOV A,P2 ; read all columns ANL A,#0FH ; mask unused upper bits CJNE A,0FH,R_3 ;key is pressed in fourth row (row 3),check columns LJMP AGAIN R_0: MOV DPTR,#KCODE0 ;set dptr=start of row 0 SJMP CHECK_C R_1: MOV DPTR,#KCODE1 ;set dptr=start of row 1 SJMP CHECK_C R_2: MOV DPTR,#KCODE2 ;set dptr=start of row 2 SJMP CHECK_C R_3: MOV DPTR,#KCODE3 ;set dptr=start of row 3 CHECK_C: RRC A ;check whether carry occurs or not JNC GET_CODE

Page 25: Mic practicals

Prof. Suraj R. Gaikwad MIC

INC DPTR SJMP CHECK_C GET_CODE: CLR A MOVC A,@A+dptr MOV P0,A LJMP REL DELAY: MOV R7,#0FFh DLOOP: MOV R6,#0FFh D_LOOP: DJNZ R6,D_LOOP DJNZ R7,DLOOP RET Result: KCODE0: DB '0','1','2','3' ; These codes are for LCDs KCODE1: DB '4','5','6','7' ; Replace this code by seven KCODE2: DB '8','9','A','B' ; segment code as per your KCODE3: DB 'C','D','E','F' ; Circuit.