Ụ Ụ M C L C

Trang

TÓM T TẮ

ụ 1. M c tiêu nghiên c u

ứ ả ướ ể ạ ạ ữ ể ạ ố - Tìm h ng gi m thi u tai n n giao thông t i nh ng đo n đèo d c nguy hi m

ế ệ ố ươ ườ ử ụ ắ ạ ờ - Thay th  h  th ng g ầ ng c u th ng có th i gian s  d ng ng n và ph m vi quan sát

g nầ

ả ờ ỏ - Tr  l i các câu h i:

ệ ố ầ (cid:0) H  th ng có thay th  t ế ố ươ t g ng c u không ?

ộ ệ ố ắ (cid:0) Giá thành l p đ t m t h  th ng ? ặ

(cid:0) ậ Chi phí phát sinh trong quá trình v n hành ?

ề ả ậ ấ (cid:0) V n đ  n y sinh trong quá trình v n hành ?

ệ ề ơ ả ế ề ạ ạ ườ ữ ự ự  th c hi n  2. Trình t ấ Tìm hi u các v n đ  c  b n sau: - Đi u ki n chi u sáng t ệ i nh ng đo n đ ố ng đèo d c

ệ ả ươ ầ - Kh  năng quan sát và báo hi u qua g ng c u

ệ ủ ệ ố ế ả - Kh  năng chi u sáng và báo hi u c a h  th ng

ề ệ ắ ạ ữ - Đi u ki n n ng t ố ạ i nh ng đo n đèo d c

ạ ườ ộ ộ ữ ủ - Đ  r ng c a nh ng đo n đ ố ng đèo, d c

ế ế ế ạ ệ ử ự ố ệ - Ti n hành thi t k  m ch đi n t ầ  d a vào yêu c u và các s  li u

ả 3. K t qu  nghiên c u ẩ ố ớ ả ế  Đ i v i s n ph m

ệ ả ự ả ự ổ ị - Th c hi n c nh báo  n đ nh khi có xe đi vào khu v c c m bi n ế

ạ ộ ế ộ ủ ề ả ả ầ ườ - Đ m b o yêu c u đi u khi n ch  đ  ho t đ ng c a đèn đ ể ng

 Đ i v i h  th ng  ố ớ ệ ố

ỏ ọ ứ ả ầ - Nh  g n và đ m b o yêu c u ch c năng ả

ạ ườ ể ấ ợ ị - Giá thành th p phù h p đ  trang b  cho các đo n đ ng

Trang 1

ế ệ ượ ­    Ti t ki m năng l ng

Trang 2

PH N IẦ :

GI

I THI U

ặ ấ 1. Đ t v n đ ệ ộ ế ộ ấ

ả ẫ ặ ư i gi ệ t là nh ng đo n đ

ế ầ ươ ạ ạ ộ ạ i nh ng n i h n ch  t m nhìn đ c bi ơ ươ

ữ ả ừ ữ ệ ố i nh ng n i đó đã có h  th ng g  kho ng cách khá g n và không th  c nh báo t

ầ ể ả ấ ơ ế ờ ng c u theo th i gian s  b  b i bám vào làm m t đi tính năng ph n chi u. Xu t phát t

ầ ẽ ị ụ ố ấ ế ủ ề ớ ộ ộ

Ả ề ạ ọ

ỏ Ố ơ ự ậ ỹ Ố ” thu c lĩnh v c “K  thu t đi n và c  khí”.

ươ ữ ừ ạ ạ ạ ả ề   Hi n nay, tai n n giao thông là m t v n đ  mà c  xã h i đang quan tâm. Làm th  nào ỏ ỏ ớ ờ ể ể ả i đáp th a đáng. Tai   đ  gi m thi u tai n n giao thông là m t câu h i l n v n ch a có l ấ   ườ ạ ữ ạ ấ ễ ả ơ ạ ng cua g p. n n r t d  x y ra t ầ   ệ ạ ặ ng c u M c dù t ng c u, tuy nhiên vi c quan sát qua g ệ ố   ữ ượ ả ở ạ c. H n n a h  th ng i ph i  l  xa đ ừ  ươ ả ầ g ả   ầ ấ v n đ  trên v i mong mu n đóng góp m t ph n nh  bé c a mình vào cu c chi n gi m ể Ệ thi u tai n n giao thông em đã ch n đ  tài “   H  TH NG C NH BÁO GIAO THÔNG Ạ ệ ộ ĐO N ĐÈO D C ứ ụ 2. M c đích nghiên c u ộ ệ ố ­ T o m t h  th ng c nh báo t i nh ng đo n đ xa cho các ph ệ ng ti n qua l ườ   ng

cua g pấ

ạ ế ươ ng c u còn nhi u h n ch

ầ ạ

3. Gi

ườ ữ ạ ạ ấ ế ệ ố ế ệ ố ề ­ Thay th  h  th ng g ầ ể ả ­ Góp ph n gi m thi u tai n n giao thông ề ế ấ ả  thuy t v n đ ­ Khi có xe qua l

ằ ử

ỗ ạ ữ ị ệ ể

ừ ữ   ng cua g p, n u có nh ng h  th ng giúp ta phát ư ậ ấ   ệ ộ ả hi n và x  lí thông tin sau đó hi n th  lên m t b ng hi u b ng ánh sáng màu thì nh  v y r t ố t   i ch  này. Vì ánh sáng có th  quan t và h u ích cho nh ng ph sát t

ơ ữ ườ ượ ế ế ữ ị ụ i nh ng đo n đ

ế ng này r t c n đ ộ ấ ấ ầ ề ầ

ươ i nh ng đo n đ ể ệ ươ ng ti n giao thông qua l ờ  xa và không b  b i che m . ạ ạ ­ H n n a, t ượ ng là m t v n đ  c n quan tâm r t l n, m c dù đã có h i khu v c này mà h ng m t tr i. Tuy nhiên, khi không có ph

ấ ớ ạ ệ ng ti n qua l ầ ự ộ ệ ố ặ ờ ụ ệ ấ ậ

ế

ể ự ằ ế ế ệ ế ệ ệ ượ t ki m năng l ng.

ế ạ ệ ng ti n qua l i hay không đ  th c hi n vi c chi u sáng. N u không có ph ầ ắ ệ ạ ượ ủ

t vi c chi u sáng nh m ti ứ c c a nghiên c u ệ ươ ng ti n qua l ạ i

ạ   ể ạ ữ c chi u sáng đ  h n ch  tai n n ệ  ặ đáng ti c. Tuy nhiên năng l ố ệ  ượ th ng năng l ố ậ   ẫ th ng đèn v n liên t c chi u sáng thì r t lãng phí đi n năng. Vì v y, c n m t h  th ng nh n ươ ươ   ế t có ph bi ng ạ ệ ti n qua l i thì c n t ầ 4. Yêu c u đ t đ ả ệ ố

ể ệ ố ườ ể ề ả ­ C nh báo chính xác ph ỏ ọ ­ H  th ng nh  g n ộ ụ ­ Giá thành r , có th  áp d ng r ng rãi ệ ng hi u qu ­ Đi u khi n h  th ng đèn đ

Trang 3

PH N 2Ầ

PH

Ị Ậ Ữ Ệ

ƯƠ I. PH

Ệ Ế NG PHÁP VÀ THI T B  THÍ NGHI M ƯƠ NG PHÁP THU TH P D  LI U

ậ ữ ệ

1. Thu th p d  li u ệ ố ầ ả ươ ữ ị ị c ph ệ ng ti n qua l ạ ạ i t i nh ng v  trí xác đ nh.

ể ư ậ ả ử

ệ ượ ể ề ệ ố ể ế ế ượ t đ ­ Yêu c u h  th ng ph i nh n bi ­ X  lí thông tin đ  đ a ra c nh báo ­ Phát hi n đ c ban ngày và ban đêm đ  đi u khi n h  th ng chi u sáng

ạ ệ ử

ầ ứ 2. Xây d ng ph n c ng ơ ồ ố ủ ự 2.1. Xây d ng s  đ  kh i c a m ch đi n t a. Nguyên lí làm vi cệ

ạ ộ ườ ấ ở ị ủ ắ Quan sát trên hình là m t đo n đ ng cua khá g p, ỏ  v  trí c a xe đ  và xe tr ng s ẽ

