You are on page 1of 59

U Ban Nhn Dn Tnh Qung Nam

Trng Cao ng Kinh T - K Thut Qung Nam

Bi ging: K thut robot

Chng 1: GII THIU V ROBOT CC MODUL CA ROBOT


Bi ny s gii thiu cho cc bn mt cch tng quan v robot v cc modul ca
robot cng nh mt s kinh nghim khi lm robocon.
1.1. Gii thiu v robot
1.1.1. Nhng hnh nh v robot trong cc cuc thi robocon

Hnh 1.1.BK-FIRE 2005 (Robot t ng)

Hnh 1.2. BK-FIRE 2005 (Robot bng tay)

Hnh 1.3. FXR 2004 (robot t ng)

Hnh 1.4. BKPRO2006


3

1.1.2. Cc modul trong robot


Trong robocon, c 2 loi robot l robot t ng v robot iu khin bng tay.
Robot bao gm 3 phn chnh: C kh, mch in t v lp trnh.
+ C kh:
Phn ny bao gm cc kt c c kh ca robot. Phn ny mi nm u thay i
tu thuc vo thi. y chnh l phn th hin tng ca bn. Khi c mt tng
c o, mt kt cu c kh tt, bn s c nhiu c hi dnh chin thng. Trong cuc
thi robocon, tng ng vai tr rt quan trng. Do , khi thit k c kh, ton i
cn phi hp bn k lng a ra mt gii php thit k c kh ti u nht. thit
k c kh, cc bn c th dng cc phn mm thit k c kh chuyn dng nh Solid
work, Autocad.

.
Hnh 1.3. C cu bnh xch

Hnh 1.4. C cu kh nn
4

C cu kh nn c BK-FIRE s dng u tin trong cuc thi robocon 2005.


T ,c cu ny c rt nhiu i s dng v rt thnh cng nh FAS-01, BKFIRE (2006).
+ Mch in t:
Mch in t trong robot ng vai tr nh nhng mch mu trong mt c th
ngi. N ng vai tr kt ni ton b nhng b phn khc trong robot thnh mt th
thng nht.
Mch in t trong robot bao gm cc phn chnh:
- Mch vi iu khin (8051, PIC, AVR) ng vai tr nh b no ca robot iu
khin ton b hot ng ca robot theo chng trnh lp sn.
- Mch sensor ng vai tr nh cc gic quan ca robot gip robot nhn dng
mi trng xung quanh gi tn hiu v vi iu khin.
- Mch cng sut iu khin ng c, dng iu khin cc c cu ca robot.
- Mch chin thut thi u cho php ngi s dng c th tu la chon chin thut
khi trn sn thi u.

Hnh 1.5. Mch in t trong robocon (FXR)

Hnh 1.6. Mch robot (BK-PRO 2006)


+ Lp trnh:
Chng trnh trong robot ging nh b no ca mt c th ngi, robot ch hot
ng c khi c chng trnh ci t sn cho n. Cc chin tht thi u, ng chy
ca robot l do ngi lp trnh qut nh. Hai ngn ng c s dng nhiu trong
robocon l C v ASM. Tuy nhin, ngn ng C c s dng nhiu nht v C c cu
trc d debug li v c bit thun tin lm nhng chng trnh ln (Cc chng trnh
trong robocon rt phc tp).
mt robot c th hot ng tt, cn phi c s phi hp cht ch gia cc phn
c kh, mch v lp trnh. Nu mt b phn khng tt, th robot s khng hot ng c.
1.2. Mt s kinh nghim khi tham gia robocon.
1.2.1. T chc i hnh.
Mt i robot bao gm 7 n 10 ngi v thng c chia thnh 3 nhm:
- Nhm c kh: Thit k, gia cng c kh (3-4 ngi).
- Nhm mch in t: Thit k lm mch cho robot (2-3 ngi).
- Nhm lp trnh: Lp trnh, test robot (3 ngi)

Chng 2: MCH IU KHIN ROBOT BNG TAY


2.1. Gii thiu
Robot iu khin bng tay l mt phn khng th thiu c trong robocon.
Trong mt s trn , robot bng tay c vai tr h tr cho robot t ng. i khi, robot
bng tay gip thay i cc din trn sn. Mch iu khin robot bng tay phn ln l
mch relay iu khin ng c.
2.2. Chc nng ca mch iu khin bng tay
Mch iu khin bng tay dng iu khin cc ng c ca robot bng tay.
Vic iu khin ng c bao gm cc chc nng sau:
- iu khin ng c quay ngc (robot li)
- iu khin ng c quay xui (robot tin)
- Dng ng c (dng robot)
Relay c dng trong robot bng tay l loi relay OMRON, dng ln.

Hnh 2.1.Role omron

2.3. Nguyn tc hot ng mch iu khin robot bng tay


Mch ny s dng 2 relay iu khin 1 ng c, cp ngun cho relay th 1 th
ng c quay phi, cp ngun cho relay th 2 th ng c o chiu.
S mch iu khin bng tay:

Bn thit k mt mch iu khin s dng cc nt bm ng m cc relay, mch


rt n gin v hiu qu. Tuy nhin, lm nh vy s khng thm m v bt tin. Do
bn c th thit k b iu khin bng gamepad PS2 iu khin. (Phn ny c tham
kho ti liu trn mng)
Gamepad cho Robot iu khin bng tay chia lm 2 loi: iu khin t xa bng
hng ngoi v iu khin qua dy cp. Nu dng cc mch thu pht hng ngoi thng
thng th tnh n nh khi thi u khng cao, tt nht nn dng Vi x l (VXL) thu
pht theo tn s ring ca mnh (nh POL chng hn). iu khin qua dy cp mang tnh
n nh rt cao, y chng ti cp ti cch s dng gamepad qua dy cp.
1. S dng gamepad playstation ca SONY.
Kt ni trc tip vo Vi x l. Rt gn khi thit k phn cng, tuy nhin chng ta
nn km theo nt Reset VXL trn gamepad tng tnh n nh. y l phng php
s dng ca i FXR.
2. Ci to phn mch ca 1 gamepad bt k:
Trong mch ca cc gamepad bt k, cc nt nhn c thit k nh l cc cng tc
hnh trnh (tc l c 1 im chung ni mass).
+ Ct b ng mch in ni cc nt nhn vi phn iu khin ca gamepad.
+ S dng cc nt nhn nh l cc cng tc hnh trnh c lp.
a. Truyn ni tip :

Theo cch x l ny chng ta ch s dng cp 4 si : +5v, mass, TXD, RXD.


Cch x l ny vn cha n nh tuyt i nhng s dng t Port VXL. Nn km
theo nt Reset VXL trn gamepad tng tnh n nh. y l phng php Basic Bot s
dng nm 2003 v 2004.
b. Truyn song song:
Thc cht ta ni tt c cc nt nhn xung thng mch iu khin, khi cc nt
nhn ng vai tr nh l nhng cng tc hnh trnh. Phng php ny rt n nh, tuy
nhin nhc im l rt tn Port VXL (mi nt nhn ng vi 1 Port).

Cch khc phc nhc im trn: S dng mch dn knh 16 sang 1.

Phng php ny gim bt c ng k s lng Port VXL, tnh n nh cao.


Thit k mch robot bng tay kiu bn t ng c FXR s dng trong cuc thi
robocon 2004 rt thnh cng (ot chc v ch ).

Chng 3: MCH CM BIN D NG


3.1. Gii thiu
Bi hc ny gii thiu v mch cm bin trong robocon. Mch cm bin ng
vai tr nh mt ca robot gip cho robot c kh nng nhn bit c mi trng
xung quanh (vch trng, chng ngi vt) t c bin php x l.
Trong mch cm bin, cc bn c th s dng cc loi led thu pht hng ngoi
hoc quang tr. Led thu pht hng ngoi c gi thnh r (2500 /cp).

Hnh 3.1.Sensor hng ngoi.


i vi robot cng nghip, bn c th s dng nhng loi cm bin cng nghip
ca cc hng Omron, hay Siemens. Cc loi cm bin ny c nhy cao v kh nng
chng nhiu tt. Tuy nhin gi thnh rt t (hng trm ), cho nn s dng chng trong
robocon th khng ph hp. Bn hon ton c th t ch to mch sensor cho mnh.

Hnh 3.2. Mt s sensor dng trong cng nghip

10

3.2. Mch sensor pht thng.


3.2.1. S nguyn l
CD

C D
V
5

0
_2
P

V
5

0
_
2
R 44

R44
R

D7
LED

D7
LED

U11A
2

2
1

74LS14 3
1

R43

U 11A

U11F

74LS14

2
1

74LS14 3
1

C31
CAP N P

R43
R

C31
CAP NP

GN D

GND
U 10A

U10A
1

1
4

11
+
3

_
N
I

2LM324
BIEN_TRO_1

11

_
N
I

3.2.2. S mch in

11

LM324
BI EN_TRO_1

U 11F

74LS14

3.2.3. Nguyn l hot ng.


