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 24440 Free
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