I. LED ĐƠN
1. BÀI TẬP YÊU CẦU
• Viết chương trình điều khiển 16 led đơn: chớp tắt 5 lần  2 led dịch từ trái sang phải  3 led dịch từ phải sang trái sau đó lặp lại
2. PHẦN CỨNG
                
              
                                            
                                
            
 
            
                
31 trang | 
Chia sẻ: duongneo | Lượt xem: 1841 | Lượt tải: 2
              
            Bạn đang xem trước 20 trang tài liệu Báo cáo Rhực hành vi xử lý, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM
KHOA ĐIỆN
Ì
BÁO CÁO THỰC HÀNH VI XỬ LÝ
	GIÁO VIÊN HƯỚNG DẪN:NGUYỄN TRUNG DŨNG
	SINH VIÊN	:NGUYỄN VĂN ĐÀN
	MSSV	:13065631
	LỚP	:DKTD_NHÓM 3
LED ĐƠN
BÀI TẬP YÊU CẦU
VIẾT CHƯƠNG TRÌNH ĐIỀU KHIỂN 16 LED ĐƠN: CHỚP TẮT 5 LẦN à 2 LED DỊCH TỪ TRÁI SANG PHẢI à 3 LED DỊCH TỪ PHẢI SANG TRÁI SAU ĐÓ LẶP LẠI
PHẦN CỨNG
CHƯƠNG TRÌNH VIẾT BẰNG ASM
ORG 0000H
MAIN:
	MOV P1,#0FFH
	MOV P0,#0FFH
	MOV R0,#5
	CT:
	LCALL CHOPTAT
	DJNZ R0,CT
	LCALL DICHLED
	JMP MAIN
CHOPTAT:
	MOV P1,#00H
	MOV P0,#00H
	LCALL DELAY
	MOV P1,#0FFH
	MOV P0,#0FFH
	LCALL DELAY
	RET
DICHLED:
	MOV A,#0FFH	
	LA1:	
	CLR C
	RRC A
	MOV P1,A
	LCALL DELAY
	JB P1.6,LA1
	LA2:	
	RR A
	MOV P1,A
	LCALL DELAY
	JB P1.0,LA2
	MOV P1,#0FEH
	MOV P0,#07FH
	LCALL DELAY
	MOV A,#07FH
	MOV P1,#0FFH
	LA3:
	CLR C	
	RRC A
	MOV P0,A
	LCALL DELAY
	JB P0.6,LA3
	LA4:	RR	A
	MOV P0,A
	LCALL DELAY
	JB P0.0,LA4
	MOV P0,#0FEH
	CALL DELAY
	MOV P0,#0FFH
	LCALL DELAY
	MOV A,#0FFH
	LA5:	
	CLR C
	RLC A
	MOV P0,A
	CALL DELAY
	JB P0.2,LA5
	LA6:
	RL A
	MOV P0,A
	CALL DELAY
	JB P0.7,LA6
	MOV P0,#3FH
	MOV P1,#0FEH
	CALL DELAY
	MOV P0,#7FH
	MOV P1,#0FCH
	CALL DELAY
	MOV P0,#0FFH
	MOV P1,#0F8H
	MOV A,#0F8H
	LA7:
	RL A
	MOV P1,A
	CALL DELAY
	JB P1.7,LA7
	MOV P1,#3FH
	CALL DELAY
	MOV P1,#7FH
	CALL DELAY
	MOV P1,#0FFH
	CALL DELAY
	RET
DELAY:
	MOV R5,#200
	SC3:
	MOV R6,#250
	DJNZ R6,$
	DJNZ R5,SC3
	RET