Trong s nguyn l trn, cp led thu pht c t st nhau, mt chn ca led
thu c a v LM324. LM324 l IC khuch i so snh, mc ch khuych i tn hiu
t sensor. Tn hiu ra t LM324 c a v IC 7414 (Triger inverter) o mc tn
hiu, tn hiu ra c a vo chn ca vi iu khin. Chit p ng vai tr chnh
nhy ca sensor, n led c tc dng bo hiu khi sensor gp vch trng.
Khi hot ng, led pht chiu tia hng ngoi xung sn thi u, khi chm tia
hng ngoi chiu xung nn en, led pht khng nhn c chm phn x nn khng
dn, in tr bng v cng, tn hiu ra LM324 l mc 1, qua 7414 b o mc tn hiu
v 0 (led bo sang, tn hiu vo vi iu khin l mc 0). Tng t, khi robot gp nn
trng, mc tn hiu ngc li, led bo tt, tn hiu vo vi iu khin mc 1.
3.1.4. u nhc im
Mch sensor pht thng c u im l n gin, d ch to, tit kim chi ph.
Tuy nhin, nhc im ca mch sensor pht thng l kh nng chng nhiu km. Khi
trn sn thi u, nh sng n cao p s nh hng n kh nng hot ng ca sensor.
Do , sensor phi c che chn k lng khi nh hng n kh nng hot ng
ca sensor (t trong hp kn hoc bc bng dnh en cc sensor).
3.3. Mch sensor pht xung
c im ca mch sensor pht xung l kh nng chng nhiu tt, khng
b nh hng bi cc iu kin bn ngoi nh nh sng. Tuy nhin, mch pht xung
c nhc im l phc tp, khng tin li.
5VVDK
RLED1
2.2K

5VVDK
5VVDK
22K
C1.1

U1A
1nF

R1.1
22K

R3.1

4
3

THU 1

LED1
12

2 LM324
-

R2.1
COMPA
1

13 LM324
-

104
100K

U1D

4
1

C2.1

COMPB 1
1

12

14

VDK1

Trn thc t, trong cc cuc thi robocon a s cc i s dng mch sensor pht
thng. Bi v mch sensor pht thng tng i n gin, d s dng.
3.4. B tr sensor
Trn robot, v nguyn tc, s dng nhiu sensor th kh nng bm ng cng
tt. Tuy nhin, trn thc t bn ch cn s dng 6 n 8 sensor l . Cch b tr
sensor s tu thuc vo tng v cht lng cc loi ng c bn s dng trong
robot. Xin gii thiu 2 phng php b tr sensor trn robot.
a) S dng 6 sensor xp thnh hng ngang.
|
|
|
| Vch trng
|
|
O
O |O
O| O
O (sensor)
1
2 3
4 5
6
Cch ny thch hp i vi vic s dng cc loi ng c c hm tt, quay
ng t quay bng 1 bnh (bnh quay, bnh dng). Trong cch b tr ny, sensor
2,3,4,5 c s dng bm ng, hai sensor ngoi cng 1 v 6 c dng m
ng t v quay phi, quay tri. Phng php b tr sensor ny c FXR s dng
nm 2004 v ot chc v ch.
b) S dng 8 sensor
|
|
|
| Vch trng
|
|
O
O |O
O| O
O (sensor)
2 3
4 5
|
|
|
|
O
O
Cch ny thng c p dng vi cc loi ng c c hm km, quay ng t
bng 2 bnh (2 bnh quay ngc chiu nhau). s trn, 2 sensor c lp pha di
ca robot bt ng t, cn 6 sensor pha trn dng bm ng. y l cch m
BK-FIRE s dng trong cuc thi robocon nm 2005.
3.5. Cng tc hnh trnh
Cng tc hnh trnh c s dng kh nhiu trong robocon. Cng tc hnh trnh
thng c lp t cc c cu pha trn, nh c cu truyn ng, gp qu, b
bng.

13

Hnh 3.3. Cng tc hnh trnh


Cng tc hnh trnh c 3 chn: dng thng ng, thng m. Mt chn tn hiu
c ni t hoc VCC, mt chn c ni vi vi iu khin.
Trong robocon, vic b tr cng tc hnh trnh cn phi linh hot, kho lo pht
huy ti a kh nng nhn bit ca robot.
3.6. Encoder
Mt cng ngh mi c mt s i robot p dng trong nhng nm gn y l
s dng cc b encoder .
C s ca phng php ny l s dng c tnh di qung ng i c v sai
s chuyn ng gia hai bnh ca ng c nh khai thc tnh cht ca b m ho xung
vng quay (Rotary encoder).

B encoder thc cht l mt a c c l c gn cp sensor thu pht 2 bn. B


encoder c gn trn bnh xe hoc trn ng c ca robot.

Nguyn tc hot ng ca encoder


Gm mt b thu pht hng ngoi v mt a cho chia l c t gia h
thng thu pht ny. a c gn trn trc ca ng c hoc trc chuyn ng. Qu
trnh a chuyn ng lm cho phn photo sensor thay i trng thi v to ra mt chui
14

cc xung vung trn u ra. y l thng s k thut quan trng ca mt encoder. Tu


theo s l trn a m s xung to ra trong mt vng quay ca a khc nhau. S lng
xung cng ln ngha l s l cng nhiu trn mt vng trn 360. Ngha l ta cng c th
iu khin chnh xc. V d nhin b encoder cng t tin. Chng ta c th thy c
nhiu loi encoder dng t trng hoc trn a c nhiu vng l nhng ti gii thiu loi
ph dng v n gin nht l s dng nh sng nh trn. Trong thc t chng ta c th
thy cc b encoder trn cc ng c DC ch khng ch l cc thnh phn c lp.
Vic la chn v s dng hai loi encoder ny u c nhng u v nhc im ring
m ti khng cp y. Hnh dng cc encoder :

Khi robot mun dch chuyn theo mt qu o xc nh cn cn c vo hai trng


thi c bn l qung ng i c ca hai bnh (tham chiu vi chng trnh, v
hng chuyn ng), Sai s qung ng gia hai ng c.
Phng php ny th hin c tnh rt mm do khi phi chuyn hng v c th
xoay robot mt gc bt k ra khi qu o chnh.
Encoder thng c 6 dy (hoc 4 dy ty loi ) bao gm 2 dy ngun, 2 dy tn
hiu A v B v dy pha Z.2 dy tn hiu A v B cho php bn xc nh s vng quay ca
ng c, vn tc v chiu quay ca ng c. lp trnh x l tn hiu encoder, bn c th
ni 2 dy tn hiu A v B vo 2 chn timer hoc ngt ngoi ca vi iu khin, thit lp vi
iu khin ch counter, vi iu khin s m xung t vi iu khin.

15

Bn c th tham kho code di y:


void ngat0(void) interrupt 1 // ngat bo dinh thoi 0
{
if (kt0==0) // bit nay set de dung trong luc quay va di lap ma
{
P1_2=1; P1_3=1;
P1_0=1; P1_1=1;
}
if (kt0==1) // bit nay xoa de bam xung dinh thoi new
{
TR0=0;
if (dem_trai==tocdo_trai)
{ P1_2=~P1_2;tocdo_trai=10-tocdo_trai;dem_trai=0;}
dem_trai++; TR0=1;
}
if (kt0==2) // dung cho bamxung quay
{
TR0=0; TH0=0xFF;
TL0=0x47; d2++;
TR0=1;
}
}
// quay dung bo lap ma
void quayphai(unsigned char bytecao,unsigned char bytethap)
{
TMOD=0x55;// dem su kien
P1_2=1; P1_3=0;
P1_0=0; P1_1=1;
delay(500); P1_0=1;
kt0=0;// bit nay set de chuong trinh ngat kiem tra lua chon
TH0=bytecao; TL0=bytethap; // 230
XUNG TR0=1;
while(1)
{
if (P1_3==1) break;
}
}
16

void ngat1(void) interrupt 3


// ngat bo dinh thoi 1
{
if (kt1==0) // dung de di lap ma
{
P1_0=1;
P1_1=1;
P1_2=1; P1_3=1;
}
if (kt1==1) // bam xung dinh thoi kieu moi
{
TR1=0;
if (dem_phai==tocdo_phai)
{ P1_0=~P1_0;tocdo_phai=10-tocdo_phai;dem_phai=0;}
dem_phai++; TR1=1;
}
}
// quay dung bo lap ma
void quaytrai(unsigned char bytecao,unsigned char bytethap)
{
TMOD=0x55; //khoi dong bo dinh thoi dem su kien kt1=0;
P1_0=1; P1_1=0;
P1_2=0; P1_3=1;
delay(500); P1_2=1;
TH1=bytecao;
TL1=bytethap; TR1=1;
while(1)
{
if (P1_1==1) break;
}
}
void quay(unsigned char status ,unsigned char bytecao ,unsigned char bytethap)
{
if (status==turn_right)
quayphai(bytecao,bytethap);
if (status==turn_left)
quaytrai(bytecao,bytethap);
}
void delay (unsigned long time)
17

{
unsigned long i;
for (i=0;i<time ;i++)
{}
}
// bam xung bang bo dinh thoi

