PDA

View Full Version : Xe dò đường Pic 16f877A


chinhan_92
05-04-2013, 11:16 AM
Em đang làm đề tài môn học về xe dò đường theo vạch trắng bằng pic 16f877A.Xe đơn giản là chỉ chạy theo vạch thôi ạ,khi nào gặp 1 vạch ngang thì xe dừng lại.Em đã vẽ mạch,code và làm mạch thực tế nhưng em nó quyết tâm không chạy,mong các bác giúp đỡ ạ.

đây là code và mạch
http://www.mediafire.com/?fd5y7b6ntd0i44p

#include <16F877A.h>
#device adc=10

#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz)
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES WRT_50% //Lower half of Program Memory is Write Protected

#use delay(clock=20000000)

#define dc_t(x) set_pwm1_duty(x)
#define dc_p(x) set_pwm2_duty(x)


int8 sensor=0;
int1 left=0,right=0;

VOID scan()

{

int8 k;
sensor=0;
for(k=0;k<=5;k++)
{
set_adc_channel(k);
delay_ms(10);
if(read_adc()>700) bit_set(sensor,k);

}

}

VOID TU_DONG_TIEN()
{
if (sensor==0b00100000){dc_t(0);dc_p(70);left=0;right =1;}
if (sensor==0b00010000){dc_t(0);dc_p(60);left=0;right =1;}
if (sensor==0b00001000){dc_t(0);dc_p(50);left=0;right =1;}
if (sensor==0b00001100){dc_t(60);dc_p(60);}
if (sensor==0b00000100){dc_t(50);dc_p(0);left=1;right =0;}
if (sensor==0b00000010){dc_t(60);dc_p(0);left=1;right =0;}
if (sensor==0b00000001){dc_t(70);dc_p(0);left=1;right =0;}
if(sensor==0)
{
if(right){dc_t(0);dc_p(50);}
if(left){dc_t(50);dc_p(0);}

}
if(sensor==0xff){dc_t(0);dc_p(0);}
}

void main()
{

setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_16,100,1);
setup_ccp1(CCP_PWM);
setup_ccp2(CCP_PWM);
set_pwm1_duty(0);
set_pwm2_duty(0);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

// TODO: USER CODE!!
while(1)
{
scan();
//sensor=0b00001100;
tu_dong_tien();

}
}

chinhan_92
05-04-2013, 11:59 AM
sao mình không đính kèm file đươc,hic

sai.vn
11-04-2013, 07:42 PM
Hiện tại bạn đã làm xong chưa, có cần nữa k !

chinhan_92
11-04-2013, 10:48 PM
Hiện tại mình làm vẫn chưa chạy bạn ạ.Lại còn bị triệu chứng chạm hoặc để tay gần mới có tín hiệu ra chân pwm,mình thử nạp code điều khiển led thì có triệu chứng như thề này:led ko sáng,để tay gần thì led sáng mờ,còn chạm vào chân cấp xung thì led sáng mãi,không nhấp nháy(mình dùng thạch anh 20Mh,tụ 22p).Mình đọc ở 1 số diễn đàn thì thấy bảo lổi này là do thạch anh,nếu như vậy thì ai giúp mình config thạch anh với,mình đã thử dùng thạch anh nội nhưng vẫn bị.

chinhan_92
11-04-2013, 10:49 PM
1 tuần nữa là mình phải nộp mạch rồi,đây là file mô phỏng và mạch thực tế,thông cảm tại mình ko đính kèm được,hic
http://www.mediafire.com/?fd5y7b6ntd0i44p

5landvn
15-05-2013, 07:17 PM
cái này hnay mình cũng vừa mới có được đề tài như thế này :(

pdkpro
30-08-2013, 02:24 AM
mấy a có cái mạch điều khiển động cơ nào cụ thể k cho e xin với