END
CHƯƠNG TRÌNH VIẾT BẰNG C
#INCLUDE 
VOID DELAY_MS(UNSIGNED INT T)
{
UNSIGNED INT X,Y;
FOR(X=0;X<T;X++)
{
FOR(Y=0;Y<123;Y++);}
}
VOID MAIN()
{
WHILE(1)
{
UNSIGNED INT A,B,C;
FOR(A=0;A<5;A++)
{
P1=0X00;
P0=0X00;
DELAY_MS(500);
P0=0XFF;
P1=0XFF;
DELAY_MS(500);
}
P0=0XFF;
P1=0XEFF;
 FOR(B=0;B<2;B++)
{
P1=P1>>1;
DELAY_MS(500);
}
FOR(B=0;B<6;B++)
{
P1=(P1>>1)|0X80;
DELAY_MS(500);
}
P1=0XFE;
P0=0X7F;
DELAY_MS(500);
P1=0XFF;
P0=0X3F;
DELAY_MS(500);
FOR(C=0;C<8;C++)
{
P0=(P0>>1)|0X80;
DELAY_MS(500);
}
FOR(C=0;C<3;C++)
{
P0=P0<<1;
DELAY_MS(500);
}
FOR(C=0;C<5;C++)
{
P0=(P0<<1)|0X01;
DELAY_MS(500);
}
P0=0X3F;
P1=0XFE;
DELAY_MS(500);
P0=0X7F;
P1=0XFC;
DELAY_MS(500);
P0=0XFF;
P1=0XF8;
DELAY_MS(500);
FOR(B=0;B<8;B++)
{
P1=(P1<<1)|0X01;
DELAY_MS(500);
}
}
}
7 SEG (LED 7 ĐOẠN)
BÀI TẬP YÊU CẦU
VIẾT CHƯƠNG TRÌNH ĐIỀU KHIỂN LED 7 ĐOẠN ĐẾM TỪ 20 VỀ 0
PHẦN CỨNG
CHƯƠNG TRÌNH VIẾT BẰNG ASM
ORG 0000H
MAIN:
	MOV DPTR,#MALED
	MOV R0,#20
	MOV R4,#170
LAP1:
	MOV P0,#0FFH
	MOV B,#10
	MOV A,R0
	DIV AB
	MOV P2,#0BFH
	MOVC A,@A+DPTR
	MOV P0,A
	CALL QUET
	MOV P0,#0FFH
	MOV A,B
	MOV P2,#7FH
	MOVC A,@A+DPTR
	MOV P0,A
	CALL QUET
	MOV P0,#0FFH
	MOV P2,#0DFH
	MOV P0,#0C0H
	CALL QUET
	MOV P0,#0FFH
	MOV P2,#0EFH
	MOV P0,#0C0H
	CALL QUET
	MOV P0,#0FFH
	MOV P2,#0F7H
	MOV P0,#0C0H
	CALL QUET
	MOV P0,#0FFH
	MOV P2,#0FBH
	MOV P0,#0C0H
	CALL QUET
	MOV P0,#0FFH
	MOV P2,#0FDH
	MOV P0,#0C0H
	CALL QUET
	MOV P0,#0FFH
	MOV P2,#0FEH
	MOV P0,#0C0H
	CALL QUET
	DJNZ R4,LAP1
	DEC R0
	MOV R4,#170
	CJNE R0,#-1,LAP1
	SJMP MAIN
MALED:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
QUET:
	MOV R2,#20
	CV:	
	MOV R3,#15
	DJNZ R3,$
	DJNZ R2,CV
	RET