void quayphaingatu()
{
motor(backward);
delay(3500); motor(stop);
delay(10000); motor(left_go);
delay(4500);
bamxung_quay(5,motor_left);
motor(stop);
}
void quaytraingatu()
{
motor(backward);
delay(3500); motor(stop);
delay(10000);
motor(right_go); delay(4500);
bamxung_quay(5,motor_right);
motor(stop);
}

18

Chng 4: MCH CNG SUT IU KHIN NG C


4.1. ng c.
ng c c s dng trong robocon l loi ng c 1 chiu (DC motor).

Hnh 4.1. ng c 1 chiu


Vic la chn ng c cn c vo cc tiu ch sau:
- Tc
- Kh nng chu ti
- hm
- Dng ,p
i vi ng c dng cho c cu chuyn ng (phn ca robot) yu cu t ra l
phi c tc nhanh v c hm tt. ng c thng c s dng phn ny l loi
ng c pitman.
Ngoi ng c pitman, bn c th s dng cc loi ng c khc, min l t
c cc tiu ch nu trn. Bn c th s dng ng c vung tho bnh rng. y l cc
m BK-FIRE s dng trong cc thi robocon2005, bng cch ny,robot ca BK-FIRE
t c tc kh cao.

19

Hnh 4.2. ng c pitman.


i vi ng c dng cho c cu nng h, gp qu (phn trn) yu cu phi c
kh nng chu ti, kho. Loi ng c thng c s dng l loi ng c gt nc
hoc ng c c hp iu tc. c im ca loi ng c ny l tc khng cao nhng
lc quay rt kho c th chu ti ln. Trong nm 2005, cc i robocon BK- Nng
s dng ng c ny cho robot trung tm v t hiu qu rt cao.
Trong mt s trng hp, robot cn phi c tc cc nhanh. V d nm 2005
v 2006, cc robot trung tm phi c tc c bit nhanh (trong vng 1,5s-2s phi
chim lnh c uc trung tm). gii quyt vn ny, mt s i s dng
ng c xe my cho robot trung tm. ng c xe my c dng ln v tc rt
nhanh. Tuy nhin vi loi ng c ny th cc mch cng sut khng th iu khin
c. gia tng tc , bn c th lp t c cu xch cho robot ca mnh.
4.2. Mch iu khin ng c
4.2.1. Mch relay
4.2.1.1. S nguyn l

20

R20

24VDC

DC1_DIR

Q6
2N1470

LS1

ROLE1_ON R

8
24VDC

1
2

7
4

24VDC
R19
DC2_DIR

J16

TRAN1_ON3
Q5
2N1470

ROLE2_ON R

CON2
5

ROLE1_ON1
GND
2

TRAN1_ON
20-2121-DPDT
LS2
DC1_EN

Q1
IRF540N/TO

R30

8
24VDC

GND

7
4
TRAN2_ON 3

R
TRAN2_ON

DC2_EN

J17
1
2
CON2

5
ROLE2_ON 1
GND
2
Q2
IRF540N/TO

R29

20-2121-DPDT

GND
R

4.2.1.2. Nguyn l hot ng.


Loi relay c s dng trong mch robot t ng l loi relay 8 chn (2 tip
im). Mch relay iu khin ng c s dng 2 tn hiu iu khin. Chn DC_EN v
chn DC_DIR, chn DC_EN l chn kch FET (ng m FET) chn DC_DIR l chn
o chiu. Tuy nhin, trc khi o chiu ng c bn phi tt FET trc, nu khng
s gy cht FET.
4.3. Mch cu H iu khin ng c
4.3.1. S nguyn l

21

+12V
5V
5V
5V

4
1

U1A

4
1
3

R01
1K
Opto1.1
PS2501-1

U1D

RCH1.5
10K

12

11
13
74LS00
7

MTP60P06

QCH1.3
MTP60P06

74LS00
7

NGUON5V

MCH1+

4
3
2
1
CON4

RCH1.6
10K

QCH1.1

MCH15V

MCH1-

MCH1+

5V

21
OUT1

5V
4
1

R02
1K

U1B

5V

6
5

4
1

U1C

-12V +12V
QCH1.4

PS2501-1
MTP60N06
8

74LS00
7

NGUON12V

MTP60N06

10

1
2
74LS00
7

QCH1.2

RCH1.9
10K

CON2

RCH1.8
10K

-12V

4.3.2. S mch in

4.3.3. Nguyn l hot ng


Mch cu H iu khin ng c s dng 4 MOSFET IRF540 khuch i cng sut
v ng m.

22

Hnh 4.4. IRF 540


Mosfet l loi transitor hiu ng trng (MOSFET = metal-oxide semiconductor
field-effect transistor) MOSFET l m hnh ngun dng ph thuc p. Nh vy kch
dn MOSFET cn a in p vo hai cc Vgs. Mt im khc ca MOSFET na l
MOSFET c Vds khng n nh nh Vce (BJT) m n ph thuc vo gi tr n nh
khc l Rds-on ( ch ng ngt). Nh vy Vds = Id*Rds. Nh vy cng sut tiu
tn trn MOSFET ch yu ph thuc vo Rds.
C hai loi MOSFET knh P v knh N.
Loi knh N thng c Rds nh hn knh P.
Loi knh N cn Vgs > 0 dn.
Loi knh P cn Vgs < 0 dn.
a s cc MOSFET bt u dn khi abs(Vgs) xp x 5. Thng gi tr khuyn co
l 10V. Khi in p ln hn 15 bt u c nguy c nh thng Vgs. Kh nguy him l
khi b thng MOSFET thng dn lun dn n d n. Trong m hnh ca MOSFET
c mt ci t k sinh t gi l Cgs cn quan tm n t ny khi thit k mch li s
dng PWM. Khi lm Robot thng dng con IRF540 li ng c DC hoc dng mch
cu IRF540 iu khin hng (Mc d cch iu khin ny rt kh).
Mch cu H iu khin ng c c 2 tn hiu iu khin. 2 chn tn hiu na
c ni vi 2 chn vi iu khin.
Gi s 2 tn hiu iu khin l A,B (tng ng 2 chn P1.0 ,P1.1). iu khin
ng c DC c cc trng thi iu khin: ng c quay, o chiu, dng v iu
khin tc ng c.
Ta c bng trng thi:
P1.0
1
0
1

P1.1
0
1
1

Trng thi
ng c quay xui
ng c quay ngc
Dng ng c

23

4.3.4. M ngun iu khin ng c


#include <at89x52.h>
#include <robot.h>
unsigned char dutycycle=0 ;
/*
P2_0 P2_1 : dieu khien dong co nang ha
P2_2 P2_3 : dieu khien dong co lay bong
*/
void motor( unsigned char status)
{
switch (status)
{
case nang:
{
P2_0=1;
break;

P2_1=0;

}
case ha:
{
P2_0=0;
break;

P2_1=1;

}
case dung:
{
P2_0=1;
break;
}

P2_1=1;

}
}
void motorkep(unsigned char state)
{
switch (state)
{

case kep:
{
P2_2=0;
break;
}

P2_3=1;

case nha:
{
P2_2=1;
break;
}

P2_3=0;

case phanh :
{
P2_2=1;
break;
}

P2_3=1;

}
}
void delay ( unsigned char time)
{
unsigned char i;
for ( i=0; i<time ;i++)
{}
}
void nangnhanhdan(unsigned char time1,unsigned time2)
{
unsigned char x,y;
for (x=0;x <time1 ;x++)
{
for ( y=0;y<time2; y++)
{
P2_0=1; P2_1=0;
delay(dutycycle); P2_1=1;
delay(Time-dutycycle);
}
dutycycle++;

if (dutycycle==255) break;;
}
}
void nangchamdan(unsigned char Time1,unsigned Time2)
{
unsigned char x,y;
for (x=0;x <Time1 ;x++)
{
for ( y=0;y<Time2; y++)
{
P2_0=1; P2_1=0;
delay(dutycycle); P2_1=1;
delay(Time-dutycycle);
}
dutycycle--;
if (dutycycle==0) break;
}
}
void nhabong(unsigned char timedelay)
{
motorkep(nha);
delay(timedelay);
motorkep(phanh);
}
void main()
{
// trang thai gap bong
motorkep(kep); delay(255);
motorkep(phanh);
// co cau nang bong hoat dong nangnhanhdan(100,100); // chang 1

nang nhanh dan


// chang 2 : nang het toc luc
motor(nang);
delay(100);
// chang 3 : nang cham dan
nangchamdan(100,100); motor(dung);
delay(100);
motorkep(phanh);
/* trang thai nha bong
khi P0 cua slaver nhan tin hieu dieu khien tu master thi trang
thai nha bong hoat dong
*/
nhabong(100);
while(1)
{
motor(dung);
motorkep(phanh);
}
// P0=0xFB;
}
/* bo qua thu 1 */
4.3.5. K thut iu ch rng xung iu khin tc ng c (PWM)
iu khin tc ng c l mt k thut ht sc quan trng trong vic lp trnh
robot. K thut ny gip bn c th iu khin robot ca mnh chy nhanh chm tu ,
gip cho hot ng ca robot lun linh hot, thch ng vi mi tnh hung xy ra trn
sn.
a) Cch to xung c rng thay i bng VK.
Cch 1: Nh cc bn iu khin nhp nhy 1 con led, l to ra 1 xung 1 chn
ca vi iu khin, nhng xung c rng c nh, tn s ln, cch bn c th iu
chnh li hm delay tn s ca n ng 1 Khz. Tuy nhin v l dng hm delay nn
trong thi gian c xung ln 1(5V) v thi gian khng c xung(0V) vi iu khin khng
lm g c, hn na to xung bng vic delay m cc bn c nhu cu cn 2 b pht xung
2 knh, c cng tn s m khc rng xung th tr nn rt kh khn. Cho nn
chng ta dng b nh thi Timer ca vi iu khin trong trng hp ny rt tin.
Cch 2: Dng ngt Timer ca b vi iu khin. Trc ht nhc li v ngt ca vi iu

