Đồ án vi điều khiển Bài báo cáo vi điều khiển Robot đường I Mạch Mạch điều khiển 89S52 a Mạch nguyên lý RN 10K Cx1 33pF RES X1 12Mhz GND Cx2 33pF VCC 10 11 12 13 14 15 16 17 18 19 GND T2/P1.0 T2 EX/P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 RXD/P3.0 TXD/P3.1 INT0/P3.2 INT1/P3.3 T0/P3.4 T1/P3.5 WR/P3.6 RD/P3.7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 RESET EA/VPP XTAL1 XTAL2 IC1 ALE/PROG PSEN PNP1 +24V D1 R3 HD4 D CL D CR0 HD1 C1 104 BUT1 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 HD2 D CL D CR1 1 DCR1 DCL1 +24V 10 11 GND 12 13 VCC 14 DK1 15 PWM1 HDC1 39 38 37 36 35 34 33 32 C2 104 HDC2 BUT0 SW1 SW2 GND 21 22 23 24 25 26 27 28 GND C3 RN3 PWM0 DK0 PWM1 DK1 R1 RES VCC 31 VCC SW3 VCC 30 29 GND 1K 10uF BUT1 BUT0 R2 250 LR1 SW2 LED VCC GND JP1 IN 47 C4 C6 2200uF/16V104 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 10K SW0 SW1 SW2 SW3 SW4 SW5 SW6 SW7 DD2 GND A0 A1 A2 A3 A4 A5 A6 A7 SW1 SW3 SW5 SW7 10 VCC GND 10K HD3 SW0 SW2 SW4 SW6 DD1 RN VCC A1 A3 A5 A7 OUT 10 A0 A2 A4 A6 DCR0 DCL0 +24V 10 11 GND 12 13 VCC 14 DK0 15 PWM0 IC2 VCC R4 270 C5 2200uF/16V C7 104 LD1 GND CDT - K9 Đồ án vi điều khiển b Mạch in 1 0 2 1 2 2 2 1 2 1 21 20 30 15 30 15 22 19 29 28 14 29 13 14 28 13 27 12 27 12 26 11 26 11 23 24 10 25 10 24 23 23 21 20 20 19 18 17 17 16 16 10 11 10 33 34 35 5 32 18 31 19 12 30 21 13 7 29 22 14 28 7 15 27 22 16 26 24 17 25 25 18 36 10 2 37 38 39 40 2 3 2 4 CDT - K9 Đồ án vi điều khiển Mạch điều khiển động “ IC MC 33486” a Mạch nguyên lý HD-MC1 10 11 12 13 14 15 CHAN CAM DCR0 DCL0 +24V GND +24V R1 VCC R2 LD1 270 LD2 PWM0 R3 270 DK0 VCC 19 PWM0 DK0 18 VCC 20 12 +24V 21 10 C1 47uF/50V GND VCC DK0 PWM0 10K R4 GND LD3 270 LD4 ST IN1 IN2 WAKE Cur R NC V+ NC GND OUT1 GLS1 DCR0 G D S GND OUT2 GLS2 MC1 Q1 IRF840 13 DCL0 17 G D Q2 IRF840 S GND b Mạch in 2 1 15 2 1 2 1 14 13 13 12 11 21 10 3 2 1 CDT - K9 Đồ án vi điều khiển Mạch so sánh (“IC LM358”) a Mạch nguyên lý RN1 102 VCC VCC LD8 A7 LD7 A6 LD6 DD1 GND VR1 VR2 GND VCC 100K GND LDED0 LDED2 LDED4 LDED6 10 100K VCC IC1A VR3 VR4 GND 100K VCC GND A2 LDED2 100K VCC IC2A VR5 GND LDED0 LDED1 LDED2 LDED3 LDED4 LDED5 LDED6 LDED7 VCC VR6 VCC 100K GND VCC A4 LDED4 100K A5 LDED5 IC3A IC3B VR7 VR8 GND VCC 100K 103 A3 LDED3 IC2B GND A1 LDED1 IC1B LDED1 LDED3 LDED5 LDED7 DD2 RN2 A0 LDED0 VCC LD5 A5 LD4 A4 LD3 A3 LD2 A2 A1 A3 A5 A7 10 A0 A1 LD1 A0 A2 A4 A6 GND LDED6 VCC A6 100K LDED7 A7 IC4A IC4B b Mạch in 9 10 2 1 2 8 8 7 7 6 6 5 5 1 1 1 1 2 2 2 2 3 3 3 3 7 10 CDT - K9 Đồ án vi điều khiển Mắt dò đường a Mạch nguyên lý VCC LDED0 LDED2 LDED4 LDED6 VCC VCC LDR1 LDED1 LDED3 LDED5 LDED7 10 VCC LDR2 LDED0 VCC LDR3 LDED1 R1 10K DD1 VCC LDR4 LDED2 R2 10K VCC LDR5 LDED3 R3 10K R4 10K VCC VCC LDR6 LDED4 LDR7 LDED5 R5 10K LDR8 LDED6 R6 10K LDED7 R7 10K R8 10K GND GND GND GND GND VCC VCC VCC VCC R9 1K R10 1K LD1 R11 1K LD2 GND VCC R12 1K LD3 GND GND R13 1K LD4 GND GND GND GND VCC VCC VCC R14 1K LD5 GND R15 1K LD6 GND R16 1K LD7 GND GND LD8 GND b Mạch in 10 3 2 1 2 1 2 2 1 2 2 1 2 2 2 1 2 1 2 2 1 1 2 1 1 2 1 CDT - K9 Đồ án vi điều khiển II CODE Robot dò đường #include //========= Định nghĩa chiều quay bánh========== #define go #define back // #define out 0xFF // 0B11111111 //============= Định nghĩa mắt dò================ #define R7 0x7F // 0B01111111 #define R6 0x3F // 0B00111111 #define R5 0xBF // 0B10111111 #define R4 0x9F // 0B10011111 #define R3 0xDF // 0B11011111 #define R2 0xAF // 0B11001111 #define R1 0xEF // 0B11101111 #define TT 0xE7 // 0B11100111 #define L1 0xF7 // 0B11110111 #define L2 0xF3 // 0B11110011 #define L3 0xFB // 0B11111011 #define L4 0xF9 // 0B11111001 #define L5 0xFD // 0B11111101 #define L6 0xFA // 0B11111100 #define L7 0xFE // 0B11111110 // // =========== Định nghĩa Pin xung PWM, Pin điều khiển======= sbit xung=P2^0; sbit dk1=P2^1; sbit dk2=P2^3; sbit xung2=P2^2; // CDT - K9 Đồ án vi điều khiển // khai báo unsigned char tocdo1,tocdo2 ; unsigned char x=0,y=0; unsigned long int counter0=0; unsigned char INPUT; // ==============Hàm tạo trễ=============== void delay(unsigned long int a) { unsigned long int i; for (i=0;i=(counter0*18)) { INPUT=P1; // mắt dò đượng nhận vào PORT switch (INPUT) { case TT: { banhphai(50,go); banhtrai(50,go); nhophai=0; nhotrai=0; break; } case L1: { banhphai(55,go); banhtrai(45,go); nhophai=0; nhotrai=0; break; } case L2: { banhphai(60,go); banhtrai(40,go); nhophai=0; nhotrai=0; break; CDT - K9 10 Đồ án vi điều khiển } case L3: { banhphai(65,go); banhtrai(35,go); nhophai=0; nhotrai=0; break; } case L4: { banhphai(70,go); banhtrai(30,go); nhophai=0; nhotrai=0; break; } case L5: { banhphai(75,go); banhtrai(25,go); nhophai=1; nhotrai=0; break; } case L6: { banhphai(80,go); banhtrai(20,go); nhophai=1; nhotrai=0; break; } case L7: { banhphai(85,go); banhtrai(15,go); nhophai=1; nhotrai=0; break; CDT - K9 11 Đồ án vi điều khiển } case R1: { banhphai(45,go); banhtrai(55,go); nhophai=0; nhotrai=0; break; } case R2: { banhphai(40,go); banhtrai(60,go); nhophai=0; nhotrai=0; break; } case R3: { banhphai(35,go); banhtrai(65,go); nhophai=0; nhotrai=0; break; } case R4: { banhphai(30,go); banhtrai(70,go); nhophai=0; nhotrai=0; break; } case R5: { banhphai(25,go); banhtrai(75,go); nhophai=0; nhotrai=1; break; CDT - K9 12 Đồ án vi điều khiển } case R6: { banhphai(20,go); banhtrai(80,go); nhophai=0; nhotrai=1; break; } case R7: { banhphai(15,go); banhtrai(85,go); nhophai=0; nhotrai=1; break; } case out: { if (nhotrai == 1) { banhphai(90,go); banhtrai(10,back); } if (nhophai == 1) { banhphai(10,back); banhtrai(90,go); } break; } default : { if(((INPUT!=R1)||(INPUT!=R2)||(INPUT!=R3)||(INPUT!=R4)||(INPUT!=R 5)||(INPUT!=R6)||(INPUT!=R7)||(INPUT!=L1)||(INPUT!=L2)||(INPUT!=L3 )||(INPUT!=L4)||(INPUT!=L5)||(INPUT!=L6)||(INPUT!=L7)||(INPUT!=out) )); { CDT - K9 13 Đồ án vi điều khiển banhphai(50,go); banhtrai(50,go); } break; } } } } // -//================ Hàm Stop=============== void stop(void) { TR0=0; TR1=0; xung=0; dk1=0; dk2=0; xung2=0; } // -// Hàm void main (void) { TMOD=0x22; IE=0x8B; IT0=1; IP=0; while(1) { doduong(300); // dò đường 3m dừng stop(); while(1); } } CDT - K9 14 Đồ án vi điều khiển ¾ Bài sử dụng tài nguyên 89S52 sau: o Timer 0,1 chế đỗ 8bit tạo xung dùng ngắt 1,3 o Ngắt để đếm đường Encoder o PORT để nhận tín hiệu từ mắt dị o Và Pin I/O điều khiển III Đồ án Robot dò đường dùng vi điều khiển 89S52 Thực hiên đồ án: Phạm Văn Lượng Lê Xuân Định Nguyễn Trần Cường Lớp: CDT- K9 CDT - K9 15