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: 1634 | 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