ượ ể ả ế ộ ệ ố ử ụ ể ấ không th  th y nhau đ c. Do đó đ  c nh báo cho hai xe bi t ta x  d ng m t h  th ng có

ư ệ ẽ ế ả ậ ế ệ ố nguyên lí làm vi c nh  sau. H  th ng s  có hai c m bi n nh n bi t có xe qua l ạ ặ ạ i đ t t i hai

ử ừ ử ệ ề ả ẽ ế ử ị A và B. Khi có xe qua A, B các c m bi n g i tín hi u v  cho vi x  lí. T  đó vi x  lí s v  trí

ệ ặ ố ươ ứ ạ ơ ặ ể ế ồ ờ ậ b t tín hi u báo có xe lên ho c xu ng t ng  ng t i n i đ t bi n báo ệ C. Đ ng th i, n u h

ượ ụ ế ợ ượ ặ ờ ữ ố th ng đ c tích h p trong các tr  đèn chi u sáng dùng năng l ạ   ng m t tr i trên nh ng đo n

ườ ậ ệ ố ề ể ế ả ạ đ ng này, nó còn có kh  năng đi u khi n b t h  th ng chi u sáng khi có xe qua l ế   i và n u

Trang 4

ạ ả ờ ị ướ ệ ố ẽ ắ ệ không có xe qua l i trong kho ng th i gian đ nh tr c h  th ng s  t ế t vi c chi u sáng đ ể

ế ệ ti ệ t ki m đi n năng.

ơ ồ ố b. S  đ  kh i

ệ ủ ệ ố ể ạ 2.2. Tìm hi u các m ch đi n c a h  th ng

ế ạ ả ả a. M ch c m bi n kho ng cách HC­SR04

Trang 5

(cid:0) ả ả ế ổ ế ể ấ ị

Ẻ ể ả

ượ ử ụ ế ử ụ ớ ộ ả ả ư ụ ừ ầ ả ỉ

ậ c s  d ng r t ph  bi n đ  xác đ nh C m bi n kho ng cách siêu âm HC­SR04 đ kho ng cách vì R  và CHÍNH XÁC. C m bi n s  d ng sóng siêu âm và có th  đo   ộ   kho ng cách trong kho ng t  2 ­> 500 cm, v i đ  chính xác g n nh  ch  ph  thu c vào cách l p trình.

o VCC ­­> pin 5V Arduino.

o

(cid:0) ơ ồ ủ S  đ  chân c a HC­SR04 g m ồ : VCC, trig, echo, GND. Trong đó:

o

ệ ừ ả ế ẽ trig ­­> chân digital (OUTPUT), đây là chân s  phát tín hi u t c m bi n.

ậ ạ ẽ ệ ượ i tín hi u đ ả c ph n x ạ

o GND ­­­> GND Arduino.

echo ­­> chân digital (INPUT), đây là chân s  nh n l ừ ậ ả t v t c n

(cid:0) Nguyên lý ho t đ ng ạ ộ

o Đ  đo kho ng cách, ta s  phát 1 xung r t ng n (10 microSeconds ) t

ả ể ừ ẽ ấ

ề ộ ẽ ằ ờ

ể ắ    chân ở ế ẽ ạ ả ậ   ế trig. Sau đó, c m bi n s  t o ra 1 xung HIGH  echo cho đ n khi nh n  chân  ủ ớ ạ ở ạ ượ ả  pin này. Chi u r ng c a xung s  b ng v i th i gian c sóng ph n x   l   i đ ở ạ   ừ ả ượ i.  c m bi n và quay tr  l c phát t sóng siêu âm đ

o T c   đ  c a  âm thanh trong  không  khí  là  340  m/s  (h ng  s   v t  lý),  t ượ

ố ậ

ươ   ng ờ   c th i

ng v i 29,412 microSeconds/cm (10 ậ ượ ộ ủ ớ ẽ ể ả ố ươ đ gian, ta s  chia cho 29,412 đ  nh n đ ằ 6  / (340*100)). Khi đã tính đ c kho ng cách.

Trang 6

ậ ạ ế ố b. M ch nh n bi t sáng t i

ế

M ch nh n bi

t sáng t

i

ạ ộ ủ ế ạ ở  Nguyên lí ho t đ ng c a m ch nh  sau: Vào ban ngày ánh sáng chi u vào quang tr

ệ ở ủ ở ứ ư ả ạ ư ậ

ẫ ở ủ ệ ế ẫ ở m c cao. Khi    i, không có ánh sáng chi u vào quang tr  làm đi n tr  c a nó tăng nên Tranzitor d n vì

ở ứ ấ làm cho đi n tr  c a nó gi m m nh vì v y Tranzitor ng ng d n nên chân C  ờ ố tr i t ậ v y chân C m c th p.

ừ ấ ở ứ ở ứ ấ m c cao, ban đêm chân C m c th p.

­ T  nguyên lí trên ta th y ban ngày chân C  ớ ể ế ậ ổ ố t ban ngày hay bu i t i.

ế ố ề ể ể ạ Do đó ta k t n i chân C v i VĐK đ  nh n bi c. M ch đi u khi n bi n báo

ấ M ch công su t cho bi n báo

­

Bi n báo hi u

ạ ấ   *M ch công su t

ể ề ể ể ấ ọ ặ ­ Ta ch n Tranzito công su t ho c Fet đ  đi u khi n bi n báo.

ệ ư ủ ể ở ­ Khi có tín hi u đ a vào chân B c a Tranzitor đ  kích m  thì có dòng qua Tranzitor do

ẽ ể đó s  làm bi n báo phát sáng.

ệ ư ư ể ẫ ­ Khi không có tín hi u đ a vào chân B, Tranzitor ng ng d n nên bi n báo không phát

sáng (t t)ắ

ể ệ *Bi n báo hi u

ệ ượ ể ừ ể ế ệ ượ ­ Bi n báo hi u đ c làm t các đèn led đ  ti t ki m năng l ng

Trang 7

ấ ạ ủ ­ C u t o c a led

ể ệ ố ố ị ­ B  trí các Led theo hình mũi tên đ  hi n th  xe lên và xu ng

ố ử d. Kh i x  lí trung tâm

­ M ch ạ

ệ đi n dùng

chíp

ể ề ể AT89C2051 đ  đi u khi n

Hình  nh c a IC

ộ ề ể ủ ư

ỉ ườ

ệ ầ ố ệ ệ ộ i 24Mhz.

ậ b ng kênh UART .

