PIC Vietnam

Go Back   PIC Vietnam > Robotics > Công nghệ robot

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Công nghệ robot Tất cả các vấn đề về robot di động, tay máy, haptics....

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 05-04-2013, 11:16 AM   #1
chinhan_92
Nhập môn đệ tử
 
Tham gia ngày: Apr 2013
Bài gửi: 4
:
Xe dò đường Pic 16f877A

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();

}
}

thay đổi nội dung bởi: chinhan_92, 11-04-2013 lúc 10:42 PM.
chinhan_92 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 11:52 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam