![]() |
|
Tài trợ cho PIC Vietnam |
Cảm biến Camera, siêu âm, hồng ngoại, gyro, la bàn... |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 6 túi
Tham gia ngày: Apr 2009
Bài gửi: 132
: |
![]() bác dùng thằng 877a hoặc 887 mà em nghĩ bác nên sài em 887 đi cho nó rẻ, encoder mắc vào cái chân rb0 và rb1 hoặc mắc vào ccp2 dùng chức năng capture của pic. để em làm song em up cho bác tham khảo...hic...đang làm, chưa song....dùng con 4431 thì hơi phí...nhưng vấn đề bác điều khiển làm việc gì mới kết luận được...hi
|
![]() |
![]() |
![]() |
#2 | |
Nhập môn đệ tử
Tham gia ngày: Dec 2009
Bài gửi: 1
: |
Trích:
|
|
![]() |
![]() |
![]() |
#3 |
Nhập môn đệ tử
Tham gia ngày: Aug 2011
Bài gửi: 3
: |
lập trình cho encoder
cả nhà ơi giúp t với,t muốn dùng encoder 100xung/vòng để đếm số xung và đo quãng đường đi cho robot,giả sử khi nào robot đi tiến hay lùi đc 1m hoặc đếm được 1000 xung thì dừng.đây là code của mình mong mọi người đọc tham khảo và đóng góp ý kiến giúp.mình chưa hiểu sâu về ngắt lắm,nên dùng ngắt để lập trình khi nạp chương trình xuống nó không chạy.cảm ơn mọi người nhiều !!!
///////////////////////////////////////////////////////////////////////// #include <16F877A.h> #device 16f877A*=16 #fuses NOWDT,NOPROTECT,HS,NOPUT,NODEBUG,NOBROWNOUT,NOLVP #use delay(clock=20000000) // TAN SO HOAT DONG #use fast_io(c) #use fast_io(b) #use fast_io(d) #bit rc7=0x07.7 #bit rd6=0x08.6 #bit rb0=0x06.0 #bit rc0=0x07.0 #byte portb=0x06 #byte portd=0x08 // KHAI BAO DIA CHI TRONG PHAN CUNG #byte portc=0x07 #BIT dc4 =PORTC.1 #BIT dc3 =PORTC.2 #BIT chieu_dc4=PORTD.6 #BIT chieu_dc3 = PORTC.7 #byte TMR0 = 0x01 //timer0 REGISTER #byte TMR1_L = 0X0E #byte TMR1_H = 0X0F #bit RBIF=intcon.0 //dinh nghia co ngat RB #bit RBIE=intcon.3 //dinh nghia bit cho phep ngat RB ////// chay thang//////// void dung(void) { setup_ccp1(CCP_off); setup_ccp2(CCP_off); delay_ms(10); } void chay_thang(void) { chieu_dc3=1; chieu_dc4=1; delay_ms(10); set_pwm1_duty(250);// dieu xung 100% set_pwm2_duty(200);// dieu xung 100% } void chay_lui(void) { chieu_dc3=0;//quay_nguoc; chieu_dc4=0;//quay_nguoc; delay_ms(10); set_pwm1_duty(200); set_pwm2_duty(150); //////////////LAP TRINH CHO ENCODER///////////////////////// int16 dem_T0,dem_T1; void main() { set_tris_c(0x00); set_tris_b(0xff); set_tris_d(0x00); setup_ccp1(CCP_PWM); setup_ccp2(CCP_PWM); setup_timer_2(T2_DIV_BY_16,0xff,1); enable_interrupts(GLOBAL); enable_interrupts(INT_TIMER0); enable_interrupts(INT_TIMER1); setup_timer_0 (RTCC_DIV_1|RTCC_EXT_L_TO_H); setup_timer_1 ( T1_EXTERNAL | T1_DIV_BY_1 ); DEM_T0 = 0; set_timer0(0) ; set_timer1(0); DEM_T0 = GET_RTCC (); DEM_T1 = GET_TIMER1 (); while(true) { chay_thang(); if(GET_RTCC ==1000) {dung();} } } |
![]() |
![]() |