ộ ố ặ * M t s  đ c tính ầ ủ Đây là m t  vi đi u khi n c a hãng  atmel, đ y đ  các tính năng nh   chip 89C51. ậ ấ ­ Chip này ch  có 20 chân.  15 đ ng xu t nh p ở ứ ườ  m c 5V ). ng dùng   ­ Đi n áp làm vi c : 2,7 V    6V.  (Th ớ ừ ạ ầ ố ­ T n s  làm vi c: T n s  dao đ ng th ch anh t  0 t ­ ROM : 2Kbyte Flash ROM . ­ RAM:  128  bytes. ộ ị ­  Hai b  đ nh thì 16­bit. ầ ự ằ ­  L p trình tu n t ắ ồ ­ Có 6 ngu n  ng t .

Trang 8

ớ ươ ng trình.

ợ ẵ

ề ế ộ ứ ­ Có 2 m c khóa b  nh  ch ố ế ­ Có c ng n i ti p. ­ Hai  b  so sánh Analog tích h p s n trên chip.  ể Tr c ti p ti p đi u khi n LED ngõ  ra.

ộ ự ế ơ ồ ố * S  đ  kh i

ơ ồ * S  đ  chân

ơ ồ

S  đ  chân

Trang 9

ừ ượ ừ ậ PORT  1: T ấ  chân 12    19:  Xu t nh p d  li u, t

P1.2    P1.7 đ ấ ữ ệ ứ ứ ự ầ ể c dùng  đ  kéo lên     ng   ng tích c c m c logic  cao và th p cho hai đ u vào AIN0 và

ứ ươ ủ ộ

bên trong.  P1.0 và P1.1 t ươ ộ ế ạ ệ ng   ng c a b  so sánh chính xác  trên chíp . ầ ố

ể ị ự ể ề ư ủ ể ế ể

ượ ử ụ ể ữ ồ ữ ầ

ữ ệ ừ ươ ư ậ c mã d  li u t

AIN1  t ể ạ Port 1, b  khhuy ch đ i đ m đ u ra có th  h  xu ng  20mA và có th  đi u khi n LED   ầ   ử ụ ữ ỉ ầ hi n th  tr c ti p.  Ch  c n 1s đ  chuy n nh ng chân c a Port 1 s  d ng nh  nh ng đ u ẽ ữ    là nh ng ngu n dòng vào. Khi chân P1.2  P1.7 đ c s  d ng nh  nh ng đ u vào, chúng s  ượ ượ I  vì đ   ng trình FLASH và  ch c kéo lên bên trong. Port1cũng nh n  đ ệ ự th c hi n.

ệ ở

ể ậ ấ ộ

ườ ữ ữ ể ủ ứ

ố ố ị ể ư ẽ ầ ồ

ượ ệ ủ ữ ụ ụ ữ ề ứ ủ ư ặ ữ ố PORT   3:   Chân s  2, 3 , 6, 7, 8, 9, 11, nh ng   chân này  đã có đi n t r  kéo lên. P3.6   ậ   ủ ng xu t nh p   trên b  so sánh c a chip và không th  truy c p . c n i c  đ nh gi a  đ ể  ở ự c kéo lên bên trong   t c a 89C2051 nh  sau: ượ đ ỉ ầ Ch  c n 1s đ  chuy n nh ng chân c a Port 3 lên m c cao b i s  kéo lên bên trong và có th ử ụ s  d ng nh  nh ng đ u vào, chúng s  là nh ng ngu n dòng I  vì đ Port 3 cũng ph c v  cho các ch c năng c a nhi u tính năng  đ c bi

ệ ể ừ ề Flash và th c hi n.

ậ ượ Port 3 cũng nh n đ ệ ố c tín hi u đi u khi n t ả ệ ở ứ ườ ự ng dùng m c 5V)

ạ ộ ườ ng.

ầ i tr ng thái ban đ u.

t l p  l  ạ ạ ả ế ề ộ

ạ ả ế

ạ ả ề ế ng  ng c a b  khuy ch đ i đ o chi u, nó

ủ ộ ộ ể ạ   c s  d ng nh  m t b  giao đ ng trên chíp (hinh 1). Tinh th  th ch

