ƯƠ

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Ơ

I.

Ậ Ầ

1. BÀI T P YÊU C U

(cid:0) ươ ế ớ ắ ề ể ị ừ t 5 l n ầ  2 led d ch t trái sang ph i ả  3 ặ ạ ừ ả t ch Vi ị led d ch t ng trình đi u khi n 16 led đ n: ch p t  ph i sang trái sau đó l p l ơ i

Ứ Ầ 2. PH N C NG

ƯƠ Ằ Ế NG TRÌNH VI T B NG ASM

3. CH

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

ƯƠ Ằ Ế NG TRÌNH VI T B NG C

4. CH

#include 

void delay_ms(unsigned int t)

{

unsigned int x,y;

for(x=0;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)Ạ

II.

Ầ Ậ

1. BÀI T P YÊU C U

(cid:0) ế ươ ề ế ạ ừ ề Vi t ch ể ng trình đi u khi n led 7 đo n đ m t 20 v  0

Ứ Ầ 2. PH N C NG

ƯƠ Ằ Ế NG TRÌNH VI T B NG ASM

3. CH

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

ƯƠ Ằ Ế NG TRÌNH VI T B NG C

4. CH

#include 

void delay_ms(unsigned int t)

{

unsigned int x,y;

for(x=0;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

III.

Ậ Ầ

1. BÀI T P YÊU C U

ườ ọ ọ ố ớ ng,h  tên sinh viên,mã s  sinh viên,l p,môn h c giáo viên ng trình hiên th  tên tr ự ươ ẫ ủ ế Vi ướ h ị t ch ng d n nhóm th c hành trên 2 dòng c a LCD

Ứ Ầ 2. PH N C NG

ƯƠ Ằ Ế NG TRÌNH VI T B NG ASM

3. CH

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

ƯƠ Ằ Ế NG TRÌNH VI T B NG C

4. CH

#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

{

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

ƯƠ Ằ Ế NG TRÌNH VI T B NG ASM

3. CH

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

ƯƠ Ằ Ế NG TRÌNH VI T B NG C

4. CH

#include 

void delay_ms(unsigned int t)

{

unsigned int x,y;

for(x=0;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)

V.

Ậ Ầ

1. BÀI T P YÊU C U

ể ế ộ ể ầ ậ ộ ộ ị c theo yêu c u:nh n sw1 b t ch  đ  hi n th  và ch y đ ng c .sw2 ơ ướ ậ ơ ơ ừ ạ ộ ấ ậ ấ ơ ộ ị ấ ề Đi u khi n đ ng c  b ơ ộ đ ng c  quay thu n ch m.nh n sw3 đ ng c  quay ngh ch nhanh.nh n sw4 đ ng c  d ng

Ứ Ầ 2. PH N C NG

ƯƠ Ằ Ế NG TRÌNH VI T B NG ASM

3. CH

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