Ðăng Nhập

View Full Version : nhờ mấy anh giúp em code cảm biến srf04


binhcddt09b
06-05-2012, 10:50 PM
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);
}
}

binhcddt09b
07-05-2012, 12:52 PM
ủ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?

nguyenducdktd13
31-10-2012, 11:42 AM
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);
}
}

cho cai code nay toi lam mach chay on hien thi ra led7seg


//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;
}
}
}