khin:
+ Ngt l g ? tr li cu hi ny ti xin trch an v ngt trong bi 2 v d cho
ngt timer:
Timer
Program excution without interrut
Main Program

ISR

**

Main

ISR

**

Main

ISR

M ain

**

Main

Mt chng trnh chnh khng c ngt th chy lin tc, cn chng trnh c ngt
th c khi no iu kin ngt c m bo th con tr s nhy sang hm ngt thc hin
xong hm ngt li quay v ng ch c thc hin tip chng trnh chnh. Ti c 1 v d
nh sau: Bn ang n cm, c ting in thoi, bn t bt cm ra nghe in thoi, nghe
xong li quay v bng bt cm ln n tip. Th qu trnh n cm ca bn l chng trnh
chnh, c in thoi gi n l iu kin ngt, bn ra nghe in thoi l thc hin chng
trnh ngt (Interrupt Service Rountine), quay v n cm tip l tip tc thc hin chng
trnh chnh.
Ngt i vi ngi mi hc vi iu khin l rt kh hiu, v a s cc ti liu u
khng gii thch ngt lm g. C nhiu loi ngt khc nhau nhng tt c u c
chung 1 c im, ngt dng cho mc ch a nhim. a tc l nhiu, nhim tc l
nhim v. Thc hin nhiu nhim v.
Cc bn nhn vo tin trnh ca hm main vi chng trnh c ngt :
Chng trnh chnh ang chy, ngt xy ra, thc hin hm ngt ri quay li chng
trnh chnh. Chng trnh trong vi iu khin khc vi v d n cm nghe in thoi ca
ti ch, thi gian thc hin hm chnh l rt ln, thi gian thc hin hm ngt l rt
nh, cho nn thi gian thc hin hm ngt khng nh hng g n thi gian thc hin
hm chnh Nh vy trong hm ngt cc bn lm 1 vic, trong hm chnh ca bn lm 1
vic nh vy coi nh cc bn lm c 2 vic (a nhim) trong 1 qung thi gian tng
i ngn c mS, ch thc ra ti 1 thi im vi iu khin ch thc thi 1 lnh.
V d: Bn th ngh xem lm th no va iu ch xung PWM iu chnh tc
ng c, va c cc cm bin u vo m tc ng c ph thuc u vo cm
bin.
Vy ngt l 1 iu kin no xy ra ngu nhin m vi iu khin c th bit do
phn cng ca vi iu khin, ri ta cn c vo lp trnh.
* V d: Vi ngt b nh thi timer, hay b m counter l khi trn b m th
phn cng ca vi iu khin s bo c ngt xy ra v nhy n chng trnh phc v
ngt( ISR_ Interrupt Sevice Rountine) 1 cch t ng.
Vi ngt ngoi, chn P3.2 chng hn, nu ta khai bo trc chn s dng chn
P3.2 s dng cho ngt ngoi ch khng phi s dng cho mc ch IO thi c khi c 1
xung xut hin t mch ngoi vi truyn vo chn P3.2 th phn cng ca vi iu khin
nhn ra v chuyn ti chng trnh phc v ngt.
Vi ngt ni tip th c khi c k t truyn t my tnh xung vi iu khin th s c
hin tng ngt xy ra.
Hm ngt: Cu trc:
Void Tnhm(void) interrupt ngunngt using bngthanhghi
{
// Chuong trinh phuc vu ngat o day
}
Ch v hm ngt:
+ Hm ngt khng c php tr li gi tr hay truyn bin vo hm.
+ Tn hm bt k.
29

+ interrupt l t kha phn bit hm ngt vi hm thng.


+ Ngun ngt t 0 ti 5 theo bng vector ngt.
+ Bng thanh ghi trn ram chn t 0 n 3.
Ty theo bn vit hm ngt cho ngun no bn chn ngun ngt t bng sau:
Ngt do
Reset h thng
Ngt ngoi 0
B nh thi 0
Ngt ngoi 1
B nh thi 1
Port ni tip
B nh thi 2

C
RST
IE0
TF0
IE1
TF1
RI hoc TI
TF2 hoc EXF2

a ch vector
0000H
0003H
000BH
0013H
001BH
0023H
002BH

Ring ngt Reset khng tnh, bt u m t 0 v t ngt ngoi 0. V d: ti cn


vit hm ngt cho b nh thi timer 1 hm ngt s l. void timer1_isr(void) interrupt
3 using 0
{
// Lenh can thuc hien.
}
V using 0: C 4 bng thanh ghi bn c th chn cho chng trnh phc v ngt,
ci ny cng khng quan trng. Trong hm ngt cc bn c th b i t using 0, khi
vi iu khin s t sp xp l dng bng thanh ghi no.
Hm ngt khc hm bnh thng ch no. Hm bnh thng v d hm delay, c
khi bn gi n th n s c thc hin, c ngha l n c v tr c nh trong tin trnh
hm main, c ngha l bn bit n xy ra khi no. Cn hm ngt th khng c tin trnh
c nh, iu kin ngt c th xy ra bt k lc no trong tin trnh hm main v c khi
no c iu kin ngt th hm ngt s c gi t ng.
s dng ngt ta phi lm cc cng vic sau:
1) Khi to ngt: dng ngt no th cho php ngt hot ng bng cch gn gi
tr tng ng cho thanh ghi cho php ngt IE( Interrupt Enable):
EA
ET2
ES
ET1
EX1
EX0
ET0
iu khin cc ngun ngt
IE
(0: khng cho php; 1: cho php)
IE.7
EA
Cho php/ khng cho php ton cc
IE.6
--Khng s dng
IE.5
ET2
Cho php ngt do b nh thi 2
IE.4
ES
Cho php ngt do port ni tip
IE.3
ET1
Cho php ngt cho b nh thi 1
IE.2
EX1
Cho php ngt t bn ngoi (ngt ngoi 1)
IE.1
EX0
Cho php ngt t bn ngoi (ngt ngoi 0)
IE.0
ET0
Cho php ngt do b nh thi 0
30

IE l thanh ghi c th x l tng bt. V d: bn mun cho php ngt timer 1 bn


dng lnh: ET1=1; Khng cho php na bn dng lnh: ET1=0; Hoc bn c th dng
lnh IE= 0x08; th bit 3 ca thanh ghi IE tc(IE) s ln 1. Nhng cch th nht tin hn.
2) Cu hnh cho ngt: Trong 1 ngt n li c nhiu ch v d: vi ngt timer. Bn
phi cu hnh cho n chy ch no, ch timer hay counter, ch 16 bit, hay 8
bit, bng cch gn cc gi tr tng ng cho thanh ghi TMOD( Timer MODe).
TMOD
7
6
5
4

GATE
C/T
M1
M0

3
2

GATE
C/T

M1

M0

Chn model cho b nh thi 1


Chn model cho b nh thi 1
Bt chn chc nng m hoc nh thi:
Bit chn ch th nht
Bit chn ch th 2
M1 M0 Ch
Chc nng

0
0
0
Ch nh thi 13 bit
0
1
1
Ch nh thi 16 bit
1
0
2
Ch t ng np li
8 bit
1
1
3
Ch nh thi chia
x
Bit iu khin cng cho b nh thi 0
Bit chn chc nng m / nh thi cho
b nh thi 0
Bit chn ch th nht cho b nh thi
0
Bit chn ch th 2 cho b nh thi 0

V d ti cu hnh cho b nh thi 1 ch timer,vi b m 8 bit t ng np li


(auto reload) dng lnh sau: TMOD=0x20.
Cc bn ng lo v vic phi nh bng thanh ghi ny, cc bn khng phi nh ni
trng ra nh vy, chuyn sang phn lp trnh cc bn s c hng dn lm th no
khng phi nh, nhng ch lp trnh vi C mi lm c cn lp trnh Asem th bt buc
phi nh .
3)Bt u chng trnh c ngt:
-Trc khi bt u cho chy chng trnh ta phi cho php ngt ton cc c
xy ra bng cch gn EA(Enable All interrupt) bng 1, th ngt mi xy ra. Thng th
ngay vo u chng trnh(hm main) trc vng while(1) chng ta t cng vic khi
to, cu hnh v cho php kim tra ngt. V d vi b nh thi timer ta gn cc gi tr
ph hp cho thanh ghi TCON( Timer CONTROl).

