Báo cáo thực hành Vi xử lý

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  
MSSV  
:NGUYỄN VĂN ĐÀN  
:13065631  
LỚP  
:DKTD_NHÓM 3  
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  
3. 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  
4. CHƯƠNG TRÌNH VIẾT BẰNG C  
#include <REGX52.H>  
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);  
}
}
}
II.  
7 SEG (LED 7 ĐOẠN)  
1. 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  
2. PHẦN CỨNG  
3. 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  
4. CHƯƠNG TRÌNH VIẾT BẰNG C  
#include <REGX52.H>  
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);  
}
}
}
}
III.  
PHẦN LCD  
1. 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  
2. PHẦN CỨNG  
3. 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  
MOV R5,#200  
DJNZ R5,$  
DC:  
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  
4. CHƯƠNG TRÌNH VIẾT BẰNG C  
#include <REGX52.H>  
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);  
}
}
}
IV.  
MA TRẬN PHÍM  
1. BÀI TẬP YÊU CẦU  
Viết chương trình ma trận phím  
2. PHẦN CỨNG  
3. 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:  
KEY2:  
KEY3:  
KEY4:  
JNB P1.5,$  
MOV A,#1  
JMP HIENTHI  
RET  
JNB P1.6,$  
MOV A,#2  
JMP HIENTHI  
RET  
JNB P1.7,$  
MOV A,#3  
JMP HIENTHI  
RET  
JNB P1.4,$  
MOV A,#4  
JMP HIENTHI  
RET  
KEY5:  
KEY6:  
KEY7:  
KEY8:  
KEY9:  
CONG:  
JNB P1.5,$  
MOV A,#5  
JMP HIENTHI  
RET  
JNB P1.6,$  
MOV A,#6  
JMP HIENTHI  
RET  
JNB P1.7,$  
MOV A,#7  
JMP HIENTHI  
RET  
JNB P1.4,$  
MOV A,#8  
JMP HIENTHI  
RET  
JNB P1.5,$  
MOV A,#9  
JMP HIENTHI  
RET  
JNB P1.6,$  
MOV R5,A  
MOV R1,#1  
JMP LAP2  
Tải về để xem bản đầy đủ
docx 31 trang yennguyen 30/03/2022 7380
Bạn đang xem 20 trang mẫu của tài liệu "Báo cáo thực hành Vi xử lý", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • docxbao_cao_thuc_hanh_vi_xu_ly.docx