
DKS GROUP http://www. dks.com.vn
Nguyen Manh Truong Mobi : 0988857861
62
// bat nga tu
if ((out_left==vach)&&(out_right==vach))
{
while ((LEFT==vach)&&(RIGHT==vach))
{
d++;
if (d==100)
{
dem++;
d=0;
if (dem<songatu)
{ h_thi(dem); motor(forward); delay(1200);}
break;//thoat khoi while
}//if
}// while
if (dem==songatu) {h_thi(dem);motor(stop);dem=0;break;}
}
// chinh lech nhieu
}//end of while (1)
}//end of golong_ngatmo
Trong khi thi đấu ,có rất nhiều các tính huống xảy ra .Do đó người lập trình
cần phải xây dựng nhiều chiến thuật thi đấu khác nhau để đảm bảo có thể xử
lý kịp thời mọi tình huống có thể có trên sân.
đẻ hiển thị chiến thuật thi đấu ,bạn có thể dung led 7 thanh hay màn hình
LCD ,một hệ thống các phím bấm để điều khiển ,để lựa chọn các giải pháp
thi đấu.Thực chất ,ở phần này chúng ta đã quy về bài toán lập trình giao tiếp
vi điều khiển với bàn phím và màn hình LCD ,led 7 thanh

DKS GROUP http://www. dks.com.vn
Nguyen Manh Truong Mobi : 0988857861
63
7.1.Sơ đồ nguyên lý
a)Giao tiếp với led 7 thanh
T1
5V
Rp2
470
L
e
d
_
P
h
a
t
2
A3
/INT1
PO2
PO5
5V
Rp3
470
L
e
d
_
P
h
a
t
3
5V
SW1
B2
/INT0
P30(RXD)
R7
R
R4
R
R5
R
R6
R8
PO6
R9
5V
5V
Rp4
470
L
e
d
_
P
h
a
t
4
U16
SN7447
D0 7
D1 1
D2 2
D3 6
B
I
/
R
B
O
4
R
B
I
5
L
T
3
D
10
E
9
F
15
A
13
B
12
C
11
G
14
V
C
C
1
6
G
N
D
8
Led_Phat6
PO0
PO1
a
g
fb
d
c
e
U17
.2
.1
.9
.7
.6
.4
.5
.
8
D
P
1
0
V
c
c
3
PO2
PO3
B3
Y1
11.509Mhz
PO3
P31(TXD)
P31(TXD)
Rp5
470
L
e
d
_
P
h
a
t
5
5V
Rs1
10k
5V
B4
5V
Cta1 30p
5V
Rp6
470
L
e
d
_
P
h
a
t
6
PO4 Start
P30(RXD)
ISP_program
CON10AP
1 2
3 4
5 6
7 8
910
Led_Thu1
B5
PO5
Led_Thu2
PO0
Cs1
100uF
PO6
Led_Thu3
Cta230p
PO1
Vidieukhien6
Led_Thu4
PO7
PO2
P
O
7
Led_Thu5
Vidieukhien5
Connecter_sensor
CON16AP
1 2
3 4
5 6
7 8
910
11 1213 14
15 16
SELECT_PRO
PO3
PO1
R_24V
10
PO1
Led_Thu6
Vidieukhien4
PO4
RST
5V
Led_Phat1
Vidieukhien3
PO5
5V
Vidieukhien2
PO6
Led_Phat2
Vidieukhien1
PO7
int
CON10
1
2
3
4
5
6
7
8
9
10
Led_Phat3
Rsip1
10k
1 2
3
4
5
6
7
8
9
/INT0
A5
5V
5V
Led_Phat4
A4
/INT1
CL1
104
Led_Phat5
Rp1
470
B1
PO0
T1
A1
5V
RST T0
MASTER
P89V51RD2
RST
9XTAL2
18 XTAL1
19
G
N
D
2
0
PSEN 29
ALE/PROG 30
EA/VPP
31
V
C
C
4
0
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P2.0/A8 21
P2.1/A9 22
P2.2/A10 23
P2.3/A11 24
P2.4/A12 25
P2.5/A13 26
P2.6/A14 27
P2.7/A15 28
P3.0/RXD 10
P3.1/TXD 11
P3.2/INTO 12
P3.3/INT1 13
P3.4/TO 14
P3.5/T1 15
P3.6/WR 16
P3.7/RD 17
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
T0
L
e
d
_
P
h
a
t
1
A2
PO4
Ở sơ đồ trên ,ta sử dụng 1 led 7 thanh để hiển thị các chiến thuật thi đấu 1
,2 ,3.v.v.2 phím bấm choice và start để lựa chọn chiến thuật.Một led 7 thanh
có thể hiển thị được 10 chiến thuật thi đấu tương ứng với các số từ 0 đến
9.Ngoài ra ,led 7 thanh còn được dùng để hiển thị số ngã tư.
7.2.Mã nguồn
void main()
{
unsigned char tam=0;

DKS GROUP http://www. dks.com.vn
Nguyen Manh Truong Mobi : 0988857861
64
init();
P2_6=0;
P2_7=0;
h_thi(tam);
selection();
switch (select)
{
case 0:
{
hanhtrinh0();
}
break;
case 1:{
hanhtrinh1();
}
break;
case 2:{
hanhtrinh2();
}
break;
case 3:{
hanhtrinh3();
}
break;
case 4:{
hanhtrinh4();
}
break;
case 5:{
hanhtrinh5();
}
break;
case 6:{
hanhtrinh6();
}
break;
case 7:{

DKS GROUP http://www. dks.com.vn
Nguyen Manh Truong Mobi : 0988857861
65
hanhtrinh7();
}
break;
case 8: {
hanhtrinh8();
}
break;
case 9:{
hanhtrinh9();
}
break;
}//end of swith
delay(50000);
h_thi(tam);
}
/* cac ham chuc nang */
void selection()
{
P2_6=0;
P2_7=0;
while (P2_7==0)
{
while (P2_6==1)
{
select++;
if (select>9) select=0;
h_thi(select);
delay(12000);
}
}
}//end
void h_thi(unsigned char so)
{
if (so==0) {P0_3=0;P0_2=0;P0_1=0;P0_0=0;}
else if (so==1) {P0_3=0;P0_2=0;P0_1=0;P0_0=1;}
else if (so==2) {P0_3=0;P0_2=0;P0_1=1;P0_0=0;}
else if (so==3) {P0_3=0;P0_2=0;P0_1=1;P0_0=1;}

DKS GROUP http://www. dks.com.vn
Nguyen Manh Truong Mobi : 0988857861
66
else if (so==4) {P0_3=0;P0_2=1;P0_1=0;P0_0=0;}
else if (so==5) {P0_3=0;P0_2=1;P0_1=0;P0_0=1;}
else if (so==6) {P0_3=0;P0_2=1;P0_1=1;P0_0=0;}
else if (so==7) {P0_3=0;P0_2=1;P0_1=1;P0_0=1;}
else if (so==8) {P0_3=1;P0_2=0;P0_1=0;P0_0=0;}
else if (so==9) {P0_3=1;P0_2=0;P0_1=0;P0_0=1;}
}
b) Sơ đồ dùng LCD
P2.0
P0.4
P2.1
P0.6
P2.2
VCC
C_nhieu
104
IR
Enter
Choice
l
e
d
_
c
o
n
g
SW2_cong
SW3_tru
l
e
d
_
t
r
u
P3.3
Jum_cong
1 2
D0
D1
D2
D3
P0.7
P3.3
P0.6
P0.5
l
e
d
_
e
n
t
e
r
l
e
d
_
c
h
o
i
c
e
VCC
P0.5
P0.7
P2.3
U1
AT89S8252
RST
9XTAL2 18
XTAL1 19
G
N
D
2
0
PSEN 29
ALE/PROG 30
EA/VPP
31
VCC
40
P1.0/T2
1
P1.1/T2-EX
2
P1.2
3
P1.3
4
P1.4/SS
5
P1.5/MOSI
6
P1.6/MISO
7
P1.7/SCK
8
P2.0/A8 21
P2.1/A9 22
P2.2/A10 23
P2.3/A11 24
P2.4/A12 25
P2.5/A13 26
P2.6/A14 27
P2.7/A15 28
P3.0/RXD 10
P3.1/TXD 11
P3.2/INT0 12
P3.3/INT1 13
P3.4/T0 14
P3.5/T1 15
P3.6/WR 16
P3.7/RD 17
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P2.4
P2.5
P2.6
P2.7
EA
RX
TX
P1.0
P1.1
P1.2
P1.3
VCC
P1.4
P1.5
P1.6
C
_
R
E
S
E
T
47u
P1.7
R_RESET
1
0
0
o
m
RST
SW_reset
P
0
.
4
P
2
.
0
VCC
P
2
.
1
P
2
.
2
P
2
.
3
P
2
.
4
P
2
.
5
C1_ZTA
33
P
2
.
6
P
2
.
7
VCC
C2_ZTA
33
LCD Display 2x16
D1
LCD2x16
G
N
D
1
V
d
d
2
V
E
E
3
R
S
4
R
W
5
E
6
D
0
7
D
1
8
D
2
9
D
3
1
0
D
4
1
1
D
5
1
2
D
6
1
3
D
7
1
4
A
15
K
16
P
0
.
3
ZTA
12M
R_SIP10
RESISTOR SIP 10
12
3
4
5
6
7
8
9
10
VCC
Jum_tru
1 2
EA
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
VCC
P0.0
P0.1
P0.2
P0.3