31

TCON
TCON.7

TF1

TCON.6

TR1

TCON.5
TCON.4
TCON.3

TF0
TR0
IE1

TCON.2

IT1

TCON.1
TCON.0

IE0
IT0

iu khin b inh thi


C trn ca b nh thi 1. C ny c set
bi phn cng khi c trn, c xo bi
phn mm, hoc bi phn cng khi b vi x
l tr n trnh phc v ngt
Bit iu khin hot ng ca b nh thi 1.
Bit ny c set hoc xo bi phn mm
iu khin b nh thi hot ng hay
ngng
C trn ca b nh thi 0
Bit iu khin hot ng ca b nh thi 0
C ngt bn ngoi 1 (kch khi cnh). C
ny c set bi phn cng khi c cnh m
(cung) xut hin trn chn INT1, c xo
bi phn mm, hoc phn cng khi CPU tr
n trnh phc v ngt
C ngt bn ngoi 1 (kch khi cnh hoc
mc). C ny c set hoc xo bi phn
mm khi xy ra cnh m hoc mc thp ti
chn ngt ngoi
C ngt bn ngoi 0 (kch khi cnh)
C ngt bn ngoi 0 ( kch khi cnh hoc
mc)

V d chy b nh thi timer 1 ta dng cu lnh: TR1=0; TR1(Timer Run 1).


Cn bn no thch kh th: TCON=0xxx;
Sau khi khi to song v cho ngt timer 1 chy th iu g xy ra?
Khi bt u cho timer 1 chy th b m ca timer s m dao ng ca thch
anh, c 12 dao ng ca thch anh(1 chu k my), b m ca timer 1 TL1(Timer
Low1) s tng 1,c thn ni timer 1 m s chu k my. i vi ch 8 bt. TL1 l 1
thanh ghi 8 bt, l b m ca b nh thi r ri. N m c t 0, n 255. Nu n
m n 256 th b m trn, TL1 quay vng li bng 0, v c ngt TF1(Timer Flag 1) t
ng c gn ln 1(bng phn cng ca vi iu khin) nh 1 cng tc t ng bt, v
ngt xy ra.
Cn vi ch 16 bt, b m ca b nh thi cn 1 thanh ghi 8 bt na l
TH1(Timer high 1), nu cu hnh cho timer 1 hot ng ch 16 bit th khi TL1 trn
n s m sang TH1(TH1 s tng 1). Nh vy ta c th m: 216 chu k my( 2 thanh ghi
8+8=16 bt).
Ch l khi b m trn ngt s xy ra. Nu ta cn m 256 chu k my th khi
khi to ta cho TL1=0; cn nu khng mun m 256 chu k my m ta ch cn m 100
thi ngt xy ra ri th ta phi lm nh sau: 256-100 = 156 v khi khi to ta gn:
TL1=155; v m t 155 n 255 l 100 ln th ngt xy ra.
32

Vi yu cu ca bi. To xung tn s 1Khz. Chu k = 1/10 3 = 0,001 giy= 1 mili


giy=1000 uS= 1000 chu k my. Vi 10 cp tc , tc l bn phi to ra c xung
10%, 20%, 30%, 40%, , 90%, 100%. 1 xung nh sau:
5V
0V

T : Chu k 1000 miro giy.


Khong thi gian xung ko di 5V l T1. Xung 10% tc l T1/ T= 10%=1/10. Xung
20% T2/T=2/10 PWM (Thay i rng xung). By gi ti mi xin ni v phn 2.
4.3.5. Nguyn l ca PWM
Xung PWM: a ra m transitor, xung vi rng ln hn transitor s m lu
hn ng c s quay nhanh hn, d nhin khng tuyn tnh. Khng c xung ng c s
khng quay, c xung 100% ng c s quay max. Tuy nhin xung phi ln hn 1 mc
no th mi khi ng cho ng c. Cc c tnh ny cc bn tham kho trong
gio trnh v my in, kh c in, nu cc bn cn thng s chnh xc.
c th thay i 10 cp tc vi chu k 1000uS, ta khi to cho ngt timer: 100
uS ngt 1 ln. Trong hm ngt kim tra xem ta cn cp xung bao nhiu % th ta s gn
gi tr cho n. C th nh sau:
+ Hm khi to ngt.
Dng ngt timer 0, 100 uS ngt 1 ln, dng ch 2 8 bit t ng np li ca
timer (v mnh ch cn m n 100). TL0 np bng 156. i vi ch 2 khi trn b
m TL0 s quay vng gi tr bng 0, nhng sau n li c np gi tr lu trong TH0
(gi tr np li), do ta ch cn gn gi tr choTL0 v TH0 trong hm khi to, cn
cc ch khc 16 bit, 2 timer counter 8 bit, khi trn b m TL0 khng c np li m
ta phi t gn li gi tr cho n trong hm ngt.
void khoitaotimer0(void)// Ham khoi tao
{
EA=0;// Cam ngat toan cuc
TMOD=0x02;// Timer 0 che do 2 8 bit auto reload
TH0=0x9B;// Gia tri nap lai 155 doi ra so hex TL0=0x9B;//
Gia tri khoi tao 155 doi ra so hex ET0=1;// Cho phep ngat
timer 0
EA=1;// Cho phep ngat toan cuc
TR0=1;// Chay timer 0 bat dau dem so chu ki may
}

33

Chng 5: MCH VI IU KHIN


Mch vi iu khin ng vai tr l phn trung tm ca robot. Vi iu khin c th
v nh l b no ca mt c th ngi, iu khin mi hot ng ca robot.
5.1. Gii thiu mt s loi vi iu khin
5.1.1. Vi iu khin 8051
Vi iu khin 8051 l loi vi iu khin c s dng nhiu nht trong cc cuc thi
robocon t trc ti nay. Bi v n c gi thnh r, d mua v nhiu ti liu ting Vit.
Chnh v th, nhiu i robocon s dng 8051 l b no cho robot ca mnh.

Hnh 5.1. Vi iu khin 8051

34

Hnh 5.2. S chn


Trong cc loi iu khin h 8051, vi iu khin 89c52 v 89s52 c nhiu i
robocon s dng nhiu nht. c bit l cc i n t Bch Khoa H Ni.
Nhng c im ca vi iu khin 8051, cc bn c th tham kho trong cun
gio trnh 8051 ca MTC.
Mt loi vi iu khin thuc h 8051 kh mnh na do hng Philip sn xut l loi
P89V51RD. Chip Philip c cc i min nam, c bit l BK HCM s dng rt nhiu
do c ti tr min ph. Nhn chung chp Philip c y nhng tnh nng ca loi
chp 89c51 ca atmel nh timer/counter, ngt .v ..v. Bn cnh , chp Philip c nhng
tnh nng ni bt hn con 89c51.
+ B nh ROM c dung lng ln 16/32/64 kb Flash rom v 1024 bytes Ram
(so vi 8 k rom, 128 bytes ram ca 89x) b nh ca chp PHILIP.
+ Chc nng ISP ( In system - programming)
ISP l kh nng np trc tip chng trnh vo chip ngay trn mch
m khng cn phi rt chp ra khi mch. i vi vdk ca atmel ch c con AVR v
89s52 mi c chc nng ny. Nh chc nng ny, mch np cho chip Philip rt n gin
35

d ch to
+ Chc nng IAP (in-application programmable)
Chc nng IAP cho php b nh flash c kh nng cu hnh li trong
khi cc ng dng ang chy.
+ 3 b nh thi 16 bt chc nng ca philip ging ht chp 89c51
+ SPI (serial peripheral interface)
Chc nng ny cho php truyn d liu ng b vi tc cao gia
chp Philip v cc thit b ngoi vi khc ,hay gia cc chp vi nhau.
+ PWM (pulse width modulation)
y l mt chc nng rt c bit ca Philip, khi chp hot ng
ch ny mt chn ca chp s ra pht xung vi tn s khc nhau (tn s ny do ngi
lp trnh xc nh). Philip c ch bm xung 8 bit (con AVR cn h tr bm xung 10
bt ADC) vi 5 chn bm xung.
+ Chc nng ngt
Philip 8 ngt vi 4 mc u tin ngt, n cng c ngt ngoi, ngt
timer, ni tip nh 89c, ngoi ra cn c chc nng ngt PCA, UART/SPI. C th ni
chip Philip l loi chp rt u vit, c th thay th rt tt cho loi chip 89c52 thng
c dng trong cc k ROBOCON. Cc bn c th tham kho thm datasheet ca lai
chip ny trang http//www.alldatasheet.com (p89v51rd). Trong nm 2004, 2006, chip
Philip c FXR v BKPRO s dng trong cuc thi robocon v ginh chc v ch.
5.1.2. Vi iu khin AVR
AVR l loi vi iu khin do hng ATMEL sn xut. AVR c nhng tnh nng rt
mnh so vi 8051 nh PWM, ADC. AVR c BK-FIRE s dng u tin vo
nm 2006 v lt c vo vng chung kt ton quc.

Hnh 5.3 .Vi iu khin AVR


