Tải bản đầy đủ (.pdf) (8 trang)

ĐỒ ÁN ROBOT - CHƯƠNG 7 pps

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (670.42 KB, 8 trang )

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
9 10
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
9 10

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
9
XTA L2
18
XTA L1
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
9
XTA L2
18
XTA L1
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


DKS GROUP http://www. dks.com.vn
Nguyen Manh Truong Mobi : 0988857861

67
Sơ đồ trên thay thế led 7 thanh bằng LCD .Nhìn chung dung LCD để hiển
thị chiến thuật thi đấu chuyên nghiệp hơn (vi hiển thị được cả chữ ) tuy
nhiên , dung LCD khá tốn kém và không thật sự hiệu quả .Vì thế ,tốt nhất là
các bạn nên sử dụng led 7 thanh để hiển thị chiến thuật thi đấu.

/******************************/
// LCD
void lenh ()
{
RS=0; EN=1; delay (50); EN=0; delay (100);
}

void ghi ()
{
RS=1; EN=1; delay (50); EN=0; delay (100);
}


void LCDwrite(unsigned char c)
{

P2=c;
ghi();
}

void LCDputs(unsigned char *s,unsigned char row)
{
unsigned char len;
if(row==1)
{ P2=0x80;lenh (); }
else { P2=0xC0; lenh ();}
len=strlen(s);
while(len!=0)
{
LCDwrite(*s);

s++;
len ;
}
}

void LCDcontrol(unsigned char dk)
DKS GROUP http://www. dks.com.vn
Nguyen Manh Truong Mobi : 0988857861

68
{
P2=dk; lenh ();
}

void init_LCD ()
{
delay(400);
LCDcontrol(0x38); //LCD 2 dong _ 5x7
LCDcontrol(0x0C); //bat hien thi, tat con tro
LCDcontrol(0x01); //xoa man hinh
}
/*****************************/

void keyboard()
{
unsigned char key=0;
unsigned char test=0;
LCDcontrol(0x01);
choice=enter=1;
LCDputs("Robot Ready",1);

delay(100000);
LCDcontrol(0x01);
LCDputs("1:Golong 2:Around ",1);
LCDputs("3:Turn left 4:Turn right",2);
delay(100000);
LCDcontrol(0x01);
while(1)
{
LCDputs("1: 2: 3: 4:”,2);
while(choice==0)
{
delay(10000);
key++;
LCDcontrol(0x01);
if (key==1)LCDputs("1 ",1);
if (key==2)LCDputs("2 ",1);
if (key==3)LCDputs("3 ",1);
if (key==4)LCDputs("4 ",1);
LCDputs("1:C 2:S 3:D 4:E",2);
if (key>4) { LCDputs("0 ",1);key=0;}
DKS GROUP http://www. dks.com.vn
Nguyen Manh Truong Mobi : 0988857861

69
}
if (key==1)while(enter==0) golongr();
if (key==2)while(enter==0) Around();
if (key==3)while(enter==0) left();
if (key==4)while(enter==0) test=1;
if (test==1) break;


}//while(1)

} // keyboard



Ở bài này ,chúng ta sẽ hoàn thiện một robot hoàn chỉnh để thi đấu .
Chúng ta sử dụng robot như hình dưới đây

×