ượ ử ụ ưở ừ ­  Vcc : Chân s  20: đi n áp vào kho ng  2,7V   6V( th ố ­  GND : Chân s  10: chân n i mass. ầ ậ ạ ạ ­  RST : Xác l p l i tr ng thái ban đ u . RST=0: Chíp ho t đ ng bình th ạ ạ ế ặ ượ c thi RST=1: Chíp đ ạ ­  XTAL1: Ngõ vào m ch t o xung  clock trong chip và ngõ vào b  khu ch đ i đ o chi u. ề ừ ộ ­  XTAL2: Ngõ ra t   b  khu ch đ i đ o chi u. ươ ứ XYAL1, XTAL2 là ngõ vào và ngõ ra t ư ộ ộ ể ị có th  đ nh hình và đ ặ ộ c s  d ng.  Ho c là nhân xung  t  anh hay c ng h ượ ử ụ ố ng g m đ bên ngoài(hình  2)

Trang 10

ặ ệ * Thanh ghi có ch c năng đ c bi

ứ ơ ồ ủ t : ộ

ớ ặ ượ

ọ ệ ượ t đ ả ướ c đ a vào b ng d ỉ ố ả ấ ả ư ị ượ

ẫ ỉ ị

ị ị t c  các đ a ch  đ ỉ ọ ẽ ị ệ ự ị ứ   c g i là thanh ghi có ch c Bên trong s  đ  c a chip có m t   vùng nh  đ c bi ỉ ủ ằ ư ệ ặ i đây .L u  ý r ng:   năng đ c bi t.Các vùng đ a ch  c a thanh ghi  đ ự   ể ỉ ượ ử ụ c th c c s  d ng, và các đ a ch  tr ng có th  không đ không   ph i t ấ   ẽ ấ ở ề ữ ệ ệ hi n trên chíp. Đ a ch  đ c s  truy xu t tr  v  d  li u ng u nhiên, và đ a ch  ghi s  truy xu t ề ế ộ v  ch  đ  không có hi u l c xác  đ nh.

Trang 11

* B  nh  ch ng trình khóa bit:

ể ặ ộ ộ ớ ươ ể ậ   Trên chíp có   hai b  khóa bit có th  ho t đ ng không c n l p trình (U), ho c có th  l p

ể ổ ề ệ ướ ạ ộ ư ợ ầ ậ ả trình (P)  đ  b  sung thêm nhi u  tính năng đ   c li t kê trong b ng d i đây .

Trang 12

ỉ ế ộ * Ch  đ  ngh  : Ở ế ộ ạ ậ c đ t ủ  ch  đ  ng  trong khi t

ề ạ ộ

ẽ ế ộ ế ộ

ổ ặ ượ

ầ ứ ế ậ ở ứ ạ i b t kì khi  nào có s  kích ho t hay thay đ i nào đó, ho c đ t l p ẫ   ấ ả ộ ượ ế ộ t c  b  ph n ngo i  vi v n ủ ầ ượ ọ ộ c g i ra b i ph n m m. N i dung c a các thanh ghi trong RA M   ỉ  ổ ở ệ  ch  đ  này. Ch  đ  ngh t cũng s  không đ i  ằ   c reset b ng ư ợ    m c "L" n u bên ngoài­up không đ   c

ặ ượ ử ụ t l p m c "H" n u bên ngoài  pull­up đ

ộ ế c s  d ng.  ệ ự ệ

ỳ ầ ứ ề

ặ ở ở ặ ự ượ c thi ế ế ậ ở ứ ế ỉ ớ ạ ắ i t t,  lên t  ế ậ ạ t l p l ườ ậ ể ợ

ậ ấ ộ

i m t Port hay b  nh  ngoài i, ta không nên vi

ươ ừ ộ c. Đ  ỉ ượ ặ ạ 6. Ch  đ  power ­down :

ự ệ ộ

ượ ẽ ặ ị t cũng s  không đ i

ế ộ ng  trình s ấ ả t c   ế  ch  đ  này cho đ n khi ch  đ  này   ế ậ ạ t l p l c th c hi n.  Trên chíp n i dung   RAM và t ế ộ ị i giá  tr  các

ứ ư ỉ  ch  đ  ngh ,  CPU đ ế ộ ho t đ ng. Ch  đ  này đ ị ấ ả t c  các giá tr  trong thanh ghi đ c bi và t ạ ấ ể ị ừ có th  b  d ng l ph n c ng. Các P1.0 và P1.1 nên đ ử ụ s  d ng, ho c thi ằ ằ ầ ư ầ ứ C n l u ý r ng khi  “ngh  ”l à  k t thúc b ng m t  ph n c ng. T ài li u th c hi n  ươ ề ừ ư ớ ch  đâu nó l ng trình t  i hai chu k  máy  tr   c khi các nguy ên t  c đi u  ể ộ ế ị khi n bên trong thi t đ nh quy  n truy c p vào  b   i.  Trên chíp  ph n c ng  quy  ế ị ớ ư nh  trong RAM  trong tr ng h p này, nh ng truy c p vào các  port   không th  quy t đ nh  ế ộ ờ ế ả ể ạ ừ ả ượ ộ  lo i tr  kh  năng  này x y ra m t cách b t ng  vi đ t cho m t port   khi ch  đ   ộ ớ ộ ế ớ t t c l  p l ngh   đ ộ Ở ế ộ ế ộ  ch  đ  power­down,  b  dao đ ng ng ng, và ch ố ẽ ọ  g i  power­down  và l nh cu i cùng đ các giá  tr  trong thanh ghi đ c bi ế k t thúc. Ch  đ  powerdown  ch  thoát ra khi reset l SFR ( thanh ghi  có ch c năng đ c bi

ệ ư ớ ườ nguy ên.  ạ ộ i ho t đ ng bình th

ệ ổ ở ế ộ ầ ứ ạ i   ph n c ng. Thi ữ ẫ t) nh ng trên RAM v n gi ụ ồ ạ ượ c ph c h i l ộ ộ ệ ỉ ặ i  tr   c khi VCC đ ể Chú ý: Không nên reset l  ả ượ ạ ự ủ ữ ứ ở ộ ạ m c tích c c đ  dài, đ  cho phép b  giao đ ng kh i đ ng l ng  ệ i và làm vi c c gi

Ở ả ế ộ c  hai ch  đ  ngh  và ch  đ  power ­donw, P1.0 và P1.1 nên set m c "0"

ế ộ ệ ử ụ ể ặ ở ở ứ ở ứ ế ử ụ và ph i đ ị ổ n đ nh. L u ý:ư ỉ ế n u không s  d ng đi  n tr  bên ngoài đ  kéo lên, ho c set m c "1" n u s  d ng

đi n ệ

ở bên ngoài đ    kéo lên.

tr  ậ ể * L p tr ình Flash :

ạ ề ể ớ ộ

ớ ậ ộ ớ

ạ ượ ậ ụ ộ ộ ả ạ ờ

ể ể ậ ả ộ ả ả ượ ớ ầ Chíp    89C2051 là  m t lo i vi đi u khi n v i 2K bytes b  nh  PEROM có th   xóa ộ   i. Các mã l p trình b  nh  là m t ấ ỳ  ể ả c l p trình, đ  đ m b o b t k ằ   c xoá  hoàn toàn b ng

ộ hoàn toàn ( ví d , n i dung = FFH) và có th  l p trình l ể ả m ng byte t i m t th i đi m. Sau khi các m ng đã   đ ố ươ ch ng trình nào không tr ng byte, toàn b  m ng  nh  c n ph i đ đi n.ệ

ị ậ ỉ

ỉ ộ ế ị ủ ị ộ ị ể ­ Đ a ch  b  đ m bên trong: V i đi u khi n 89C2051 có m t đ a ch  truy c p   ( bên   ụ   ứ  giá  tr  000H   trên m c cao c a RST và áp d ng

ừ ứ ươ ng t

ỗ ượ ế c khuy n cáo nên

ỗ ụ ữ

ứ ặ

ứ ặ

ứ ứ ụ ữ ớ ề ặ ở ỉ ế trong PEROM ) đ a ch  đ m luôn luôn  d t  ự ủ m c tích c c c a xung  d  chân XTAL1. ể ậ ậ ­ Thu t toán: Đ  l p trình cho chip 89C2051, sau đây là các chu i đ ử ụ s  d ng: + Chu i Power­up : ệ ồ Áp d ng ngu n đi n gi a chân VCC và GND ể Đ t RST và XTAL1 đ  GND ứ + Đ t chân RST  lên m  c cao (m c 1) Đ t chân P3.2 lên m c cao (m c 1) ế ợ + Áp   d ng k t h p gi i cho các  chân

ể ự ộ ặ  2 m c logic  “H” ho c “L” ; (“1” ho c “0”)t ọ P3.3, P3.4, P3.5, P3.7 đ  l a ch n m t trong nh ng ch

ữ ế ộ ậ ị

ể ụ ế ặ ạ ng trình ho t  ướ i đây. ế v  trí 000H đ n P1.0 đ n  P1.7.

ữ ệ ể ươ ươ ả ộ đ ng hi n th  trong PEROM b ng ch  đ  l p trình d ừ ị + Áp d ng cho d  li u mã byte t ạ + Cho RST lên 12V đ  kích ho t ch ng trình.

Trang 13

ở ộ ừ ươ ặ t byte trong PEROM ho c bit khóa. Các

ng trình m  ư ờ + Xung t byteghi  là chu k  t

ể ể i ch ấ   và th   ng m t trong 1,2 ms. ừ ấ c l p trình, th p h n RST t 12V,   ta đ  m c logic  "1" và set

ữ ở ứ ệ

ợ ế ế ể ậ ở ị ượ ừ ộ ơ ữ  m c thích h p. D   li  u ra có th  đ c   v  trí k  ti p, xung  kích t ể ứ ể ọ ở  Port 1.  chân XTAL1 đ ộ   c kích  m t

ớ ượ ư ữ ệ ị c đ a vào Port 1.

ố ộ ị ướ ướ c 8, thay đ i d  li u và nâng cao c 6 thông qua b

i các b ậ ố ủ ậ ế ế ả ặ ộ ớ  chân P3.2 t ờ ỳ ự ẹ  h n gi ữ ệ ượ ậ + Đ  ki m tra d  li u đ ế chân P3.3 đ n P3.7 gi   + Đ  l p trình m t   byte   ể ầ l n đ   ỉ nâng   cao s  b  đ nh đ a ch   bên trong. D  li u  m i đ ổ ữ ệ ặ ạ + L p l ỉ ị đ a ch  truy c p cho toàn b  2K bytes m ng ho c cho đ n khi k t thúc đ i c a t p tin

ỗ m c  "L".

ở ứ ẽ ể ữ ệ ầ ự ữ ệ ế c.ượ đ + Chu i Power­off: XTAL1và RST  set  Ki m tra d  li u: chip AT89C2051   s  ki m tra tu n t ể  d  li u đ  và cho bi ờ   t th i

ể ế ể đi m k t

ỳ ờ ủ ớ

ẽ ố ọ  c  đ c  t  ạ

ấ ế ế

ể ắ ầ

ươ ế ậ ở

ở ứ ấ

ẽ ở ạ ươ ự ệ ể ậ ộ ộ   thúc c a m t chu k  vi i byte t. Trong  th i gian m t chu k    máy , nó s  ữ ệ   c ghi cu i cùng và s  b  sung các byte d  li u trên P1.7. Sau khi ch y xong  1 chu kì ệ   ạ ẽ ắ ầ t c  các port, nó s  b t   đ u  ch y chu kì k  ti p.  Vi c ế ế ế ượ c ti n hành READY  / BUSY   ệ   ể ượ c theo dõi b i tín hi u ng  trình cũng  có th  đ ờ ở ứ    m c cao trong th i gian  m c th p sau khi chân  P3.2   ứ   ng trình ng trình th c hi n đ  báo BUSY (b n). chân P3.1 s  tr  l i m c cao khi ch

ẵ ỳ ế ố ượ ẽ ổ đ ợ ệ ở ấ ả ữ ệ    máy, th y d  li u h p l  t ể ấ ứ ki m tra có th  b t đ u b t c  lúc nào khi chu kì k  ti p đ ủ ẵ (s n sàng/b  n): Byte ti n trình c a ch ầ đ u ra  READY/BUSY.  Chân P3.1  ươ ch ự th c hi n đ  báo READY ( s n sàng ).

ư ư ợ ậ ữ ệ ể ế ể ng trình ki m tra : N u bit khóa LB1 và LB2 ch a đ   c l p trình mã d  li u thì ệ ươ Ch

ể ể

ừ ứ ứ ỉ

ư ờ ữ ệ i  d  li u thông qua các đ   ng dây đ  ki m tra: ậ ế ậ t l p   l  ụ ạ ị i đ a ch   truy c p bên trong là  000H và chân RST t  ọ ệ ữ ệ ể ể ệ có  ể ọ ạ th  đ c l  m c L lên  m c H. + Thi ọ   ề + Áp d ng   vi c ki m  tra các tín hi u  đi u khi n cho phép  đ c mã d  li u và  đ c

các dữ

ấ ệ

ố ộ ị ượ ầ ị ỉ c kích 1 l n đ  nâng cao s  b  đ nh đ a ch    bên trong.

ộ ả ế ữ ệ ướ i các b

ậ ủ ế ự ị ượ ừ li  u xu t ra t    Port 1.  ừ ể  chân XTAL1 đ + Xung kích t  ọ ế ạ i ng õ  ra Port 1. +Đ c ti p d  li u mã byte  ti p theo t  ọ ế ặ ạ c 3 và 4 cho đ n khi đ c h t   toàn b  m ng. +L p l ể ể Bit khóa không th  ki m tra  tr c ti p , mã xác  nh t c a bit khóa xác  đ nh đ ằ   c b ng

ữ ủ ế cách quan sát nh ng tính năng   c a chúng..

ộ ả ầ ộ ượ Chip xóa : toàn b  m ng   PEROM (2KB) và 2 b    Look Bit c n đ c xóa hoàn toàn

b ng ằ

ế ợ ệ ệ ệ ề ể ằ ữ tín hi u đi n b ng cách k t h p chính xác  tín hi u đi u khi n và  băng cách  gi tín

hi u ệ

ở ứ ả ả ấ chân P3.1 m c th p trong 10ms. M ã m ng ph i vi ế ấ ả ở ứ t c m c H trong lúc   chip t t

xóa

ự ệ ệ ả ướ ớ ượ ậ ấ ố ộ làm vi  c, và ph i th c hi n tr c khi b t kì byte tr ng nào trong b  nh  đ c l p trình

i.ạ l

ệ ệ ọ ượ ọ ườ ể ỉ Đ c kí hi u byte:  Kí hi u byte đ c đ c bình th ị ng và ki m tra đ a ch   000H, 001H,

ả ượ ặ ở ứ ư ế ấ ả 002H, ngo i tr P3.5 và P3.7 ph i đ c đ t m c logic  th p. Các k t qu  nh  sau:

ấ ở ế (000H) = 1EH ch  s n xu t b i Atmel (001H) = 21H cho bi

ả ọ ộ ả t 89C2051 ượ M i mã byte trong m ng  Flash đ c ghi  và toàn b  m ng có ạ ừ ỉ ả ệ ậ * Giao di  n l p trình:

th  ể

Trang 14

ợ ủ ể xóa b  b ng  cách s  d ng  k t h p thích h p c a  các tín hi u  đi u khi n. Ghi chu k

ế ợ ỗ ầ ể ề ỉ ệ ề ợ ờ ẽ ự ộ ự ẹ ờ ử ụ   và sau m i l n tri n khai s  t ỳ     đ ng đi u ch nh phù h p th i gian h n gi

ế ộ ậ ỏ ằ ạ ộ ho t đ ng là t ể đ  hoàn thành.  * Ch  đ  l p trình flash :

ệ * Đ c tính làm vi c DC :

ệ ể ạ ả ở ớ ổ ị ế ạ ạ gi ữ i  h n ngoài  nh ng h n ch  sau :

ổ ế ệ ậ ẩ

ự ạ ủ t quá đi u ki n cho phép, V  có th  v ượ ả ượ ủ ệ ề ơ ể ượ t qua các tiêu chu n kĩ thu t  ớ ả c đ m b o khi dòng l n h n đi u ki n cho

ấ ủ ế ộ ỏ ặ T =  ­ 40oC    80oC, Vcc   = 2,7V   6V. Ghi chú: ề ­ Đi u ki n  đ  tr ng thái  n đ nh là I   ph i  I   max  = 20mA. T ng dòng c c đ i c a I  và các chân ngõ  ra là 80mA. ề N u I   v liên quan c a chíp. Các chân chíp không đ phép. ­  Vcc  nh  nh t c a ch  đ  power­down là 2V.

Trang 15

ơ ồ ạ ế ố e. S  đ  m ch nguyên lí k t n i

ề ầ ỗ ợ

ể ữ ậ ề ỹ ượ ử ụ   c s  d ng ớ i thi u ngôn ng  C Trong k  thu t l p trình vi đi u khi n nói chung, ngôn ng  l p trình đ

Ề Ầ II. PH N M M ữ ậ 1. Ngôn ng  l p trình IC và ph n m m h  tr ữ ệ 1.1 Gi ậ ậ ạ ườ th ữ ậ ng chia làm 2 lo i: Ngôn ng  b c th p và Ngôn ng  b c cao.

ấ ữ ầ ơ ữ ậ ườ ơ

ữ ậ ữ i ngôn ng  con ng ơ ơ ở ễ ữ ả

ậ Ngôn ng  b c cao là các ngôn ng  g n v ằ ữ ậ ể ể ế ữ ụ

ỹ ấ ứ ệ ả ề ả i cho l p tr

ươ ả

ộ ố   ng  thông d ng h ữ ậ ệ ữ ậ t b ng ngôn ng  b c cao cũng s  đ ể ẽ ượ ữ ình vi ị ạ ọ ợ

ệ ậ   i h n, do đó vi c l p trình b ng các ngôn ng  này tr  nên d  dàng và đ n gi n h n. Có th  k  đ n m t s  ngôn   ả  n cơ ư  C, Basic, Pascal… trong dó C là ngôn ng  l p trình b c cao nh ữ  ề ả ấ ử ụ ể ậ trong k  thu t vi đi u khi n. V  b n ch t, s  d ng các ngôn ng  này thay cho ngôn ng ậ ậ ự ình viên trong vi c nghiên c u các t p l nh và xây d ng các b c th p là gi m t   ộ ề   ầ ế ằ ậ ấ c m t ph n m m c u trúc gi ng tr i thu t. Ch ể   ướ c khi chuy n trên máy tính g i là trình biên d ch (Compiler) chuy n sang d ng h p ng  tr sang mã máy.

ề ấ ể ầ ắ

Khi s  d ng ngôn ng  C ng ộ ườ ậ i l p tr ình không c n hi u sâu s c v  c u trúc c a b ư ườ ướ ẽ ớ ộ ề i ch a quen v i m t vi đi u khi n cho tr

ượ ể ấ ươ ữ ớ ộ

ự ử ụ ể c ch ủ ủ ộ    c s  xây ìm hi uể   ướ   c đó

ệ ử ụ ộ ể ử ụ ươ ộ ễ ơ ể vi đi u khi n. Có nghĩa là v i m t ng ờ ả ơ ự n, do không ph i m t th i gian t ng tr d ng đ ình m t cách nhanh chóng h ạ ể ề ế ng tr i các ch ki n trúc c a vi đi u khi n đó. Và vi c s  d ng l ình đã xây d ng tr ầ ữ ặ ử cũng d  dàng h n, có th  s  d ng toàn b  ho c s a ch a m t ph n.

Trang 16

1.2. Ngôn ng  Cữ

ể ữ ệ 1.2.1 Ki u d  li u

ể ữ ệ a. Ki u d  li u trong C

ị ả Kho ng giá tr ­128 – +127 0 – 255 ­32768 ­ +32767 0 ­ 65535 ­2147483648 ­ +2147483647 0 – 4294697295

Ki uể Char Unsigned char Int Unsigned int Long Unsigned long Float S  Byte 1 1 2 2 4 4 4

ớ ế ể ữ ệ

ế ế ầ ị

ỉ ầ

ể ề ộ

ể ụ

ườ ớ ừ * Khai báo bi n:ế ỉ  ­ Cú pháp: Ki u_d _li u Vùng_nh    Tên_bi n _at_ Đia_ch ;      Ví d :ụ          Unsigned char data x; ể  ­ Khi khai báo bi n có th  gán luôn cho bi n giá tr  ban đ u.       Ví d :ụ           Thay vì: unsigned char x;                          x = 0;            Ta ch  c n:  unsigned char x = 0; ộ ế  ­ Có th  khai báo nhi u bi n cùng m t ki u m t lúc.        Ví d :   unsigned int x,y,z,t;  ­ Ch  đ nh vùng nh : t khoá “Vùng_nh ” cho phép ng ể ỉ i dùng có th  ch  ra vùng nh

ị ỉ ể ư ế ử ụ ể ử ụ ươ ữ ớ ng tr

ớ ị

ẽ ặ ị ớ ớ  ớ ử ụ   s  d ng đ  l u tr  các bi n s  d ng trong ch ình. Các vùng nh  có th  s  d ng là: CODE, DATA, DATAB, IDATA, PDATA, XDTA. Khi không khai báo vùng nh  trình d ch   Keil C s  m c đ nh đó là vùng nh  DATA.

Ý nghĩa

ươ ồ ng tr ình

ề ớ ằ ị ị

ể ề ỉ ở Vùng  nhớ ớ B  nh  mã ngu n ch CODE ớ ữ ệ ể ấ ủ B  nh  d  li u g m 128 Byte th p c a RAM trong vi đi u khi n DATA ớ ữ ệ ỉ BDATA B  nh  d  li u có thê đ nh đ a ch  bit, n m trong vùng nh  DATA ớ ữ ệ IDATA

ở ị ể ồ ượ ủ ồ B  nh  d  li u g m 128 Byte cao c a RAM trong vi đi u khi n ch  có  ề m t s  dòng vi đi u khi n sau này B  nh  d  li u ngoài g m 256 Byte, đ

ỉ ặ ượ ậ ế ậ ượ c truy c p b i đ a ch  đ t trên P0 ể c truy c p ng có th  lên đ n 64 KB, đ

ớ ữ ệ PDATA ớ ữ ệ XDATA  B  nh  d  li u ngoài có dung l ỉ ặ ộ ộ ộ ộ ộ ố ố ộ ở ị b i đ a ch  đ t trên P0 và P2

ị * Đ nh nghĩa l

ế ế ư ộ ể ữ ệ ể ể ớ ữ ệ c s  d ng nh  m t ki u d  li u m i và có th  dùng đ  khai báo

ụ ể ạ i ki u ễ  ­ Cú pháp: typedef Ki u_d _li u Tên_bi n; ẽ ượ ử ụ  ­ Ten_bi n sau này s  đ ế các bi n khác       Ví d : typedef int m5[5];

Trang 17

ể ữ ệ ầ ử ể ế ả Dùng tên m5 khai báo hai bi n tên a và b có ki u d  li u là m ng 1 chi u 5 ph n t :

m5 a,b;

ể ữ ệ b. Ki u d  li u trong Keil C

Ki uể Bit Sbit Sfr Sfr16 S  bitố 1 1 8 16

ể ế ặ ộ

ề ể ế ẽ ặ ế ể ị ị ị   ­ bit : dùng đ  khai báo các bi n có giá tr  0 ho c m t hay các bi n logic trên vùng ớ  ủ

ứ ặ ổ   ­ sbit, sfr, sfr16: dùng đ  đ nh nghĩa các cho các thanh ghi ch c năng ho c các c ng

ạ ữ ệ ể ề ể

RAM c a vi đi u khi n. Khi khai báo bi n ki u bit trình d c Keil C s  m c đ nh vùng nh ử ụ s  d ng là BDATA. ể ị ` ậ trên vi đi u khi n dùng đ  truy nh p các đo n d  li u 1 bit, 8 bit, 16 bit c. M ngả

ề ộ ậ ể ộ ộ M ng là m t t p h p nhi u ph n t

ợ ệ ớ

ữ ượ ế ớ ị    cùng m t ki u giá tr  và chung m t tên. Các ố ứ ự ủ ẩ   ầ ử ỉ ố  trong dãy ph n  c a ph n t t v i nhau b i ch  s  hay s  th  t ầ ử  ị ộ ậ ộ ư ư ộ c m t giá tr  đ c l p v i các ph n t ầ ử ở  m t bi n và l u tr  đ có vai trò nh

ề ể ề ả ặ ả ả ộ

ả ả ầ ử ủ ph n t  c a m ng phân bi ầ ử ỗ ử t . M i ph n t ả ủ khác c a m ng. ề M ng có th  là m ng m t chi u ho c m ng nhi u chi u Khai báo:

ử ả ả ầ ố

ẽ ố ố ỏ ố ầ ử ấ ớ  ­ Cú pháp: Tên_ki u Vùng_nh  Tên_m ng[s _ph n_t _m ng]; ả ầ ử ả  m ng ta s  có m ng có s  ph n t b t kì.

ể Khi b  tr ng s  ph n t Ví d :ụ

Unsigned int data a[5],b[2] [3]; ẽ ả ề ả ộ ầ ử ả ả . M ng b là m ng hai

ề là 6.

ắ ầ ừ ố ề ả ả ấ ầ ớ V i khai báo trên ta s  có: m ng a là m ng m t chi u 5 ph n t ổ ầ ử chi u, t ng s  ph n t ả Ch  s  c a m ng b t đ u t s  0. M ng có bao nhiêu chi u ph i cung c p đ y đ ủ

ố ỉ ố ủ ỉ ấ b y nhiêu ch  sô ầ ử ả Ví du: ph n t ế Khi vi m ng b[0] [1] là đúng t b[0] là sai

d. Con trỏ

ộ ế ế ả ớ ồ

ị ữ ủ ả ớ ộ ố  ỉ  ị

ẽ ượ ấ c c p phát m t kho ng nh  bao g m m t s ỉ ầ ị byte nh t đ nh dùng đ  l u tr  giá tr . Đ a ch  đ u tiên c a kho ng nh  đó chính là đ a ch ủ c a bi n đ

ể ứ ị ủ ứ ế ị

ộ Khi ta khai báo m t bi n, bi n đó s  đ ấ ị ể ư ế ượ c khai báo. ỏ ỉ Con tr  là m t bi n dùng đ  ch a đ a ch  mà không ch a giá tr , hay giá tr  c a con ị ớ ỏ ỉ

ượ ộ ớ ị ộ ả ỏ ớ tr  chính là đ a ch  kho ng nh  mà nó tr  t i. ỏ ớ ớ ụ ể i vùng nh  đó chi m dung l V i các vùng nh  c  th  con tr  t

ỏ ổ ế ị ướ ụ ng ph  thu c vào ớ ẽ c vùng nh  s  có dung

ớ ậ ố ớ ớ ộ ớ ủ đ  l n c a vùng nh  đó. Con tr  t ng quát khi không xác đ nh tr ượ l ng l n nh t v ấ ì v y t

ỏ ụ ể t nh t nên s  d ng con tr  c  th . cướ

ử ụ ỏ ổ     t ng Kích th 3 byte

ấ ạ Lo i con tr ỏ Con   tr quát ỏ Con tr  XDATA ỏ Con tr  CODE ỏ Con tr  DATA ỏ Con tr  IDATA ỏ Con tr  PDATA 2 byte 2 byte 1 byte 1 byte 1 byte

Trang 18

ỏ ế Khai báo bi n con tr :

ữ ệ ế ể ớ

­ Cú pháp: Ki u_D _li u Vùng_nh  *Tên_bi n;  ­ Ví d :ụ

int *int_ptr; long data *long_ptr;

ỏ ẽ ượ ớ ỉ ỏ ổ ­ khi không ch  rõ vùng nh  con tr  s  đ c coi là con tr  t ng quát.

ể ế ấ ả

ộ ậ ấ ả ể ư ợ ể ể ể ấ ộ ữ ị

ể ữ ệ ấ e. Ki u d  li u c u trúc ữ ệ Ki u d  li u c u trúc là m t t p h p các bi n, các m ng và c  các ki u c u trúc khác ữ ệ ấ ị ở c bi u th  b i m t tên duy nh t. ki u d  li u c u trúc dùng đ  l u tr  các giá tr , thông ế ượ đ tin có liên quan đ n nhau.

ị ế ấ

ị Đ nh nghĩa và khai báo bi n c u trúc:  ­ Đ nh nghĩa: typedef struct {

ầ ế Khai báo các bi n thành ph n;

ể ấ } Tên_ki u_c u_trúc;

ế ớ ể ­ Khai báo: Tên_ki u_c u_trúc Vùng_nh  Tên_bi n;

ụ ấ Ví d : typedef struct {

char day; char month; int year;

} Date_type; Date_type date,date_arr[5];

1.3 Phép toán

ế

ể ể ế ị ị ệ Phép gán kí hi u: “=”. ế  ­ Cú pháp: Bi n_1 = Bi n_2; Trong đó Bi n_2 có th  là giá tr  xác đ nh cũng có th  là bi n.

ế ố ọ 1.3.1 Phép toán s  h c

Phép toán + ­ * /

X=4)

ầ ư % ý nghĩa Phép c ngộ Phép trừ          Phép nhân ầ   ấ Phép chia l y ph n nguyên ấ Phép chia l y ph n d

Ví dụ X=a+b X=a­b  X=a*b X=a/b  → (a=9, b=2  a%b → (a=9, b=2 X=1)

1.3.2. Phép toán Logic

AND: && OR:  || NOT: !

a. Các phép toán so sánh:

Trang 19

Ví dụ ý nghĩa

Phép  toán > So sánh l n hớ nơ

ơ >= So sánh l n hớ ặ ằ n ho c b ng

< So sánh nh  hỏ nơ

a>b  4>5 các giá trị  0 a>=b  6>=2 các giá  tr  1ị a

ơ <= So sánh nh  hỏ ặ ằ n ho c b ng

== ằ So sánh b ng nhau

!= So sánh khác nhau

a<=b 8<=5 các giá  tr  0ị a==b 6==6 các giá  tr  1ị a!=b 9!=9 các giá trị  0

b. Phép toán thao tác Bit

ạ ừ

ị ị ấ Ví dụ Bit_1 & Bit_2 Bit_1 | Bit_2 !Bit_1 Bit_1 ^ Bit_2 a<<3 a>>4 ~a Phép toán & | ! ^ << >> ~ Ý nghĩa Phép và (AND) ặ Phép ho c (OR) ả Phép đ o (NOT) ặ Phép ho c lo i tr  (XOR) D ch trái ả D ch ph i L y bù theo bit

ế ợ c. Phép toán k t h p

Phép toán Ví dụ

+= ­= *= /= %= a+=5 <=> a=a+5 a­=5 <=> a=a­5 a*=5 <=> a=a*5 a/=5 <=> a=a/5 a%=5 <=> a=a%5

ấ ươ ng tr

ươ ình C ình ng tr

1.3 C u trúc ch ấ 1.3.1 C u trúc ch ấ * C u trúc

Trang 20

ị ề ử ế

ươ ự ỉ 1. Khai báo ch  th  ti n x  lý ụ 2. Khai báo các bi n toàn c c 3. Khai báo nguyên m u các hàm 4. Xây d ng các hàm và ch ng tr ình chính

ị ề ử

* Ví d :ụ ỉ Khai báo ch  th  ti n x  lý #include #include #define Led1 P1_0

ụ ế Khai báo bi n toàn c c Unsigned char code Led_arr[3]; Unsigned char data dem; Unsigned int xdata X;

ẫ Khai báo nguyên m u hàm

Void delay(unsigned int n); bit kiemtra(unsigned int a);

void delay(unsigned int n) {

ươ ế ụ ộ Khai báo bi n c c b ; ình tr ;ễ ng tr Mã ch

ươ ng tr ình chính

} ự Xây d ng các hàm và ch Void main() {

ươ ế ụ ộ Khai báo bi n c c b ; ình chính; ng tr Mã ch

} Bit kiemtra(unsigned int a) {

ế ụ

ươ ể ế Khai báo bi n c c bô; ng tr Mã ch ình ki m tra bi n a;

}

ả ượ ẫ ướ Chú ý:Hàm không khai báo nguyên m u ph i đ c xây d ng tr

hàm đó.  ở ví d  trên do hàm “bit kiemtra(unsigned int a)” đã đ ươ ở ấ ự ị Ở ụ ể  trên nên có th  xây d ng hàm b t kì v  trí nào trong ch ượ ng tr ờ ọ   ự c hàm có l i g i ẫ c khai báo nguyên m u hàm   ình.

ỉ ị ề ử

ả ệ ủ

ệ ộ ị

ươ ướ ướ ồ ạ ả

ng tr ả ả ỉ ỉ

ượ

ế ệ ọ ự ị 1.3.2 Ch  th  ti n x  lý ữ ị ề ử ỉ ệ   Các ch  th  ti n s  lý không ph i là các l nh c a ngôn ng  C mà là các l nh giúp cho ị ươ ả ạ ồ ình C thì  c khi biên d ch. Khi d ch m t ch ng tr vi c so n th o ch ng tr ình ngu n C tr ượ ị ị ả ả ươ   ình ngu n mà ta so n th o đ không ph i chính b n ch c d ch. Tr c khi d ch, các ề ẽ ượ ị ố ẽ ỉ ử ệ l nh ti n x  lý s  ch nh lý b n g c, sau đó b n ch nh lý này s  đ   c d ch. Có ba cách ch nh c dùng là: lý đ + Phép thay th  #define + Phép chèn t p #include + Phép l a ch n biên d ch #ifdef

Trang 21

ơ ổ ứ ị ươ ọ n và t ch c biên d ch, g ỡ ắ ình ng n g n h ng tr

ệ ố r i ch

ng tr ỉ

ỉ ị ả ế ơ ị ề ử ế ỉ t ch Các ch  th  ti n x  lý giúp ta vi ươ n.ơ ả ạ ình linh ho t, hi u qu  h ị * Ch  th  #define Ch  th  #define cho phép t o các macro thay th  đ n gi n

ế ề ầ ướ ư ạ i nhi u l n, nh ng tr ị c khi đ nh nghĩa c đ nh nghĩa l

ả ỉ ạ l ị i phóng đ nh nghĩa b ng ch  th :

­ Ví d :ụ

ủ ệ ộ ị ị ạ ế  ­ Cú pháp: #define Tên_thay_th  dãy_kí_t ộ ị ể ượ M t Tên_thay_th  có th  đ ằ ị ả i ph i gi #undef Tên_thay_thế #define N 100 ị * Ch  th  #include ệ   ậ Ch  th  #include báo cho trình biên d ch nh n n i dung c a t p khác và chèn vào t p

ươ ạ ả ồ

ỉ ch ình ngu n mà ta so n th o. ng tr  ­ Cú pháp:

Cách 1: #includeệ Cách 2:  #include“tên_t p”ệ

­ Ví d :ụ

Cách 1: #include

Ở ẽ ượ ệ ư ụ cách này t p regx51.h s  đ c tìm trong th ể  m c INC đ  chèn vào ch ươ   ng

trình ngu n.ồ

Cách 2: #include“regx51.h”

ẽ ượ ư ụ ứ ươ ệ c tìm trong th m c ch a ch ng tr ình ngu nồ

cách này t p regx51.h s  đ ớ

ư ụ ứ ặ ươ ồ Ở ế n u không có m i tìm trong th ố m c INC ư ệ ng tr ình ngu n thì ư ụ Khi mu n chèn t p ngoài th

ứ ệ ệ ẽ ẫ ồ vi n ho c ngoài th  m c ch a ch ư ụ ng d n th  m c ch a t p. ệ ả ườ tên_t p s  bao g m c  đ

ườ ư ệ ệ ể ị ng dùng đ  biên d ch các t p th  vi n. ị * Ch  th  #ifdef ị Ch  th  #ifdef này th

ỉ  ­ Cú pháp:

Cách 1: #ifdef ten_macro ươ ạ Đo n ch ng trình

#endif

Cách 2: #ifdef ten_macro ươ ạ Đo n ch ng trình 1

#else

ươ ạ Đo n ch ng trình 2

ạ ươ ẽ ượ c  đ nh nghĩa “Đo n ch ng trình” s  đ ị c d ch

ượ ẽ ị ỏ ươ Ở ượ ạ c l ng #endif ế  cách 1 n u tên_macro đã đ ạ i “Đo n ch ị ng trình” s  b  b  qua.

ị ườ ư ệ ệ ể ị * Ch  th  #ifndef Ch  th  #ifndef này th ị ng dùng đ  biên d ch các t p th  vi n.

ỉ  ­ Cú pháp:

Cách 1: #ifndef ten_macro ươ ạ Đo n ch ng trình

#endif

Cách 2: #ifndef ten_macro ươ ạ Đo n ch ng trình 1

#else

Trang 22

ươ ạ Đo n ch ng trình 2

ượ ạ ị ươ ẽ ượ c đ nh nghĩa “Đo n ch ng tr ình” s  đ ị c d ch

ư a đ ẽ ị ỏ Ở ượ ạ c l ng #endif ế  cách 1 n u tên_macro ch ươ ạ i “Đo n ch ng trình” s  b  b  qua.

ươ ng tr 1.3.3 Chú thích trong ch

ế ụ ệ ả ệ Vi c vi

ằ ư ế ễ ả ơ ạ ộ ng tr

ình t chú thích trong trình nh m m c đích gi ặ ươ ch ọ đ c có th  hi u đ ạ giúp cho ta xem l ể ể ượ i ch

ế ng đ n ch ươ ưở ị ạ ờ ạ   ủ i thích ý nghĩa c a câu l nh, đo n iườ   ẽ ế t chú thích s  giúp cho ng ng trình ho c hàm ho t đ ng nh  th  nào và làm gì. Vi ặ   ử ỗ ơ ơ n, s a l ình d  dàng và nhanh chóng h i đ n gi n h n ho c n.ơ ình cũ mà ta đã làm tr  lên nhanh h ươ ả ng tr

ở ình s  không  nh h i chú thích khi biên d ch ch ộ ỉ ế ng tr ình sang mã máy.L i gi ặ ặ ấ ấ ươ ng tr ươ ng tr ị ấ ả ờ t c  l ế ượ ặ c đ t sau d u “//” n u chú thích ch  vi ả   ình mà ta so n th o ả   i   t trên m t dòng ho c trong c p d u “\*” và

b n trong C

ơ ả ẽ

­ C u trúc:  if(dieu_kien)

ạ ươ ng trình

c ch ươ Chú thích trong ch ẽ ỏ vì trình d ch s  b  qua t thích đ “*\”. ệ Các l nh c ệ    + Câu l nh r  nhánh if: ấ                                  {                               // Đo n ch                           }

ư ệ ả Gi lí các câu l nh bên trong c òn sai thì nh y qua.

ả i thích: n u dieu_kien đúng thì x ấ ế ­ C u trúc:  if(dieu_kien)

{

ươ ạ // Đo n ch ng trình 1

}

else

{

ươ ạ // Đo n ch ng trình 2

} ế ử ạ ươ i thích: n u dieu_kien đúng thì x  lí “Đo n ch ng trình 1” bên trong còn sai thì x

Gi ử ả ạ ươ l ý “Đo n ch ng trình 1”

ọ ệ

ệ ệ ệ

ự ệ ế ệ ả ỳ ươ ứ ồ ng  ng r i sau đó

ệ ờ

i thích: tu  vào bi n có gia_tri_1 thì th c hi n các câu l nh t ỏ ấ ế ươ ứ ự ệ ồ ng  ng r i thoát.

ươ ứ ự ệ ệ ồ ng  ng r i thoát.

ị ự    + Câu l nh l a ch n:       C u trúc:       switch(bien)                                {                                   case gia_tri_1: {//các câu l nh  break;}                                   case gia_tri_2: {//các câu l nh  break;}                                   case gia_tri_3: {//các câu l nh  break;}                                   ……………………………………...                                   case gia_tri_n: {//các câu l nh  break;}                                 }       Gi thoát kh i c u trúc nh  câu l nh break. ệ                Bi n có gia_tri_2 thì th c hi n câu l nh t                ……………………. ế                Bi n có gia_tri_n thì th c hi n các câu l nh t ặ    + Vòng l p xác đ nh:

Trang 23

ệ ử

ả i thích:

ế

ầ ệ

ệ ặ ệ ự ệ ế ề ệ ề  thích: th c hi n l p các câu l nh khi đi u ki n đúng n u đi u ki n sai thì thoát

ặ ặ ị

ệ ặ ệ ệ ề ế ế ể thích: th c hi n l p các câu l nh sau đó ki m tra đi u ki n n u đúng, n u sai thì

ặ ậ ỏ ề ạ ầ

Keil uVision4 Proteus 7

ậ C u trúc:  for(n=m;nl), còn n là bi n. ệ ặ ự                          th c hi n l p các câu l nh (l­m) l n. ị    + Vòng l p không xác đ nh while:         C u trúc:   while(dieu_kien)                             {                                // các câu l nhệ                             } ả           Gi ỏ kh i vòng l p.    + Vòng l p không xác đ nh do while:         C u trúc: do       {                                // các câu l nhệ                             } while(dieu_kien); ự ả           Gi ỏ thoát kh i vòng l p. 1.4 Ph n m m l p trình và ch y mô ph ng. ầ * Ph n mêm l p trình  ầ ỏ ề * Ph n m m mô ph ng  ư ồ 2. L u đ  thu t toán

ươ ỏ 3. Ch ạ ng trình ch y mô ph ng

Trang 24

ươ ỏ ế ượ ế ồ ằ ả ng trình mô ph ng, c m bi n HC­SR04 đ ả c thay b ng c m bi n h ng

­ Trên ch ngo iạ #include  sbit cb_sang = P3^2; sbit ir1 = P3^3; sbit ir2 = P3^4; sbit baohieu = P1^7; sbit xelen = P1^6; sbit xexuong = P1^5; unsigned char kt_xelen,kt_xexuong,on; void setup(void) { TMOD = 0x01; TH0=0x15; TL0=0xa0; TF0=0; ET0=1; TR0=1; EA=1; } void delay () interrupt 1 { TR0=0; TF0=0; TH0=0x15; TL0=0xa0; if((kt_xelen>0)||(kt_xexuong>0))

{ kt_xelen­­; kt_xexuong­­; } if(on>0)

on­­; if(on>0)

{ if(cb_sang==0)

baohieu=0;

}

else

baohieu=1;

if(kt_xelen==0) xelen=1;

if(kt_xexuong==0) xexuong=1;

TR0=1; } void main(void) {

Trang 25

setup(); P3 = 0xff; P1 = 0x00; while(1) {

if(ir1==0) //0: sang; 1: tat  //chinh cam bien hong ngoai

{ xelen = 0; kt_xelen=200; on=250; }

if(ir2==0) //chinh cam bien hong ngoai

{ xexuong = 0; kt_xexuong=150; on=250; }

}

ả ự ấ ộ ố ả ệ ế ầ ế ạ ạ ấ ượ } 4. M t s  hình  nh k t qu  th c nghi m trên mô hình ­ Hình  nh mô hình đo n cua g p, h n ch  t m nhìn làm hai xe không th y đ c nhau

ệ ệ ố ượ ậ ự ả ­ Tín hi u báo hi u có xe đang xu ng đ ế c b t khi có xe qua khu v c c m bi n

Trang 26

ệ ượ ậ ự ả ệ ­ Tín hi u báo hi u có xe đang lên đ ế c b t khi có xe qua khu v c c m bi n

Trang 27

ệ ố ệ

ạ ố ử ­ Các m ch đi n dùng trong h  th ng + Kh i x  lí trung tâm

ố ả ế ể ề ấ ệ + Kh i c m bi n và đi u khi n công su t tín hi u

ố ả ế ố ỏ + Kh i c m bi n (dùng trong hê th ng mô ph ng)

Trang 28

ố ồ + Kh i ngu n

Trang 29

ệ ộ ộ ạ

ệ ả ở ế

ồ ồ

ồ ạ ồ ổ 5. Giá thành cho m t b  m ch đi n ­ Chíp 89C2051: 25000 đ ngồ ồ ạ ­ Đi n tr  các lo i: 20000 đ ng ồ ­ C m bi n HC­S04: 80000 đ ng ­ Led: 500 đ ng/1 led x 100 = 50000 đ ng ­ FET IRF3205PBF: 15000 đ ng/1 con x 2 = 30000 đ ng T ng chi phí: 205000 đ ng/m ch

Ả ệ ử ế ệ ả ố ạ ổ ạ ị t, m ch ch y  n đ nh. Ế III. K T QU ạ ­ Qua vi c th  nghi m và ch y trên mô hình đã cho k t qu  t

Ậ Ả IV. TH O LU N

ỏ ư ử ụ ế ả ả HC­SR04

ạ ượ ố ớ ả ế nên ch a đánh giá đ c đ i v i c m bi n này.

ụ ả

­ Trong quá trình ch y mô ph ng ch a s  d ng c m bi n đo kho ng cách  ư ­ Đ  c m bi n  ể ụ ệ ệ ị ỉ

ế   ế HC­SR04   không ph i làm vi c liên t c nên s  d ng thêm c m bi n ử ụ ả ệ ế HC­SR04  ch  có nhi m v  xác đ nh xe ả   i, còn c m bi n  ể ề ể ả ộ ố ử ệ ệ ể

Ậ ạ ể chuy n đ ng đ  phát hi n xe qua l ể ử lên hay xu ng đ  g i tín hi u cho vi x  lí đi u khi n tín hi u bi n báo. V. K T LU N

ủ ệ ạ ả ộ Ế ­ Qua quan sát th c t

ườ ể ế

ự ầ ạ ạ ạ   ấ ự ế  và kh  năng ho t đ ng c a m ch đi n, em th y đây là m t m ch ế ượ ấ ữ ệ ấ đi n r t thi   t th c cho nh ng  đo n đ c tri n khai và nhân ể ẽ ộ r ng s  góp ph n gi m thi u tai n n giao thông t i nh ng đo n đ ng đó.

ạ ộ ng quanh co, cua g p. N u đ ạ ườ ữ ệ ấ ả ẻ ạ ụ ạ ả ớ ể ứ ­ V i giá thành r  nên kh  năng có th   ng d ng m ch đi n r t cao trong th c t ự ế .

Trang 30