Vic s dng AVR trong robocon c th ni l mt ci tin mi trong cng ngh
ch to robot theo truyn thng ca cc i n t BKHN. Thng tin v chip AVR cc
bn c th tham kho gio trnh Vi iu khin nng cao ca trung tm MTC.
36

5.1.3. Vi iu khin PIC.


Bn cnh AVR, PIC cng l mt s la chn kh tt cho cc i robocon do nhng tnh
nng vt tri ca n so vi cc loi vi iu khin khc nh kh nng chng nhiu,
PWM, ADC, ngt. Hin nay trn thtrng c kh nhiu dng vi iu khin PIC. VD:
pic16f877, pic16f84, pic16f828..v.v.v
nh gi cc dng PIC
- Dng PIC nhiu chn nht l dng PIC18Fxxxx, c nhng con s chn ln
n 80 chn
- Dng PIC t chn nht l dng PIC10Fxxx, ch c 6 chn
- Dng PIC ph bin nht l dng PIC16F877A ( mnh v tnh nng, 40
chn, b nh cho hu ht cc ng dng thng thng)
- Dng PIC m chng ti nh gi cao nht l dng PIC16F876A (28 chn,
chc nng khng khc g so vi PIC16F877A, nhng nh gn hn nhiu v s chn
cng khng qu t nh PIC16F88).
- Dng PIC h tr giao tip USB l dng PIC18F2550 v PIC18F4550
- Dng PIC iu khin ng c mnh nht l dng PIC18F4x31
- Khi cho rng mnh chuyn nghip hn, cc bn nn dng PIC18F458
- Dng PIC tng hnh l dng PIC17xxxxx, hin nay khng cn c sn
xut

Hnh 5.4. Vi iu khin PIC


5.2. S nguyn l
Trong gio trnh ny ,chng ti ch yu tp trung vo mch vi iu khin dng
89s52. Bi v vi iu khin 89s52 c s dng kh thng dng trong cc k robocon.

37

5V

MASTER

Cta1

A1
A2
A3
B1
B2
B3
B4
B5

30p

1
2
3
4
5
6
7
8

RST

19
18
9

5V

31

Y1
Cta230p 11.509Mhz

PO0
PO1
PO2
37
PO3
PO4
PO5
PO6
PO7

P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

C
C
V

XTAL1
XTAL2
RST

P2.0/A8
P2.1/A9
P2.2/A10
P2.3/ A11
P2.4/ A12
P2.5/A13
P2.6/A14
P2.7/ A15
P3.0/RXD
P3.1/TXD
P3.2/INTO
P3.3/INT1
P3.4/TO
P3.5/T1
P3.6/WR
P3.7/ RD

EA/VPP

39
38

P0.0/AD0
P0.1/AD1
P0.2/AD2
36
P0.3/AD3
PSEN
35
34 P0.4/AD4
ALE/PROG
33 P0.5/AD5
32 P0.6/AD6 D
P0.7/AD7 N
G

P89V51RD2

ISP_program

CL1
104

0
4

38

21
22
23
24
25
26
27
28

Vidieukhien1
Vidieukhien2
Vidieukhien3
Vidieukhien4
Vidieukhien5
Vidieukhien6

10
11
12
13
14
15
16
17

P30(RXD)
P31(TXD)
/INT0
/INT1
T0
T1
A4
A5

29

P30(RXD)
P31(TXD)
5V

1
3
5
7
9

2
4
6
8
10
CON10AP
int

SELECT_PR/O
INT0
/INT1
T0
T1
PO4
PO5
PO6

1
2
3
4
5
6
7
8
9

5V

10

30
CON10

5V

SW 1
Cs1
100uF
RST
Rs1
10k

Hnh 5.5. S nguyn l mch vi iu khin.


Mch vi iu khin s dng ngun 5V. Trong robocon, mch ny ng vai tr l
khi trung tm ca robot, kt ni vi tt c cc modul khc. T mch vi iu khin ny,
bn c th m rng ra cc modul khc.
Mch ngun.
Mch vi iu khin s dng ngun 5V, Tuy nhin cc acquy dng trong robot u l
ngun 12V hoc 24V. Do , bn khng th u trc tip ngun c quy vo vi iu
khin c, cn phi thit k mt mch ngun cung cp mt ngun in n nh 5V
cho vi iu khin .
DPOWER1 1A

2
1

LM7805/TO
5V

SWITCH

J2

U3

R_CS1

POWER_IN

VIN

VOUT

3
5V_A LED

22R2W
POWER_IN

C_L4
104

CON2

C_N1

C_L1

1000uF

104

C_N2

C_L2

C_L3

10uF

104

104

SW DPST
DPOWER2 10A

R_5V_A
1K

24V
24V

POWER_IN
C_L5
104

24V
LED

R_24V
10

Hnh 5.6. S nguyn l mch ngun dng trong robocon.


Mch ngun ny s dng IC n p 7805.y l loi IC n p : u vo > 7V u ra
5V 500mA. Mch n p: cn cho VK v nu ngun cho VK khng n nh th s
treo VK, khng chy ng, hoc reset lin tc.

39

Chng 6: LP TRNH V K THUT D NG


Trong robocon, lp trnh l khu cui cng trong 3 b phn cu thnh robot. Lp
trnh s ng vai tr quyt nh cui cng nh gi robot ca bn s hot ng tt hay
khng. Robot s khng th chy tt nu nh chng trnh x l khng hon ho.
6.1. Cc ngn ng lp trnh s dng trong robocon.
Trong robocon c 2 ngn ng lp trnh c s dng nhiu nht l C v ASM.
2 ngn ng ny c nhng im mnh v im yu ring. Ngn ng ASM c u im l
gn nh, gip ngi lp trnh hiu su v cu trc phn cng ca vi iu khin. Cc
chng trnh vit bng ASM thng chy nhanh v tc x l cao. ASM c
BK-FIRE s dng trong cuc thi 2005 v hot ng kh hiu qa. Tuy nhin, ASM c
nhc im l kh hc v tp lnh ngho nn, khng thun tin lp trnh cc chng
trnh ln.
Ngn ng lp trnh C c th mnh l d hc, tp lnh phong ph v c im l
ngn ng lp trnh c cu trc nn rt thun li xy dng cc chng trnh ln.
Nhc im ca C l khng gip ngi c hiu su v cu trc phn cng.
Nhn chung, trong cc cuc thi robocon, ngn ng C c s dng nhiu nht do
nhng u im ca n. Gio trnh ny cng hng dn bn lp trnh bng ngn ng C.
6.2. M ngun
Xin gii thiu mt on m ngun ca i CIRTECH-45 ca BKHN nm 2004
/*
Night Lamp Saver V5.0
89C2051(ext.oscillator 680kHz) + MAC97A6 + no battery backup demonstration of
using Micro-C and ATMEL89C2051 to build a device used for controlling night
lamp that turn on and off night lamp
with preset time on/off.
After reset or power failure occured, high blink rate of led will show, user should
press P3.0 to reset time to 18:00, low blink rate will show indicating normal
operation. The Saver V4.0 using Xtal 11.0592MHz produces EMI that interfere
TV
reception
This version the Xtal oscillator has changed to RC oscillator 680kHz. cputick
incremental was derived from 50Hz or 20ms main frequency.
Copyright (c) 1999 W.SIRICHOTE
*/
#include c:\mc51\8051io.h
#include c:\mc51\8051reg.h
/*-------- turn lamp on/off after reset time to 18:00 ---------*/
40

#define onHour1 18 /* 18:00 turn lamp on */


#define onMin1 00
#define offHour1 18 /* 18:01 turn off */
#define offMin1 01
/* every day turn on at 19:00 and and off at 22:00 */
#define onHour2 19
#define onMin2 00
#define offHour2 22
#define offMin2 00
/* set clock to 18:00 when press P3.0 */
#define setHour 18
#define setMin 00
/*-------------------------------------------------------------*/
extern register char cputick;
unsigned
register
sec25,sec50,sec,sec5,min,hour,flag1,temp,led,blink_rate;
/* above must be defined as register for tiny model */
/* variables description
cputick increments by one every 20ms sec25 half
second counter
sec50 2*25Hz counter sec
current second sec5
5
second counter min
current
min
hour current hour
temp temp register
led counter for led on duration (times cputick)
blink_rate 0 = high blink rate, 10 low blink rate flag1
intertask signaling
flag1.0 set every 1 second
every 1 min
use
0.5 second

mask byte
0x01 flag1.1 set
0x02 flag1.2 not
0x04 flag1.3 set every
0x08
41

char

flag1.4 set after P3.2 has been pressed


disable turn on/off 18:00-18:01 if set
not use
*/

0x10 flag1.5
0x20 flag1.6-7

main()
{
cputick = 0; hour = 18;
min = 0;
sec = 0; sec25 = 0;
sec50 = 0; flag1 = 0;
blink_rate = 0; /* indicate reset time to 18:00 is needed */
asm "LAMP EQU $97"; /* P1.7 */
asm{
SETB $AF /* setb EA */
SETB $A8 /* enable external interrupt */ SETB $88
/* negative edge triggering */
}
while(1)
{
while ( cputick < 1);
cputick = 0;

/* 20ms has elapsed */

/*------------- the following tasks execute every 10ms ------*/


time(); comparetime();
cpubeat(); settime();
/* waithigh(); */
}
/*-----------------------------------------------------------*/
}
time ()
/* update real-time clock, date */
{
sec25++;
if (sec25 >= 25) /* now 25 times means half second */
{sec25 = 0;
flag1 |= 0x08; /* set bit 3 every 0.5 s */
sec50++;
42

if (sec50 >= 2) /* 2 * 25 * 20 ms = 1 s */
{sec50 = 0;
flag1 |= 0x01; /* set bit 0 */
sec++;
if (sec >= 60)
{sec = 0;
flag1 |= 0x02; /* set bit 1 */
min++;
if (min >= 60)
{min = 0;
hour++;
if (hour >= 24)
{hour = 0;
}
}
}
}
}
}
comparetime()
{
if ((flag1 & 0x10) != 0) /* enabled only after P3.2 has been pressed */
{
compareTimeOn_Off();
}
}
compareTimeOn_Off()
{
if ((flag1 & 0x01)!=0)
{
testOnOff();
if(hour == onHour2 && min == onMin2)
asm" CLR LAMP";
if(hour == offHour2 && min == offMin2)
asm" SETB LAMP";
}
}
testOnOff()
43

{
if ((flag1 & 0x20) == 0)
{
if(hour == onHour1 && min == onMin1)
asm" CLR LAMP";
if(hour == offHour1 && min == offMin1)
{
asm" SETB LAMP";
flag1 |= 0x20; /* disable further test on off */
}
}
}
cpubeat()
{
beat5sec();
livecpu();
}
beat5sec() /* clear P3.7 every blink rate */
{
if ((flag1 & 0x08)!=0)
{
flag1 &= ~0x08; /* clear bit 3 of flag1 */
sec5++;
if (sec5 > blink_rate)
{sec5 = 0;
flag1 |= 0x40; /* set bit 6 of flag1 to signal livecpu task */
asm " clr P3.7"; /* make led on */
led = 2;
/* load time on duration times cputick */
}
}
}
livecpu()
{
if ((flag1 & 0x40) != 0)
{
led--;
44

if (led == 0)
{
asm " setb P3.7";
flag1 &= ~0x40;
}
}
}
settime()
{
if ((P3 & 0x01) == 0) /* reset time to 18:00 if P3.1 low */
{
hour = setHour; min =
setMin; sec = 0;
sec50 = 0;
flag1 |= 0x10; /* enable compare time on/off */
flag1 &= ~0x20; /* reenable testOnOff after pressing set clock to 18:00
*/
blink_rate = 10;
}
}
/*
waithigh()
{
asm" jnb P3.2,*";
pause(2);
asm" jnb P3.2,*";
pause(2);
}
pause(j)
int j;
{
int i;
for (i=0;i<j;i++)
;
}
*/

45

M ngun ASM
;CHUONG TRINH CHO IC MASTER
; P1: CAM BIEN NHAN VAO
; P0: TRUYEN SANG SLAVER
STARTB EQU P3.7
CT_NANG EQU P3.2
CT_HATAY EQU P3.0
CT_QUA EQU P3.1
CB_L EQU P1.2
CB_R EQU P1.1
MKEP_DIR EQU P2.0
MKEP_EN EQU P2.1
MNANG_DIR EQU P2.2
MNANG_EN EQU P2.3
STOP_C EQU 11111111B QPHAI_C EQU
00011111B QTRAI_C EQU 00101111B
LUI_C EQU 00111111B THANG_C EQU
01001111B TINHCHINH_C EQU 01011111B
ORG 0000H
LJMP INIT
ORG 001BH ;DIEM NHAP VECTOR NGAT CUA T1
LJMP NGATT1
ORG 0030H
INIT:;KHOI TAO CAC GIA TRI SAU RESET CLR TR0
MOV SP,#5FH
SETB STARTB
;BIT KHOI DONG MOV
P0,#0FFH
MOV P1,#0FFH
MOV R0,#0H ;BIT Dem SO NGA TU MOV
R1,#0H
MOV P2,#0H ;TAT CAC DONG CO
MOV IE,#0H ;CHO PHEP NGAT BO DINH THOI 1
MOV P3,#0FFH
MOV TMOD,#00010001B CLR TR1
CLR TR0
CLR TF0
CLR TF1
;=============================================
=============================================
=================================
46

MAIN:
;MOV P0,QPHAI_C JB
STARTB,MAIN LAP_CHINH:
MOV A,P1
ANL A,#00001111B MOV P0,A
LJMP LAP_CHINH EXIT:
NODO: SJMP NODO
;=============================================
=============================================
=================================
DEMNGATU:
INC R0
;LCALL STOP_ALL
; LCALL TRE_2S CJNE
R0,#2,TIEP1
LCALL DUNG_NGATU LCALL
TRE_QUAY
LCALL QUAYPHAI TIEP1:
CJNE R0,#10,TIEP2
LCALL DUNG_NGATU LCALL
TRE_QUAY LCALL QUAYphai
TIEP2:
CJNE R0,#15,DITIEP LCALL
DUNG_NGATU LCALL TRE_QUAY
LCALL QUAYTRAI HERE20: SJMP
HERE20
DITIEP:
TREQUAVACH: LCALL TRE0 ;CHO THOI GIAN TRE DI DI QUA VACH
NGANG
TROVE:
RET ;TRO VE CHUONG TRINH
;==================================
LAYQUA:
LCALL STOP_ALL
;KEPQUA
SETB MKEP_EN LCALL
TRE_quay CLR MKEP_EN
;NANG QUA
SETB MNANG_EN
DOINANG: JB CT_NANG,DOINANG CLR
47

MNANG_EN
;NHA QUA
SETB MKEP_DIR SETB
MKEP_EN LCALL TRE_quay
CLR MKEP_EN CLR
MKEP_DIR
;HA TAY
; SETB MNANG_DIR
; SETB MNANG_EN
; DOIHA: JB CT_HATAY,DOIHA
; CLR MNANG_EN
; CLR MNANG_DIR RET
;================================
DUNG_NGATU:
LAPNT:
JB P1.4,THOATNT MOV A,P1
ANL A,#00001111B MOV P0,A
LJMP LAPNT THOATNT:
LCALL STOP_ALL
LCALL TRE_QUAY MOV
P0,#00111111B DOINT: JNB P1.4,
DOINT LCALL STOP_ALL
MOV P0,#01011111B ;TINH CHINH LCALL
STOP_ALL
;================================== QUAYTRAI:
MOV P0,#00101111B ;QUAYTRAI LCALL
TRE_QUAY
LAPQT: MOV A,p1
ORL A,#11111001B
CJNE A,#11111111B,LAPQT LCALL
STOP_ALL
LCALL TRE_100
MOV P0,#00011111B ;QUAYPHAI
LAPQT2: MOV A,p1
ORL A,#11111001B
CJNE A,#11111111B,LAPQT2
LCALL STOP_ALL LCALL
TRE_QUAY
LCALL TRE_QUAY RET
;=============================================
48

============
QUAYPHAI:
MOV P0,#00011111B ;QUAYTRAI LCALL
TRE_QUAY
LAPQP: MOV A,p1
ORL A,#11111001B
CJNE A,#11111111B,LAPQP LCALL
STOP_ALL
LCALL TRE_100
MOV P0,#00101111B ;QUAYPHAI LAPQP2:
MOV A,p1
ORL A,#11111001B
CJNE A,#11111111B,LAPQP2
LCALL STOP_ALL LCALL
TRE_QUAY
LCALL TRE_QUAY
;============================================= ====
NGATT1:
RETI STOP_ALL:
MOV P0,#0FFH
RET
;====================CAC
THU TUC TRE================
TRE0:
;THU TUC DE TAO TRE QUA VACH NGANG NGA TU
mov r7,#50
again0: mov TH0,#HIGH(-10000)
mov TL0,#LOW(-10000)
setb tr0 wait0: MOV
A,P1
ANL A,#00001111B MOV P0,A
jnb tf0,wait0 clr tr0
clr tf0
djnz r7,again0
RET
TRE_500: ; 1s mov r7,#50
again_1S: mov TH0,#HIGH(-10000)
mov TL0,#LOW(-10000)
setb tr0
wait_1S: jnb tf0,wait_1S
clr tr0 clr tf0
djnz r7,again_1S
49

RET TRE_QUAY: ;
MOV R7,#100
again: mov TH0,#HIGH(-10000)
mov TL0,#LOW(-10000)
setb tr0
wait: jnb tf0,wait clr tr0
clr tf0
djnz r7,again
RET
TRE_100: ; MOV R7,#10
again: mov TH0,#HIGH(-10000)
mov TL0,#LOW(-10000)
setb tr0
wait: jnb tf0,wait clr tr0
clr tf0
djnz r7,again
RET
TRE_2S: ;
r7,#200

1s mov

again_2S: mov TH0,#HIGH(-10000)


