![]() |
nhờ mấy anh giúp em code cảm biến srf04
em có code này viết cho cảm biến siêu âm,nhưng giá trị đọc về từ cảm biến nó chỉ giữ nguyên chứ ko chuyển đổi j khi em di chuyển cảm biến, các bác giúp em sử nó với.mà mỗi đoạn code em coi thì nó lại có một cách chia giá trị khác nhau,em ko biết nên chia ntn nên em lấy trong datasheet luôn.
#include <16f887.h> #FUSES,nowdt,noprotect,nolvp,put #use delay(clock=20000000) #use fast_io(a) #use fast_io(b) #use fast_io(c) #use fast_io(d) #use fast_io(e) #byte porta=0x5 #byte portc=0x7 #byte portd=0x8 #byte portb=0x6 #byte porte=0x9 #bit c3=portc.3 #include <lcd.c> float kc=0; #INT_CCP1 void ccp1_isr() { set_timer1(0); //Cai gia tri cho Timer1 setup_ccp1(CCP_CAPTURE_FE); //chuyen sang do canh xuong kc=(get_timer1())/58; } void hienthi(int16 ) { lcd_gotoxy(1,1); printf(lcd_putc,"CACH VAT:%f",kc); lcd_gotoxy(14,1); Printf(LCD_putc,"cm"); lcd_gotoxy(2,2); lcd_putc("ROBOT TU HANH"); delay_ms(30); } void main() { LCD_init(); setup_timer_1(T1_INTERNAL|T1_DIV_BY_2); setup_ccp1(CCP_CAPTURE_RE); enable_interrupts(INT_CCP1); // Cho phép ng?t khi CCP1 có tín hi?u enable_interrupts(GLOBAL); //---hien thi LCD--- while(TRUE) { set_tris_c(0x04); c3 = 1; //trigger delay_us(10); c3 = 0; hienthi(kc); delay_ms(50); } } |
ủa thấy hồi đầu mọi người bàn tán nhiều về con này lắm mà?sao ko thấy ai trả lời ta?
|
Trích:
//nguyen van duc //KS tu dong hoa //cong thuc tinh thoi gian T= (65536-VALUE)*(4/Fosc)*P #include <16F877A.h> #include <def_877a.h> #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT #use delay(clock=20000000) #use fast_io(d)//Dùng cái này thì trong chu+o+ng trình khi dùng các le^.nh io nhu+ output_low() , . . . nó se~ set chi? vo+'i 1 le^.nh , #use fast_io(b) #use fast_io(a) int16 thoigiantruyen,CCP1value; int16 CCP1Oldvalue; BOOLEAN CCP1Captured; int8 hangdonvi,hangchuc,hangtram; int16 ketqua; int8 i,k; #INT_CCP1 void ngat_ccp1() { set_timer1(0); } #INT_CCP2 void ngat_ccp2() { CCP1Value =CCP_2; CCP_2=0; CCP1Captured = TRUE; //j=0; } #INT_TIMER0 void interrup_timer0() {i++; set_timer0(8); if(i==5){ output_d(hangtram); output_high(pin_d5); } if(i==10){ output_d(hangchuc); output_high(pin_d6);} if(i==15){ output_d(hangdonvi); output_high(pin_d7);} if(i>=16){i=0;} } void triger() { output_high(PIN_A0); delay_us(12); output_low(PIN_A0); } void init_ccp() { setup_ccp1(CCP_capture_RE);//do xung canh len R setup_ccp2(CCP_capture_FE); setup_timer_1(T1_INTERNAL|T1_DIV_BY_4); //tang mot gia tri timer1 mat 4/5uS setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32); CCP1value=0; CCP1Oldvalue=0; CCP1Captured=TRUE; enable_interrupts(INT_CCP1); enable_interrupts(INT_CCP2); enable_interrupts(INT_TIMER0); enable_interrupts(GLOBAL); } void Main() { init_ccp(); set_tris_d(0x00); set_tris_b(0x00); set_tris_c(0xff); //ff xac lap cac chan port C la chan input set_tris_a(0x00); set_timer0(8); while(true){ delay_ms(100); triger(); if(CCP1Captured){ thoigiantruyen=CCP1value*0.8; ketqua=thoigiantruyen/58; CCP1Captured=FALSE; if(ketqua>999){hangdonvi=0;hangchuc=0;hangtram=0;} else{ hangdonvi=ketqua%10; hangchuc=(ketqua/10)%10; hangtram=(ketqua/100); } } if(ketqua<175){output_high(PIN_A1); delay_ms(500); k=0;} k++; if(k>=5){ output_low(PIN_A1); delay_ms(500); k=0; } } } |
Múi giờ GMT. Hiện tại là 01:15 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam