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 . LCD ,led 7 thanh DKS GROUP http://www. dks.com.vn Nguyen Manh Truong Mobi : 09888 578 61 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 SN74 47 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 U 17 . 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. 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 SN74 47 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 U 17 . 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. 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