mov TL0,#LOW(-10000)
setb tr0
wait_2S: jnb tf0,wait_2S
clr tr0 clr tf0
djnz r7,again_2S
RET END
6.3. K thut d ng.
Bi hc ny s nu ln cc phng php lp trnh d ng trong robocon. Vic lp
trnh d ng trong robot thc cht l vic x l tn hiu t sensor v a ra cc lnh
iu khin ng c m bo cho robot c th bm theo vch trng trn sn. Khi lp
trnh, cc bn phi xc nh uc tt c cc trng hp c th xy ra ca sensor, t
a ra cc tn hiu iu khin ng c hp l.
Quay v bi sensor, ta c s b tr sensor
|
|
50

|
| Vch trng

O
1

|
O |O
2 3

|
O| O
4 5

O (sensor)
6

4 sensor 2,3,4,5 dng bm ng. Khi trn sn thi u, gi s khi robot lch
sang phi sensor 2 chm vch trng, sensor 4 chm nn, bn phi iu chnh cho ng c
phi quay nhanh hn, ng c tri chm li hay dng robot quay li v tr. Tng t,
khi robot lch sang tri, bn cng iu khin tung t nh vy. Bng cch x l nh th,
bn s gip cho robot c th bm ng mt cch hiu qu.
Khi gp ng t, hai sensor ngoi cng 1,6 s chm vch trng, c mc tn hiu 0
a vo vi iu khin. Bn cn lp trnh m s ln mc tn hiu 0 vo vi iu khin
t suy ra ng t robot i.
6.4. K thut chng nhiu
Nh hc bi sensor, khi thi u nh hng ca n cao p trn sn c th gy
ra nhiu ln sensor dn ti vic nhn bit tn hiu sai. chng nhiu, bn c th s dng
chng trnh x l.
C nhiu trng hp do nhiu nn sensor c th nhn nhm vch trng. Do ,
bn phi vi iu khin kim tra thnh nhiu ln. M ngun:
void golong(unsigned char songatu)
{
unsigned char d=0; unsigned char
dem=0; motor(forward);
while (1)
{
if ((out_left==nen)&&(out_right==nen)) motor(forward);
if ((out_left==nen)&&(out_right==vach))
{
motor(right_stop);
motor(left_go);
}
if ((out_right==nen)&&(out_left==vach))
{ motor(left_stop);
motor(right_go);
}
// bat nga tu
if ((out_left==vach)&&(out_right==vach))
{
51

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

52

Chng 7: HON THIN V CHIN THUT THI U


Trong khi thi u, c rt nhiu cc tnh hung xy ra. Do ngi lp trnh cn
phi xy dng nhiu chin thut thi u khc nhau m bo c th x l kp thi mi
tnh hung c th c trn sn. hin th chin thut thi u, bn c th dung led 7
thanh hay mn hnh LCD, mt h thng cc phm bm iu khin, la chn cc
gii php thi u. Thc cht, phn ny chng ta quy v bi ton lp trnh giao tip vi
iu khin vi bn phm v mn hnh LCD, led 7 thanh.
7.1. S nguyn l led 7 thanh
a) Giao tip vi led 7 thanh
R _24V
10

5V

5V
MASTER
A1
A2
A3
B1
B2
B3
B4
B5

SW1
Cs1
100uF
R ST Rs1

Cta1

30p

10k

1
2
3
4
5
6
7
8

Y1
RST
Cta230p 11.509Mhz

5V

Rs ip1

PO0
PO1
PO2
PO3
PO4
PO5
PO6
PO7

5V
1

PO0
PO1
PO2
PO3
PO4
PO5
PO6
PO7

2
3
4
5
6
7
8
9

7
O
P
Start

10k 5V

.
.

d. c

f
P
a

31
39
38
37
36
35
34
33
32

P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

9
e

c
.
g .

. 5
b
.

U 17
2
1
7
6
4

R4
R5
R6
R
R8
R9
G
B

0
1

10
9 D
15 E
G
13 F
12 A
11 B
14 C
D
O
R I

8
D
N

D0
D1

D2
D3
SN7447
U16

7
1
2

PO0
PO1
PO2

PO3

C
C
V

XTAL1
XTAL2
R ST
EA/VPP

ISP_program

21
P2.0/A8
P2.1/A9 22
23
P2.2/A10 24
P2.3/A11 25
P2.4/A12 26
P2.5/A13 27
P2.6/A14 28
P2.7/A15
10
P3.0/RXD 11
P3.1/TXD 12
P3.2/I NTO 13
P3.3/INT1 14
P3.4/TO 15
P3.5/T1 16
P3.6/WR 17
P3.7/RD

P0.0/AD0
P0.1/AD1
P0.2/AD2
29
PSEN
P0.3/AD3
P0.4/AD4
30
P0.5/AD5
ALE/PROG
P0.6/AD6 D
P0.7/AD7 N
G

P89V51RD2

8
c

19
18
9

C L1
104

0
4

5V

Rp1
470
1t
h
P
_
d
e
L

BR L V
4 5 3 6
1
5V

1
3
5
7
9

5V

2
4
6
8
10
CON10AP
int

SELECT_PR/OINT0
/INT1
T0
T1
PO4
PO5
PO6

P30(RXD)
P31(TXD)
/IN T0
/IN T1
T0
T1
A4
A5

5V

1
2
3
4
5
6
7
8
9
10
CON10

0
2

5V

P30(RXD)
P31(TXD)

Vidieukhien1
Vidieukhien2
Vidieukhien3
Vidieukhien4
Vidieukhien5
Vidieukhien6

2t
h
P
_
d
e
L

5V

5V

5V

5V

Rp2
470

Rp3
470

Rp4
470

Rp5
470

3t
h
P
_
d
e
L

4t
h
P
_
d
e
L

5t
h
P
_
d
e
L

6t
h
P
_
d
e
L

Connecter_sensor

Rp6
470

Led_Phat1
Led_Phat2
Led_Phat3
Led_Phat4
Led_Phat5

1
3
5
7
9
13

2
4
6
8
10
12
15

Led_Thu1
Led_Thu2
Led_Thu3
Led_Thu4
Led_Thu5
Led_Thu6
16

C ON 16AP

s trn, ta s dng 1 led 7 thanh hin th cc chin thut thi u 1,2,3.v.v.


2 phm bm choice v start la chn chin thut. Mt led 7 thanh c th hin th
c 10 chin thut thi u tng ng vi cc s t 0 n 9. Ngoi ra, led 7 thanh
cn c dng hin th s ng t.
7.2. M ngun led 7 thanh
void main()
{
unsigned char tam=0;
53

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:{
hanhtrinh7();
}
break;
54

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;}

55

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;}
}
7.3. S dng LCD
VC C

un

g
dd
el

_t c

el

o
_

R_SIP10

SW2_co ng
J um _co ng
1
2

P0.5

SW3_t ru
P0.6

1
2
J um _tru

EA
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0

10
9
8
7
6
5
4
3
2

VC C
1
RESISTOR SIP 10

VC C

U1

r
et
d

el
Enter

e
ci
oh
c
_
d el
P0.7
P3.3

C hoic e

D1
LC D2x16
VC C

15
16

P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7

39
38
37
36
35
34
33
32
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

1
2
3
4
5
6
7
8

P0.0/AD0
P0.1/A D1
P0.2/A D2
P0.3/A D3
P0.4/A D4
P0.5/A D5
P0.6/A D6
P0.7/A D7
P1.0/T2
P1.1/T2-EX
P1.2
P1.3
P1.4/S S
P1.5/MOS I
P1.6/MI SO
P1.7/SCK
AT89S8252

A
LCD Display 2x16
K

EA
RST

D d E
N d EW S 0 1 2 3 4 5 6 7
G V VR RE DD DD D D D D

31
9

EA/VPP
R ST

VCC
C_nhieu
104

1 2 3 5 4 6 7 8 9 0 1 2 3 4
1 1 1 1 1
VC C 3 4 0 1 2 3 4 5 6 7
. . . . . . . . . .
0 0 2 2 2 2 2 2 2 2
P P P P P P P P P P

VC C

T
E
S
E
R
_

SW_res et

C47u

mo
0
0
1

56

R_RESET

P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/ W R
P3.7/RD
ALE/PROG
PSEN
XTAL2
XTAL1

40
VC C

P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/ A12
P2.5/ A13
P2.6/ A14
P2.7/ A15

21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17

P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
RX
TX
IR P3.3
D0
D1
D2
D3

30
29

C 1_ZTA

18
19

33
Z TA
12M

C 2_ZTA

N
G
0
2

33

S trn thay th led 7 thanh bng LCD. Nhn chung dung LCD hin th
chin thut thi u chuyn nghip hn (vi hin th c c ch) tuy nhin, dng
LCD kh tn km v khng tht s hiu qu. V th, tt nht l cc bn nn s dng led 7
thanh hin th chin thut 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;

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)

57

delay (100);

{
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);
(key==2)LCDputs("2
",1);
(key==3)LCDputs("3
",1);
(key==4)LCDputs("4 ",1);
LCDputs("1:C 2:S 3:D 4:E",2);
if (key>4) { LCDputs("0 ",1);key=0;}

58

if
if
if

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

// keyboard

59

if
if

You might also like