END
CHƯƠNG TRÌNH VIẾT BẰNG C
#INCLUDE 
VOID DELAY_MS(UNSIGNED INT T)
{
UNSIGNED INT X,Y;
FOR(X=0;X<T;X++)
{
FOR(Y=0;Y<100;Y++);}
}
UNSIGNED CHAR CODE A[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
VOID MAIN()
{
CHAR DEM,CHUC,DV;
UNSIGNED INT I;
WHILE(1)
{
FOR(DEM=20;DEM>=0;DEM--)
{
CHUC=DEM/10;
DV=DEM%10;
FOR(I=0;I<130;I++)
{
P0=0XFF;
P2=0X7F;
P0=A[DV];
DELAY_MS(1);
P0=0XFF;
P2=0XBF;
P0=A[CHUC];
DELAY_MS(1);
P0=0XFF;	 
P2=0XDF;
P0=A[0];
DELAY_MS(1);
P0=0XFF;
P2=0XEF;
P0=A[0];
DELAY_MS(1);
P0=0XFF;
P2=0XF7;
P0=A[0];
DELAY_MS(1);
P0=0XFF;
P2=0XFB;
P0=A[0];
DELAY_MS(1);
P0=0XFF;
P2=0XFD;
P0=A[0];
DELAY_MS(1);
P0=0XFF;
P2=0XFE;
P0=A[0];
DELAY_MS(1);
}
}
}
}
PHẦN LCD
BÀI TẬP YÊU CẦU
VIẾT CHƯƠNG TRÌNH HIÊN THỊ TÊN TRƯỜNG,HỌ TÊN SINH VIÊN,MÃ SỐ SINH VIÊN,LỚP,MÔN HỌC GIÁO VIÊN HƯỚNG DẪN NHÓM THỰC HÀNH TRÊN 2 DÒNG CỦA LCD
PHẦN CỨNG
CHƯƠNG TRÌNH VIẾT BẰNG ASM
ORG 0000H 
MAIN:
	MOV A,#38H
	LCALL GUILENH
	MOV A,#0CH
	CALL GUILENH
	MOV A,#01H
	CALL GUILENH
	MOV A,#80H
	CALL GUILENH
	MOV DPTR,#DONG1
	CALL HIENTHI
	CALL DELAY
	MOV A,#0C0H
	LCALL GUILENH
	LCALL DELAY
	MOV DPTR,#DONG2
	CALL HIENTHI
	CALL DELAY
	MOV A,#01H
	CALL GUILENH
	MOV A,#80H
	CALL GUILENH
	MOV DPTR,#DONG3
	CALL HIENTHI
	CALL DELAY
	MOV A,#0C0H
	CALL GUILENH
	MOV DPTR,#DONG4
	CALL HIENTHI
	CALL DELAY
	MOV A,#01H
	CALL GUILENH
	MOV A,#80H
	CALL GUILENH
	MOV DPTR,#DONG5
	CALL HIENTHI
	CALL DELAY
	MOV A,#0C0H
	CALL GUILENH
	MOV DPTR,#DONG6
	CALL HIENTHI
	CALL DELAY
	SJMP MAIN
GUILENH:
	MOV P3,A
	CLR P2.0
	CLR P2.1
	SETB P2.2
	CLR P2.2
	LCALL WAIT
	RET
DULIEU:
	MOV P3,A
	SETB P2.0
	CLR P2.1
	SETB P2.2
	CLR P2.2
	LCALL WAIT
	RET
	MOV R0,#0
HIENTHI:
	MOV A,R0
	MOVC A,@A+DPTR
	CALL DULIEU
	MOV A,#06H
	LCALL GUILENH
	LCALL DELAY
	INC R0
	CJNE R0,#15,HIENTHI
	MOV R0,#0
	LCALL DELAY
	RET
DELAY:
	MOV R4,#200
DC:	MOV R5,#200
	DJNZ R5,$
	DJNZ R4,DC
WAIT: 
	MOV TMOD,#10H
	MOV TH1,#HIGH(-2000)
	MOV TL1,#LOW(-2000)
	CLR TF1
	SETB TR1
	JNB TF1,$
	CLR TR1
	CLR TF1
	RET
DONG1:
DB " TRUONG DAI HOC "
DONG2:
DB " CN TP HCM "
DONG3:
DB " NGUYEN VAN DAN"
DONG4:
DB " MSSV:13095631"
DONG5:
DB " TH VI XU LY"
DONG6:
DB " NHOM 3 "
END
CHƯƠNG TRÌNH VIẾT BẰNG C
#INCLUDE 
SBIT RS=P2^0;
SBIT RW=P2^1;
SBIT EN=P2^2;
#DEFINE LCD_DATA P0
VOID DELAY_MS(UNSIGNED INT T)
{
UNSIGNED INT X,Y;
FOR(X=0;X<T;X++)
{
FOR(Y=0;Y<100;Y++);}
}
VOID LCD_CMD(UNSIGNED CHAR CMD)
{
RS=0;
RW=0;
LCD_DATA=CMD;
EN=0;
EN=1;
DELAY_MS(2);
}
VOID LCD_CH(CHAR C)
{
RS=1;
RW=0;
LCD_DATA=C;
EN=0;
EN=1;
DELAY_MS(1);
}
VOID LCD_OUT(CHAR *ST)
{
UNSIGNED CHAR I=0;
WHILE(ST[I]!=0)
{
LCD_CH(ST[I]);
I++;
}
}
VOID LCD_OUT_CH(UNSIGNED CHAR ROW,UNSIGNED CHAR COL,CHAR *ST)
{
UNSIGNED CHAR CMD;
CMD=(ROW==1?0X80:0XC0)+COL-1;
LCD_CMD(CMD);
LCD_OUT(ST);
}
VOID LCD_INT()
{
LCD_CMD(0X30);
DELAY_MS(5);
LCD_CMD(0X30);
DELAY_MS(1);
LCD_CMD(0X38);
LCD_CMD(0X01);
LCD_CMD(0X0C);
}
VOID MAIN()
{
INT I;
LCD_INT();
LCD_OUT_CH(1,2,"TRUONG DAI HOC");
DELAY_MS(2000);
LCD_CMD(0XC0);
LCD_OUT_CH(2,5,"CN_TP_HCM");
DELAY_MS(2000);
LCD_CMD(0X01);
LCD_CMD(0X80);
LCD_OUT_CH(1,1,"NGUYEN VAN DAN") ;
DELAY_MS(2000);
LCD_CMD(0XC0);
LCD_OUT_CH(2,1,"MSSV:13095631");
DELAY_MS(2000);
LCD_CMD(0X01);
LCD_CMD(0X80);
LCD_OUT_CH(1,1,"THUC HANH VI XU LY NHOM 3");
DELAY_MS(2000);
LCD_CMD(0XC0);
LCD_OUT_CH(2,1,"GVHD:NGUYEN TRUNG DUNG");
WHILE(1)
{
FOR(I=0;I<16;I++)
{
DELAY_MS(500);
LCD_CMD(0X18);
}
FOR(I=0;I<18;I++)
{
DELAY_MS(500);
LCD_CMD(0X1C);
}
}
}
MA TRẬN PHÍM
BÀI TẬP YÊU CẦU
VIẾT CHƯƠNG TRÌNH MA TRẬN PHÍM 
PHẦN CỨNG
CHƯƠNG TRÌNH VIẾT BẰNG ASM
ORG 0000H
MAIN:
	MOV R0,#0 
	MOV A,#0
	MOV R1,#0
LAP2:
	MOV P1,0FFH
	LCALL QUETPHIM
HIENTHI:
	MOV R0,A
	MOV DPTR,#MALED
LAP1:
	MOV P0,#0FFH
	MOV B,#100
	DIV AB
	MOV P2,#0FDH
	MOVC A,@A+DPTR
	MOV P0,A
	LCALL QUET
	MOV P0,#0FFH
	MOV A,B
	MOV B,#10
	DIV AB
	MOV P2,#0FBH
	MOVC A,@A+DPTR
	MOV P0,A
	LCALL QUET
	MOV A,B
	MOV P0,#0FFH
	MOV P2,#0F7H
	MOVC A,@A+DPTR
	MOV P0,A
	LCALL QUET
	MOV P0,#0FFH
	MOV P2,#0FEH
	MOV P0,#0C0H
	LCALL QUET
	MOV A,R0
	SJMP LAP2
QUETPHIM:
	MOV P1,#0FEH
	JNB P1.4,XOA
	JNB P1.5,KEY1
	JNB P1.6,KEY2
	JNB P1.7,KEY3
	MOV P1,#0FDH
	JNB P1.4,KEY4
	JNB P1.5,KEY5
	JNB P1.6,KEY6
	JNB P1.7,KEY7
	MOV P1,#0FBH
	JNB P1.4,KEY8
	JNB P1.5,KEY9
	JNB P1.6,CONG
	JNB P1.7,TRU
	MOV P1,#0F7H
	JNB P1.4,BANG
	JNB P1.5,ANS
	RET
XOA:
	JNB P1.4,$
	MOV A,#0
	JMP LAP2
	RET
KEY1:
	JNB P1.5,$
	MOV A,#1
	JMP HIENTHI
	RET
KEY2:
	JNB P1.6,$
	MOV A,#2	 
	JMP HIENTHI
	RET
KEY3:
	JNB P1.7,$
	MOV A,#3
	JMP HIENTHI
	RET
KEY4:
	JNB P1.4,$
	MOV A,#4
	JMP HIENTHI
	RET
KEY5:
	JNB P1.5,$
	MOV A,#5
	JMP HIENTHI
	RET
KEY6:
	JNB P1.6,$
	MOV A,#6
	JMP HIENTHI
	RET
KEY7:
	JNB P1.7,$
	MOV A,#7
	JMP HIENTHI
	RET
KEY8:
	JNB P1.4,$
	MOV A,#8
	JMP HIENTHI
	RET
KEY9:
	JNB P1.5,$
	MOV A,#9
	JMP HIENTHI
	RET
CONG:
	JNB P1.6,$
	MOV R5,A
	MOV R1,#1
	JMP LAP2
	RET
TRU:
	JNB P1.7,$
	MOV R5,A
	MOV R1,#2
	RET
BANG:
	JNB P1.4,$
	CJNE R1,#0,KQ1
	JMP LAP2
KQ1: CJNE R1,#1,KQ2
	ADD A,R5
	MOV R6,A
	MOV R1,#0
	JMP HIENTHI
KQ2: MOV 00H,A
	MOV A,R5
	SUBB A,00H
	MOV R1,#0
	MOV R6,A
	JMP HIENTHI
	RET
ANS:
	JNB P1.5,$
	MOV A,R6
	RET
QUET:
	MOV R2,#15
CV:	MOV R3,#15
	DJNZ R3,$
	DJNZ R2,CV
	RET
MALED:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
CHƯƠNG TRÌNH VIẾT BẰNG C
#INCLUDE 
VOID DELAY_MS(UNSIGNED INT T)
{
UNSIGNED INT X,Y;
FOR(X=0;X<T;X++)
{
FOR(Y=0;Y<123;Y++);}
}
SBIT HANG1=P1^0;
SBIT HANG2=P1^1;
SBIT HANG3=P1^2;
SBIT HANG4=P1^3;
SBIT COL1=P1^4;
SBIT COL2=P1^5;
SBIT COL3=P1^6;
SBIT COL4=P1^7;
VOID MAIN()
{
UNSIGNED CHAR KEY=0;
INT CHUC,DV,I,TRAM,A,ANS;
UNSIGNED CHAR CODE A[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
P1=0XFF;
P0=0XFF;
WHILE (1)
{
HANG1=0;
IF(COL1==0) 
{
WHILE(COL1==0)
{
}
KEY=0;
}
IF(COL2==0) 
{
WHILE(COL2==0)
{
}
KEY=1;
}
IF(COL3==0) 
{
WHILE(COL3==0)
{
}
KEY=2;
}
IF(COL4==0) 
{
WHILE(COL4==0)
{
}
KEY=3;
}
HANG1=1;
HANG2=0;
IF(COL1==0) 
{
WHILE(COL1==0)
{
}
KEY=4;
}
IF(COL2==0) 
{
WHILE(COL2==0)
{
}
KEY=5;
}
IF(COL3==0) 
{
WHILE(COL3==0)
{
}
KEY=6;
}
IF(COL4==0) 
{
WHILE(COL4==0)
{
}
KEY=7;
}
HANG2=1;
HANG3=0;
IF(COL1==0) 
{
WHILE(COL1==0)
{
}
KEY=8;
}
IF(COL2==0) 
{
WHILE(COL2==0)
{
}
KEY=9;
}
IF(COL3==0) 
{
WHILE(COL3==0)
{
}
A=1;
I=KEY;
}
IF(COL4==0) 
{
WHILE(COL4==0)
{
}
A=2;
I=KEY;
}
HANG3=1;
HANG4=0;
IF(COL1==0) 
{
WHILE(COL1==0)
{
}
IF(A==1) 
{
KEY=KEY+I;
ANS=KEY;
A=0;
}
IF(A==2) 
{
KEY=I-KEY;
A=0;
ANS=KEY;
}
}
IF(COL2==0) 
{
WHILE(COL2==0)
{
}
KEY=ANS;
}
IF(COL3==0) 
{
WHILE(COL3==0)
{
}
KEY=KEY+1;
A=0;
}
HANG4=1;
TRAM=KEY/100;
CHUC=(KEY%100)/10;
DV=(KEY%100)%10;
P2=0XFB;
P0=A[CHUC];
DELAY_MS(5);
P0=0XFF;
P2=0XF7;
P0=A[DV];
DELAY_MS(5);
P0=0XFF;
P2=0XFD;
P0=A[TRAM];
DELAY_MS(5);
P0=0XFF;
P2=0XFE;
P0=0XC0;
DELAY_MS(5);
}
}
ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC (STEP MOTOR)
BÀI TẬP YÊU CẦU
ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC THEO YÊU CẦU:NHẤN SW1 BẬT CHẾ ĐỘ HIỂN THỊ VÀ CHẠY ĐỘNG CƠ.SW2 ĐỘNG CƠ QUAY THUẬN CHẬM.NHẤN SW3 ĐỘNG CƠ QUAY NGHỊCH NHANH.NHẤN SW4 ĐỘNG CƠ DỪNG
PHẦN CỨNG
CHƯƠNG TRÌNH VIẾT BẰNG ASM
ORG 0000H
MAIN:
	MOV R7,#0
	MOV R0,#0
	MOV P3,#00H
	MOV R6,#0
	MOV P1,#0FFH
LAP1:
	CJNE R7,#1,LAP4
	CALL HIENTHI
LAP4:MOV P1,#0FFH
	JNB P1.4,ON	 
	CJNE R0,#0,LAP2
	JMP LAP1
LAP2:
	CALL HIENTHI	
	JNB P1.5,THUAN
	JNB P1.6,NGHICH	
	JNB P1.7,STOP
	JMP LAP2
THUAN:
	MOV R6,#0
	MOV P3,#00H
	MOV 05H,#10
	MOV R3,#80
	CALL DELAY
XX01:MOV 01H,#2
XX1:MOV 00H,#230
	TD1:SETB C
	MOV A,#00H
X1:RLC A
	MOV P3,A
	LCALL DELAY
	JNB P3.3,X1
	CALL HIENTHI
	DJNZ 00H,TD1
	DJNZ 01H,XX1 
	INC R6
	DJNZ 05H,XX01
	JMP LAP1
ON:
	MOV R1,#1
	JMP LAP2
NGHICH:
	MOV R6,#0
	MOV P3,#00H
	MOV 04H,#30
	MOV R3,#20 
	CALL DELAY
XX02:
	MOV 03H,#2
XX2:
	MOV 02H,#230
	TD2:CLR C
	CALL HIENTHI
	MOV A,#10H
	X12:RRC A
	MOV P3,A
	CALL DELAY
	JNC X12
	CALL HIENTHI
	DJNZ 02H,TD2
	DJNZ 03H,XX2
	INC R6
	DJNZ 04H,XX02 
	JMP TD2
STOP:
	MOV P3,#00H
	MOV R0,#0
	MOV R7,#1
	JMP LAP1
DELAY:
	JNB P1.4,ON
	JNB P1.5,THUAN
	JNB P1.6,NGHICH
	JNB P1.7,STOP 
	DJNZ R3,DELAY
	RET
HIENTHI:
	MOV DPTR,#MALED
	MOV P0,#0FFH
	MOV B,#10
	MOV A,R6
	DIV AB
	MOV P2,#0FBH
	MOVC A,@A+DPTR
	MOV P0,A
	CALL QUET
	MOV P0,#0FFH
	MOV A,B
	MOV P2,#0F7H
	MOVC A,@A+DPTR
	MOV P0,A
	CALL QUET
	RET
QUET:
	MOV R4,#100
CV:	MOV R5,#100
	DJNZ R5,$
	DJNZ R4,CV
	RET
MALED:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END